Discussion:
[ethersex-devel] problem mit negativen 1wire temperaturen
Jan Willecke
2014-11-30 08:48:13 UTC
Permalink
guten morgen,
dies ist mein erster eintrag in eine mailingliste. ich hoffe der geht
nicht völlig in die hose.

ich habe seit einigerzeit ein pollin netio board mit einem 644 und
einigen ds1820 sensoren im einsatz. diese werden per ecmd abgefragt und
das klappt auch super.

seit heute morgen bekomme ich für die aussentemperatur riesengroße werte
zurück. nach kontrolle der logfiles war bis exakt 0,0grad alles ok und
danach ist der wert auf 3276.7 bzw als es noch kälter geworden ist auf
3276.6 und noch kälter abgesunken. nachdem es wärmer geworden ist war
alles wieder ok. diese werte wurden auch auf der website angezeigt

wie kann ich ethersex dazu bringen korrekte negative temperaturen zu
übergeben? habe ich beim konfigurieren oder kompilieren einen fehler
gemacht?

ich danke euch schonmal für eure mühe und falls ich hier nicht richtig
bin verzeiht es mir. ich hab das halbe internet auf den kopf gestellt
aber anscheinend hatte bislang noch keiner ein ähnliches problem

viele grüße jan
Volker
2014-11-30 14:58:04 UTC
Permalink
guten morgen, dies ist mein erster eintrag in eine mailingliste.
ich hoffe der geht nicht völlig in die hose.
ich habe seit einigerzeit ein pollin netio board mit einem 644 und
einigen ds1820 sensoren im einsatz. diese werden per ecmd abgefragt
und das klappt auch super.
seit heute morgen bekomme ich für die aussentemperatur riesengroße
werte zurück. nach kontrolle der logfiles war bis exakt 0,0grad
alles ok und danach ist der wert auf 3276.7 bzw als es noch kälter
geworden ist auf 3276.6 und noch kälter abgesunken. nachdem es
wärmer geworden ist war alles wieder ok. diese werte wurden auch
auf der website angezeigt
wie kann ich ethersex dazu bringen korrekte negative temperaturen
zu übergeben? habe ich beim konfigurieren oder kompilieren einen
fehler gemacht?
ich danke euch schonmal für eure mühe und falls ich hier nicht
richtig bin verzeiht es mir. ich hab das halbe internet auf den
kopf gestellt aber anscheinend hatte bislang noch keiner ein
ähnliches problem
viele grüße jan
_______________________________________________ Ethersex-devel
http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel
Hallo Jan,

sieht nach einem Darstellungsfehler für negative Zahlen (Temperaturen)
aus. Das war letzten oder vorletzten Winter schon mal ein Problem.
Danach wurde das aber meiner Meinung nach gefixed. Welche Version
benutzt du denn?
Oliver Langkau
2014-11-30 10:19:39 UTC
Permalink
Hallo,
ich habe dein Problem zwar nicht, aber um den 03.dez.2012 wurde hier
schon mal was ähnliches beschrieben.

Betreff: Re: [ethersex-devel] 1w - DS18S20 - Problem negative
Temperaturen
Datum: Mon, 03 Dec 2012 14:05:45 +0100

Vielleicht hilft Dir das weiter.

Viele Grüße
oliver
Post by Jan Willecke
wie kann ich ethersex dazu bringen korrekte negative temperaturen zu
übergeben? habe ich beim konfigurieren oder kompilieren einen fehler
gemacht?
Florian Asche
2014-12-02 22:07:05 UTC
Permalink
Hallo zusammen,

 
nachdem es jetzt auch unter 0 Grad bei mir hier in Bielefeld geht, kann ich das Problem bestÀtigen.

 
Version: ethersex ac826dc built on Sep 18 2014 17:20:35

1-Wire Status

Address Data
28120606020000f1 326.87 °C
284a9131010000b2 1.56 °C
284663aa030000d0 327.31 °C
287b100602000044 0.44 °C

 
Es existiert also in der "aktuellen Version" ein Problem mit negativen Temperaturen bei den DS18B20 Sensoren.

 
Gruß Florian
 
