Wifilight.pm

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

Vorheriges Thema - Nächstes Thema

spionwanze

Moin,

ich habe die 32_WifiLight.pm runtergeladen nach nach FHEM/share/fhem/FHEM/ verschoben (läuft auf einem Synology NAS).

Dann die gleichen Dateiberechtigungen wie alle anderen Module vergeben:
-rw-r--r--    1 root     root         22359 Jan 31 21:58 32_SYSSTAT.pm
-rw-r--r--    1 root     root         69920 Feb  5 01:14 32_WifiLight.pm
-rw-r--r--    1 root     root         14021 Jan 31 21:58 32_mailcheck.pm
-rw-r--r--    1 root     root          5182 Jan 31 21:58 32_speedtest.pm
-rw-r--r--    1 root     root         21611 Jan 31 21:58 32_withings.pm

In die fhem.cfg eingebunden:
define WZ_WifiLight WifiLight RGB LW12:192.168.1.97

Meldung beim Speichern:
Cannot load module WifiLight

Laut Logfile:
014.02.13 19:45:40 1: reload: Error:Modul 32_WifiLight deactivated:
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 45, near "] ~"
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 261, near "] ~"
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 284, near "$hue ~"
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 285, near "$sat ~"
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 286, near "$val ~"
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 715, near "} ~"
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 724, near "}"

2014.02.13 19:45:40 0: syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 45, near "] ~"
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 261, near "] ~"
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 284, near "$hue ~"
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 285, near "$sat ~"
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 286, near "$val ~"
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 715, near "} ~"
syntax error at /usr/local/FHEM/share/fhem/FHEM/32_WifiLight.pm line 724, near "}"

Jemand eine Idee???  :(
Danke und Gruß

herrmannj

Moin,

einen Verdacht. Welche perl Version läuft auf der Synology ?

vg
Jörg

spionwanze

DiskStation> perl -v

This is perl, v5.8.6 built for X86

herrmannj

Dann haste noch ein perl was kein smart match kann.  Da Du den post mit einem heimatlichen "moin" begonnen hast muss ich mir das dann wohl anschauen und auf Dein antikes perl umbauen  ;)

Wird aber erst am WE

vg
Jörg

spionwanze

Moin Moin Jörg  ;D,

tatsächlich hat mir das Synology Perl schon mehrfach Kopfschmerzen bereitet, so lässt sich auch FHEM nicht als HTTPS Instanz starten, da das Perl Modul IO::Socket::SSL fehlt.
Wenn du natürlich die Möglichkeit hättest dein Modul anzupassen wäre ich dir zu tiefstem Dank verpflichtet, wahrscheinlich auch im Namen anderer Synology FHEM Nutzer.

Also Dankeeeee und schönen Gruß,
Darius

justme1968

je nach dem welche diskstation du hast kannst du problemlos auf die ipkg perl version umstellen (5.10, ohne threads, ssl, ...) oder wenn es eine intel box ist sogar auf active perl (5.16, mit threads)

ansonsten scheint smart match aber auch auf diversen anderen plattformen probleme zu machen und es scheint wieder experimental oder sogar deprecated zu sein.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

herrmannj

nicht depraced aber von stable wieder auf experimentell runter gesetzt.

vg
jörg

spionwanze

Hallo Andre,

tatsächlich hab ich nun zum Synology eigenen Perl (/usr/bin/perl, v5.8.6 built for X86) per ipkg ein "neueres" Perl (/opt/bin/perl, v5.10.0 built for i686-linux-gnu) installieren und die Pfade im FHEM Startscript (/usr/syno/synoman/webman/3rdparty/FHEM/scripts/fhem.sh) entsprechend anpassen können.

Zusammen mit dem ipkg perl-io-socket-ssl Paket ist meine FHEM Instanz endlich per HTTPS erreichbar!  ;D ;D ;D

