Was stimmt mit diesem DOIF nicht ?

Begonnen von ms_steini, 25 Oktober 2018, 13:25:00

Vorheriges Thema - Nächstes Thema

CoolTux

Die Uhrzeit scheint ihn nur einmal zu interessieren, genau dann wenn der Eintrittszeitpunkt ist
[08:10-09:00]
hier schaltet er nur einmalig bei 8 Uhr, zu mindest bei mir. Ansonsten scheint die Zeit ihn dann nicht mehr zu interessieren und er geht immer durch bis 5
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

alanblack

#16
defmod DOIF_EG_DekoLicht_Diele DOIF ([Brightness_Sensor:brightness] <= 12 and [19:00:00-23:59:59]) (set Sonoff_BASIC_1 on)
DOELSEIF ([Schichtplan:Schicht_Heute_Fruehdienst] == 1 and [04:20:00-05:10:00]) (set Sonoff_BASIC_1 on)
DOELSEIF ([Schichtplan:Schicht_Gestern_Nachtdienst] == 1 and [13:10:00-13:15:00]) (set Sonoff_BASIC_1 on)
DOELSEIF ([Brightness_Sensor:brightness] <= 100 and [06:15:00-08:15:00]) (set Sonoff_BASIC_1 on)
DOELSE (set Sonoff_BASIC_1 off)


Das hier ist schlechte Programmierung. Ich vereinfache das mal:
DOIF (Temperatur > 19) (set Lampe on)
DOELSEIF (Wochentag = Montag) (set Lampe off)
DOELSE (set Lampe off)


Was passiert, wenn es Montag 20° warm wird?

Da das DOIF oben nur das Sonoff an- und ausschaltet, reicht
DOIF Bedingung1 oder Bedingung2... (set Sonoff_BASIC_1 on)
DOELSE (set Sonoff_BASIC_1 off)


Das Verhalten von dem ursprünglichen DOIF ist nicht wirklich vorhersagbar.
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

l2r

#17
Vom Prinzip her hast du recht, aber woher hast du die Temperatur????

Zitat von: alanblack am 25 Oktober 2018, 15:11:02

Das hier ist schlechte Programmierung. Ich vereinfache das mal:
DOIF (Temperatur > 19) (set Lampe on)
DOELSEIF (Wochentag = Montag) (set Lampe off)
DOELSE (set Lampe off)


Was passiert, wenn es Montag 20° warm wird?

Da das DOIF oben nur das Sonoff an- und ausschaltet, reicht
DOIF Bedingung1 oder Bedingung2... (set Sonoff_BASIC_1 on)
DOELSE (set Sonoff_BASIC_1 off)


Das Verhalten von dem ursprünglichen DOIF ist nicht wirklich vorhersagbar.
[/quote]


sollte dann so aussehen?!:

defmod DOIF_EG_DekoLicht_Diele DOIF (
([Brightness_Sensor:brightness] <= 12 and [19:00:00-23:59:59])
or ([Schichtplan:Schicht_Heute_Fruehdienst] == 1 and [04:20:00-05:10:00])
or ([Schichtplan:Schicht_Gestern_Nachtdienst] == 1 and [13:10:00-13:15:00])
or ([Brightness_Sensor:brightness] <= 100 and [06:15:00-08:15:00])
)
(set Sonoff_BASIC_1 on)
DOELSE (set Sonoff_BASIC_1 off)


Gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

alanblack

Zitat von: l2r am 25 Oktober 2018, 15:40:14
Vom Prinzip her hast du recht, aber woher hast du die Temperatur????

Das war nur ein Beispiel zur Verdeutlichung.
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

ms_steini

Zitat von: l2r am 25 Oktober 2018, 15:40:14

sollte dann so aussehen?!:

defmod DOIF_EG_DekoLicht_Diele DOIF (
([Brightness_Sensor:brightness] <= 12 and [19:00:00-23:59:59])
or ([Schichtplan:Schicht_Heute_Fruehdienst] == 1 and [04:20:00-05:10:00])
or ([Schichtplan:Schicht_Gestern_Nachtdienst] == 1 and [13:10:00-13:15:00])
or ([Brightness_Sensor:brightness] <= 100 and [06:15:00-08:15:00])
)
(set Sonoff_BASIC_1 on)
DOELSE (set Sonoff_BASIC_1 off)


Gruß Michael

das sieht eigendlich ganz gut aus, ist auch plausiebel, werde ich später noch testen.
aber eigendlich sollte mein DOIF doch auch funktionieren, ich habe einige DOIFs die den gleichen Aufbau haben und die funktionieren ja auch.

Ich werde berichten...

ms_steini

#20
Mh, da ist ein Fehler bei der Klammersetzung.
error condition c01: syntax error,  ("


so:
([Brightness_Sensor:brightness] <= 12 and [19:00:00-23:59:59]
or [Schichtplan:Schicht_Heute_Fruehdienst] == 1 and [04:20:00-05:10:00]
or [Schichtplan:Schicht_Gestern_Nachtdienst] == 1 and [17:25:00-18:00:00]
or [Brightness_Sensor:brightness] <= 100 and [06:15:00-08:15:00])
(set Sonoff_BASIC_1 on)
DOELSE (set Sonoff_BASIC_1 off)

Damian

Du hast in deiner ersten Definition nicht die Vorgehensweise des Moduls beachtet.

Zitat aus der Einleitung der Commandref zu DOIF:

ZitatDie Angaben werden immer von links nach rechts abgearbeitet. Logische Abfragen werden in DOIF/DOELSEIF-Bedingungen vornehmlich mit Hilfe von and/or-Operatoren erstellt. Zu beachten ist, dass nur die Bedingungen überprüft werden, die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten.


Wenn also brightness ein Event erzeugt, werden die anderen Zweige, wo brightness nicht vorkommt, erst gar nicht geprüft, dann bleibt nur noch der DOELSE-Fall übrig.

Dein letzter Versuch ist vielversprechender, da du zu zwei Schaltvorgängen nur zwei Zweige hast.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ms_steini

prima, genau so funktioniert es.

werde jetzt alle meine DOIFs nocheinmal durchgehen und dementsprechend anpassen bzw. ändern

Vielen Dank.