-----UrsprÃŒngliche Nachricht-----
Von:Oliver Langkau <***@gmail.com>
Gesendet:Mo 01.12.2014 10:58
Betreff:Re: [ethersex-devel] problem mit negativen 1wire temperaturen
An:Jan Willecke <***@gmx.de>;
CC:ethersex-***@list.zerties.org;
Hallo,
ich habe dein Problem zwar nicht, aber um den 03.dez.2012 wurde hier
schon mal was Àhnliches beschrieben.

Betreff: Re: [ethersex-devel] 1w - DS18S20 - Problem negative
Temperaturen
Datum: Mon, 03 Dec 2012 14:05:45 +0100

Vielleicht hilft Dir das weiter.

Viele GrÌße
oliver
Post by Jan Willecke
wie kann ich ethersex dazu bringen korrekte negative temperaturen zu
ÃŒbergeben? habe ich beim konfigurieren oder kompilieren einen fehler
gemacht?
_______________________________________________
Ethersex-devel mailing list
Ethersex-***@list.zerties.org
http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel
Florian Asche
2014-12-02 22:18:56 UTC
Permalink
Hallo zusammen,

 
noch eine ErgÀnzung dazu...

Bei der Version ethersex e93569c built on Jun 18 2014 17:55:59 funktioniert alles einwandfrei.

 
Das Problem liegt also zwischen:

 
ethersex e93569c built on Jun 18 2014 17:55:59

und

ethersex ac826dc built on Sep 18 2014 17:20:35

 
Am Wochenende ist mehr Zeit, mal schauen ob der Commit zu finden ist, der uns hier Probleme macht ;)

 
Gute Nacht!

Florian

-----UrsprÃŒngliche Nachricht-----
Von:Florian Asche <***@florian-asche.de>
Gesendet:Di 02.12.2014 23:08
Betreff:Re: [ethersex-devel] problem mit negativen 1wire temperaturen
An:Jan Willecke <***@gmx.de>; Oliver Langkau <***@gmail.com>;
CC:ethersex-***@list.zerties.org;


Hallo zusammen,

 
nachdem es jetzt auch unter 0 Grad bei mir hier in Bielefeld geht, kann ich das Problem bestÀtigen.

 
Version: ethersex ac826dc built on Sep 18 2014 17:20:35

1-Wire Status

Address Data
28120606020000f1 326.87 °C
284a9131010000b2 1.56 °C
284663aa030000d0 327.31 °C
287b100602000044 0.44 °C

 
Es existiert also in der "aktuellen Version" ein Problem mit negativen Temperaturen bei den DS18B20 Sensoren.

 
Gruß Florian
 
-----UrsprÃŒngliche Nachricht-----
Von:Oliver Langkau <***@gmail.com>
Gesendet:Mo 01.12.2014 10:58
Betreff:Re: [ethersex-devel] problem mit negativen 1wire temperaturen
An:Jan Willecke <***@gmx.de>;
CC:ethersex-***@list.zerties.org;
Hallo,
ich habe dein Problem zwar nicht, aber um den 03.dez.2012 wurde hier
schon mal was Àhnliches beschrieben.

Betreff: Re: [ethersex-devel] 1w - DS18S20 - Problem negative
Temperaturen
Datum: Mon, 03 Dec 2012 14:05:45 +0100

Vielleicht hilft Dir das weiter.

Viele GrÌße
oliver
Post by Jan Willecke
wie kann ich ethersex dazu bringen korrekte negative temperaturen zu
ÃŒbergeben? habe ich beim konfigurieren oder kompilieren einen fehler
gemacht?
_______________________________________________
Ethersex-devel mailing list
Ethersex-***@list.zerties.org
http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel
uhrheber
2014-12-03 08:45:21 UTC
Permalink
Wundert mich, dass es erst jetzt auffällt.
Hat eigentlich keiner Kältespray daheim ?-)

Gruß
Uhrheber
AW: [ethersex-devel] problem mit negativen 1wire temperaturen
ethersex e93569c built on Jun 18 2014 17:55:59
und
ethersex ac826dc built on Sep 18 2014 17:20:35
Florian Asche
2014-12-03 13:46:19 UTC
Permalink
Moin, 

Habe hier mal die aenderungen vom letzten Winter und vermutlich den pull request, der es kaputt gemacht hat...

https://github.com/ethersex/ethersex/pull/259

