Bewegungsmelder aus, wenn Tür/Fensterkontakt an der Haustüre feuert

Begonnen von urseigner, 13 März 2023, 11:13:00

Vorheriges Thema - Nächstes Thema

urseigner

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

Damian

Hat ChatGPT diese Syntax vorgeschlagen?  :D

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

Diese Syntax gibt es im DOIF nicht.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

urseigner

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

urseigner

([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?

urseigner

Ich habe es nun ganz anders gelöst. Dieser Thread ist wohl wenig hilfreich und kann meinetwegen gelöscht werden.

VG
Urs