Wohnraumlüftung mit freeair-connect mittels HTTPMOD / EDIT: jetzt auch Modul

Begonnen von amenomade, 17 Mai 2020, 20:22:59

Vorheriges Thema - Nächstes Thema

eldi0s

Ok top, hab es eben eingepflegt. Dann testen wir mal weiter.

Danke nochmal ;-)

Mathea

Ich bedanke mich vorab für die Arbeit an dem tollen Modul!

Ich teste es seit ein paar Stunden und wollte lediglich eine Fehlermeldung dokumentieren. Nachdem ich die Betriebsart des Gerätes auf "Sleep" gestellt habe, bekam ich folgende Warn- und Fehlermeldung im Log:

2020.12.27 00:00:06 1: PERL WARNING: Use of uninitialized value $nextupdate in concatenation (.) or string at ./FHEM/60_freeairconnect.pm line 380.
2020.12.27 00:00:06 2: freeairconnect (WZ_freeair100): Error POST setting ComfortLevel ERR:  DATA:
1


Das Setzen des Modus hat allerdings funktioniert.

Gruß,
Martin

amenomade

Zitat von: Mathea am 27 Dezember 2020, 00:41:34
Ich bedanke mich vorab für die Arbeit an dem tollen Modul!

Ich teste es seit ein paar Stunden und wollte lediglich eine Fehlermeldung dokumentieren. Nachdem ich die Betriebsart des Gerätes auf "Sleep" gestellt habe, bekam ich folgende Warn- und Fehlermeldung im Log:

2020.12.27 00:00:06 1: PERL WARNING: Use of uninitialized value $nextupdate in concatenation (.) or string at ./FHEM/60_freeairconnect.pm line 380.
2020.12.27 00:00:06 2: freeairconnect (WZ_freeair100): Error POST setting ComfortLevel ERR:  DATA:
1


Das Setzen des Modus hat allerdings funktioniert.

Gruß,
Martin

Danke für die Rückmeldung. Die Zeile 380 kannst Du ruhig auskommentieren, den gleichen Log3 Befehl gibt es 3 Zeilen später (copy/paste Fehler)

Ich werde es bei Gelegenheit korrigieren, sobald das Thema mit GetUpdates und Errors gelöst ist.

Für die Fehlermeldung: da muss ich was verstehen: kriegst Du diese Fehlermeldung NUR beim Setzen des Comfortlevel auf sleep, oder ist sie auch bei anderen Comfortlevels da?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Mathea

Ich habe das gerade noch mal mit verbose 5 ausprobiert.
Die Fehlermeldung kommt jedes Mal wenn ich den OperationMode setze (habe es mit Sleep, Turbo und Comfort getestet). Hier der entsprechende Auszug aus dem Log mit den vorangehenden Zeilen:

2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): Set command OperationMode
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): Set OperationMode Comfort
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): GetUpdate
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): Getting URL https://www.freeair-connect.de/getDataHexAjax.php
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): GetUpdate: sending postdata
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): GetUpdate: setting new interval 60
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): GetUpdate - setting new timer 1609104527.29573
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): GetUpdate: new interval set
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): Set OperationMode Comfort - sending postdata
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): Set command ?
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): Set command ?
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): Set command ?
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): Set command ?
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): Set command ?
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): Set command ?
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): Set OperationMode Comfort - setting new timer
2020.12.27 22:27:47 5: freeairconnect (WZ_freeair100): Set OperationMode Comfort - setting new timer 1609104557.31198
2020.12.27 22:27:47 4: freeairconnect (WZ_freeair100): ERR: DATA:2
2020.12.27 22:27:47 2: freeairconnect (WZ_freeair100): Error POST setting ComfortLevel ERR:  DATA:
1


Das Gerät reagiert ein paar Sekunden versetzt dennoch richtig.

Beim setzen des ComfortLevels kommt kein Error und es wird ein "Posted comfortlevel X successfully" zurückgemeldet.
Hier der entsprechende Log Auszug:

2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): Set command ComfortLevel
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): Set ComfortLevel 5
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): GetUpdate
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): Getting URL https://www.freeair-connect.de/getDataHexAjax.php
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): GetUpdate: sending postdata
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): GetUpdate: setting new interval 60
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): GetUpdate - setting new timer 1609104280.90107
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): GetUpdate: new interval set
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): Set ComfortLevel 5 - sending postdata
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): Set command ?
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): Set command ?
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): Set command ?
2020.12.27 22:23:40 1: PERL WARNING: Use of uninitialized value $nextupdate in concatenation (.) or string at ./FHEM/60_freeairconnect.pm line 327.
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): Set ComfortLevel 5 - setting new timer
2020.12.27 22:23:40 5: freeairconnect (WZ_freeair100): Set ComfortLevel 5 - setting new timer 1609104310.91276
2020.12.27 22:23:41 4: freeairconnect (WZ_freeair100): ERR: DATA:

1
2020.12.27 22:23:41 5: freeairconnect (WZ_freeair100): Posted comfortlevel 5 successfully

amenomade

OK, danke. Sollte behoben sein. Siehe anbei.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Mathea

Vielen Dank! Jetzt bekomme ich keine Warn- oder Fehlermeldungen mehr im Log wenn ich die Geräte steuere.

eldi0s

Gutes und gesundes Neues  ;)

Wollte kurz RM geben.

Modulversion vom 25.12.2020 läuft jetzt seit 26.12.2020 und hat bisher keine Auffälligkeiten. Logsize pro Gerät und Stunde konstant bei 85-95 KB.
Somit sollte die Anzahl der Abfragen pro Stunde jetzt auch konstant sein. Melde mich in ner Woche nochmal. Sollte bis dahin nix passieren ist der
Fehler wohl weg  ;D

Grüße,
eldi

eldi0s

Bis dato immer noch keine Auffälligkeiten. Läuft, läuft und läuft.

Danke

amenomade

Prima, danke. Dann übertrage ich die modifizierte Version ins ersten Post des Threads.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

tyrolean

Hallo,

danke für das Modul - funktioniert, zumindest auf den ersten Blick, super.
Hat jemand von euch mal versucht das Ganze (zumindest die Steuerung) über Homebridge zu realisieren. Gibt es hierfür überhaupt ein entsprechendes Device in den HomeKit Definitionen?

Danke für eure Antwort...

eldi0s

Hi,

Homebridge/Homekit und dazugehörige Schnittstellen kenn ich leider nicht. Aber ich steuere meine Anlagen auch extern über einen KNX Bus mit Visualisierung.
Dazu lasse ich FHEM die Readings mit einem Notify konvertieren und auf den KNX Bus übersetzen oder vice versa. Funktioniert ganz gut.

FHEM <--> KNX <--> Visu

Google sagt mir das Homebridge MQTT-fähig ist, sollte also auf ähnliche Weise funktionieren.

FHEM <--> MQTT Broker <--> Homebridge (oder Visu)

Grüße,
eldi

eldi0s

Mir ist eben nach dem Filterwechsel aufgefallen, dass er 2 der 3 Geräte nicht mehr updated mit folgender Fehlermeldung.

Ignoring probably wrong data

Die Geräte werden zum Wechsel vom Strom getrennt. Danach wird die eventuell vorhandene Warnung zum Filterwechsel quittiert.
Bei einem der Geräte habe ich auch die Mindestluftmenge mit den am Gerät vorhandenen Dippschaltern verändert am anderen nicht.

