Einführung neues Reading für Z-Wave Thermostate

Begonnen von Nexus1211, 24 Februar 2016, 17:01:56

Vorheriges Thema - Nächstes Thema

Nexus1211

Hallo,

ich bin newbie bei FHEM aber mit ausreichender Programmiererfahrung. Bei mir in der Wohnung wird nur Z-Wave verwendet (Razberry mit Zwave Dongle). Ich besitze einen Danfoss LC-13 Thermostat und einen RS (Room Sensor) der gleichen Marke. Da beide Geräte sich immer im Schlaf Modus befinden, dauert es ein paar Minuten (bei mir Wakeup interval auf 10mn gesetzt) bis ein Device die neue SetPoint Einstellung übernimmt. Ich verwende hauptsächlich den "set thermostatSetpointSet" Befehl um die SetPoint Werte umzustellen.
Was ich gern hätte ist ein neues Reading namens "targetSetPoint" der anhand der Ausführung des "set thermostatSetpointSet" Kommandos den neuen Temperatur Soll-Wert speichert. Bsp:
1) [in fhemweb] setpointTemp: 22.0 C heating   / targetSetPoint: 22.0 C heating
2) set xxxx thermostatSetpointSet 20.5 C
3) [in fhemweb] setpointTemp: 22.0 C heating   / targetSetPoint: 20.5 C heating
4) [in fhemweb][nach xxxx wakeup] setpointTemp: 20.5 C heating   / targetSetPoint: 20.5 C heating

Sowas ist mit notify an den ZWDongle <devicespec> machbar, in dem man auf das Event "thermostatSetpointSet" lauscht. Dazu muss ein neues Reading fürs device xxxx einmalig eingeführt werden: setreading xxxx targetSetPoint 10.0 C heating.
Eine geschickte Lösung wäre sowas nativ für jeden Thermostat-Device einzuführen. Kannst Du mir bitte einen Tipp geben wo am besten diese Aufgabe erledigen kann?

Gruß
Alex

rudolfkoenig

ZitatEine geschickte Lösung wäre sowas nativ für jeden Thermostat-Device einzuführen.

Ich verstehe noch nicht, wieso eine "native" Loesung geschickter waere.

Ein notify ist doch weiterhin notwendig, um die Verbindung zwischen den beiden Geraeten herzustellen, man wuerde nur setreading sparen. Dafuer muss das Modul diesen Fall speziell behandeln. Wenn man die Forderung generalisiert, dann muessten alle Befehle, die bei einem batteriebetriebenen Geraet in der Warteschlange sind, in lesbarer Form dargestellt werden. Ob das als Reading gut aufgehoben ist, weiss ich nicht.

Solange ich nicht massiv ueberstimmt werde, oder man eine fuer mich einleuchtende Begruendung liefert, bin ich gegen eine native Loesung.

Nexus1211

Hallo Rudi,

mit der Notify hat es leider nicht funktioniert wie ich mir dachte. Das Problem ist, dass der  "thermostatSetpointSet" Kommando nur in dem FHEM Logfile erscheint als:


2016.02.08 17:50:09 2: ZWave set TRV_Children thermostatSetpointSet 21.50
Wäre dieser Kommando in dem Gerät-Logfile erschienen, hätte man sowas in einer Notify empfangen können und dementsprechend drauf reagieren. Leider fehlt mir die Erfahrung mit FHEM.

Wie kann man die Befehle "set" oder "get", die man an einem Z-Wave Gerät verschickt, generell empfangen?

Danke

Nexus1211

Hallo,

mich beschäftigt nun die Frage "wie kann man Sendekommandos wie "set" oder "get" als Events empfangen und drauf gewisse Logik mit notify bauen"?

Beispiel:
1) set Thermostat_1  thermostatSetpointTemp 21.5
2) nach Verschicken dieses Kommandos wird ein EVENT ausgelöst und eine dementsprechende notify ausgeführt
3) in diesem "notify handler" möchte ich den Wert abfangen und dies in eine globale Variable setzten (define nSetPointhandler notify Thermostat_1: thermostatSetpointTemp { $globalVar = $EVENT}

ist es überhaupt möglich?
Alex

tomspatz

Hi Alex
du hast doch in den Readings des LC-13 das setpointTemp welches doch immer aktuell ist, bei dir alle 10 Minuten. Ist das ggf. dein gewünschter Wert?

LG Tom

Nexus1211

Hi Tom,

das setpoinTemp enthält immer die aktuelle Ist-SetPoint mit der den LC13 zum Betrieb eingestellt ist. Nun ändere ich diesen Wert auf einen Soll-SetPoint mit einem thermostatSetpointTemp Kommando. der LC13 braucht bis zu maximal 10 minuten bis er sich umstellt. Daher hätte ich gern ein weiteres Reading namens "TargetSetPointTemp", der diesen Soll-SetPoint enthällt.
"SetPointTemp" und "TargetSetPointTemp" weichen sie sich nur ab, bis der LC13 sich nach dem neuen Wert umstellt. ansonsten bleiben sie für die ganze Zeit ähnlich.

Beispiel ist im ersten Post beschrieben.

Danke für deine Hilfe.

tomspatz

sorry aber ich verstehe nicht was du erreichen möchtest. :-\
Die neue Temperatur gibst du ja mit z.B. thermostatSetpointSet vor, damit hast du einen Wert.
Der sich dann bei dem nächsten wakeup des device dort auch "verewigt" und Spätestens nach zwei wakeup Perioden hast du auch den ausgelesenen Wert vom Regler.

Alles soweit OK wie ich meine.
SORRY

Nexus1211

Zitat von: tomspatz am 02 März 2016, 20:53:14
Die neue Temperatur gibst du ja mit z.B. thermostatSetpointSet vor, damit hast du einen Wert.

Hallo Tom,

und genau diesen Wert hätte ich in einer Variable oder in einem Reading gespeichert haben.
Allgemein: Wie kann man einen Parameter eines "Set" Kommandos abfangen?

Danke