DOIF schaltet seit einigen Tagen nicht mehr

Begonnen von Invers, 04 Juni 2017, 21:53:11

Vorheriges Thema - Nächstes Thema

Invers

Ich habe nichts geändert, trotzdem läuft folgendes DOIF nicht mehr:

defmod DI_Lampe_Korridor_Auto_AnAus DOIF ([BM_Aussen:brightness] < [DU_ZV:Lampe_Korridor_Trigger] and [Lampe_Korridor] eq "off" and [BinIchDa] eq "present")\
   (set Lampe_Korridor on, {Log 3, "▀ DI_Lampe_Korridor_Auto_AnAus ▀ Lampe Korridor an"}) \
DOELSEIF ([BM_Aussen:brightness] >= [DU_ZV:Lampe_Korridor_Trigger] and [Lampe_Korridor] eq "on")\
   (set Lampe_Korridor off, {Log 3, "▀ DI_Lampe_Korridor_Auto_AnAus ▀ Lampe Korridor aus"})\

attr DI_Lampe_Korridor_Auto_AnAus cmdState auto an|auto aus
attr DI_Lampe_Korridor_Auto_AnAus room Licht

setstate DI_Lampe_Korridor_Auto_AnAus auto an
setstate DI_Lampe_Korridor_Auto_AnAus 2017-06-04 21:43:53 Device Lampe_Korridor
setstate DI_Lampe_Korridor_Auto_AnAus 2017-06-03 20:27:04 cmd 1
setstate DI_Lampe_Korridor_Auto_AnAus 2017-06-03 20:27:04 cmd_event BM_Aussen
setstate DI_Lampe_Korridor_Auto_AnAus 2017-06-03 20:27:04 cmd_nr 1
setstate DI_Lampe_Korridor_Auto_AnAus 2017-06-04 21:39:59 e_BM_Aussen_brightness 141
setstate DI_Lampe_Korridor_Auto_AnAus 2017-06-03 23:08:37 e_BinIchDa_STATE present
setstate DI_Lampe_Korridor_Auto_AnAus 2017-06-04 21:00:00 e_DU_ZV_Lampe_Korridor_Trigger 165
setstate DI_Lampe_Korridor_Auto_AnAus 2017-06-04 21:43:53 e_Lampe_Korridor_STATE off
setstate DI_Lampe_Korridor_Auto_AnAus 2017-06-03 20:27:04 state auto an


Ich habe noch andere DOIFs, die auch nicht mehr gehen. Ich finde einfach den Fehler nicht, zumal ich auch nichts geändert habe.
So kompliziert ist ja das DOIF nun auch nicht. Ich habe offenbar eine Blockade.
Sagt mir bitte jemand, was ich hier übersehe?
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

amenomade

Wenn ich richtig verstehe, ist dein DOIF seit gestern Abend auf dem ersten Befehl blockiert. Er wird so bleiben, so lange die erste Bedingungen wahr bleiben. Kann es sein, dass heute die "brightness" nicht über 165 gegangen ist, und dass Du den ganzen Tag zu Hause geblieben bist, ohne die Lampe_Korridor manuell zu bedienen?

Ausserdem finde ich komisch, dass du auf "[Lampe_Korridor]" auch schaltest. Z.B. wenn [BM_Aussen:brightness] >= [DU_ZV:Lampe_Korridor_Trigger], und Du die Lampe an schaltest, wird die wieder sofort auf off gesetzt?

Ich würde eher [?Lampe_Korridor] nutzen, und dann attr do always nutzen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Invers

#2
Vielen Dank für die Antwort.

ZitatWenn ich richtig verstehe, ist dein DOIF seit gestern Abend auf dem ersten Befehl blockiert. Er wird so bleiben, so lange die erste Bedingungen wahr bleiben. Kann es sein, dass heute die "brightness" nicht über 165 gegangen ist, und dass Du den ganzen Tag zu Hause geblieben bist, ohne die Lampe_Korridor manuell zu bedienen?

Das DOIF soll ja die Lampe einschalten, wenn es dunkel und wird , also Helligkeit kleiner 165.
Dieser Wert wird garantiert täglich über- und auch unterschritten. Somit muss auch zwangsläufig täglich getriggert werden, auch wenn die Lampe nicht zwischendurch benutzt wurde.

ZitatAusserdem finde ich komisch, dass du auf "[Lampe_Korridor]" auch schaltest. Z.B. wenn [BM_Aussen:brightness] >= [DU_ZV:Lampe_Korridor_Trigger], und Du die Lampe an schaltest, wird die wieder sofort auf off gesetzt?

Das passiert ja nur dann, wenn es dunkel wird (aus) oder hell (ein).
Somit geht das Licht morgens aus und abends oder bei schlechtem Wetter (Unwetter) an.

Da der Helligkeitswert sich ja mehrmals täglich ändert, müsste ja die Lampe auch eigentlich ohne Do allways geschaltet werden, vermute ich. Bisher hatte es ja auch seit Jahren funktioniert. Ich habe noch 2 DOIFs, die ebenfalls nicht mehr funktionieren und genau so aufgebaut sind.

Mir fällt ein, dass ich "and [Lampe_Korridor] eq "off" vor einigen Tagen hinzugefügt hatte. Ich werde das mal wieder entfernen. Vielleicht ist das der Übeltäter. Falls ja, würde ich das aber immer noch nicht verstehen.




EDIT:
Ich habe nun herausgefunden, dass nicht geschaltet wird, wenn die Lampe per "set Lampe_Korridor on" oder off zwischendurch geschaltet wurde.

Ich wollte eigentlich das überflüssige Schalten vermeiden, klappt so aber offenbar nicht. Nach dem Entfernen von and [Lampe_Korridor] eq "off" geht alles wieder.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Brockmann

Zitat von: Invers am 05 Juni 2017, 08:05:52
Ich wollte eigentlich das überflüssige Schalten vermeiden, klappt so aber offenbar nicht. Nach dem Entfernen von and [Lampe_Korridor] eq "off" geht alles wieder.
Wie amenomade schon schrieb, kannst Du das durch die Variante
[?Lampe_Korridor] eq "off"
vermeiden. Dann wird das DOIF durch manuelles Schalten der Lampe nicht beeinflusst.

Außerdem könnte man sich für diesen Zweck auch einen (wiederverwendbaren) cmdalias definieren:
define CMD_effset cmdalias effset .* AS {if (Value("$EVTPART0") ne "$EVTPART1") {fhem("set $EVTPART0 $EVTPART1")}}

Wenn Du dann anstelle von set Lampe_Korridor on den Befehl effset Lampe_Korridor on verwendest, wird immer erst geprüft und die Lampe nur dann "on" geschaltet, wenn sie es nicht ohnehin schon ist.


Invers

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2