Fehler im ASC in Zusammenhang mit Fensterkontakt und Regex

Begonnen von Sidey, 05 Oktober 2026, 20:26:06

Vorheriges Thema - Nächstes Thema

Sidey

Hallo @Cooltux

Heute Nacht um 4 kam es zu einem Problem mit zwei Rolläden. Ausgelöst wurde es durch einen reboot meiner Empfangsbrücke für diverse Sensoren und Aktoren.

Ich habe den Fehler nun nachstellen können. Folgender Event kommt rein:

ASC_DEBUG!!! 2026.10.05 20:11:27 - EventProcessingWindowRec: dg.Rolladen2 - RECEIVED EVENT: state: closed battery: 100 update_installed_version: 16777241 linkquality: 112 update_state: idle update_available: false update_latest_version: 16777241 - IDENTIFIED EVENT: false - STORED EVENT: false


In der Datei   EventProcessingFunctions.pm:254-255: findet sich folgende Regex
$events =~ m{.*$reading:.*?([Oo]pen(?>ed)?|[Cc]losed?|tilt(?>ed)?|true|false)}xms
Der relevante Teil vom Eventstring des Fensterkontaktes ist folgender:

state: closed battery: 100 ... update_state: idle update_available: false ...
Das führende .* ist gierig und sucht das letzte state: im String. Das steckt in update_state:, nicht in dem Feld state: am Anfang.
Danach sucht .*? den ersten passenden Wert und findet false aus update_available: false.

Daraus ergibt sich IDENTIFIED EVENT: false.
false heißt bei einem twostate-Kontakt "offen". Deshalb fährt der Rolladen auf ventilate - window open. Bei mir 80%.
Das passiert mindestens bei jedem Zigbee-Kontakt (per zigbee2mqtt eingebunden), der ein update_state oder update_available mitsendet.

Vorschlag:
Das Reading muss am Wortanfang stehen, und der Wert muss direkt dahinter folgen:
$events =~ m{(?:^|\s)\Q$reading\E:\s*([Oo]pen(?>ed)?|[Cc]losed?|tilt(?>ed)?|true|false)}xms
Möglicherweise gibt es noch weitere derartige Regexes, das habe ich nun aber nicht näher untersucht.

Grüße Sidey
Nutze: SIGNALDuino, Homematic, Raspberry Pi, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt, tasmota

Maintainer von: SIGNALduino, SD_WS*, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp, midea-mqtt, whatsmeow-mqtt, alexa-cookie-service
https://github.com/sidey79?tab=repositories