FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MaJu am 24 Oktober 2014, 18:15:13

Titel: [gelöst] LUX/HUE mit 1 Taste steuern?!
Beitrag von: MaJu am 24 Oktober 2014, 18:15:13
Hallo zusammen,

ich bin zwar kein Anfänger mehr, bitte aber um Hilfe:

Ich habe meine Installation um PHILIPS LUX (wie HUE, aber nur weiß) erweitert. Es funktioniert soweit alles super.

ABER: Grundsätzlich muss das Licht mit dem Taster an der Wand ein- und ausgeschaltet werden können. Allerdings nicht ausschließlich.
Der Schalter hat nur EINEN Schaltpunkt, der über ein PIFACE-Modul am Raspberry erkannt wird. Hier ist keine Änderung möglich, aber auch das funktioniert grundsätzlich.

ZIEL:
Wenn der Taster gedrückt wird, muss die LUX auf 100% angehen wenn sie aktuell aus ist. Wenn sie an ist, egal wie hell, soll sie aus gehen.
Der Befehl "Toggle" geht leider nicht, weil sonst beim Einschalten der letzte Dimm-Wert verwendet würde, was ggf. zu dunkel ist.

Ich nutze nun das folgende DOIF (DEF):
([PIFACE:in7] eq "0" and [HUEDevice4:state] ne "off")
(set HUEDevice4 off)

DOELSEIF
([PIFACE:in7] eq "0")
(set HUEDevice4 pct 100)

Ergebnis: Ist die LUX nicht auf "off", dann wird sie ausgeschalten, ansonsten eingeschaltet.

Klappt super, bis auf das PROBLEM:
Das DOIF bleibt beim letzten Status stehen und macht erst wieder was, wenn es einen anderen Status ausführen kann. Habe ich die Lampe also mit dem Taster eingeschaltet, ist das DOIF im Status 2 (weil die zweite Bedingung erfüllt ist).
Schalte ich die LUX nun anderweitig (iPhone App oder ein FHEM-Automatismus) wieder aus, dann funktioniert der Schalter nicht mehr. Denn es wäre wieder die zweite Bedingung wahr, und damit keine Änderung, also wird nichts ausgelöst. Ich muss die Lampe erst wieder anderweitig einschalten, damit der Schalter sie ausschalten kann.

Das DOIF-Attribut "do" auf "always" setzen klappt leider auch nicht. Denn wenn die Lampe eingeschaltet wird, ist noch im Moment des Tastendrückens der Zustand "aus" nicht mehr war, womit sie gleich wieder ausgeht.

Da auf die LUX/HUE keine notifys gesetzt werden können (weil sie keine Events schicken), kann ich mir auch nicht mit einem Dummy behelfen, der mit Zeitverzögerung einen Status bekommt.

Hat jemand einen Tipp für mich? Kann man im DOIF irgendwie einbauen, dass der Status kurz geprüft und dann für 5 Sekunden nicht mehr geprüft wird? Bietet sich eine völlig andere Möglichkeit?

Theoretisch wären ja auch 2 notifys möglich, die auf das Piface-Drücken reagieren (Piface in7 auf "0" und gleichzeitig HUEDevice auf "off", dann einschalten und als zweites das gleiche mit "nicht auf off" zum ausschalten), aber hier war ich leider nicht erfolgreich. Denn mit der folgenden notify-Definition passiert rein gar nichts:
PIFACE {if (ReadingsVal("PIFACE","in7",99) eq "0") and (ReadingsVal("HUEDevice4","state",99) eq "off") {fhem("set HUEDevice4 pct 100")}}

HILFE!

Danke :-)
Titel: Antw:LUX/HUE mit 1 Taste steuern?!
Beitrag von: justme1968 am 24 Oktober 2014, 19:21:28
ein einfaches notify mit einem altmodischen perl if:define <notify> PIFACE:in7 {if(ReadingsVal("HUEDevice4","onoff",0) eq "1") {fhem("set HUEDevice4 off")}else{fhem("set HUEDevice4 pct 100")}}

