Closed forelleblau closed 4 years ago
Das ist strange, weil genau das was du schreibst wird auch gemacht: https://github.com/ioBroker/ioBroker.rflink/blob/master/admin/parse.js#L25
Der Fehler tritt auch nicht bei TEMP sondern bei WINCHL und WINTMP auf, welches auch Temperaturwerte sind.
Ich (bzw. die Nachbarn ;-)) haben hier ein Gerät, dass als "InoValley_SM200" erkannt wird. Das macht auch Probleme mit negativen Werten, evtl. wird hier ähnlich "gerechnet"?
Hier mal meine Erkenntnisse, die ich schon in anderen Foren gepostet habe - vielleicht passt es ja hier. =)
You can calculate the correct value from the given.
Here it starts with 83FF for -0.1°C. Ignoring the "8" leaves 3ff hex, or 1023 dec. RFlink decodes it to -102.3°C (= rflink_tmp). So the correct temperatur to use is
rflink_tmp * (-1) - 102.4
BTW, the values are
dec hex 0.2 0002 0.1 0001 0.0 0000 -0.1 83FF -0.2 83FE
Danke für den Hinweis. Das oben beschriebene Problem (Temperaturkorrektur wurde nicht bei allen Temperaturwerten angewendet) wurde vor längerem gelöst. Darum schliesse ich hier.
Hm, wo wurde das Problem denn gelöst? Im rflink Adapter von ioBroker ist es doch immer noch vorhanden? Also, zumindest hier. =)
Hallo padrino-x
Der bei mir aufgetretene Fehler bei den Temperaturwerten wurde damit: https://github.com/ioBroker/ioBroker.rflink/pull/18 korrigiert. Kann sein, dass das erst in die github-Version eigeflossen ist. Es kann auch sein, dass dein Gerät andere Temperaturwerte benutzt als TEMP, WINTEM und WINCHL, dann müsste da die Korrektur analog gemacht werden.
Grüsse forelleblau
Nutze RFLink mit einer IROX (Cresta) Wetterstation. Funktionierte bisher soweit sehr gut - danke. Seit es draussen manchmal kalt ist, werden die Temperaturen nicht richtig dargestellt. Gemäss Protokollrefrenz http://www.rflink.nl/blog2/protref werden negative Temperaturen besonders dargestellt: TEMP=9999 => Temperature celcius (hexadecimal), high bit contains negative sign, needs division by 10 (0xC0 = 192 decimal = 19.2 degrees) => (example negative temperature value: 0x80DC, high bit indicates negative temperature 0xDC=220 decimal the client side needs to divide by 10 to get -22.0
Wenn ich den empfangenen raw-rx-data wert für die Temperatur nehme, das vorangestellte "80" lösche erhalte ich den richtigen Temperaturwert (als Positivwert).