fhem.cfg: Wie kann ich auf Zustände prüfen?

Begonnen von stobor, 11 Februar 2014, 20:19:03

Vorheriges Thema - Nächstes Thema

stobor

Hallo,

ich  möchte in der fhem.cfg Zustandsprüfungen vornehmen. Dabei gibt es schon folgendes Konstrukt:

define SC_MAX_EG_opened notify SC_MAX_EG_.*:opened.* {\
if ((Value("SC_MAX_EG_Haustuer") eq "opened") || ...


D.h.
Ich warte auf Ereignisse von Geräten, deren Namen mit "SC_MAX_EG_" beginnen und das Ereignis beginnend mit "opened" senden. Danach prüfe ich, ob das Gerät "SC_MAX_EG_Haustuer" den Zustand "opened" hat. Richtig?

Wie kann ich denn prüfen, ob der Zustand von "SC_MAX_EG_Haustuer" mit "opened" beginnt, anstatt, dass er genau "opened" ist? Ich hätte gedacht, das wäre
if ((Value("SC_MAX_EG_Haustuer") eq "opened*")...
Aber ist das so?


Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (FW 1.57 CUL868) für FS20 und CCU3 für HM(IP) + Arduino Mega (Firmata) - FHEM Revision: 29534 - FS20, HM(IP), MQTT, Philips HUE, ModBus

betateilchen

Zitat von: stobor am 11 Februar 2014, 20:19:03Aber ist das so?

Nein, das ist nicht so. Das Zauberwort heißt regexp. Außerdem hast Du eine Klammer zuviel offen.

Probiers mal so:

if (Value("SC_MAX_EG_Haustuer") =~ /^opened.*/)

Auch wenn ich nicht weiß, welchen brauchbaren Hintergrund Dein Ansinnen hat.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!