FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: slowfinger am 30 Oktober 2017, 19:34:05

Titel: [Gelöst] DOIF State abfragen
Beitrag von: slowfinger am 30 Oktober 2017, 19:34:05
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
Titel: Antw:DOIF State abfragen
Beitrag von: Amenophis86 am 30 Oktober 2017, 19:43:52
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.
Titel: Antw:DOIF State abfragen
Beitrag von: slowfinger am 30 Oktober 2017, 20:04:14
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

Titel: Antw:DOIF State abfragen
Beitrag von: Amenophis86 am 30 Oktober 2017, 20:10:25
Ich meinte ein list des DOIF :)
Titel: [Gelöst] DOIF State abfragen
Beitrag von: slowfinger am 31 Oktober 2017, 11:48:40
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
Titel: Antw:[Gelöst] DOIF State abfragen
Beitrag von: Amenophis86 am 31 Oktober 2017, 12:42:57
Na wenn es klappt, dann ist ja gut :)