Ich arbeite auf einer DS411+II, dementsprechend Intel x86 Architektur. Jedoch gibt es kein Active Perl 5.16 im ipkg Repository  :(

Grundsätzlich scheint aber nun WifiLight zu funktionieren:
define WifiLight_RGBW2 WifiLight RGBW2 bridge-V3:192.168.1.96 ---> Saved the file fhem.cfg
define WifiLight_RGB WifiLight RGB LW12:192.168.1.97 --> can't bind: IO::Socket::INET: connect: timeout

Tatsächlich habe ich die LW12 und RGBW2 Bridge noch nicht, die timeout Meldung könnte dementsprechend sinngemäß sein!?

Gruß,
Darius


herrmannj

ZitatTatsächlich habe ich die LW12 und RGBW2 Bridge noch nicht, die timeout Meldung könnte dementsprechend sinngemäß sein!?

Absolut ! ;D

vg
joerg

justme1968

das active perl kannst du von deren Webseite runterlasen. die Intel linux version läuft auf den Intel diskstations.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Matthias

Hi,

einfach eine xmllist eines Geräts an andfhem@klass.li schicken.

Viele Grüße,
Matthias

herrmannj

Hallo zusammen,

das Modul im ersten Beitrag ist aktualisiert. Minor Bugfixe plus:

neuer Color Konverter für Mi-Light. Der PWM in den Mi-Light & co ist extrem unlinear, das Modul gleicht das damit aus. Sichtbar vor allem im Bereich Lila, Rot, Gelb. Je nach dem was die Hersteller für LEDs verwenden weichen unterschiedliche Fabrikate noch minimal voneinander ab. Die Möglichkeit Lampen einzeln zu kalibrieren hab ich schon eingebaut aber noch nicht "nach außen" geführt.

Die Routinen für die Farbübergänge sind überarbeitet und für schnellere Farbübergänge optimiert. Das Modul stellt schnelle fließende Farbübergänge so weich wie möglich dar (Frames / Sekunde). Wievielt dabei "geht" hängt von sehr vielen Umständen ab, die Specs der Leuchtmittel, der FHEM Host, die FHEM Auslastung durch andere Module, die Auslastung der Bridge ... etc.

Das Modul berechnet die Framerate ständig dynamisch. Mit den Mi-Light RGB+Weiß (ebay China ab 13,-) und einer Fritzbox sind Licht Effekte möglich die für eine spontane Fete, Partykeller oder Disco beim Wuki durchaus ausreichen - mit einer DMX ist es natürlich nicht vergleichbar. 

Außerdem hat der set HSV Befehl einen neuen optionalen Parameter "Programm Bezeichnung" bekommen. Wenn einer HSV Transition ein Name angehängt wird erzeugt das Modul während der Transition Events in der Form:
<Device>:programm: <Programm Bezeichnung> 0..100

Diese Möglichkeit soll sparsam eingesetzt werden alle Events Last im FHEM erzeugen. Ebenfalls wichtig ist es zu verstehen das nur das letzte Event (100) garantiert ist.

Beispiel:
set <DEVICE> HSV 120,100,100 30 q TEST

In diesem Beispiel wird ausgehende von der momentanen Farbe innerhalb von 30 Sekunden auf Grün (120°) über-geblendet. Während dieser Zeit werden möglicherweise diese Events erzeugt:

<Device>:programm: TEST 12
<Device>:programm: TEST 25
<Device>:programm: TEST 40
<Device>:programm: TEST 45
<Device>:programm: TEST 60
<Device>:programm: TEST 100


Welche Events vor der finalen 100 erzeugt werden hängt von den oben genannten Umständen (Last, Leuchtmittel, Host usw) ab und ist und ist je nach Situation unterschiedlich.

Anwendungen für den Parameter sind vielfältig, eine mögliche Anwendung möchte ich hier entwickeln um den Einsatz des Parameters in der Praxis und detailliert am Subjekt zu zeigen  :)

Wakeup Light De-Luxe:

Gegeben seien: E27 RGBW2 als Deckenlicht (Name RGBW2), dimmbare non-WifiLight Nachttisch-Lampe (Name Nachttisch, vielleicht FS20), Audio über Webview Control (Android Tab/Handy oder besser Android Radio Wecker, Name TAB).

Das Wake Up soll jetzt wie folgt ablaufen, die RGBW2 soll damit beginnen ein ganz dunkles blaues Licht zu erzeugen. Dann innerhalb von 20 Minuten einen Sonnenaufgang von Blau, (dunkel: Dämmerung), fließend zu Rot (hell Sonnenaufgang) und weiter zu hellem weißen Licht. Gleichzeitig soll die Audioquelle Vogelzwitschern, erst leise und dann lauter werdend abspielen. Zwischendurch soll die Zeit angesagt werden. Ab virtuellem Sonnenaufgang soll auch die Nachttischlampe voll mit aufgedimmt werden und das TAB soll auf Radio umschalten.

