DOIF: Desired Temp per dummy setzen

Begonnen von desmoloch, 20 Januar 2016, 09:30:30

Vorheriges Thema - Nächstes Thema

desmoloch

Hallo,

ich versuche derzeit die desired-temp an meiner Homematic Steuerung (TC) an die Heizung weiterzugeben. (Hintergrund: Wenn ich peere, wird die Ist Temp der Steuerung genommen. Das möchte ich nicht)
Daher versuche ich gerade die Temperatur per DOIF zu setzen. Die aktuelle Temperatur der Steuerung wird in einen dummy geschrieben:
define FL_Steuerung_desiredTemp_di DOIF ([FL_Steuerung_Climate:?desired-temp] != [FL_Steuerung_desiredTemp_dummy:state])
(set FL_Steuerung_desiredTemp_dummy [FL_Steuerung_Climate:desired-temp],
set AZ_Heizung_Clima desired-temp [FL_Steuerung_desiredTemp_dummy:state])

Das Attribut DO steht auf ALWAYS. Das SET der desired-temp sollte ja nur ausgeführen werden, wenn die desired-temp und mein dummy nicht mehr identisch sind (es hat also jemand die Steuerung betätigt).
Was passiert: Mein dummy wird immer auf den korrekten STATE gesetzt (19.0, 18,5 ect...). Allerdings wird das SET auch alle paar Minuten ausgeführt:
2016.01.17 23:11:07 3: CUL_HM set AZ_Heizung_Clima desired-temp 19.0
2016.01.17 23:11:07 3: CUL_HM set AZ_Heizung_Clima desired-temp 19.0
2016.01.17 23:12:28 3: CUL_HM set AZ_Heizung_Clima desired-temp 19.0
2016.01.17 23:12:38 3: CUL_HM set AZ_Heizung_Clima desired-temp 19.0
2016.01.17 23:14:42 3: CUL_HM set AZ_Heizung_Clima desired-temp 19.0
2016.01.17 23:17:03 3: CUL_HM set AZ_Heizung_Clima desired-temp 19.0

Verstehe nur leider nicht warum?

juergen012

hallo, ich sende die desiredTemperature eines MAX! Wandthermostaten an meine HM Heizungsthermostaten:
([MAX_04c0ea:desiredTemperature]) (set HM_422A9A_Clima desired-temp [MAX_04c0ea:desiredTemperature])

damit nur die Änderungen gesendet werden habe ich beim Wandthermostaten  attr MAX_04c0ea event-on-change-reading state
eingetragen
Gruß
Jürgen K.
Fhem unter Proxmox

desmoloch

#2
Habe ich auch an meiner Steuerung eingestellt:
event-on-change-reading
battery,batteryLevel,desired-temp,measured-temp,state


Aber ich möchte die desired-temp ja nicht ständig an meine Heizung senden, nur bei Änderungen. Daher das DOIF.

Kurze Frage zu deiner Einrichtung: Warum hast du nur state in deinem event-on-change-reading? Bei dir wird wahrscheinlich alle paar Minuten ein set ausgeführt? Genau das möchte ich ja nicht, da unsinnig.

desmoloch

Hat vielleicht noch jemand eine Idee?

Ellert

#4
Zitat von: desmoloch am 20 Januar 2016, 09:30:30
Hallo,

ich versuche derzeit die desired-temp an meiner Homematic Steuerung (TC) an die Heizung weiterzugeben. (Hintergrund: Wenn ich peere, wird die Ist Temp der Steuerung genommen. Das möchte ich nicht)
Daher versuche ich gerade die Temperatur per DOIF zu setzen. Die aktuelle Temperatur der Steuerung wird in einen dummy geschrieben:
define FL_Steuerung_desiredTemp_di DOIF ([FL_Steuerung_Climate:?desired-temp] != [FL_Steuerung_desiredTemp_dummy:state])
(set FL_Steuerung_desiredTemp_dummy [FL_Steuerung_Climate:desired-temp],
set AZ_Heizung_Clima desired-temp [FL_Steuerung_desiredTemp_dummy:state])

Das Attribut DO steht auf ALWAYS. Das SET der desired-temp sollte ja nur ausgeführen werden, wenn die desired-temp und mein dummy nicht mehr identisch sind (es hat also jemand die Steuerung betätigt).
Was passiert: Mein dummy wird immer auf den korrekten STATE gesetzt (19.0, 18,5 ect...). Allerdings wird das SET auch alle paar Minuten ausgeführt:
2016.01.17 23:11:07 3: CUL_HM set AZ_Heizung_Clima desired-temp 19.0
2016.01.17 23:11:07 3: CUL_HM set AZ_Heizung_Clima desired-temp 19.0
2016.01.17 23:12:28 3: CUL_HM set AZ_Heizung_Clima desired-temp 19.0
2016.01.17 23:12:38 3: CUL_HM set AZ_Heizung_Clima desired-temp 19.0
2016.01.17 23:14:42 3: CUL_HM set AZ_Heizung_Clima desired-temp 19.0
2016.01.17 23:17:03 3: CUL_HM set AZ_Heizung_Clima desired-temp 19.0

Verstehe nur leider nicht warum?

Du benutzt hier mit [FL_Steuerung_Climate:?desired-temp] ein Ereignis, das ist immer nur logisch "wahr" oder "falsch", daher wird bei jedem Ereignis getriggert, denn die Dummytemperatur ist immer ungleich "wahr" oder "falsch". Du müsstest das Reading "desired-temp" abfragen, s. http://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Stati_ohne_Trigger vergleiche http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events , also so  [?FL_Steuerung_Climate:desired-temp]

desmoloch

Zitat von: Ellert am 21 Januar 2016, 10:59:42
Du benutzt hier mit [FL_Steuerung_Climate:?desired-temp] ein Ereignis, das ist immer nur logisch "wahr" oder "falsch", daher wird bei jedem Ereignis getriggert, denn die Dummytemperatur ist immer ungleich "wahr" oder "falsch". Du müsstest das Reading "desired-temp" abfragen, s. http://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Stati_ohne_Trigger vergleiche http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events , also so  [?FL_Steuerung_Climate:desired-temp]

Ah ok super danke. Mit ? ist immer das Event gemeint. Ich wollte aber das Reading. Hier mein DOIF:
define FL_Steuerung_desiredTemp_di DOIF ([FL_Steuerung_Climate:desired-temp] != [FL_Steuerung_desiredTemp_dummy:state])
(set FL_Steuerung_desiredTemp_dummy [FL_Steuerung_Climate:desired-temp],
set AZ_Heizung_Clima desired-temp [FL_Steuerung_desiredTemp_dummy:state])

Einfach nur ? weglassen, dann klappt es.
Nur was ich jetzt noch nicht verstehe: Was willst du mir mit [?FL_Steuerung_Climate:desired-temp] sagen? Das Fragezeichen vorne bedeutet laut commandref:
Angaben in eckigen Klammern, die mit einem Fragezeichen beginnen, führen zu keiner Triggerung des Moduls, sie dienen lediglich der Abfrage.

Ellert

ZitatWas willst du mir mit [?FL_Steuerung_Climate:desired-temp] sagen?
Das war als Hinweis gedacht, falls Du mit [FL_Steuerung_Climate:?desired-temp] nicht triggern wolltest, dann müsstest Du [?FL_Steuerung_Climate:desired-temp] benutzen.


desmoloch

Zitat von: Ellert am 23 Januar 2016, 20:28:29
Das war als Hinweis gedacht, falls Du mit [FL_Steuerung_Climate:?desired-temp] nicht triggern wolltest, dann müsstest Du [?FL_Steuerung_Climate:desired-temp] benutzen.

hm ok. Müsste es dann aber nicht [?FL_Steuerung_Climate:?desired-temp] sein wenn ich das Event nicht triggern lassen will? [?FL_Steuerung_Climate:desired-temp] würde das Reading abfragen (ohne das es triggert), sofern ich das recht verstehe.

Ellert

ZitatMüsste es dann aber nicht [?FL_Steuerung_Climate:?desired-temp] sein wenn ich das Event nicht triggern lassen will?
Meinst Du das ist sinnvoll?

desmoloch

Zitat von: Ellert am 24 Januar 2016, 13:23:42
Meinst Du das ist sinnvoll?
Nein das will ich auch nicht, ist ja nicht sinnvoll. Versuche nur deinen Hinweis zu verstehen. Du sagtest ich könnte [?FL_Steuerung_Climate:desired-temp] statt [FL_Steuerung_Climate:?desired-temp] benutzen, wenn ich nicht triggern möchte. Wäre nicht aber [?FL_Steuerung_Climate:?desired-temp] korrekt?

Gruß

Ellert

Zitat[?FL_Steuerung_Climate:?desired-temp]
bedeutet: "Triggere nicht auf einen Event" und das ist, in diesem
Zitat[FL_Steuerung_Climate:?desired-temp] != [FL_Steuerung_desiredTemp_dummy:state]
Zusammenhang, Unsinn.

1. Fragezeichen bedeutet: nicht triggern
2. Fragezeichen bedeutet: trigger auf ein Event

desmoloch

Leider bekommt mein dummy nicht immer die richtige Temp gesetzt. Auch wenn die Desiredtemp ungleich ist, schlägt das DOIF anscheinend nicht richtig zu. State hat dann oft den falschen wert. Kann ich das DOIF irgendwie protokollieren?

Ellert

Der Grund könnte darin liegen, dass
ZitatBei Devices, die mit Zwischenzuständen arbeiten, insbesondere HM-Komponenten (Zwischenzustand: set_on, set_off), sollte die Definition möglichst genau formuliert werden, um unerwünschte Effekte zu vermeiden
nicht beachtet wird, s. http://fhem.de/commandref_DE.html#DOIF_Zu_beachten

desmoloch

Hm verstehe ich nicht warum es daran liegen soll. Die desired-temp hat ja nie ein set_on oder set_off. Das set wird im State des Thermostates hinterlegt, ich Frage ja das Reading desired-temp ab. Selbst wenn,  die Abfrage im DOIF ist ja ob mein dummy ungleich desired-temp ist. Ein Fehler von wegen not a Number oder in der Richtung gibt es im Log nicht.

Ellert

Aber set_<Wert> und das ist nicht numerisch.