Autor Thema: $SELF Abfrage auf cmd  (Gelesen 286 mal)

Offline amenomade

  • Sr. Member
  • ****
  • Beiträge: 891
Antw:$SELF Abfrage auf cmd
« Antwort #15 am: 17 Juli 2017, 00:05:58 »
Ich zitiere mich selbst:
Zitat
Selbst-triggernde DOIFs sind immer tricky... Kann man es nicht anders machen? Was willst Du genau machen?
;)
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten

F:"Schatz? Mach aus bitte"
M: "Alexa? Licht aus"-"Ich bin mir leider nicht sicher"  M:"Alexa? aus Licht"-"Das weiss ich leider nicht" M:"Alexa? Schalte...
F: "Drück mal auf den blöden Knopf!

Offline tomspatz

  • Full Member
  • ***
  • Beiträge: 385
Antw:$SELF Abfrage auf cmd
« Antwort #16 am: 17 Juli 2017, 21:19:15 »
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
« Letzte Änderung: 17 Juli 2017, 21:21:23 von tomspatz »

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 4279
Antw:$SELF Abfrage auf cmd
« Antwort #17 am: 17 Juli 2017, 21:34:08 »
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, THRESHOLD; FHEM-Befehl: IF

 

decade-submarginal