Homebridge Status bei "manueller" Änderung

Begonnen von ThiemoSt, 03 Mai 2020, 14:47:25

Vorheriges Thema - Nächstes Thema

ThiemoSt

Hallo Zusammen,

ich habe inzwischen 2 Garagentore mit Sensoren ausgestattet. In FHEM wird ein Dummy mittels DOIF so geschaltet das es die entsprechenden Zustände (closed, closing, open, opening) für Homebridge annimmt. Das klappt auch soweit super.

Nun kommt aber auch der Fall das mal etwas nicht über die Home App geschaltet wird. Sei es über FHEM oder über den vorhandenen Taster in der Garage. Danach stimmt der angezeigte Status in der Home App nicht mehr bis mindestens einmal das Tor beide Sensoren angefahren hat. Der Status des Dummys in FHEM ist zu jederzeit korrekt.

Wenn also das Tor geöffnet ist und der Sensor für geöffnet verlassen wird geht der Status in FHEM auf closing. Dementsprechend ist der Status auf closed sobald das Tor komplett geschlossen ist. Nur in der Home App geht der Status dann auf "wird geöffnet" obwohl in FHEM der Status bei closing steht. Das bleibt auch bestehen sobald closed erreicht ist.
Behoben werden kann das dann nur mit 2 Klicks in der Home App. Beim ersten steht in der App "Schließen" ohne dass das Tor fährt, beim zweiten wird dann das Tor geöffnet und der Status stimmt wieder überein.

Weiß jemand wo bei mir der Fehler liegt? Oder hat noch Tipps wo ich suchen kann?

Hier noch die Lists von meinem Dummy und dem Doif:
Internals:
   FUUID      5e60acc2-f33f-a9cd-4259-53cbd7270796024a
   NAME       UG.ga.RO.Garage
   NR         318
   STATE      closed
   TYPE       dummy
   READINGS:
     2020-05-03 14:47:18   state           closed
Attributes:
   alias      Garagentor UG
   devStateIcon open:fts_garage_door_10@red closed:fts_garage_door_100@green opening:fts_garage_door_50@yellow closing:fts_garage_door_50@yellow
   fhem_widget_channels [{"order":99,"filter":"Thiemo,Michi","alias":"Garagentor","allowed_values":["closing","opening"]}]

   genericDeviceType GarageDoorOpener
   homebridgeMapping CurrentDoorState=state,values=closed:CLOSED;open:OPEN;closing:CLOSING;opening:OPENING
TargetDoorState=TargetState,cmds=OPEN:opening;CLOSED:closing,values=closed:CLOSED;open:OPEN
ObstructionDetected=obstruction,values=true:TRUE;false:FALSE
   room       Garage_UG,Homekit
   setList    closing opening open closed


Internals:
   DEF        ##1
([UG.ga.SE.Garage.Auf] eq "on")
(setreading UG.ga.RO.Garage state open)

##2
DOELSEIF
([UG.ga.SE.Garage.Zu] eq "on")
(setreading UG.ga.RO.Garage state closed)

##3
DOELSEIF
([UG.ga.RO.Garage] eq "opening")
(set UG.ga.SI.Garage.Oeffnen TRIGGER)

##4
DOELSEIF
([UG.ga.RO.Garage] eq "closing")
(set UG.ga.SI.Garage.Schliessen TRIGGER)

##5
DOELSEIF
([UG.ga.RO.Garage] eq "opening" and [UG.ga.SE.Garage.Auf] eq "on")
(setreading UG.ga.RO.Garage state open)

##6
DOELSEIF
([UG.ga.RO.Garage] eq "closing" and [UG.ga.SE.Garage.Zu] eq "on")
(setreading UG.ga.RO.Garage state closed)

##7
DOELSEIF
([UG.ga.SI.Garage.Schliessen] eq "on")
(setreading UG.ga.RO.Garage:FILTER=state!=closing state closing)