https://github.com/ethersex/ethersex/pull/332

Gruss Florian

Von Samsung Mobile gesendet
-------- UrsprÃŒngliche Nachricht --------
Von: uhrheber
Datum:03.12.2014 09:46 (GMT+01:00)
An: ethersex-***@list.zerties.org
Betreff: Re: [ethersex-devel] problem mit negativen 1wire temperaturen



Wundert mich, dass es erst jetzt auffÀllt.
Hat eigentlich keiner KÀltespray daheim ?-)

Gruß
Uhrheber


Am 02.12.2014 um 23:18 schrieb Florian Asche:

AW: [ethersex-devel] problem mit negativen 1wire temperaturen


ethersex e93569c built on Jun 18 2014 17:55:59



und



ethersex ac826dc built on Sep 18 2014 17:20:35





_______________________________________________

Ethersex-devel mailing list

Ethersex-***@list.zerties.org

http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel
e***@users.sourceforge.net
2014-12-03 17:03:19 UTC
Permalink
Hallo,
Post by Florian Asche
Habe hier mal die aenderungen vom letzten Winter und vermutlich den pull request, der es kaputt gemacht hat...
https://github.com/ethersex/ethersex/pull/259
https://github.com/ethersex/ethersex/pull/332
Vermutungen helfen uns nicht weiter.
Bitte git bisect zur Identifizierung des schädlichen Commits benutzen.

Außerdem wäre die Konfiguration des Originalposters hilfreich.
1W Polling? Was liefert falsche Werte? ECMD, C6 oder Webserver?
Florian Asche
2014-12-04 19:41:11 UTC
Permalink
Hallo,

ich habe mit git bisect gesucht, und herausgefunden, dass nach dem Commit ce9a803 die negativen Temperaturen weder über den HTTP Webserver noch per ECMD auslesbar sind.
Stattdessen bekommt man halt sehr hohe Werte.
Ich habe kein Onewire Polling verwendet.

Hinter dem Commit steckt der Pull Request https://github.com/ethersex/ethersex/pull/332

Gruß Florian

-----Ursprüngliche Nachricht-----
Von: ***@users.sourceforge.net [mailto:***@users.sourceforge.net]
Gesendet: Mittwoch, 3. Dezember 2014 18:03
An: Florian Asche
Cc: uhrheber; Ethersex Mailinglist
Betreff: Re: [ethersex-devel] problem mit negativen 1wire temperaturen

Hallo,
Post by Florian Asche
Habe hier mal die aenderungen vom letzten Winter und vermutlich den pull request, der es kaputt gemacht hat...
https://github.com/ethersex/ethersex/pull/259
https://github.com/ethersex/ethersex/pull/332
Vermutungen helfen uns nicht weiter.
Bitte git bisect zur Identifizierung des schädlichen Commits benutzen.

Außerdem wäre die Konfiguration des Originalposters hilfreich.
1W Polling? Was liefert falsche Werte? ECMD, C6 oder Webserver?
Florian Asche
2014-12-06 14:49:05 UTC
Permalink
Hallo zusammen,

der Fehler steckt da drin, aber ich kann ihn nicht finden. Das muss sich jemand mit mehr Erfahrung ansehen.
Hier einmal kurz was ich so versucht habe...

Nach dem Einschalten des Debug Mode erstmal eine Fehlermeldung:
hardware/onewire/onewire_ecmd.c: In function 'parse_cmd_onewire_get':
hardware/onewire/onewire_ecmd.c:442: error: invalid operands to binary >> (have 'ow_temp_t' and 'int')
hardware/onewire/onewire_ecmd.c:442: error: aggregate value used where an integer was expected
make: *** [hardware/onewire/onewire_ecmd.o] Fehler 1

Also mal die Zeile angesehen...
debug_printf("temperature: %d.%d\n", HI8(temp), LO8(temp) > 0 ? 5 : 0);

Das ist nicht so schön, daraus habe ich dann mal eine reine Ausgabe gemacht:
debug_printf("temperature: %d %d\n", temp.val, temp.twodigits);

