Hallo,
ich weiß nicht, ob ich einfach nur einen dummen Fehler gemacht habe, oder das, was ich möchte viel komplizierter ist, als ich gerade denke.
Was ich will: Wenn meine Fernbedienung auf Taste 1 (State 1002) gedrückt wird und Lampe 1 aus ist, sollen Lampe 1 und 2 angehen.
Soweit, so (eigentlich) einfach. Hier mein DOIF:
([Tradfri_Fernbedienung1:state] == 1002 and [HUEDevice11:state] eq "off") (set HUEDevice11 on, set HUEDevice12 on)
Im Prinzip habe ich ähnliches schon öfters gemacht, um bei Knopfdruck einer Fernbedienung etwas auszulösen. Nach dem Drücken bleibt die Fernbedienung natürlich auf dem entsprechenden Status. Normal funktioniert das auch, dass nur in dem Moment ausgelöst wird, wenn die entsprechende Taste gedrückt wird.
Doch hier startet die Schleife nicht nur, wenn ich eine Taste drücke, sondern auch immer, wenn ich (manuell per FHEM) die Lampe ausschalte. Dann geht sie nach einer Sekunde gleich wieder an. Wie kann ich das ändern, dass der Befehl nur dann ausgeführt wird, wenn ich die entsprechende Taste drücke und nicht, wenn der State von vorher noch auf diesem Wert steht, aber gar kein neues Signal eingeht?
Einfach gesagt, würde es schon helfen wenn dieses Doif nur dann aktiv wird, wenn ein Signal der Fernbedienung eingeht. Dann soll geschaut werden, ist die Lampe an? Wenn nein, dann beide Lampen an und keine Handlung mehr in dem Doif, bis wieder einer eine Taste drückt. Alternativ könnte ich auch nach jedem Tastendruck den State automatisch wieder ändern lassen, so dass die Fernbedienung immer nur für einen Schaltvorgang den State 1002 zeigt und dann zum Beispiel per set innerhalb des DOIFs auf 1000 gesetzt wird. Geht sowas?
Bitte keine Vorschläge mit Toggle oder Notifys. Ich will dieses DOIF später noch um weitere Funktionen und Bedingungen erweitern, daher wollte ich genau diesen Weg wählen.
Vielen Dank schonmal!
Hier der Vollständigkeit halber die Readings meiner Fernbedienung:
Internals:
DEF sensor 2 IODev=ConBeeBridge
FUUID 602951c7-f33f-dc36-21f3-54700655b6339b32
FVERSION 31_HUEDevice.pm:0.239120/2021-03-08
ID S2
INTERVAL
IODev ConBeeBridge
NAME Tradfri_Fernbedienung1
NR 23
STATE 5002
TYPE HUEDevice
lastupdated 2021-07-03 11:09:40
lastupdated_local 2021-07-03 13:09:40
manufacturername IKEA of Sweden
modelid TRADFRI remote control
name TRÅDFRI Fernbedienung
on 1
reachable 1
swversion 2.3.014
type ZHASwitch
uniqueid 58:8e:81:ff:fe:29:ca:1d-01-1000
READINGS:
2021-07-03 14:46:51 battery 47
2021-07-03 14:46:51 batteryPercent 47
2021-03-17 20:42:21 lastseen 2021-03-17T19:42Z
2021-07-03 14:46:51 reachable 1
2021-07-03 13:09:40 state 5002
helper:
devtype S
reachable 0
update_timeout 1
configList:
json:
ep 1
etag c53fab6a54a8f8ce0b83f6f9590252da
lastseen 2021-07-03T12:51Z
manufacturername IKEA of Sweden
mode 3
modelid TRADFRI remote control
name TRÅDFRI Fernbedienung
swversion 2.3.014
type ZHASwitch
uniqueid 58:8e:81:ff:fe:29:ca:1d-01-1000
config:
alert none
battery 47
group 1
state:
buttonevent 5002
lastupdated 2021-07-03T11:09:40.036
setList:
Attributes:
IODev ConBeeBridge
alarmSettings alarm0,|Tradfri_Fernbedienung1:state:1002||off
icon it_remote
model TRADFRI remote control
Lampe 1 aus ist, sollen Lampe 1 und 2 angehen ??
Lampe1 an oder aus???
Hi,
du musst die Statusabfrage [Tradfri_Fernbedienung1:state] == 1002 in einen Eventrigger ändern: [Tradfri_Fernbedienung1:"1002"]
https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events
Oder / Und die triggerung [HUEDevice11:state] eq "off" durch den zweiten Ausdruck in eine Abfrage ändern [?HUEDevice11:state] eq "off"
https://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger
Gruß Otto
Hallo juergen012,
Ja, es handelt sich hier um 2 Lampen, die für gewöhnlich (mit diesem Schalter) simultan geschaltet werden sollen und gleich reagieren sollen (also beide an oder beide aus), auch wenn vorher nur eine von Ihnen (z.B. per Browser) allein angeschaltet war.
Ich hätte auch die Fälle
- Wenn 1 an und 2 aus
- Wenn 1 an und 2 an
- Wenn 1 aus und 2 an
- wenn 1 aus und 2 aus
einzeln abhandeln können, aber im Prinzip ist es egal, wenn beide Lampen etwas unterschiedliches zeigen. Denn dann kann eh nur eine gechaltet werden. Also überprüfe ich nur eine der beiden Lampen. Wenn 1 an ist und der Schalter gedrückt wird, sollen beide ausgehen. Wenn 1 aus ist und der Schalter gedrückt wird, sollen beide an gehen, jeweils egal, was vorher mit Lampe 2 gewesen ist.
Hallo Otto123,
vielen Dank. Habe zwar in der Commandref gesucht, nur leider aus Unwissenheit (wenn man nicht das richtige Schlagwort kennt) an der falschen Stelle.
Jetzt läuft alles und das DOIF wächst mit seinen Fähigkeiten!