FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: fhemthom am 15 November 2022, 18:49:51

Titel: [GELÖST] Aktion abhängig vom Reading
Beitrag von: fhemthom am 15 November 2022, 18:49:51
Hallo,

ich habe hier ein Device mit mehreren Readings und versuche verzweifelt abhänging vom Wert eines Readings einfach mit if darauf zu prüfen und in Abhängingkeit darauf eine Aktion auszuführen. Ich finde ganz viele verschiedene Artikel und bekomme jeweils die lustigsten Fehlermeldungen - ich mache da grundsätzlich etwas falsch nehme ich an. Daher:

ich möchte etwas haben das in etwa "wenn Reading 'bla' "1" ist, dann mach 'blubb'" macht.
Hat da mal jemand ein funktionierendes  Beispiel für mich?

vielen Dank!
Titel: Antw:Aktion abhängig vom Reading
Beitrag von: betateilchen am 15 November 2022, 18:57:31
kommt drauf an, von welcher Stelle aus Du die Aktion auslösen willst.

Reiner perl Code:

if (ReadingsNum(<device>,'bla','-1') == 1) {blub}

Das Ganze geht auch als notify:

define test_notify_1 notify wz_office_Kyocera:Wifi_Signal:.-47 {blub}

wenn also das reading "Wifi_Signal" im device "wz_office_Kyocera" den Wert -47 hat, wird blub ausgeführt.

Titel: Antw:Aktion abhängig vom Reading
Beitrag von: TomLee am 15 November 2022, 19:01:52
Ergänzend:

Hier stehen weitere Beispiele:
https://wiki.fhem.de/wiki/Notify#Beispiele


und hier, wie man sich das Suchmuster eines notify einfach erstellen lässt:
https://wiki.fhem.de/wiki/Event_monitor#Vorgehensweise_beim_Anlegen_eines_Ger.C3.A4tes
Titel: Antw:Aktion abhängig vom Reading
Beitrag von: fhemthom am 15 November 2022, 19:12:36
Zitat von: betateilchen am 15 November 2022, 18:57:31

Reiner perl Code:

if (ReadingsNum(<device>,'bla','-1') == 1) {blub}


Ich möchte das eigentlich mit dem if machen... Ich bekomme dann:


2022.11.15 19:07:00 1: ERROR evaluating my $SELF=   $evalSpecials->{'%SELF'};{ if ( (ReadingsNum(Nachttischlampe_C,'onoff','0') eq 0) && !($we) && ($wday == 1) && !(Value("Urlaubstag")) ) { Nachttischlampe_C_20_447 if (Value("Sonos_Timer") eq "on") } }: Bareword "Nachttischlampe_C" not allowed while "strict subs" in use at (eval 1718) line 1.


die ganze Zeile sieht so aus:

define Nachttischlampe_C_On_Mo at *19:07:00 { if ( (ReadingsNum(Nachttischlampe_C,'onoff','0') eq 0) && !($we) && ($wday == 1) && !(Value("Urlaubstag")) ) { Nachttischlampe_C_20_447 if (Value("Sonos_Timer") eq "on") } }


warum Bareword "Nachttischlampe_C" not allowed while "strict subs" in use at (eval 1718) line 1. ?
Titel: Antw:Aktion abhängig vom Reading
Beitrag von: betateilchen am 15 November 2022, 19:30:21
Mehrere Fehler...

ReadingsNum(Nachttischlampe_C,'onoff','0') eq 0)

'0' ist falsch. ReadingsNum() liefert einen numerischen Wert zurück, also muss da 0 stehen.
eq ist falsch. eq ist für den Vergleich von Strings (alphanumerisch) nicht für Zahlen. Deshalb stand in meinem Beispiel == und nicht eq.
Nachttischlampe_C ist falsch. Das ist ein Name, der muss genauso in Anführungszeichen stehen wie der Name des readings 'onoff'.

if (ReadingsNum('Nachttischlampe_C','onoff',0) == 0)

Titel: Antw:Aktion abhängig vom Reading
Beitrag von: betateilchen am 15 November 2022, 19:31:29
Am besten fängst Du mal damit an, Dir die Basics von FHEM anzulesen, damit solche Grundlagen Dich nicht weiter vor unüberwindbare Hürden stellen.
Titel: Antw:Aktion abhängig vom Reading
Beitrag von: fhemthom am 15 November 2022, 19:57:33
Zitat von: betateilchen am 15 November 2022, 19:30:21
Mehrere Fehler...

ReadingsNum(Nachttischlampe_C,'onoff','0') eq 0)

'0' ist falsch. ReadingsNum() liefert einen numerischen Wert zurück, also muss da 0 stehen.
eq ist falsch. eq ist für den Vergleich von Strings (alphanumerisch) nicht für Zahlen. Deshalb stand in meinem Beispiel == und nicht eq.
Nachttischlampe_C ist falsch. Das ist ein Name, der muss genauso in Anführungszeichen stehen wie der Name des readings 'onoff'.

if (ReadingsNum('Nachttischlampe_C','onoff',0) == 0)

Besten Dank für die Erklärung, damit funktioniert es jetzt!