Nun lässt sich auch alles bauen und der Debug liefert fleissig Werte... Das sieht bei eisiger Kälte dann so aus:
D: called onewire_convert with: ""
D: OW-ROM: called parse_ow_rom with string ''
D: OW-ROM: scanf returned -1
D: converting temperature...
D: called onewire_get with: "289dfb0402000072"
D: OW-ROM: called parse_ow_rom with string '289dfb0402000072'
D: OW-ROM: scanf returned 8
D: OW-ROM: read rom 28 9d fb 04 02 00 00 72
D: reading temperature
D: successfully read scratchpad
D: temperature: 31806 1

Ich habe dann nochmal einen checkout auf die funktionierende Version 537a902 gemacht:
D: converting temperature...
D: called onewire_get with: "289dfb0402000072"
D: OW-ROM: called parse_ow_rom with string '289dfb0402000072'
D: OW-ROM: scanf returned 8
D: OW-ROM: read rom 28 9d fb 04 02 00 00 72
D: reading temperature
D: successfully read scratchpad
D: temperature: 254.5
D: temperature1: -384

Temperature1 liefert hier das, was oben der erste wert bei temperature ist. Hier negativ, oben völlig falsch.
Aber hier weiß ich dann nicht mehr weiter...

Gruß Flo

-----Ursprüngliche Nachricht-----
Von: Ethersex-devel [mailto:ethersex-devel-***@list.zerties.org] Im Auftrag von Florian Asche
Gesendet: Donnerstag, 4. Dezember 2014 20:41
An: ***@users.sourceforge.net; uhrheber; Ethersex Mailinglist
Betreff: Re: [ethersex-devel] problem mit negativen 1wire temperaturen

Hallo,

ich habe mit git bisect gesucht, und herausgefunden, dass nach dem Commit ce9a803 die negativen Temperaturen weder über den HTTP Webserver noch per ECMD auslesbar sind.
Stattdessen bekommt man halt sehr hohe Werte.
Ich habe kein Onewire Polling verwendet.

Hinter dem Commit steckt der Pull Request https://github.com/ethersex/ethersex/pull/332

Gruß Florian

-----Ursprüngliche Nachricht-----
Von: ***@users.sourceforge.net [mailto:***@users.sourceforge.net]
Gesendet: Mittwoch, 3. Dezember 2014 18:03
An: Florian Asche
Cc: uhrheber; Ethersex Mailinglist
Betreff: Re: [ethersex-devel] problem mit negativen 1wire temperaturen

Hallo,
Post by Florian Asche
Habe hier mal die aenderungen vom letzten Winter und vermutlich den pull request, der es kaputt gemacht hat...
https://github.com/ethersex/ethersex/pull/259
https://github.com/ethersex/ethersex/pull/332
Vermutungen helfen uns nicht weiter.
Bitte git bisect zur Identifizierung des schädlichen Commits benutzen.

Außerdem wäre die Konfiguration des Originalposters hilfreich.
1W Polling? Was liefert falsche Werte? ECMD, C6 oder Webserver?
e***@users.sourceforge.net
2014-12-07 13:37:06 UTC
Permalink
Hallo,
Post by Florian Asche
der Fehler steckt da drin, aber ich kann ihn nicht finden. Das muss sich jemand mit mehr Erfahrung ansehen.
Hier einmal kurz was ich so versucht habe...
hardware/onewire/onewire_ecmd.c:442: error: invalid operands to binary >> (have 'ow_temp_t' and 'int')
hardware/onewire/onewire_ecmd.c:442: error: aggregate value used where an integer was expected
make: *** [hardware/onewire/onewire_ecmd.o] Fehler 1
du verwendest einen alten Softwarestand! Dieser Fehler wurde im August behoben.


Gerade mit Kältespray und OW-POLLING ausprobiert:

1w list
104f36dd010800f3 netio 29.8
OK
1w list
104f36dd010800f3 netio -11.6
OK
1w list
104f36dd010800f3 netio -11.6
OK
1w list
104f36dd010800f3 netio -11.6
OK
1w list
104f36dd010800f3 netio -28.8
OK
1w list
104f36dd010800f3 netio -28.8
OK
1w list
104f36dd010800f3 netio -28.8
OK
1w list
104f36dd010800f3 netio -15.0
OK

Ich verwende zwar einen privaten Fork von ethersex, aber der 1w-Code ist
identisch mit dem HEAD vom Master.
Florian Asche
2014-12-07 15:41:44 UTC
Permalink
Hallo Erik,

