FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: urseigner am 13 März 2023, 11:13:00

Titel: Bewegungsmelder aus, wenn Tür/Fensterkontakt an der Haustüre feuert
Beitrag von: urseigner am 13 März 2023, 11:13:00
Hallo, ich komme leider nicht weiter, bzw. im DOIF Reading gibt es folgende Fehler:


timer_01_c01 error: Wrong timespec ReadingsVal("SensorEingang","state","")eq"open": either HH:MM:SS or {perlcode} 2023-03-13 10:42:29
timer_02_c02 error: Wrong timespec ReadingsVal("FS20_Bewegungsmelder","state","")eq"on": either HH:MM:SS or {perlcode} 2023-03-13 10:42:29
timer_03_c02 error: Wrong timespec ReadingsVal("SensorEingang","state","")eq"closed": either HH:MM:SS or {perlcode} 2023-03-13 10:42:29


Hier die DOIF-Definition:
([ReadingsVal("SensorEingang","state","") eq "open"]) {fhem("set FS20_Bewegungsmelder off")} DOELSEIF ([ReadingsVal("FS20_Bewegungsmelder","state","") eq "on"] && [ReadingsVal("SensorEingang","state","") eq "closed"] && time()>ReadingsVal("SensorEingang","lastUpdate",0)+5 && time()>ReadingsVal("FS20_Bewegungsmelder","lastDetectionTime",0)+300) {fhem("set FS20_Bewegungsmelder on");timerOnce("timer_01_c01", "1s", 'ReadingsVal("SensorEingang","state","") eq "open" && AttrVal("turn_off_motion_detector_when_door_opened", "state", "") eq "initialized"');timerOnce("timer_02_c02", "300s", 'ReadingsVal("FS20_Bewegungsmelder","state","") eq "on" && AttrVal("turn_off_motion_detector_when_door_opened", "state", "") eq "initialized"');
timerOnce("timer_03_c02", "5s", 'ReadingsVal("SensorEingang","state","") eq "closed" && AttrVal("turn_off_motion_detector_when_door_opened", "state", "") eq "initialized"');
}


FS20_Bewegungsmelder hängt am Zugang zum Grundstück. Dieser meldet, wenn jemand zum Haus geht. Bei Dunkelheit wird dann eine Leuchte am Haus für 300 Sekunden eingeschaltet. Eine Meldung, dass jemand zum Haus geht, wird immer gesendet. Innen an der Haustüre hängt ein Tür/Fensterkontakt. Bei Dunkelheit wird ebenfalls die Außenleuchte eingeschaltet, sobald jemand die Türe öffnet. Wenn jemand das Haus verlässt, soll der Bewegungsmelder zeitweise deaktiviert werden, damit dann nicht die Pushbenachrichtigung beim Verlassen des Grundstücks gesendet wird. Falls ich in der Logik schon einen Fehler habe, wäre ich auch dazu für Verbesserungsvorschläge dankbar.

VG
Urs
Titel: Antw:Bewegungsmelder aus, wenn Tür/Fensterkontakt an der Haustüre feuert
Beitrag von: Damian am 13 März 2023, 11:23:50
Hat ChatGPT diese Syntax vorgeschlagen?  :D

([ReadingsVal("SensorEingang","state","") eq "open"])

Diese Syntax gibt es im DOIF nicht.
Titel: Antw:Bewegungsmelder aus, wenn Tür/Fensterkontakt an der Haustüre feuert
Beitrag von: urseigner am 13 März 2023, 11:27:50
Zitat von: Damian am 13 März 2023, 11:23:50
Hat ChatGPT diese Syntax vorgeschlagen?  :D

([ReadingsVal("SensorEingang","state","") eq "open"])

Diese Syntax gibt es im DOIF nicht.
Ja, das stimmt. DOELSEIF kennt ChatGPT auch nicht. Oder erst auf Anfrage. Ich bin tatsächlich ein paar Schleifen damit geflogen. Die Syntaxkenntnisse sind nicht so überzeugend. Aber vermutlich noch besser als meine.

VG
Urs
Titel: Antw:Bewegungsmelder aus, wenn Tür/Fensterkontakt an der Haustüre feuert
Beitrag von: urseigner am 13 März 2023, 12:54:40
([SensorEingang:"^open$"]) (set FS20_Bewegungsmelder off) DOELSEIF ([SensorEingang:"^closed$"] and [SensorEingang:protLastRcv+5<TimeNow] and [FS20_Bewegungsmelder:SCC_TIME+20<TimeNow]) (set FS20_Bewegungsmelder on)

Ich habe nun Schwierigkeiten bei der Rechnung mit den vergangenen Sekungen. Beim FS20_Bewegungsmelder steht lediglich ein Zeitstempel vom SCC. Kann ich den einfach nutzen? Ist TimeNow in diesem Zusammenhang richtig?
Titel: Antw:Bewegungsmelder aus, wenn Tür/Fensterkontakt an der Haustüre feuert
Beitrag von: urseigner am 13 März 2023, 15:17:47
Ich habe es nun ganz anders gelöst. Dieser Thread ist wohl wenig hilfreich und kann meinetwegen gelöscht werden.

VG
Urs