FHEM Forum

FHEM => Automatisierung => Perl für FHEM-User => Thema gestartet von: Paul Guijt am 08 April 2025, 15:41:22

Titel: Gibt es ein bestimmte Reading?
Beitrag von: Paul Guijt am 08 April 2025, 15:41:22
Hallo,

Wie kann ich testen, ob es ein bestimmte Reading gibt?

FrGr,
Paul
Titel: Aw: Gibt es ein bestimmte Reading?
Beitrag von: betateilchen am 08 April 2025, 15:48:48
Ohne auf den device-hash zuzugreifen und dort evtl. Chaos zu stiften, bietet sich folgende Abfrage an:

if (ReadingsVal(<device>,<reading>,'unknown') ne 'unknown') {print "nicht vorhandenes reading";}
Funktioniert natürlich nicht, wenn das reading "zufällig" den Wert "unknown" enthält. Aber man kann ja auch eine Zeichenkette mit Sonderzeichen prüfen.

Titel: Aw: Gibt es ein bestimmte Reading?
Beitrag von: Beta-User am 08 April 2025, 16:10:06
Wenn man (echtes) undef als Default übergibt, kann man gegen defined prüfen.
Titel: Aw: Gibt es ein bestimmte Reading?
Beitrag von: betateilchen am 08 April 2025, 19:03:47
Zitat von: Beta-User am 08 April 2025, 16:10:06...

Ja, aber für das Verständnis der prinzipiellen Vorgehensweise ist ein echter Vergleich zweier Strings einfacher darzustellen.
Titel: Aw: Gibt es ein bestimmte Reading?
Beitrag von: Beta-User am 09 April 2025, 10:58:23
Zitat von: betateilchen am 08 April 2025, 19:03:47Ja, aber für das Verständnis der prinzipiellen Vorgehensweise ist ein echter Vergleich zweier Strings einfacher darzustellen.
Stimme dir voll zu, zumal hier auch der Gesamtkontext eher rudimentär ist. Eventuell wäre hier auch devspec2array() einen Blick wert, falls es um eine loop über mehrere Devices geht (?).

Trotzdem noch die "unleserliche" Variante mit dem defined-or-Operator - der Code springt direkt zurück, wenn das Reading nicht vorhanden ist, sonst kann man mit der Variable weitermachen:
my $has_value = ReadingsVal(<device>,<reading>,undef) // return;