##8
DOELSEIF
([UG.ga.SI.Garage.Oeffnen] eq "on")
(setreading UG.ga.RO.Garage:FILTER=state!=opening state opening)
   FUUID      5e60b789-f33f-a9cd-f1ed-137114daba8ef9a3
   MODEL      FHEM
   NAME       di.UG.ga.RO.Garage
   NOTIFYDEV  UG.ga.SE.Garage.Zu,UG.ga.SI.Garage.Schliessen,UG.ga.SI.Garage.Oeffnen,global,UG.ga.SE.Garage.Auf,UG.ga.RO.Garage
   NR         327
   NTFY_ORDER 50-di.UG.ga.RO.Garage
   STATE      cmd_2
   TYPE       DOIF
   VERSION    21224 2020-02-18 18:45:49
   READINGS:
     2020-05-03 14:47:18   Device          UG.ga.SE.Garage.Zu
     2020-05-03 14:47:18   cmd             2
     2020-05-03 14:47:18   cmd_event       UG.ga.SE.Garage.Zu
     2020-05-03 14:47:18   cmd_nr          2
     2020-05-03 14:46:58   e_UG.ga.RO.Garage_STATE closing
     2020-05-03 14:47:00   e_UG.ga.SE.Garage.Auf_STATE off
     2020-05-03 14:47:18   e_UG.ga.SE.Garage.Zu_STATE on
     2020-05-03 14:46:32   e_UG.ga.SI.Garage.Oeffnen_STATE off
     2020-05-03 14:47:01   e_UG.ga.SI.Garage.Schliessen_STATE off
     2020-03-05 09:26:17   mode            enabled
     2020-05-03 14:47:18   state           cmd_2
   Regex:
     accu:
     cond:
       UG.ga.RO.Garage:
         0:
         1:
         2:
           &STATE     ^UG.ga.RO.Garage$
         3:
           &STATE     ^UG.ga.RO.Garage$
         4:
           &STATE     ^UG.ga.RO.Garage$
         5:
           &STATE     ^UG.ga.RO.Garage$
       UG.ga.SE.Garage.Auf:
         0:
           &STATE     ^UG.ga.SE.Garage.Auf$
         1:
         2:
         3:
         4:
           &STATE     ^UG.ga.SE.Garage.Auf$
         5:
         6:
         7:
       UG.ga.SE.Garage.Zu:
         0:
         1:
           &STATE     ^UG.ga.SE.Garage.Zu$
         2:
         3:
         4:
         5:
           &STATE     ^UG.ga.SE.Garage.Zu$
         6:
         7:
       UG.ga.SI.Garage.Oeffnen:
         0:
         1:
         2:
         3:
         4:
         5:
         6:
         7:
           &STATE     ^UG.ga.SI.Garage.Oeffnen$
       UG.ga.SI.Garage.Schliessen:
         0:
         1:
         2:
         3:
         4:
         5:
         6:
           &STATE     ^UG.ga.SI.Garage.Schliessen$
         7:
   attr:
     cmdState:
     wait:
       0:
         0
       1:
         0
       2:
         0
       3:
         0
       4:
         0
       5:
         0
       6:
         5
       7:
         5
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'UG.ga.SE.Garage.Auf','STATE') eq "on"
     1          ::InternalDoIf($hash,'UG.ga.SE.Garage.Zu','STATE') eq "on"
     2          ::InternalDoIf($hash,'UG.ga.RO.Garage','STATE') eq "opening"
     3          ::InternalDoIf($hash,'UG.ga.RO.Garage','STATE') eq "closing"
     4          ::InternalDoIf($hash,'UG.ga.RO.Garage','STATE') eq "opening" and ::InternalDoIf($hash,'UG.ga.SE.Garage.Auf','STATE') eq "on"
     5          ::InternalDoIf($hash,'UG.ga.RO.Garage','STATE') eq "closing" and ::InternalDoIf($hash,'UG.ga.SE.Garage.Zu','STATE') eq "on"
     6          ::InternalDoIf($hash,'UG.ga.SI.Garage.Schliessen','STATE') eq "on"
     7          ::InternalDoIf($hash,'UG.ga.SI.Garage.Oeffnen','STATE') eq "on"
   do:
     0:
       0          setreading UG.ga.RO.Garage state open
     1:
       0          setreading UG.ga.RO.Garage state closed
     2:
       0          set UG.ga.SI.Garage.Oeffnen TRIGGER
     3:
       0          set UG.ga.SI.Garage.Schliessen TRIGGER
     4:
       0          setreading UG.ga.RO.Garage state open
     5:
       0          setreading UG.ga.RO.Garage state closed
     6:
       0          setreading UG.ga.RO.Garage:FILTER=state!=closing state closing
     7:
       0          setreading UG.ga.RO.Garage:FILTER=state!=opening state opening
     8:
   helper:
     DEVFILTER  ^global$|^UG.ga.SI.Garage.Schliessen$|^UG.ga.SE.Garage.Zu$|^UG.ga.SE.Garage.Auf$|^UG.ga.RO.Garage$|^UG.ga.SI.Garage.Oeffnen$
     NOTIFYDEV  global|UG.ga.SI.Garage.Schliessen|UG.ga.SE.Garage.Zu|UG.ga.SE.Garage.Auf|UG.ga.RO.Garage|UG.ga.SI.Garage.Oeffnen
     event      on
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   UG.ga.SE.Garage.Zu
     timerevent on
     triggerDev UG.ga.SE.Garage.Zu
     DOIF_eventa:
       cmd_nr: 2
       cmd: 2
       cmd_event: UG.ga.SE.Garage.Zu
       cmd_2
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: UG.ga.SE.Garage.Zu
       state: cmd_2
     timerevents:
       on
     timereventsState:
       state: on
     triggerEvents:
       on
     triggerEventsState:
       state: on
   internals:
     all         UG.ga.SE.Garage.Auf:STATE UG.ga.SE.Garage.Zu:STATE UG.ga.RO.Garage:STATE UG.ga.SI.Garage.Schliessen:STATE UG.ga.SI.Garage.Oeffnen:STATE
   perlblock:
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   alias      di.UG.ga.RO.Garage
   do         always
   event-on-change-reading none
   room       Garage_UG
   wait       0:0:0:0:0:0:5:5


Die Sensoren hängen an einer S7-1200 und der Trigger Ausgang geht per Relais an den Schaltkontakt vom Torantrieb. Innerhalb der SPS ist es so programmiert das der Trigger Ausgang nur geschaltet wird wenn das Tor NICHT in der angeforderten Stellung steht.

Vielen Dank im Voraus!
FHEM, Ubuntu unter Proxmox (NUCi7)
FHT80B; CUL_FHTTK; HMUARTLGW; HUE; Netatmo; ENIGMA2; FRITZBOX; S7 und viele weitere.