Brightness wird nicht ausgewertet, jedes Ereignis schaltet.

Begonnen von as2008, 18 Februar 2016, 11:02:31

Vorheriges Thema - Nächstes Thema

as2008

fhem.cfg Auszug:

define di_AbendlichtAn DOIF ([EG_Fernbedienung_Abendlicht_an] or [GA_Huette_Bewegung:brightness] < 80)\
  (set EG_Kueche_Kugellampe on, set EG_Wohnzimmer_Abendbeleuchtung on)
attr di_AbendlichtAn room Aktion

define di_AbendlichtAus DOIF ([EG_Fernbedienung_Abendlicht_aus] or [GA_Huette_Bewegung:brightness] > 120)\
  (set EG_Kueche_Kugellampe off, set EG_Wohnzimmer_Abendbeleuchtung off)
attr di_AbendlichtAus room Aktion


Zum Problem:
Per Fernbedienung lässt sich das Licht korrekt ein/aus schalten.
Jedesmal wenn der Bewegungsmelder ein Event schickt (bspw. info, alle ca. 5 min)
werden beide doifs getriggert, in der gelisteten Reihenfolge. Es geht also kurz Licht an und sofort wieder aus.
In den Logs taucht als auslösenden Event auch nur "GA_Huette_Bewegung" auf. Hab ich irgendein ?"& oder so übersehen?

THX for any hints,
Andreas.

turo

Das ist nachvollziehbar: Du wertest den Zustand der Fernbedienung aus und nicht den Event. Schau mal nach http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events! (Und lass Dich nicht von dem "Fragezeichen" im ersten Absatz verwirren ;-)) Das müsste dann so was wie [EG_Fernbedienung_Abendlicht_an:"on"] werden.

Gruss,
turo
3xRaspberry PI, Homematic, SELVE Rollos, 1-wire, Logitech Harmony, Alexa, Fussbodenheizung (ESP8266), Netatmo

andreasschubert2008

Zitat von: turo am 18 Februar 2016, 11:57:51
Das ist nachvollziehbar: Du wertest den Zustand der Fernbedienung aus und nicht den Event. Schau mal nach http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events! (Und lass Dich nicht von dem "Fragezeichen" im ersten Absatz verwirren ;-)) Das müsste dann so was wie [EG_Fernbedienung_Abendlicht_an:"on"] werden.

Gruss,
turo
Hm, hab ich es unklar formuliert? Die Fernbedienung funktioniert, wie sie soll, lediglich der "oder" Teil danach nicht.
Bei der FB wird nur ein Ereignis ausgelöst, wenn ich drücke, sonst nicht. Und da die FB auf Einzeltasten-Modus steht, löst jede Taste ein eigenes Ereignis aus.

Gruß Andreas.

Gesendet von meinem GT-I9295 mit Tapatalk


turo

#3
War schon klar ausgedrückt: Aber mit [EG_Fernbedienung_Abendlicht_an/aus] wertest Du den Zustand der Fernbedienung aus - der Ausdruck ist also wahr, wenn die Fernbedienung irgendwann mal gedrückt wurde. Wenn nun irgendein Event von GA_Huette_Bewegung kommt, was die Auswertung der DOIFs triggert, dann sind beide DOIFs auf der linken Seite wahr und schalten wie beschrieben.

EDIT: [EG_Fernbedienung_Abendlicht_an/aus] dürfte sogar immer "wahr" sein. Alles, was kein Nullstring oder 0 ist, ist wahr.

Warum es beim normalen Schalten auch funktioniert, liegt daran, dass dann nur ein Event für eines der beiden DOIFs kommt und dann auch nur dieses ausgewertet wird.

Gruss,
turo
3xRaspberry PI, Homematic, SELVE Rollos, 1-wire, Logitech Harmony, Alexa, Fussbodenheizung (ESP8266), Netatmo

andreasschubert2008

Zitat von: turo am 18 Februar 2016, 12:17:38
War schon klar ausgedrückt: Aber mit [EG_Fernbedienung_Abendlicht_an/aus] wertest Du den Zustand der Fernbedienung aus - der Ausdruck ist also wahr, wenn die Fernbedienung irgendwann mal gedrückt wurde. Wenn nun irgendein Event von GA_Huette_Bewegung kommt, was die Auswertung der DOIFs triggert, dann sind beide DOIFs auf der linken Seite wahr und schalten wie beschrieben.

EDIT: [EG_Fernbedienung_Abendlicht_an/aus] dürfte sogar immer "wahr" sein. Alles, was kein Nullstring oder 0 ist, ist wahr.

Warum es beim normalen Schalten auch funktioniert, liegt daran, dass dann nur ein Event für eines der beiden DOIFs kommt und dann auch nur dieses ausgewertet wird.

