Sensor GT-WT-02 (Globaltronics via ALDI): Merkwürdige Sprünge

Begonnen von M_I_B, 13 Dezember 2015, 11:22:08

Vorheriges Thema - Nächstes Thema

Andi35

Diese Sensoren sind irgendwie Schrottkram. Ich hatte es mal eine ganze Zeit geschafft, die Fehlerwerte durch echte Werte zu ersetzen. Herausgekommen ist ein mehrzeiliger Code auf der Basis des von mir geposteten Versuchs.

plot_temperature { if (ReadingsVal ("Prologue_151","state",0) eq "T: 51.2 H: 07" ) {"T: 7.8"}
elsif (ReadingsVal ("Prologue_151","state",0) eq "T: 25.6 H: 08" ) {"T: 12.9"}
elsif (ReadingsVal ("Prologue_151","state",0) eq "T: -25.6 H: 014" ) {"T: 21.5"}
elsif (ReadingsVal ("Prologue_151","state",0) eq "T: 0.0 H: 09" ) {"T: 0.9"}
elsif (ReadingsVal ("Prologue_151","state",0) eq "T: -1.6 H: 011" ) {"T: -0.3"}
elsif (ReadingsVal ("Prologue_151","state",0) eq "T: -25.6 H: 02" ) {"T: 22.6"}
elsif (ReadingsVal ("Prologue_151","state",0) eq "T: 4.4 H: 20" ) {"T: 2.2"}
elsif (ReadingsVal ("Prologue_151","state",0) eq "T: 4.2 H: 20" ) {"T: 2.3"}
elsif (ReadingsVal ("Prologue_151","state",0) eq "T: 17.8 H: 20" ) {"T: 2.4"}
elsif (ReadingsVal ("Prologue_151","state",0) eq "T: 11.2 H: 20" ) {"T: 5.5"}
elsif (ReadingsVal ("Prologue_151","state",0) eq "T: 7.6 H: 20" ) {"T: 3.7"}
elsif (ReadingsVal ("Prologue_151","state",0) eq "T: 10.4 H: 20" ) {"T: 5.1"}
else {(ReadingsVal ("Prologue_151","state",0))}}


Allerdings war die Freude nur von kurzer Dauer. Irgendwie legt sich das Device nach einer Laufzeit von mehreren Tagen bis Wochen plötzlich per Autocreate wieder neu an, gibt sich dabei dann einen anderen Namen, und die ganze Arbeit war für die Katz. Zum einen weil die aufgezeichneten logs unbrauchbar werden, zum anderen sind nun die Temperatursprünge an ganz anderen Stellen.
Mit Perl mühe ich mich inzwischen regelmäßig ab, habe es aber noch nicht geschafft eine funktionsfähige Lösung zu finden.
Mir schwebt eine Lösung nach folgendem Schema vor.
Es wird bei Eintreffen der Werte überprüft, ob die Länge des "state" readings kleiner als 9 Zeichen ist.
Grund: wird im State nur die Temperatur übergeben, sieht das bei mir so aus "T: -12.5" Das deckt den gesamten positiven und negativen Bereich bis 99.9 Grad ab. Die Fehlerwerte werden im "state" Beispielsweise immer als "T: -25.9 H: 02" übergeben, und sind somit länger als 9 Zeichen. Also sollte in das userreading per Perlcode nur der Wert übernommen werden, welcher kleiner als 9 Zeichen ist, und somit Fehlerfrei, egal an welcher Stelle in der Temperatur die Sprünge auf treten.
Allein, mir fehlt das nötige Wissen um den Code zu basteln.
Vielleicht erbarmt sich einer der Perl Profis und hilft mir auf die Sprünge?

Ralf9

Zitat von: Andi35 am 04 April 2016, 21:30:36
Diese Sensoren sind irgendwie Schrottkram. Ich hatte es mal eine ganze Zeit geschafft, die Fehlerwerte durch echte Werte zu ersetzen. Herausgekommen ist ein mehrzeiliger Code auf der Basis des von mir geposteten Versuchs.

Ich hatte auch Probleme mit meinen GT-WT-02, evtl bringt dies etwas:
https://forum.fhem.de/index.php/topic,51795.msg435081.html#msg435081

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Andi35

@Ralf9

Danke, ich werds mal mit Deinen Dateien versuchen. Hab zwar nur die hälfte von dem verstanden was Du beschreibst, aber Versuch macht Kluch

Andi35

Hallo Ralf

Ich habs jetzt seit 4 Tagen mit Deinen modifizierten Dateien am laufen.
Erstes Ergebnis - keine Temperatursprünge mehr, hoffen wir das es so bleibt.
Meine Frage, wie ist das mit den "longids" gemeint?
Ich hab in den FHEM Anleitungen nur gefunden, das man im CUL, welcher die Daten des Sensors empfängt, als Attribut "longids" den Wert "NAME" (in meinem Fall Prologue_145) aus den Internals des Sensors übergibt.

Das habe ich gemacht. Nach einem Batteriewechsel hatte ich aber trotzdem wieder einen anderen Device Namen.

Ist das jetzt richtig, oder was muss ich als longids eintragen?

Zur Auswahl stehen folgende Möglichkeiten:
DEF - CUL_TCM97001_145
NAME - Prologue_145
TYPE - CUL_TCM97001

Hast Du einen Tip?




Ralf9

Zitat von: Andi35 am 09 April 2016, 12:57:13
Meine Frage, wie ist das mit den "longids" gemeint?
Das habe ich gemacht. Nach einem Batteriewechsel hatte ich aber trotzdem wieder einen anderen Device Namen.
Ist das jetzt richtig, oder was muss ich als longids eintragen?

longids sind beim 14_CUL_TCM97001 Modul per default aktiv. Du must nichts eintragen. das Attribut "longids" ist dafür nicht notwendig.
Der DEF Code setzt sich dabei aus "CUL_TCM97001_" + ID zusammen. Die ID ändert sich bei jedem Batteriewechsel.


BTW: Dies ist die falsche Gruppe.
@ M_I_B  Du kannst es als Themenstarter in die richtige Gruppe (wie z.B. "Sonstiges" oder   "CUL Hard- und Firmware") verschieben.

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Andi35

@Ralf9 Danke für die Aufklärung.
@ M_I_B Entschuldigung für mein Abschweifen ins OT. Hatte sich einfach so entwickelt. Ich hoffe Du nimmst es mir nicht übel.