Die RGBW2 (bspw 8Watt Typ) kann nur entweder Farbe oder Weiß wobei das weiße Licht viel heller ist. Damit die Umschaltung von Farbe auf Weiß möglichst angenehm erscheint schalte ich von Gelb (60°, 100% Helligkeit) auf ein Weiß mit 20% Helligkeit. In beiden Fällen ist die Leuchtkraft vergleichbar, Gelb und Weiß sind in der Wahrnehmung ähnlich. Bei RGBW2 anderer Fabrikate weichen diese Werte ab, meine 6Watt OEM "übernimmt" mit 40% Weiß am angenehmsten.

Der erste Teil des Farbverlaufes besteht daher aus einer Color Transition 20 Minuten von Blau (240°) 0% Leuchtkraft auf Gelb (60°) mit 100% Leuchtkraft. Verpackt wird das in einem Notify das später von einem "at" getriggert wird. Als erstes kommt der Audio Teil in das notify:
define WakeUp1 notify WakeUp1:on set TAB volume 0; set TAB audioPlay dschungel.mp3

Damit wird das TAB (webview control) auf Lautstärke 0 gesetzt und die Wiedergabe der Datei "dschungel.mp3" startet. Weiter geht es mit dem Farbverlauf der RGBW2. Der HSV Wert für Blau mit 0% Helligkeit ist 240,100,0 und wird im notify als Startwert für die folgende Transition gesetzt:
define WakeUp1 notify WakeUp1:on set TAB volume 0; set TAB audioPlay dschungel.mp3; set RGBW2 HSV 240,100,0

Von Blau (240°) soll jetzt innerhalb von 20 Minuten (20 x 60 = 1200 Sekunden) auf Gelb (60°) über-geblendet werden. Dabei beträgt die Differenz in beiden Richtungen des Farbkreises 180°. Wifilight wählt den kürzesten Weg, oder im Zweifel, so wie hier, den Uhrzeigersinn für den Farbübergang. Der Farbverlauf im Uhrzeigersinn führt von Blau über Lila, Rot zu Gelb. In diesem Fall also genau richtig, das notify wird so weitergeschrieben:
define WakeUp1 notify WakeUp1:on set TAB volume 0; set TAB audioPlay dschungel.mp3; set RGBW2 HSV 240,100,0; set RGBW2 HSV 60,100,100 1200 q WakeUp1

Damit ist der erste Teil für des Guten Morgen Lichts in einem notify verpackt und kann über das Eingabefeld getestet und in einem "at" ausgelöst werden.
define wecken at *06:00 {fhem("trigger WakeUp1 on") if (!$we);}

Während das Licht jetzt mit schönen Farben aufdimmt werden jetzt durch den Paramter "WakeUp1" nach dem "q" solche Events erzeugt:
RGBW2 programm: WakeUp1 xx
wobei "xx" für Werte von 0 bis 100 steht. Oben habe ich geschrieben das nur die "100" garantiert ist, der Rest der Werte wird nach "best efford" geliefert. In diesem Fall ist es aber so das die Laufzeit von 1200 Sekunden sehr lang ist und dadurch vermutlich auch die Frames fast komplett bedient werden können. Je länger eine Transition, umso besser. Auch wenn möglicherweise doch mal ein einzelnes Frame nicht bedient werden kann, dadurch ein Event wegfallen sollte, reicht das allemal um hier die Lautstärke des TABs damit wie gewollt ansteigend zu triggern.  Eine nicht so gute Idee wäre es aber zum Beispiel zusätzlich genau auf die "50" zu triggern um die Bad-Heizung einzuschalten. In den meisten Fällen wird das funktionieren, muss es aber nicht !
define WakeUpAudio notify RGBW2:programm:\sWakeUp1.* {fhem "set TAB volume ".int($EVTPART2 / 10);}

Die WebView erlaubt Lautstärken von 0 - 15. Hier wird der Fortschritt der WakeUp1 Color Transition durch 10 geteilt und die Lautstärke der "dschungel.mp3" damit langsam und über den gesamten "Sonnenaufgang" von 0 auf 10 angehoben, was mir völlig ausreicht da bei 15 ohnehin die Lautsprecher "knarzen".