zwei notifys gehen deshalb nicht weil auf jeden fall immer beide ausgeführt werden da das event identisch ist und je nach reihenfolge das erste notify schaltet und dann die bedinung auch für das zweite notify stimmt und wieder zurück geschaltet wird.

gruss
  andre

ps: jedes hue reading erzeugt events und ist mit notifys verwendbar.
Titel: Antw:LUX/HUE mit 1 Taste steuern?!
Beitrag von: MaJu am 24 Oktober 2014, 21:07:12
Hallo Andre, danke dass du mir wieder hilfst! :-)
Die Idee mit dem onoff-Reading ist gut.

Leider zeigt sich bei Tastendruck keine Reaktion. Ich verstehe das inhaltlich leider nicht, um mir selbst zu helfen :-(

Beim Drücken des Tasters erhält PIFACE Reading "in7" den Status "0". Gleich danach, beim Loslassen des Tasters, wird der Status wieder "1" und bleibt darauf.
Das notify darf/soll/muss also immer dann ausgeführt werden, wenn das PIFACE in das Reading "in7" den Wert "0" bekommt.

Zum Thema events: Die Änderungen der HUE sehe ich im Device etc., aber im Event monitor taucht nichts davon auf.
Titel: Antw:LUX/HUE mit 1 Taste steuern?!
Beitrag von: justme1968 am 25 Oktober 2014, 00:13:14
den hinweis auf das einsteiger pdf und wie notifys funktionieren kennst du sicher. das ist das erklärt.

dann sollte es so gehen:define <notify> PIFACE:in7.0 {if(ReadingsVal("HUEDevice4","onoff",0) eq "1") {fhem("set HUEDevice4 off")}else{fhem("set HUEDevice4 pct 100")}}wenn das noch nicht hilft zeig mir mal einen auschnitt aus dem event monitor wenn du den taster betätigst.

wenn du die events nicht im event monitor siehst stimmt etwas nicht:Events:
2014-10-25 00:09:40 structure allesAus LastDevice: HUEbulb1
2014-10-25 00:09:40 structure allesAus LastDevice_Abs: HUEbulb1
2014-10-25 00:09:40 structure allesAus on
2014-10-25 00:09:40 HUEDevice HUEbulb1 onoff: 1
2014-10-25 00:09:40 HUEDevice HUEbulb1 pct: 100
2014-10-25 00:09:40 HUEDevice HUEbulb1 on
2014-10-25 00:09:41 SWAP SWAP_77 0C-Brightness: 001B
2014-10-25 00:09:41 SWAP SWAP_77 brightness: 27
2014-10-25 00:09:42 THRESHOLD thresholdPlex sensor_value: 21
2014-10-25 00:09:42 PCA301 PCA301_077606 power: 21
2014-10-25 00:09:42 PCA301 PCA301_077606 21
2014-10-25 00:09:43 structure allesAus LastDevice: HUEbulb1
2014-10-25 00:09:43 structure allesAus LastDevice_Abs: HUEbulb1
2014-10-25 00:09:43 structure allesAus off
2014-10-25 00:09:43 HUEDevice HUEbulb1 onoff: 0
2014-10-25 00:09:43 HUEDevice HUEbulb1 pct: 0
2014-10-25 00:09:43 HUEDevice HUEbulb1 off


gruss
  andre
Titel: Antw:LUX/HUE mit 1 Taste steuern?!
Beitrag von: MaJu am 25 Oktober 2014, 23:59:19
Andre, danke. Du hast mich zur Verzweiflung gebracht, denn eigentlich musste dein Beispiel funktionieren. Tat es aber nicht.

Die Lösung: Die Punktierung im Notify-Auslöser passte nicht. Mit PIFACE.in7:.0 funktioniert es.

Deshalb: Danke! (Wieder einmal)

Wenn mal wieder jemand sucht, die komplette Notify-Definition muss folgendermaßen sein:PIFACE.in7:.0 {if(ReadingsVal("HUEDevice4","onoff",0) eq "1") {fhem("set HUEDevice4 off")}else{fhem("set HUEDevice4 pct 100")}}

Und du hast Recht, bei mir taucht die Hue nun auch im Event Monitor auf. Keine Ahnung, warum das gestern nicht der Fall war.