Hallo zusammen,
ich habe schon eine Weile gelesen, komme aber leider den Knoten nicht gelöst.
Ich habe ein Sonoff_Touch, der über MQTT angebunden ist. Tut auch alles. Der Touch schickt die state-Änderungen und auch (tele alle 5min) kommen und werden auch geloggt. zB
2017-10-30_18:04:08 Sonoff_Touch tele: {"Time":"2017-10-30T18:04:08", "Uptime":253, "Vcc":3.206, "POWER":"on", "Wifi":{"AP":1, "SSID":"abcdef", "RSSI":82, "APMac":"AA:AA:AA:AA:AA:AA"}}
2017-10-30_18:06:38 Sonoff_Touch off
Da der Touch ja nur ein Relais ist wollte ich, wenn die Rolläden auf "undefined" (=einer ist nicht in Endposition) stehen, per Taster und DOIF die Rolläden hochfahren.
((([Sonoff_Touch:state] eq "on") or ([Sonoff_Touch:state] eq "off")) and ([?rolladen_alle] eq "undefined")) (set rolladen_alle open)
Funktioniert so weit auch wenn ich selber schalte. Leider gibt es anscheinend auch andere Trigger (aus dem tele ?), die das DOIF ausführen.
Ich bekommen es leider nicht hin das DOIF nur bei state Änderungen zu triggern. Gibt es einen Weg ohne weitere dummys & notify's ?
Wäre toll wenn mir jemand auf die Sprünge helfen würde
Denke folgendes wird fehlen: https://fhem.de/commandref_DE.html#DOIF_checkReadingEvent. Ist aber nur ein raten, da man mit einem list des Device mehr sehen würde.
danke für die schnelle Antwort. Ich probier das morgen (?) mal aus.
ansonsten das wäre das list device
Internals:
IODev myBroker
NAME Sonoff_Touch
NR 212
STATE off
TYPE MQTT_DEVICE
READINGS:
2017-10-30 18:06:38 state OFF
2017-10-30 19:59:09 tele {"Time":"2017-10-30T19:59:08", "Uptime":254, "Vcc":3.207, "POWER":"OFF", "Wifi":{"AP":1, "SSID":"xxxxxx", "RSSI":80, "APMac":"AA:AA:AA:AA:AA:AA"}}
2017-10-30 19:59:09 transmission-state incoming publish received
message_ids:
publishSets:
:
topic cmnd/Rolladen_Touch/POWER
values:
ON
OFF
sets:
OFF
ON
subscribe:
stat/Rolladen_Touch/POWER
tele/Rolladen_Touch/STATE
subscribeExpr:
^stat\/Rolladen_Touch\/POWER$
^tele\/Rolladen_Touch\/STATE$
subscribeReadings:
stat/Rolladen_Touch/POWER:
cmd
name state
tele/Rolladen_Touch/STATE:
cmd
name tele
Attributes:
IODev myBroker
eventMap ON:on OFF:off
publishSet ON OFF cmnd/Rolladen_Touch/POWER
room MQTT
stateFormat state
subscribeReading_state stat/Rolladen_Touch/POWER
subscribeReading_tele tele/Rolladen_Touch/STATE
webCmd on
Ich meinte ein list des DOIF :)
Hallo
DANKE ! Jetzt schein es zu funktionieren ... Der Vollständigkeit hier noch der (gewünschte) list des DOIF 8)
Internals:
DEF ((([Sonoff_Touch:state] eq "ON") or ([Sonoff_Touch:state] eq "OFF")) and ([?rolladen_alle] eq "undefined")) (set rolladen_alle open)
NAME Touchtrigger
NR 367
NTFY_ORDER 50-Touchtrigger
STATE cmd_1
TYPE DOIF
READINGS:
2017-10-31 11:39:15 Device Sonoff_Touch
2017-10-31 11:02:10 cmd 1
2017-10-31 11:02:10 cmd_event Sonoff_Touch
2017-10-31 11:02:10 cmd_nr 1
2017-10-31 11:02:10 e_Sonoff_Touch_state OFF
2017-10-31 11:02:10 state cmd_1
condition:
0 ((ReadingValDoIf($hash,'Sonoff_Touch','state') eq "ON") or (ReadingValDoIf($hash,'Sonoff_Touch','state') eq "OFF")) and (InternalDoIf($hash,'rolladen_alle','STATE') eq "undefined")
devices:
0 Sonoff_Touch
all Sonoff_Touch
do:
0:
0 set rolladen_alle open
1:
helper:
event tele: {"Time":"2017-10-31T11:39:16", "Uptime":270, "Vcc":3.207, "POWER":"off", "Wifi":{"AP":1, "SSID":"xxx", "RSSI":66, "APMac":"xxx"}}
globalinit 1
last_timer 0
sleeptimer -1
timerdev Sonoff_Touch
timerevent off
triggerDev Sonoff_Touch
timerevents:
off
timereventsState:
state: OFF
triggerEvents:
tele: {"Time":"2017-10-31T11:39:16", "Uptime":270, "Vcc":3.207, "POWER":"off", "Wifi":{"AP":1, "SSID":"xxx", "RSSI":66, "APMac":"xxx"}}
triggerEventsState:
tele: {"Time":"2017-10-31T11:39:16", "Uptime":270, "Vcc":3.207, "POWER":"off", "Wifi":{"AP":1, "SSID":"xxx", "RSSI":66, "APMac":"xxx"}}
internals:
0 rolladen_alle:STATE
all rolladen_alle:STATE
itimer:
readings:
0 Sonoff_Touch:state
all Sonoff_Touch:state
regexp:
0:
all:
state:
STATE:
trigger:
Attributes:
checkReadingEvent 1
Na wenn es klappt, dann ist ja gut :)