Weiter geht es mit der Ansage von Zeit, dem Einschalten des Radio Streams auf dem TAB und dem weiteren auf-dimmen von RGBW2 und der Nachttischampe. Das wird wieder in ein notify verpackt das seinerseits über den Endwert des Sonnenaufgangs Part 1 getriggert wird.
define WakeUp2 notify RGBW2:programm:\sWakeUp1\s100 set TAB ttsSay "Guten morgen. Es ist jetzt $h Uhr $m"; sleep 5; set TAB audioPlay http://1live.akacast.akamaistream.net/7/706/119434/v1/gnl.akacast.akamaistream.net/1live; set RGBW2 HSV 60,0,20; set RGBW2 dim 100 600; set Nachttisch on 600

Da es um ein praktisches Beispiel des Wifilight Modules und des Parameters "Programm Name" geht, habe ich jetzt auf die tts Ausgabe von Temperatur, Wetterbericht und so weiter verzichtet. Ich habe die Erzeugung des Textes bei mir in eine 99_utils ausgelagert, aber für diesen Beitrag ist das außerhalb des scopes. Dieses notify wird jetzt vom Endwert des WakeUp1 - notify getriggert. Zuerst erfolgt die Sprachausgabe und das Einschalten des Radiostreams.

Dann folgen die für das Licht relevanten Befehle. Zuerst wird die RGBW2 von Gelb auf Weiß mit 20% Leuchtkraft geschaltet: HSV 60,0,20. Entscheidend sind dafür die "0" bei der Sättigung (= weiß) und die "20" als Helligkeitswert. Die Farbangabe "60"° könnte beliebig sein weil sie bei 0% Sättigung keine Wirkung hat. (zur Erinnerung: 100% Gelb auf 20% Weiß ist ein optisch annehmbarer Übergang). Die beiden folgenden Befehle bewirken jetzt ein auf-dimmen über 10 Minuten zu 100% wobei ich der Nachttischlampe in diesem Beispiel exemplarisch einen FS20 Befehlssatz unterstelle.

Mit nur drei einfach gehaltenen notify und einem at lässt sich so ein komplexer Sonnenaufgang als Wake-Up Light erstellen und verschiedene device lassen sich dazu fast ohne perl know how synchronisieren. 

Dieser Post erfüllt damit den Doppelzweck den "neuen" Parameter anschaulich am lebenden Objekt zu zeigen und auch vielleicht auch Anregung für andere Anwendungen und Idee zum Nachbau zu sein.

vg
Jörg

Kuzl

Geile Idee :D
Eine Frage noch: In welchem Intervall wird denn bei so einer Transition das Reading für die Aktuelle Farbe aktualisiert? sonst könnte man theoretisch, wenn auch nicht so elegant darauf auch so reagieren.

Und ich weiß ich nerv dich schon damit :D wie stehts denn mit Colorpicker und rgb-in ?  ::)

Viele Grüße
Kuzl

herrmannj

Hi Kuzl,

für die readings gilt das ähnlich, da werden auch sinnvolle Intervalle gebildet und dann nochmal dynamisch angepasst. Hast Du was spezielles im Hinterkopf? Bin übrigens mit der dynamischen Anpassung noch nicht ganz zufrieden. An der Resonanz kann ich aber auch sehen das es sich schon um ein so advanced feature handelt das es für die meisten ohnehin nicht so bedeutend ist.

Plan ist die Transitions nach ein klein wenig weiter zu optimieren damit der Fritz Box noch ein kleiner Tick mehr CPU Reservern bleiben. Dann würde ich den Colorpicker einbauen, on-for-timer und wenn dann keine Klagen mehr kommen anfangen die Doku zu scheiben und das Modul aus der Beta zu entlassen.

Zum Thema Beta seh ich das so: wenn ein Freund Dich fragt "kann ich das so für meine Wohnung einsetzen?" und Du dann guten Gewissens antworten kannst: "Klar mach!" - dann ist es so weit.

vg
Jörg
 

Kuzl

okay das passt solang es nicht 5 Minuten dauert :D
Der Gedanke war, dass man dann z.B die HUE oder andere Lampen in Abhängikeit davon schalten kann, unabhängig davon von welcher Stelle aus geschaltet wird :)

Okay ich kanns kaum noch erwarten :) :D
Kann man dann die Transitionen auch in RGB angeben?

Deine Beta hat devinitiv schon einen reiferen Stand als manche anderen Softwares oder Spiele im Betastand... :D

Viele Grüße
Kuzl