FHEM vs. HomeMatic Homputer CL

Begonnen von fabian1987, 23 November 2013, 18:55:12

Vorheriges Thema - Nächstes Thema

fabian1987

Also das funktioniert leider so nicht:
define AzHeizungsregelungNotify notify Az_Thermostat.desired-temp.* {if ((ReadingsVal

Habe auch sämtliche Varianten wie Az_Thermostat.desired-temp oder Az_Thermostat*desired-temp ausprobiert. Keine Chance.

Eigentlich sollte es so aussehen:
define AzHeizungsregelungNotify notify (Az_Thermostat.desired-temp.* | Az_Thermostat.measured-temp.*) {if ((ReadingsVal

Dann müsste er doch sobald sich Soll- oder Istwert ändern das Notify aufrufen, korrekt?

Hier der Ausschnitt aus der Logdatei:


2013.12.15 14:44:37 5: Triggering Az_Thermostat (2 changes)
2013.12.15 14:44:37 5: Notify loop for Az_Thermostat desired-temp: 17.0
2013.12.15 14:44:37 5: Triggering AzHeizungsregelungNotify
2013.12.15 14:44:37 5: Cmd: >{if ((ReadingsVal("Az_Thermostat","desired-temp","")> ReadingsVal("Az_Thermostat","measured-temp","")) && (Value("Az_Schaltaktor") eq "off")) { fhem("set Az_Schaltaktor on")} elsif (ReadingsVal("Az_Thermostat","desired-temp","")< ReadingsVal("Az_Thermostat","measured-temp","") && (Value("Az_Schaltaktor") eq "on")) {fhem("set Az_Schaltaktor off") }\\
}<
2013.12.15 14:44:37 3: AzHeizungsregelungNotify return value: syntax error at (eval 62772) line 1, at EOF

Puschel74

Hallo,

ZitatDann müsste er doch sobald sich Soll- oder Istwert ändern das Notify aufrufen, korrekt?

Das sollte wohl so sein, ja.

Ich hab aber grad gesehen das meine FHT regelmäßig actuator senden.
Das kansntdu mit dem Event Monitor prüfen.

define AzHeizungsregelungNotify notify Az_Thermostat:(desired-temp.*|measured-temp.*) {if ((ReadingsVal
würde auf beides reagieren.

ZitatAzHeizungsregelungNotify return value: syntax error at (eval 62772) line 1, at EOF
EOF heisst End Of File - da hast du wohl noch einen Fehler in deinem notify.
Speziell mal die Klammern durchzählen und schauen ob auch an den richtigen Stellen die " stehen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

fabian1987

Das Notify sieht jetzt so aus und tut prinzipiell mal das, was es soll (jetzt auch mit dem set_on bzw. set_off um ein Deadlock bei "Missing Ack" zu vermeiden):


define AzHeizungsregelungNotify notify Az_Thermostat:(desired-temp.*|measured-temp.*) {if ((ReadingsVal("Az_Thermostat","desired-temp","")> ReadingsVal("Az_Thermostat","measured-temp","")) && ((Value("Az_Schaltaktor") eq "off") || (Value("Az_Schaltaktor") eq "set_on"))) {fhem("set Az_Schaltaktor on")} elsif (ReadingsVal("Az_Thermostat","desired-temp","")< ReadingsVal("Az_Thermostat","measured-temp","") && ((Value("Az_Schaltaktor") eq "on") || (Value("Az_Schaltaktor") eq "set_off")))  {fhem("set Az_Schaltaktor off")}\
}


Was ich jedoch einfach nicht verstehe ist, warum der Schalter nach wie vor mehrfach angesprochen wird. Im Logfile findet sich nämlich folgendes:


2013.12.15 17:36:43 2: CUL_HM set Az_Schaltaktor on
2013.12.15 17:36:43 2: CUL_HM set Az_Schaltaktor on
2013.12.15 17:36:50 2: CUL_HM set Az_Schaltaktor off
2013.12.15 17:36:50 2: CUL_HM set Az_Schaltaktor off


Ich dachte, dass "desired-temp" und "measured-temp" in einer Botschaft ankommen und zur einmaligen Ausführung des Notifys führen. Allerdings scheint das Notify ja zweimal ausgeführt zu werden.

Hast du diesbezüglich noch eine schlaue Idee?

Vielen Dank jedenfalls schonmal für deine geduldige Hilfe! :)

Puschel74

Hallo,

auch jetzt macht das notify das was es soll  8)

mach mal den Event Monitor auf und warten - warten - nicht nochmal klicken - es kommt schon was
und du wirst sehen das desired-temp und measured-temp zwei "Botschaften" Readings sind die vom Thermostat übertragen werden und
da du ja auf beide Temperaturen im regexp prüfst wird das notify auch zweimal auslösen.

Warum du aber auf die Temperaturen prüfst und nicht auf actuator ist mir immer noch ein Rätsel.
Ich meine ich habe ganz am Anfang mal actuator in den Raum geworfen  ;)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

fabian1987

#34
Ich muss zugeben, dass ich den Event-Monitor zuerst gar nicht für voll genommen habe. Aber das ist ja sehr praktisch. Ja, man sieht zweifelsohne, dass desired-temp und measured-temp zwei Botschaften sind. Habe jetzt aber noch ein bisschen recherchiert und habe festgestellt, dass die Aktoren nach einem Timeout tatsächlich den Zustand "MISSING ACK" einnehmen.

D.h.: "off" -> "set_on" -> "on" oder "MISSING ACK" nach Timeout bzw. "on" -> set_off -> "off" oder "MISSING ACK" nach Timeout. Folglich habe ich mein Notify nun so angepasst:


define BzOGHeizungsregelungNotify notify BzOG_Thermostat {if ((ReadingsVal("BzOG_Thermostat","desired-temp","")> ReadingsVal("BzOG_Thermostat","measured-temp","")) && ((Value("BzOG_Schaltaktor") eq "off") || (Value("BzOG_Schaltaktor") eq "MISSING ACK"))) {fhem("set BzOG_Schaltaktor on")} elsif (ReadingsVal("BzOG_Thermostat","desired-temp","")< ReadingsVal("BzOG_Thermostat","measured-temp","") && ((Value("BzOG_Schaltaktor") eq "on") || (Value("BzOG_Schaltaktor") eq "MISSING ACK")))  {fhem("set BzOG_Schaltaktor off")}\
}


Es gibt jetzt war trotzdem noch häufig "MISSING ACK"-Zustände, die ich aber eher auf den Empfang der Schalter im Metallgehäuse der Heizung zurückführen würde. Die Schaltsteckdose im Bad hat damit jedenfalls bisher keine Probleme gehabt. Insgesamt ist es jedoch dadurch deutlich robuster geworden, denn selbst wenn ein Schalter eine Schaltanweisung verpasst, wird die Heizung noch "gerettet".

Noch ein Satz, wieso ich nicht auf "actuator" abfrage. Zum Einen brauche ich praktisch keine Hysterese in der Temperaturregelung, da die Thermostate sehr stark bedämpft sind und die Temperatur ohnehin über- und unterschwingt, sodass die Lüfter bei Regelung auf einen konstanten Sollwert trotzdem ca. 15 Minuten an sind und dann auch 15 Minuten wieder aus. Außerdem ist es - finde ich - mit einer Soll- und Isttemperatur deutlich besser nachvollziehbar, wann die Heizung an- und ausgeht.

Gruß,
Fabian