Wifilight.pm

Begonnen von herrmannj, 18 Januar 2014, 04:10:07

Vorheriges Thema - Nächstes Thema

sbiermann

Die Firmware ist fertig und funktioniert perfekt. Ich habe im ESP8266 Forum einen extra Thread angefangen für die Leute die es interessiert. Hier der Link: https://forum.fhem.de/index.php/topic,73622.0.html

moonsorrox

Ich bedanke mich hier für das Modul, da ich heute meinen 1.UFO Controller bekommen habe. In FHEM integriert, ein/ausschalten, dimmen alles funktioniert problemlos... ;)
Im Einsatz habe ich einen warm weißen Streifen von 5m den ich als indirekte Beleuchtung im Schlafzimmer nutze.

Dazu habe ich eine Frage, hat jemand hier die weiße Homematic Fernbedienung im Einsatz in der Weise das ich mit einer Taste EIN und mit der 2.Taste Aus schalte und wenn ich die jeweilige Taste länger halte eben hoch oder runter Dimme.
Ersteres ist sicher kein Problem, aber die Prozedur mit dem halten denke ich ist etwas schwieriger.

Habe hier noch nicht alles durchgelesen, evtl. gibt es ja ein Beispiel
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Cybers

#2102
so sieht es bei mir aus:
Taster 1: kuzer Tastendruck -> Ein / langer Tasterdruck -> rauf dimmen
Taster 2: kurzer tastendruck -> Aus / langer tastendruck -> runter dimmen

# deviceSwitch -> deviceDimmer off/dim down
define Taster1.1_sKurzerLangerDruck sequence EnO_switch_00001001:B0 0.5 EnO_switch_00001001:released
attr Taster1.1_sKurzerLangerDruck room Schaltschrank
attr Taster1.1_sKurzerLangerDruck triggerPartial 1
define Taster1.1_nKurzerDruck notify Taster1.1_sKurzerLangerDruck:trigger {if (ReadingsVal('Dali_Dimmer1','state','') eq "off" ) {\
fhem('set Dali_Dimmer1 10;;setstate Dali_Dimmer1 10');;\
} else {\
  fhem('set Dali_Dimmer1 off;;setstate Dali_Dimmer1 0')\
}}
attr Taster1.1_nKurzerDruck room Schaltschrank
define Taster1.1_nLangerDruck notify Taster1.1_sKurzerLangerDruck:partial_1 trigger dummyDimmer_DimDown_Start
attr Taster1.1_nLangerDruck room Schaltschrank
define dummyDimmer_DimDown_Start dummy
attr dummyDimmer_DimDown_Start room hidden
define notifyDimmer_DimDown_Start notify dummyDimmer_DimDown_Start { my $varCurrentDimValue = Value("Dali_Dimmer1");; $varCurrentDimValue = $varCurrentDimValue > $main::varDimValueMaximum ? $varCurrentDimValue - (100 - $main::varDimValueMaximum) : $varCurrentDimValue > $main::varDimValueMinimum ? $varCurrentDimValue - $main::varDimStepsPerLongPressPeriod : 0;; fhem( "set Dali_Dimmer1 dim $varCurrentDimValue;;setstate Dali_Dimmer1 $varCurrentDimValue" );; fhem( "trigger dummyDimmer_DimDown") }
define dummyDimmer_DimDown dummy
attr dummyDimmer_DimDown room hidden
define sequenceSwitch_DimDown sequence dummyDimmer_DimDown 0.1 EnO_switch_00001001:released
attr sequenceSwitch_DimDown triggerPartial 1
define notifySwitch_DimDown notify sequenceSwitch_DimDown:partial_1 { my $varCurrentDimValue = Value("Dali_Dimmer1");; $varCurrentDimValue = $varCurrentDimValue > $main::varDimValueMaximum ? $varCurrentDimValue - (100 - $main::varDimValueMaximum) : $varCurrentDimValue > $main::varDimValueMinimum ? $varCurrentDimValue - $main::varDimStepsPerLongPressPeriod : 0;; fhem( "set Dali_Dimmer1 dim $varCurrentDimValue;;setstate Dali_Dimmer1 $varCurrentDimValue" );; fhem( "trigger dummyDimmer_DimDown") }

# deviceSwitch -> deviceDimmer on/dim up
define Taster1.2_sKurzerLangerDruck sequence EnO_switch_00001002:BI 0.5 EnO_switch_00001002:released
attr Taster1.2_sKurzerLangerDruck room Schaltschrank
attr Taster1.2_sKurzerLangerDruck triggerPartial 1
define Taster1.2_nKurzerDruck notify Taster1.2_sKurzerLangerDruck:trigger set Dali_Dimmer1 dim 100;;setstate Dali_Dimmer1 100
attr Taster1.2_nKurzerDruck room Schaltschrank
define Taster1.2_nLangerDruck notify Taster1.2_sKurzerLangerDruck:partial_1 trigger dummyDimmer_DimUp_Start
attr Taster1.2_nLangerDruck room Schaltschrank
define dummyDimmer_DimUp_Start dummy
attr dummyDimmer_DimUp_Start room hidden
define notifyDimmer_DimUp_Start notify dummyDimmer_DimUp_Start { my $varCurrentDimValue = Value("Dali_Dimmer1");; $varCurrentDimValue = $varCurrentDimValue < $main::varDimValueMinimum ? $varCurrentDimValue + $main::varDimValueMinimum : $varCurrentDimValue < $main::varDimValueMaximum ? $varCurrentDimValue + $main::varDimStepsPerLongPressPeriod : 100;; fhem( "set Dali_Dimmer1 dim $varCurrentDimValue;;setstate Dali_Dimmer1 $varCurrentDimValue" );; fhem( "trigger dummyDimmer_DimUp") }
define dummyDimmer_DimUp dummy
attr dummyDimmer_DimUp room hidden
define sequenceSwitch_DimUp sequence dummyDimmer_DimUp 0.1 EnO_switch_00001002:released
attr sequenceSwitch_DimUp triggerPartial 1
define notifySwitch_DimUp notify sequenceSwitch_DimUp:partial_1 { my $varCurrentDimValue = Value("Dali_Dimmer1");; $varCurrentDimValue = $varCurrentDimValue < $main::varDimValueMinimum ? $varCurrentDimValue + $main::varDimValueMinimum : $varCurrentDimValue < $main::varDimValueMaximum ? $varCurrentDimValue + $main::varDimStepsPerLongPressPeriod : 100;; fhem( "set Dali_Dimmer1 dim $varCurrentDimValue;;setstate Dali_Dimmer1 $varCurrentDimValue" );; fhem( "trigger dummyDimmer_DimUp") }


das kommt dann noch in die 99_myUtils.pm:
{
  my ($hash) = @_;

  our $varDimValueMinimum = "0";
  our $varDimValueMaximum = "100";
  our $varDimStepsPerLongPressPeriod = "2";

}

der Wert "2" entspricht quasi der Dimmgeschwindigkeit, bzw. der Steps

Die Devices mußt du dir dann halt noch selber anpassen

Gruß, Sascha
FHEM 6.2 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

herrmannj

perfekt beschrieben.

Zusätzlich als Impuls: ähnlich kann man mit einer Standard FB (oder Schalter) die Farbe verändern, am besten auch in einer 99_myUtils.

Zuerst Hue, Sat, Val aus den Readings lesen.
Dann ein "set dev HSV H-1, S, V 30 l". Damit wird einmal in 30sek der Farbkreis durchlaufen.
Wenn die dabei die gewünschte Farbe erreicht ist: per Tastendruck triggern: wieder H lesen und "set dev HSV H,S,V" absetzen, das stoppt die Transition sofort auf genau der Farbe die man mag.

vg
joerg

moonsorrox

@Cybers

vielen Dank für das doch etwas komplizierte Code Gebilde  ;)
Ich wußte das dies nicht so einfach ist... ich wollte mich wenn ich mal Zeit habe das mit einem DOIF probieren... aber momentan fehlt es mir an Zeit...

Dein "echter Hardwareschalter der FB" sollte dann dieser hier sein "EnO_switch_00001002" wenn ich das so im überfliegen gesehen habe.
Werde mal nachher versuchen das ganze nachzustellen...
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Cybers

der eine Taster ist EnO_switch_00001001 und der andere EnO_switch_00001002.
FHEM 6.2 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

moonsorrox

also mit der"sequence" und dem Taster hab ich so meine Probleme, dass klappt leider bei mir so nicht. Das andere habe ich alles angepasst aber irgend etwas läuft nicht richtig.
Evtl. hab eich etwas übersehen und doch einen Fehler eingebaut... ich stelle hier jetzt mal mein Code der bis auf den "Taster und den SZ_WifiLight" nicht verändert wurde.

Vllt. liegt es allein am Taster der FB, hier habe ich verschiedene Einstellungen probiert..
so arbeitet ja die 8fach FB mit meinen Tasten (Taste 2 und 4) die ich ich nutze z.B. "RC8_Taste2 Short" und "RC8_Taste2 LongRelease", aber Erfolg hatte ich damit nicht.


# deviceSwitch -> deviceDimmer off/dim down
define Taster1.1_sKurzerLangerDruck sequence RC8_Taste2: 0.5 RC8_Taste2:released
attr Taster1.1_sKurzerLangerDruck room Schaltschrank
attr Taster1.1_sKurzerLangerDruck triggerPartial 1

define Taster1.1_nKurzerDruck notify Taster1.1_sKurzerLangerDruck:trigger {if (ReadingsVal('SZ_WifiLight','state','') eq "off" ) {fhem('set SZ_WifiLight 10;; setstate SZ_WifiLight 10')} else {fhem('set SZ_WifiLight off;; setstate SZ_WifiLight 0')}}
attr Taster1.1_nKurzerDruck room Schaltschrank

define Taster1.1_nLangerDruck notify Taster1.1_sKurzerLangerDruck:partial_1 trigger dummyDimmer_DimDown_Start
attr Taster1.1_nLangerDruck room Schaltschrank

define dummyDimmer_DimDown_Start dummy
attr dummyDimmer_DimDown_Start room hidden

define notifyDimmer_DimDown_Start notify dummyDimmer_DimDown_Start { my $varCurrentDimValue = Value("SZ_WifiLight");; $varCurrentDimValue = $varCurrentDimValue > $main::varDimValueMaximum ? $varCurrentDimValue - (100 - $main::varDimValueMaximum) : $varCurrentDimValue > $main::varDimValueMinimum ? $varCurrentDimValue - $main::varDimStepsPerLongPressPeriod : 0;; fhem( "set SZ_WifiLight dim $varCurrentDimValue;;setstate SZ_WifiLight $varCurrentDimValue" );; fhem( "trigger dummyDimmer_DimDown") }

define dummyDimmer_DimDown dummy
attr dummyDimmer_DimDown room hidden

define sequenceSwitch_DimDown sequence dummyDimmer_DimDown 0.1 RC8_Taste2:released
attr sequenceSwitch_DimDown triggerPartial 1

define notifySwitch_DimDown notify sequenceSwitch_DimDown:partial_1 { my $varCurrentDimValue = Value("SZ_WifiLight");; $varCurrentDimValue = $varCurrentDimValue > $main::varDimValueMaximum ? $varCurrentDimValue - (100 - $main::varDimValueMaximum) : $varCurrentDimValue > $main::varDimValueMinimum ? $varCurrentDimValue - $main::varDimStepsPerLongPressPeriod : 0;; fhem( "set SZ_WifiLight dim $varCurrentDimValue;;setstate SZ_WifiLight $varCurrentDimValue" );; fhem( "trigger dummyDimmer_DimDown") }



# deviceSwitch -> deviceDimmer on/dim up
define Taster1.2_sKurzerLangerDruck sequence RC8_Taste4: 0.5 RC8_Taste4:released
attr Taster1.2_sKurzerLangerDruck room Schaltschrank
attr Taster1.2_sKurzerLangerDruck triggerPartial 1

define Taster1.2_nKurzerDruck notify Taster1.2_sKurzerLangerDruck:trigger set SZ_WifiLight dim 100;;setstate SZ_WifiLight 100
attr Taster1.2_nKurzerDruck room Schaltschrank

define Taster1.2_nLangerDruck notify Taster1.2_sKurzerLangerDruck:partial_1 trigger dummyDimmer_DimUp_Start
attr Taster1.2_nLangerDruck room Schaltschrank

define dummyDimmer_DimUp_Start dummy
attr dummyDimmer_DimUp_Start room hidden

define notifyDimmer_DimUp_Start notify dummyDimmer_DimUp_Start { my $varCurrentDimValue = Value("SZ_WifiLight");; $varCurrentDimValue = $varCurrentDimValue < $main::varDimValueMinimum ? $varCurrentDimValue + $main::varDimValueMinimum : $varCurrentDimValue < $main::varDimValueMaximum ? $varCurrentDimValue + $main::varDimStepsPerLongPressPeriod : 100;; fhem( "set SZ_WifiLight dim $varCurrentDimValue;;setstate SZ_WifiLight $varCurrentDimValue" );; fhem( "trigger dummyDimmer_DimUp") }

