Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

$SELF Abfrage auf cmd

Begonnen von tomspatz, 15 Juli 2017, 11:02:40

Vorheriges Thema - Nächstes Thema

amenomade

Ich zitiere mich selbst:
ZitatSelbst-triggernde DOIFs sind immer tricky... Kann man es nicht anders machen? Was willst Du genau machen?
;)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

tomspatz

#16
defmod SteuerungStromWerkstatt DOIF ([WERK_WS01_WOL] eq "on" or [WERK_WS02_WOL] eq "on" or [?$SELF:cmd] eq "3") (\
set WerkstattZentralDummyNotify inactive)\
DOELSEIF ([WERK_WS01_WOL] eq "off" and [WERK_WS02_WOL] eq "off" )(\
set WerkstattZentralDummyNotify active)\
DOELSEIF ([?$SELF:cmd] eq "1" and [WerkstattZentralDummy] eq "off")(\
set WerkstattZentralDummy on)\
DOELSEIF ([WerkstattZentral] eq "on" and [?$SELF:cmd] eq "5")(\
set WerkstattZentralDummyNotify inactive)(\
set WerkstattZentralDummy on)(\
set WerkstattZentralDummyNotify active)\
DOELSEIF ([WerkstattZentral] eq "off")(\
set WerkstattZentralDummyNotify inactive)(\
set WerkstattZentralDummy off)(\
set WerkstattZentralDummyNotify active)
attr SteuerungStromWerkstatt do always
attr SteuerungStromWerkstatt group Werkstatt Zentral Einstellungen
attr SteuerungStromWerkstatt selftrigger all
attr SteuerungStromWerkstatt wait 0:0:0:0,1,0:0,1,0


Soweit bin ich schon aber es scheitert am 4 Zweig:

Da sollte auch das cmd_5 berücksichtigt werden aber das das mehrere Zustäde hat klappt das so nicht.
Habe es mit diesem Regex versucht der funktionier zwar auf der Test Seite http://regexr.com/ aber nicht hier.
DOELSEIF ([WerkstattZentral] eq "on" and [?$SELF:cmd] eq "5\D.")(\

Geht das überhaupt so?

LG
Tom

Da sollte auch das cmd_5 berücksichtigt werden

Damian

Zitat von: tomspatz am 17 Juli 2017, 21:19:15
DOELSEIF ([WerkstattZentral] eq "on" and [?$SELF:cmd] eq "5\D.")(\

Geht das überhaupt so?

Nein.

Regex geht in Perl (DOIF) nicht mit eq sondern mit =~

Mit Abfragen des eigenen Status baut man einen "Endlichen Automaten".

Solche Automaten können schnell komplex werden.

Ein Programmier-Experte würde sich erstmal eine Übergangsmatrix bzw. Zustandsübergangsdiagramm aufmalen.

Die Gefahr ist, wenn man sofort loslegt, dass man Fälle übersieht, die im nachhinein zum unerwünschten Verhalten führen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF