Hallo,
ich habe folgendes notify laufen um die Hintergrundbeleuchtung meines TVs zu steuern.
define ambilight_on notify LGan:present {if(ReadingsVal("T","light","5")<4){fhem ("set Ambilight on")}else{fhem("set Ambilight off")}}
attr ambilight_on room Wohnzimmer
Dieses erzeugt aber ständig Einträge im Logfile.
2014.11.21 12:34:22 3: FS20 set Ambilight on
2014.11.21 12:34:23 3: FS20 set Ambilight off
2014.11.21 12:35:26 3: FS20 set Ambilight off
2014.11.21 12:36:29 3: FS20 set Ambilight off
Kann ich das irgendwie ändern, es würde ja reichen wenn jeweils das on / off beim ein bzw. ausschalten käme, ein event-on-change-reading state geht nicht dann bekomme ich folgende Fehlermeldung:
ambilight_on: unknown attribute event-on-change-reading. Type 'attr ambilight_on ?' for a detailed list.
Irgendeiner eine Idee?
Gruß Mark
Du solltest Dir eher über die Funklast Sorgen machen. Ergänze in der if-Abfrage &&(Value("Ambilight") ne "on")
guck dir mal DOIF an
Grüße
Igami
Würde damit nicht das Ambilight auch dann eingeschaltet werden, wenn der TV wieder ausgeschaltet wurde und erst danach die Helligkeit unter den Schwellenwert sinkt?
Ist schon lustig, dass wir hier alle ähnliche Ideen haben und das ganz unterschiedlich angehen. Mein Ambilight geht an, wenn der TV läuft und die Rollos herunterfahren (mit sunset gesteuert).
[Edit:] Nochmal zum Beispiel des TE: Das PRESENCE-Modul braucht natürlich ein event-on-change-reading. Sonst wird ja auch dauernd das notify ausgelöst, was überhaupt erst zu den multiplen Schaltvorgängen führt. Das sollte als Lösung schon reichen.
Hallo,
das PRESENCE-Modul hat ein event-on-change-reading laufen, wobei das PRESENCE-Modul auf meine FB7390 läuft und der Rest auf dem Raspi.
Hier mal zur besseren Verständlichkeit die Einträge aus den beiden fhem.cfg Dateien
Fritz!Box 7390
define LGan PRESENCE lan-ping 192.168.2.17 60
attr LGan event-on-change-reading state
define Dummy_LG dummy
define LGPresence notify LGan {my $chrisstate=ReadingsVal("LGan","state",0);; fhem ("set Dummy_LG set LG $chrisstate")}
Raspi
define LG dummy
attr LG event-on-change-reading state
attr LG room Wohnzimmer
define Daten_LG notify Dummy_LG {fhem "%"}
define ambilight_on notify LGan:present {if(ReadingsVal("T","light","5")<4){fhem ("set Ambilight on")}else{fhem("set Ambilight off")}}
attr ambilight_on room Wohnzimmer
Gruß
Mark
So,
ich habe es jetzt mit DOIF gelöst
define ambilight_on DOIF ([LG] eq "present" and [T:light] <4)(set Ambilight on) DOELSEIF ([LG] eq "absent")(set Ambilight off) DOELSEIF ([T:light] >4)(set Ambilight off) DOELSE (set Ambilight off)
bisher scheint es zu funktionieren auch sind keine Wiederholungen im Logfile.
Danke für die Anregungen
Gruß Mark
Ja, DOIF ist doch nicht so verkehrt und kann einiges erleichtern 8)
Jetzt noch ein Gelöst blablabla (einfach so wie in meinem angepinnten Beitrag) damit auch andere Anfänger was davon haben und nicht lange suchen brauchen.
Danke
Die beiden (set Ambilight off) könnten noch zusammengefasst werden
Zitat von: Commandref
Mehrere Bedingungen, die zur Ausführung gleicher Kommandos führen, sollten zusammengefasst werden. Dadurch wird ein unnötiges Schalten aufgrund verschiedener Zustände verhindert.
Beispiel:
define di_lamp DOIF ([brightness] eq "off") (set lamp on) DOELSEIF ([19:00]) (set lamp on) DOELSE (set lamp off)
Hier wird um 19:00 Uhr Lampe eingeschaltet, obwohl sie evtl. vorher schon durch das Ereignis brightness "off" eingeschaltet wurde.
define di_lamp DOIF ([brightness] eq "off" or [19:00]) (set lamp on) DOELSE (set lamp off)
Hier passiert das nicht mehr, da die ursprünglichen Zustände cmd_1 und cmd_2 jetzt nur noch einen Zustand cmd_1 darstellen und dieser wird nicht wiederholt.
Grüße
Igami