FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MogRuith am 30 April 2022, 13:27:09

Titel: stateformat - gemeldetes reading per perl verändern
Beitrag von: MogRuith am 30 April 2022, 13:27:09
Ich bitte hiermit perl-Kundige um ihre Hilfe. Ich bin zwar kein fhem-Anfänger mehr, aber perl lässt mich verzweifeln...

Meine Rauchmelder geben als readings alarm_Smoke: detected - Unknown Location, notificationIsOn und
alarm_Smoke: Event cleared: detected - Unknown Location, arg 102, notificationIsOn aus.
Wie kann ich daraus das "detected" und das "cleared" quasi "ausschneiden" und als "on"  bzw "off" per stateformat definieren?

Dank vorab und besten Gruß
Titel: Antw:stateformat - gemeldetes reading per perl verändern
Beitrag von: MadMax-FHEM am 30 April 2022, 13:29:26
Ich habe zu dem Zweck ein userReadings...

Kann ich später mal posten...
EDIT: hier mein userReadings

smoke_detection:alarm.* {ReadingsVal($name,"alarm","n.a.") eq "Smoke: detected - Unknown Location" ? return "smokeDetected" : return "noSmoke"}

Bei dir dann wohl besser so:

smoke_detection:alarm_Smoke.* {ReadingsVal($name,'alarm_Smoke','') =~ 'detected'?'on':'off'}

Damit gibt es ein Reading welches Smoke detected anzeigt, worauf man dann (einfacher) reagieren kann und mit stateFormat auch anzeigen lassen kann (so mache ich das).

Gruß, Joachim
Titel: Antw:stateformat - gemeldetes reading per perl verändern
Beitrag von: Otto123 am 30 April 2022, 14:29:09
hi,

ob man im stateFormat das Reading noch anders in den Perlausdruck bekommt weiß nicht. Aber so sollte es gehen:
{ReadingsVal($name,'alarm_Smoke','') =~ 'detected'?'on':'off'}

Gruß Otto
Titel: Antw:stateformat - gemeldetes reading per perl verändern
Beitrag von: MogRuith am 30 April 2022, 15:18:11
Hallo Otto und besten Dank für deine Lösung! Die habe ich jetzt per attr stateformat gesetzt, jetzt wird eine orangene Lampe angezeigt als "on", obwohl der Rauchmelder keinen Alarm schlägt.
Ich denke, das Problem ist, dass in beiden Zuständen "detected" steht...einmal allein...einmal als "Event cleared: detected"... Wer programmiert nur solche readings...? Könnte es funktionieren, wenn ich nach "cleared" suchen lasse...?

Lieben Gruß & besten Dank!!!
Titel: Antw:stateformat - gemeldetes reading per perl verändern
Beitrag von: MogRuith am 30 April 2022, 15:25:36
Super...habe jetzt
stateFormat: {ReadingsVal($name,'alarm_Smoke','') =~ 'cleared'?'off':'on'}
devStateIcon: on*:secur_smoke_detector@red off:secur_smoke_detector@lime

Wird korrekt angezeigt. Reagiert DoIf eigentlich jetzt auf state oder STATE...?

Besten Dank euch beiden!!!
Titel: Antw:stateformat - gemeldetes reading per perl verändern
Beitrag von: Otto123 am 30 April 2022, 15:35:29
Zitat von: MogRuith am 30 April 2022, 15:25:36
Reagiert DoIf eigentlich jetzt auf state oder STATE...?
ja :)
state ist ein Reading, STATE ist ein Internal
Es reagiert ganz wie Du willst:
[Device] steht für STATE [Device:state] steht für das Reading state, [Device:&Internal] steht für das Internal Internal.
https://fhem.de/commandref_modular_DE.html#DOIF_Ereignissteuerung
Titel: Antw:stateformat - gemeldetes reading per perl verändern
Beitrag von: MogRuith am 30 April 2022, 19:25:54
Super, danke dir!!!
Bis zum nächsten Mal.
LG