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!