Gruss,
turo
Hm, ok, verstanden, dann wäre es vielleicht das einfachste, eine zweite doif zu machen, oder siehst du eine andere Möglichkeit?
Der Status der FB ändert sich eben nicht, wenn dann müsste ich ja irgendwie prüfen, wann der Status das letzte mal gewechselt hat.?
Oder würde es mit dem "on" nicht als wahr gewertet, weil es nicht dass aktuelle Event ist?

Gruß Andreas.

Gesendet von meinem GT-I9295 mit Tapatalk


turo

#5
Ich stelle das mir etwa so vor:
define di_AbendlichtAn DOIF ([EG_Fernbedienung_Abendlicht_an:"on"] or [GA_Huette_Bewegung:brightness] < 80)\
  ({fhem("set EG_Kueche_Kugellampe on") unless Value("EG_Kueche_Kugellampe") eq "on";; fhem("set EG_Wohnzimmer_Abendbeleuchtung on") unless Value("EG_Wohnzimmer_Abendbeleuchtung") eq "on"})

define di_AbendlichtAus DOIF ([EG_Fernbedienung_Abendlicht_aus:"on"] or [GA_Huette_Bewegung:brightness] > 120)\
  ({fhem("set EG_Kueche_Kugellampe off") unless Value("EG_Kueche_Kugellampe") eq "off";; fhem("set EG_Wohnzimmer_Abendbeleuchtung off") unless Value("EG_Wohnzimmer_Abendbeleuchtung") eq "off"})

Unter der Annahme, dass die Lichter noch anderswo geschaltet werden (sonst könnte man das viel eleganter in einem einzigen DOIF regeln). Und die Fernbedienung sagt "on", wenn man die Taste drückt. Und mit noch ein paar Abfragen, dass keine unnötigen Schaltbefehle gesendet werden.
(Ist aber natürlich ungetestet...)

EDIT: Wenn die Lampen nur von diesen beiden DOIFs geschaltet werden, schnurrt das zusammen auf:
define di_Abendlicht DOIF ([EG_Fernbedienung_Abendlicht_an:"on"] or [GA_Huette_Bewegung:brightness] < 80)\
  ((set EG_Kueche_Kugellampe,EG_Wohnzimmer_Abendbeleuchtung on)) \
DOELSEIF ([EG_Fernbedienung_Abendlicht_aus:"on"] or [GA_Huette_Bewegung:brightness] > 120)\
   ((set EG_Kueche_Kugellampe,EG_Wohnzimmer_Abendbeleuchtung off))


Gruss,
turo

3xRaspberry PI, Homematic, SELVE Rollos, 1-wire, Logitech Harmony, Alexa, Fussbodenheizung (ESP8266), Netatmo

andreasschubert2008

THX, die erste Variante ist mir erstmal zu lang, ich glaube so viel Funkverkehr habe ich nicht. Und ja, eigentlich wird nur hier geschaltet. Ich versuch es mal mit den zweiten Vorschlag (und prüfe nochmal ob "on" richtig ist.

Gruß Andreas.

Morgennebel

Das wird nicht funktionieren...

Du prüfst auf die Helligkeit von Bewegungsmeldern in der Nähe Deiner Außenbeleuchtung. Geht diese an, steigt die gemessene Helligkeit stark an und das zweite DOIF triggert...

Nimm das Twilight-Modul wie hier beschrieben: http://www.fhemwiki.de/wiki/HM-Sen-MDIR-O_Funk-IR-Bewegungsmelder_au%C3%9Fen#Au.C3.9Fenbeleuchtung_zeitgesteuert_und_bei_Bewegung_schalten

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

andreasschubert2008

Zitat von: Morgennebel am 18 Februar 2016, 16:36:01
Das wird nicht funktionieren...

Du prüfst auf die Helligkeit von Bewegungsmeldern in der Nähe Deiner Außenbeleuchtung. Geht diese an, steigt die gemessene Helligkeit stark an und das zweite DOIF triggert...

Nimm das Twilight-Modul wie hier beschrieben: http://www.fhemwiki.de/wiki/HM-Sen-MDIR-O_Funk-IR-Bewegungsmelder_au%C3%9Fen#Au.C3.9Fenbeleuchtung_zeitgesteuert_und_bei_Bewegung_schalten

Ciao, -MN
Ich schau es mir mal an, aber für diesen Fall hier: Bewegungsmelder ca 50m entfernt draussen, und ich schalte das Licht im Wohnzimmer und Küche. So weit streut das nicht ;-)

Gruß Andreas.

Wuppi68

oder Du setzt den 120er Wert noch ein wenig höher auf einen Wert >80+Lichtwert der Lampe

Aktuell mach die Fernbedienung nur Sinn zwischen 80 und 120
FHEM unter Proxmox als VM