2021.03.11 13:57:38 5: freeairconnect (freeair100UG): GetUpdate
2021.03.11 13:57:38 5: freeairconnect (freeair100UG): Getting URL https://www.freeair-connect.de/getDataHexAjax.php
2021.03.11 13:57:38 5: freeairconnect (freeair100UG): GetUpdate: sending postdata
2021.03.11 13:57:38 5: freeairconnect (freeair100UG): GetUpdate: setting new interval 200
2021.03.11 13:57:38 5: freeairconnect (freeair100UG): GetUpdate - setting new timer 1615467658.58368
2021.03.11 13:57:38 5: freeairconnect (freeair100UG): GetUpdate: new interval set
2021.03.11 13:57:38 5: freeairconnect (freeair100UG): Params Parse = HASH(0x344c100), ,
mbJ0ZMOasVWXCPXQkAxQW1V62nx5rGO8ygb/FbmWr4WK3RLnjvQV7gtOHFggPWqttimestamp2021-03-11 13:56:16timestamp2x5x0timestamp0x0x0timestamp0=jU3VqQMwMBnoDJDF5p4a0hFSYv0jEGMLqrMVQ0tMR6BP6agyOnGBwMfcNsZZUPQP&1=RcHcDordQHPBH86zznndVW5gRla7IXyYkLme75gJCumoaV%2BfDLME3A
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): Parse: Starting
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): Handling data mbJ0ZMOasVWXCPXQkAxQW1V62nx5rGO8ygb/FbmWr4WK3RLnjvQV7gtOHFggPWqt
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): storePassword
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): Read freeairconnect password from file
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): decryptPassword
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): stringToBytes = 001011110001111000001010011001010110110000010000000010100010010001100111000011010000000000000000000000000010100000000011010010110000001101001011010111000101101000111110000000010000100100000000000000010111111101111001011111110111100101000001000000010000000000000000000000010000010100010100000010010000100101000100000011110000000000000000000000010000000000000000000000010010000110111000
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): stringToBytes = 47 30 10 101 108 16 10 36 103 13 0 0 0 40 3 75 3 75 92 90 62 1 9 0 1 127 121 127 121 65 1 0 0 1 5 20 9 9 68 15 0 0 1 0 0 1 33 184
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): Set command ?
2021.03.11 13:57:39 3: freeairconnect (freeair100UG): Ignoring probably wrong data ™²tdÚ±U—õА P[UzÚ|y¬c¼Êÿ¹–¯...ŠÝçŽôî NX =j­


Wenn ich den Check im Modul auskommentiere geht alles wieder?

# Probabilitycheck
   my $DIP = freeairconnect_extractValueFromBits("DIPSwitch", $bitString);
   my $ErrorState = freeairconnect_extractValueFromBits("ErrorState", $bitString);
#   if ($ErrorState ne "0" and $DIP ne ReadingsVal($name, "DIPSwitch", 0)) {
#     readingsEndUpdate($hash, 1);
#     Log3 $name, 3, "freeairconnect ($name): Ignoring probably wrong data $rawdata";
#     $hash->{UPDATED} = FmtDateTime(time());
#     return;
#   }


Was gleichst du in dem Check ab?

Grüße,

eldi0s

Zitat von: eldi0s am 11 März 2021, 14:40:34
Mir ist eben nach dem Filterwechsel aufgefallen, dass er 2 der 3 Geräte nicht mehr updated mit folgender Fehlermeldung.

Ignoring probably wrong data

Die Geräte werden zum Wechsel vom Strom getrennt. Danach wird die eventuell vorhandene Warnung zum Filterwechsel quittiert.
Bei einem der Geräte habe ich auch die Mindestluftmenge mit den am Gerät vorhandenen Dippschaltern verändert am anderen nicht.

2021.03.11 13:57:38 5: freeairconnect (freeair100UG): GetUpdate
2021.03.11 13:57:38 5: freeairconnect (freeair100UG): Getting URL https://www.freeair-connect.de/getDataHexAjax.php
2021.03.11 13:57:38 5: freeairconnect (freeair100UG): GetUpdate: sending postdata
2021.03.11 13:57:38 5: freeairconnect (freeair100UG): GetUpdate: setting new interval 200
2021.03.11 13:57:38 5: freeairconnect (freeair100UG): GetUpdate - setting new timer 1615467658.58368
2021.03.11 13:57:38 5: freeairconnect (freeair100UG): GetUpdate: new interval set
2021.03.11 13:57:38 5: freeairconnect (freeair100UG): Params Parse = HASH(0x344c100), ,
mbJ0ZMOasVWXCPXQkAxQW1V62nx5rGO8ygb/FbmWr4WK3RLnjvQV7gtOHFggPWqttimestamp2021-03-11 13:56:16timestamp2x5x0timestamp0x0x0timestamp0=jU3VqQMwMBnoDJDF5p4a0hFSYv0jEGMLqrMVQ0tMR6BP6agyOnGBwMfcNsZZUPQP&1=RcHcDordQHPBH86zznndVW5gRla7IXyYkLme75gJCumoaV%2BfDLME3A
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): Parse: Starting
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): Handling data mbJ0ZMOasVWXCPXQkAxQW1V62nx5rGO8ygb/FbmWr4WK3RLnjvQV7gtOHFggPWqt
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): storePassword
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): Read freeairconnect password from file
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): decryptPassword
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): stringToBytes = 001011110001111000001010011001010110110000010000000010100010010001100111000011010000000000000000000000000010100000000011010010110000001101001011010111000101101000111110000000010000100100000000000000010111111101111001011111110111100101000001000000010000000000000000000000010000010100010100000010010000100101000100000011110000000000000000000000010000000000000000000000010010000110111000
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): stringToBytes = 47 30 10 101 108 16 10 36 103 13 0 0 0 40 3 75 3 75 92 90 62 1 9 0 1 127 121 127 121 65 1 0 0 1 5 20 9 9 68 15 0 0 1 0 0 1 33 184
2021.03.11 13:57:39 5: freeairconnect (freeair100UG): Set command ?
2021.03.11 13:57:39 3: freeairconnect (freeair100UG): Ignoring probably wrong data ™²tdÚ±U—õА P[UzÚ|y¬c¼Êÿ¹–¯...ŠÝçŽôî NX =j­


Wenn ich den Check im Modul auskommentiere geht alles wieder?

# Probabilitycheck
   my $DIP = freeairconnect_extractValueFromBits("DIPSwitch", $bitString);
   my $ErrorState = freeairconnect_extractValueFromBits("ErrorState", $bitString);
#   if ($ErrorState ne "0" and $DIP ne ReadingsVal($name, "DIPSwitch", 0)) {
#     readingsEndUpdate($hash, 1);
#     Log3 $name, 3, "freeairconnect ($name): Ignoring probably wrong data $rawdata";
#     $hash->{UPDATED} = FmtDateTime(time());
#     return;
#   }


Was gleichst du in dem Check ab?

Grüße,

Ok hatte jetzt nochmal Zeit mir das ganze im Detail anzuschauen. Du gleichst ja mit der Plausibilitätsprüfung den Error State und die DIP Switch ab. Da liegt der Hund begraben. Wenn sich dort was ändert verwirft er die Daten. Ich denke aber eh, da wir das Problem mit den falschen Werten behoben haben könntest du diese Prüfung raus nehmen. Sonst hat man jedes mal bei nem Filterwechsel oder ner Änderung an den Dippschaltern ein Problem.

Grüße,
eldi

amenomade

Zitat von: eldi0s am 22 Juni 2021, 14:55:51
Ok hatte jetzt nochmal Zeit mir das ganze im Detail anzuschauen. Du gleichst ja mit der Plausibilitätsprüfung den Error State und die DIP Switch ab. Da liegt der Hund begraben. Wenn sich dort was ändert verwirft er die Daten. Ich denke aber eh, da wir das Problem mit den falschen Werten behoben haben könntest du diese Prüfung raus nehmen. Sonst hat man jedes mal bei nem Filterwechsel oder ner Änderung an den Dippschaltern ein Problem.

Grüße,
eldi
Naja. Den Fehler mit zu viele Pollings haben wir behoben, aber der Fehler mit falschen Werte kam vorher. Bist Du sicher, dass beide Problemen miteinander zu tun haben? Und seitdem Du den Check auskommentiert hast, hast Du nie komische Werte bekommen?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

eldi0s

Ja, der Fehler mit den falschen Werten hatte was damit zu tun, dass er bei mehreren Geräten mit unterschiedlichen Passwörtern durcheinander kam. Das hast du aber auch schon eine Weile behoben.
Siehe Post 14. Da hatten wir auch zwecks Passwörter und deren Zuordnung ein paar private Nachrichten ausgetauscht. Seit deiner Änderung ist da nichts mehr schief gelaufen.

Wollte gestern die TrafficLights in die Visu integrieren, werde daraus aber nicht ganz schlau.

Hier die Readings vom Modul:
TrafficLightCO2 1
TrafficLightFilterExtract 2
TrafficLightFilterSupply 2
TrafficLightHumidity 1

Im Anhang die Ampeln vom Gerät.

Irgendwas stimmt da nicht. Ist bei allen 3 Geräten zerhauen.

Grüße,