Hauptmenü

DOIF state / STATE cmd status

Begonnen von holle75, 10 Juli 2019, 10:59:36

Vorheriges Thema - Nächstes Thema

holle75

Mal ganz kurz und blöd. Habe gerade DOIFs, seit vielen Jahren gewachsen, angeschaut.
Da habe ich so Sachen programmiert wie

... DOELSEIF ([?$SELF] ne "cmd_1_1" and ([?Waschhaus_TRIGGER_Luefter] eq "off" or [?$SELF] eq "cmd_2_1") and ...

wobei mir gerade auffällt, dass es im "state" wohl nur ganze Schritte (cmd_1, cmd_2, usw) geben kann?

sprich es sollte dann wohl eher

... DOELSEIF ([?$SELF:cmd] ne "1.1" ...

heißen?

Danke für euer Statement, bevor ich 10 DOIF´s umbaue

H.

ps: interessant, dass alle DOIFs meiner Meinung nach die ganze Zeit das vermeintlich Gewollte exzellent umgesetzt haben ;)


Damian

Zitat von: holle75 am 10 Juli 2019, 10:59:36
Mal ganz kurz und blöd. Habe gerade DOIFs, seit vielen Jahren gewachsen, angeschaut.
Da habe ich so Sachen programmiert wie

... DOELSEIF ([?$SELF] ne "cmd_1_1" and ([?Waschhaus_TRIGGER_Luefter] eq "off" or [?$SELF] eq "cmd_2_1") and ...

wobei mir gerade auffällt, dass es im "state" wohl nur ganze Schritte (cmd_1, cmd_2, usw) geben kann?

sprich es sollte dann wohl eher

... DOELSEIF ([?$SELF:cmd] ne "1.1" ...

heißen?

Danke für euer Statement, bevor ich 10 DOIF´s umbaue

H.

ps: interessant, dass alle DOIFs meiner Meinung nach die ganze Zeit das vermeintlich Gewollte exzellent umgesetzt haben ;)

Wenn du pro Zweig mehrere Sequenzen hast, z. B.: (set bla 1)(set bla 2) ..., dann gibt es aus Zwischenzustände der Art cmd_1_1. Im Reading cmd steht dann 1.1.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

holle75

Danke Damian .... Reading "state" zeigt bei mir "volle Werte" (cmd_1, cmd_2, usw) auch wenn zB:

cmd 1.2
cmd_nr 1
cmd_seqnr 2

state cmd_1

richtig so?

Damian

Zitat von: holle75 am 10 Juli 2019, 12:19:42
Danke Damian .... Reading "state" zeigt bei mir "volle Werte" (cmd_1, cmd_2, usw) auch wenn zB:

cmd 1.2
cmd_nr 1
cmd_seqnr 2

state cmd_1

richtig so?

Das wird dann der letzte Zustand einer Sequenz sein, um kompatibel zu bleiben.

Bsp:

(set bla 1) (set bla 2)(set bla 3)

cmd_1_1, cmd_1_2, cmd_1
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

holle75

Zitat von: Damian am 10 Juli 2019, 20:46:24
Das wird dann der letzte Zustand einer Sequenz sein, um kompatibel zu bleiben.

Bsp:

(set bla 1) (set bla 2)(set bla 3)

cmd_1_1, cmd_1_2, cmd_1

Ahh, ok, aber irgendwie inkonsistent, oder nicht? Deinem Beispiel nach würde dann cmd_1_3 nie im state stehen?
Denke mal, ich baue alle DOIF´s auf :cmd um. Danke für deine Infos!

Damian

Zitat von: holle75 am 10 Juli 2019, 22:10:22
Ahh, ok, aber irgendwie inkonsistent, oder nicht? Deinem Beispiel nach würde dann cmd_1_3 nie im state stehen?
Denke mal, ich baue alle DOIF´s auf :cmd um. Danke für deine Infos!

Nein und zwar deswegen, damit jeder IF-Zweig einen eindeutigen Endzustand hat, egal ob mit Sequenz oder nicht.

cmd_1
cmd_2
cmd_3
usw.

Dafür ist eben das Reading cmd gedacht, um einheitlich zwischen den einzelnen Zwischenzuständen zu unterscheiden.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF