Hallo,
ich ahbe ein Problem und ich weß nicht wie ich es angehen soll
Also ich 2 Devices mit jeweils einem Reading Zieltemperatur.
Das erste Device ist ein Themostat
und das 2 Device eine Heizung
Nun soll es so funktionieren..Egal wo die Raumtemperatur eingestellt wird sollte sie auf Beiden Geräten gleich sein.
Nun wollte ich das über 2 Notifys lösen die Jeweils bei einer Änderung des Der Temperatur triggern und sie bei dem anderen Device setzten.
Dadurch hab ich mir aber eine Schleife programmiert.
Weil änder das notify1 auf Gerät1 triggert das notify2 und schreibt auf Gerät2 womit wieder das notify 1 anspringt......uswuswusw
Wie kann mann sowas elegant verhindern?
Vielen Lieben dank :)
Ich würde es mal damit versuchen:
http://fhem.de/commandref.html#event-on-change-reading
Dann solltest du nur noch dann ein Event bekommen, wenn der Wert geändert wird. D.h., wenn das Notify den Wert erneut auf den gleichen Wert setzt, der bereits eingestellt wird, gibt es kein neues Event und damit keine Schleife.
Dnke fuer deine Antwort. Aber funktioniert leider nicht. Erstens ändert sich der wert ja beim ändern. Und leider unterstützt der Modul das attribut event-on-change nicht. :(
Zitat von: zernima am 21 Januar 2020, 21:51:03
Erstens ändert sich der wert ja beim ändern.
Ja klar.
Aber doch (wie geschrieben) auf den gleichen Wert!?
Zumindest war das die Idee "dahinter"...
Zitat von: zernima am 21 Januar 2020, 21:51:03
Und leider unterstützt der Modul das attribut event-on-change nicht. :(
Wie wäre es dann mal mit lists der beiden Devices (Thermostat und Heizung)...
...und der aktuellen Notify (ja auch wenn das die "Schleifen-Dinger" sind)...
Schnelle Idee(n) (wenn das genannte tatsächlich nicht fruchtet):
- disableAfterTrigger bei den Notify
- set inactive, set Wert, (sleep,) set active des "Partner-Notify" (ACHTUNG: so "schreiben", dass ein fhem-sleep verwendet wird! Sonst blockiert fhem)
- ein drittes Device (z.B. dummy) in dem dann (egal wo verstellt wird) der tatsächliche (gültige) Wert steht...
Je nachdem was für Geräte es sind: evtl. machen das die Geräte selbst. Z.B. Homematic Thermostat und Heizkörper können "gepeert" werden. Da kann man dann drehen wo man will die "synchronisieren" sich selbst...
Aber dazu fehlt ja Info...
...also was für Geräte etc.
Gruß, Joachim
Oder was hältst du von einem Ausstieg mit ein zubauen, wenn man vorher prüft ob der Wert identisch ist, zu dem der schon im attr steht.
Vielleicht solltest Du mal genau sagen was Du da hast. Ich habe das hier bei mir getestet und mit event-on-change geht es super
Internals:
FUUID 5e0da812-f33f-5153-b960-f6fa7ee73726bebd
FVERSION 98_dummy.pm:0.206650/2019-12-06
NAME Thermostat
NR 95
STATE 22°C
TYPE dummy
READINGS:
2020-01-02 09:25:23 state off
2020-01-22 14:25:49 temperature 22
Attributes:
event-on-change-reading temperature
group RegTest
readingList temperature
room Test
setList temperature
stateFormat temperature°C
Internals:
FUUID 5e0da7e2-f33f-5153-846d-5184a7ba7d0417c7
FVERSION 98_dummy.pm:0.206650/2019-12-06
NAME Heizung
NR 94
STATE 22°C
TYPE dummy
READINGS:
2020-01-02 09:25:23 state off
2020-01-22 14:25:49 temperature 22
Attributes:
event-on-change-reading temperature
group RegTest
readingList temperature
room Test
setList temperature
stateFormat temperature°C
Internals:
DEF (Thermostat|Heizung):temperature:.* { CommandSet(undef,($NAME eq 'Thermostat' ? 'Heizung' : 'Thermostat') . ' temperature ' . $EVTPART1 )}
FUUID 5e284c57-f33f-5153-153b-4d1f05aa4da06256
NAME notifytestheizungthermostat
NR 395
NTFY_ORDER 50-notifytestheizungthermostat
REGEXP (Thermostat|Heizung):temperature:.*
STATE 2020-01-22 14:25:49
TRIGGERTIME 1579699549.4499
TYPE notify
READINGS:
2020-01-22 14:25:17 state active
Attributes:
group RegTest
room Test