habe auch schon bemerkt, dass der hardware/onewire/onewire_ecmd.c:442 Fehler behoben wurde. Ist klar, ich hatte ja auch den Stand von damals ausgecheckt.
Der Fehler mit den Negativen Temperaturen ist aber trotzdem vorhanden, auch in der aktuellen Version!

Ich habe gerade nochmal extra komplett von vorne angefangen. Also aktuelle Ethersex Version (Master) aus dem Repository (git clone git://github.com/ethersex/ethersex.git) gezogen, dann eine IP konfiguriert, den Port im Pinning für das NETIO angepasst und Debug aktiviert.

Ich verwende das NETIO von Pollin, Atmega32 ohne Anpassungen.

Dann mache ich (ohne Polling):
1w convert
OK
1w get 289dfb0402000072
297.74

Dasselbe Ergebnis wie bei dem Webserver (http://192.168.0.65/ow.ht)
Besteht das Problem also nur beim Onewire ohne Polling?

Ich habe dann mal versucht das Onewire Polling zum Laufen zu bekommen...
Meine Config:
[*] Onewire device detection support
[ ] Onewire DS2502 (eeprom) support
[ ] Onewire DS2450 (4 channel ADC) support
[*] Onewire Polling
(600) Time between 1w-bus discoveries in 1s steps
(30) Time between polling in 1s steps
[ ] Hooks
[*] ECMD 1w list with values
[ ] ECMD 1w list with power mode
[*] Onewire naming support
(1) Maximum sensor count
[-] Onewire SNMP support
--- Debugging Flags
[*] Onewire ROM parsing (ECMD)
[ ] Onewire device detection (ECMD)
[-] Onewire DS2450 (core)
[-] Onewire DS2450 (ECMD)
[ ] Onewire Polling

1w name set 0 289dfb0402000072 netio

1w list
289dfb0402000072 netio 0.0
OK

Dann dachte ich mir hm... Polling sollte doch irgendwas mit Zeit voraussetzen, also habe ich unter Applcation "System clock support" und dort dann "Use CPU clock to tick the clock" aktiviert.
Jetzt funktioniert das Polling auch.

1w list
289dfb0402000072 netio 25.25 1
OK

Aber dann die große Enttäuschung, auch hier, wenn es kalt wird, brennt bei Ethersex die Hütte ab ;(

1w list
289dfb0402000072 netio 319.31 1
OK

Mache ich etwas falsch? Darf ich dein Fork mal Testen?

Gruß Florian

-----Ursprüngliche Nachricht-----
Von: ***@users.sourceforge.net [mailto:***@users.sourceforge.net]
Gesendet: Sonntag, 7. Dezember 2014 14:37
An: Florian Asche
Cc: ***@users.sourceforge.net; uhrheber; Ethersex Mailinglist
Betreff: Re: [ethersex-devel] problem mit negativen 1wire temperaturen

Hallo,
Post by Florian Asche
der Fehler steckt da drin, aber ich kann ihn nicht finden. Das muss sich jemand mit mehr Erfahrung ansehen.
Hier einmal kurz was ich so versucht habe...
hardware/onewire/onewire_ecmd.c:442: error: invalid operands to binary >> (have 'ow_temp_t' and 'int')
hardware/onewire/onewire_ecmd.c:442: error: aggregate value used where an integer was expected
make: *** [hardware/onewire/onewire_ecmd.o] Fehler 1
du verwendest einen alten Softwarestand! Dieser Fehler wurde im August behoben.


Gerade mit Kältespray und OW-POLLING ausprobiert:

1w list
104f36dd010800f3 netio 29.8
OK
1w list
104f36dd010800f3 netio -11.6
OK
1w list
104f36dd010800f3 netio -11.6
OK
1w list
104f36dd010800f3 netio -11.6
OK
1w list
104f36dd010800f3 netio -28.8
OK
1w list
104f36dd010800f3 netio -28.8
OK
1w list
104f36dd010800f3 netio -28.8
OK
1w list
104f36dd010800f3 netio -15.0
OK

Ich verwende zwar einen privaten Fork von ethersex, aber der 1w-Code ist identisch mit dem HEAD vom Master.
e***@users.sourceforge.net
2014-12-07 16:14:09 UTC
Permalink
Hallo,
Post by Florian Asche
Ich verwende das NETIO von Pollin, Atmega32 ohne Anpassungen.
1w convert
OK
1w get 289dfb0402000072
297.74
Dasselbe Ergebnis wie bei dem Webserver (http://192.168.0.65/ow.ht)
Besteht das Problem also nur beim Onewire ohne Polling?
Hmm.
Post by Florian Asche
Ich habe dann mal versucht das Onewire Polling zum Laufen zu bekommen...
[*] Onewire device detection support
[ ] Onewire DS2502 (eeprom) support
[ ] Onewire DS2450 (4 channel ADC) support
[*] Onewire Polling
(600) Time between 1w-bus discoveries in 1s steps
(30) Time between polling in 1s steps
[ ] Hooks
[*] ECMD 1w list with values
[ ] ECMD 1w list with power mode
[*] Onewire naming support
(1) Maximum sensor count
[-] Onewire SNMP support
--- Debugging Flags
[*] Onewire ROM parsing (ECMD)
[ ] Onewire device detection (ECMD)
[-] Onewire DS2450 (core)
[-] Onewire DS2450 (ECMD)
[ ] Onewire Polling
1w name set 0 289dfb0402000072 netio
1w list
289dfb0402000072 netio 0.0
OK
Dann dachte ich mir hm... Polling sollte doch irgendwas mit Zeit voraussetzen, also
habe ich unter Applcation "System clock support" und dort dann "Use CPU clock to
tick the clock" aktiviert.
Jetzt funktioniert das Polling auch.
Hmm. Ich sehe im Code keine Abhängigkeit von der Clock.

onewire.c
ifdef(`conf_ONEWIRE_POLLING',`timer(50, ow_periodic())')

Das Timermacro ist der ganz normal HZ-Tick in Ethersex. An dem hängt alles.
Post by Florian Asche
Aber dann die große Enttäuschung, auch hier, wenn es kalt wird, brennt bei Ethersex die Hütte ab ;(
1w list
289dfb0402000072 netio 319.31 1
OK
Mache ich etwas falsch?
Ich habe den Aufruf in Verdacht:

itoa_fixedpoint(ow_sensors[i].temp.val,
ow_sensors[i].temp.twodigits + 1, temperature,
sizeof(temperature));

Vermutlich verwendet du einen anderen Compiler als ich (gcc483) und Dein
generierter Code sieht anders aus als meiner:

#ifdef ONEWIRE_ECMD_LIST_VALUES_SUPPORT
char temperature[7];
itoa_fixedpoint(ow_sensors[i].temp.val,
ow_sensors[i].temp.twodigits + 1, temperature,
7b12: 20 91 6f 05 lds r18, 0x056F
7b16: 27 fb bst r18, 7
7b18: 66 27 eor r22, r22
7b1a: 60 f9 bld r22, 0
7b1c: 6f 5f subi r22, 0xFF ; 255
7b1e: 80 91 6e 05 lds r24, 0x056E
7b22: 92 2f mov r25, r18
7b24: 9f 77 andi r25, 0x7F ; 127
7b26: 88 0f add r24, r24
7b28: 99 1f adc r25, r25
7b2a: 27 e0 ldi r18, 0x07 ; 7
7b2c: ae 01 movw r20, r28
7b2e: 4f 5f subi r20, 0xFF ; 255
7b30: 5f 4f sbci r21, 0xFF ; 255
7b32: 6a 01 movw r12, r20
7b34: 95 95 asr r25
7b36: 87 95 ror r24
7b38: 0e 94 b8 07 call 0xf70 ; 0xf70 <itoa_fixedpoint>
ow_sensors[i].temp.twodigits + 1, temperature,
sizeof(temperature));


Ich kenne mich mit dem AVR-Assembler nicht aus, vermute aber dass es
an der Vorzeichenexpansion liegen könnte.
Ich würde an Deiner stelle mal ein Debug-printf in itoa_fixedpoint einbauen.
Post by Florian Asche
Darf ich dein Fork mal Testen?
Jederzeit: https://github.com/eku/ethersex

Komm doch bitte unseren IRC-Channel. Mail ist lästig und langsam.
Loading...