define dummyDimmer_DimUp dummy
attr dummyDimmer_DimUp room hidden

define sequenceSwitch_DimUp sequence dummyDimmer_DimUp 0.1 RC8_Taste4:released
attr sequenceSwitch_DimUp triggerPartial 1

define notifySwitch_DimUp notify sequenceSwitch_DimUp:partial_1 { my $varCurrentDimValue = Value("SZ_WifiLight");; $varCurrentDimValue = $varCurrentDimValue < $main::varDimValueMinimum ? $varCurrentDimValue + $main::varDimValueMinimum : $varCurrentDimValue < $main::varDimValueMaximum ? $varCurrentDimValue + $main::varDimStepsPerLongPressPeriod : 100;; fhem( "set SZ_WifiLight dim $varCurrentDimValue;;setstate SZ_WifiLight $varCurrentDimValue" );; fhem( "trigger dummyDimmer_DimUp") }

Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Cybers

mein Eltako Tastsensor liefert im gedrückten Zustand den Wert B0 (bzw. der zweite BI) und im nicht gedrückten Zustand "released". Diese Werte mußt du für deinen Taster anpassen. Also nicht nur die Devices anpassen sondern auch die dazugehörigen Werte für gedrückt und nicht gedrückt.
FHEM 6.2 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

moonsorrox

#2108
ja da hast du absolut Recht und deshalb habe ich nicht nur stumpf abgeschrieben sondern auch dazu geschrieben das er die Werte Short und LongRelease annimmt, aber was er jetzt nicht gedrückt anzeigt weiß ich nicht er hat immer nur den letzten Wert drin.
Ansonsten bin ich da überfragt, ich lebe erst einmal mit dem normalen Ein/Aus mal schauen ob das evtl. mit einem DOIF geht...

EDIT:// nach einem langen Tastendruck z.B. steht dieses drin "STATE LongRelease 10_180 (to HMUSB)" die Zahl dahinter ändert sich ständig, wobei die 10 sec. sind und die 180 der cnt sind
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Amenophis86

dann kannste doch mit =~ "Long" arbeiten, oder nicht?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

sebastianbieber

Moin, Jörg,

hast Du inzwischen eigentlich was an dem colorcast gemacht? Gelesen hab' ich davon nichts, oder hab' ich was übersehen?

so long, Sebastian

moonsorrox

Zitat von: Amenophis86 am 28 Juni 2017, 15:22:24
dann kannste doch mit =~ "Long" arbeiten, oder nicht?

ja ich setzte das jetzt mit einem DOIF um

define di_SZ_Stripe DOIF ([RC8_Taste2] =~ "Long") (set SZ_WifiLight dimup) DOELSEIF ([RC8_Taste4] =~ "Long") (set SZ_WifiLight dimdown) DOELSEIF ([RC8_Taste2:"Short"]) (set SZ_WifiLight on) DOELSEIF ([RC8_Taste4:"Short"]) (set SZ_WifiLight off)
attr di_SZ_Stripe do always
attr di_SZ_Stripe room Schlafzimmer
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

herrmannj

Zitat von: sebastianbieber am 29 Juni 2017, 21:13:09
Moin, Jörg,

hast Du inzwischen eigentlich was an dem colorcast gemacht? Gelesen hab' ich davon nichts, oder hab' ich was übersehen?

so long, Sebastian
Moin Sebastian,

das habe ich eben nachgeholt, es war mir zwischenzeitlich durch gerutscht.

Bei der Gelegenheit habe ich auch die Farben an sich noch einmal etwas gerade gerückt. (Gemittelt mir 4 verschiedenen milight, die Streuung ist schon beachtlich)

ab morgen per update.

vg
joerg

arne.dien

Hallo Jörg,
wolltest du nicht den "LD686" Controller mit einbauen?

LG
Arne
FHEM 5.9, RasPi 3 B, HM-LAN, RFXtrx433, Harmony
Homematic, Licht, Rolladen, Heizkörper, Rauchmelder...
ESP RGBWW, LD316...

Es ist selten zu spät aber immer höchste Zeit...

herrmannj

stimmt. Da gibt es aber das Problem mit den 2 mal weiß, Wifilight unterstützt nur einen und der Umabu auf zwei ist umfangreich. Bin unsicher

vg
joerg