Wifilight.pm

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

Vorheriges Thema - Nächstes Thema

herrmannj

Zitat von: beocycris am 18 März 2015, 04:53:45
Wunderschönen guten Morgen.
Wollte das Thema noch mal aufgreifen und fragen,  warum der lw12 so ne Kante mehr an Strom nimmt und Vorallem auch zumindest subjektiv, die stripes heller zu sein scheinen?

LG

Hi,

dazu kann man nur spekulieren, aber er hat halt ein anderes Innenleben, andere driver. btw, von der (subjektiv) größeren Helligkeit habe ich noch nichts gehört.

vg
jörg

Take-Off

Hallo zusammen,

ich setze Wifilight aktuell mit mehreren LW12 relativ zuverlässig ein. Zwei Dinge beschäftigen mich nun aber seit einiger Zeit:

1. Manchmal reagieren die LW12 nicht auf gesendete Befehle. Der hinterlegte Befehl der bei Tastendruck ausgeführt werden soll wird von FHEM versendet. Steht zumindest so in der Log-Datei.
    Drücke ich dann ein zweites (oder auch drittes) Mal schalten sich die Stripes ein, allerdings ohne das einprogrammierte Aufdimmen.
    Hat das Problem noch jemand bzw. gibt es dafür schon eine Abhilfe?


2. Gibt es die Möglichkeit beim HSV Befehl nur einen Wert zu verändern? Ich möchte z.B. über eine Fernbedienung die Farben wechseln, aber die voreingestellte Helligkeit soll sich dabei nicht ändern.
    Also entweder HSV 100,x,x oder er ruft sich die aktuell anliegenden Werte vom LW12 ab und erstellt sich so den richtigen Befehl.
    Gibt es da einen Trick?

Vielen Dank und freundliche Grüße  :)
FHEM auf Raspberry Pi4
CUL868, CUL433, HM-CFG-USB2, HMW-LGW

Thory

Hallo,

erstmal ein ganz großes Lob an Jörg für dieses Modul.  ;D
Und allen die in diesem Forum ihren konstruktiven Senf zu den Fragen der Hilfebedürftigen geben.  ;)

Ich verwende das Modul um meine RGB Stripes, die an der Decke montiert sind, zu steuern.
Das Ganze geschieht mit Hilfe eines Raspi 1B+, auf dem der FHEM-Server läuft, und einem LW12 der die Stripes mit den entsprechenden Einstellungen versorgt.
Ich realisiere damit meine Bürobeleuchtung (oder auch Bastelzimmer). Derzeit noch alles über das Webinterface oder einer IR-Fernbedienung die mit LIRC an den Raspi ihre Signale sendet.
Geplant ist, das Ganze auch mit einem Berührungsschalter, zwei Microcontrollern, zwei Funk Sende/Empfängern und dem Raspi, zu Schalten. Natürlich alles Eigenbau!  8)
Das Equipment ist schon da bzw. ist unterwegs.

@ Take-Off:

zu 1.:   Ist mir auch schon aufgefallen. Zum Beispiel wenn ich im Fhem Web-Interface war, es beendet habe und anschließend über die Fernbedienung das Licht im Büro aus machen möchte.
         Dann kam es schon mal vor das der LW12 nicht reagiert hat. Oder auch wenn längere Zeit das Licht nicht an war. Hab es immer auf den Raspi geschoben da ich mir das Log nicht angeschaut hatte.
         Werde es mal beobachten.
zu 2.:   Das war auch mein Problem, welches mich gestern/heute bis um 0:30 Uhr beschäftigt hat.  ;D
Aber letztendlich habe ich es gelöst.
Das Dimmen funktionierte über die vom Modul bereitgestellten Funktionen "dimdown" bzw. "dimup". Werde ich vielleicht noch ändern da mir die 7 Schritte down bzw up zu groß sind, mal sehen.
Das Problem war nur für Hue und Saturation die Werte zu ermitteln, sie entsprechend zu verändern und an den LW12 zu senden.

JAJAJA jetzt sagen alle: "Wie leicht ist das denn und damit Schwierigkeiten? Hahahaha".
Aber für jemanden der den Umgang mit FHEM noch lernt und mit Perl keine Übung hat, ist das garnicht so einfach.
Die Anleitungen sind zum Teil auch nicht immer leicht verständlich. Das nur mal am Rande. :D

Also zurück zum Problem:
Der erste Versuch mit einem notify, in dem die Werte über "ReadingsVal" gelesen, um einen bestimmten Wert (z.B. 5) verändert, in einer Variable gespeichert und anschließend per ...fhem "set $variable..." an den LW12 gesendet wurde, war schnell mit "Try and Error" gefunden. :D
Aber dann kam es: Was wenn man bei dem Hue Wert über '360' oder unter '0' sowie bei Saturation über '100' oder unter '0' kommt? Dann verweigert FHEM die weitere Arbeit mit der Meldung das der HSV definierte Wertebereich überschritten wurde.
Also dann sind die Lösungen mit den Systeminternen Funktionen "IF" oder "DOIF" vermutlich möglich, aber ich war einfach zu dumm ;)
und hab es nicht hinbekommen. Vielleicht lag es auch an den Beschreibungen zu diesen Funktionen. ;)

Also hab ich mir in der 99_myUtils ein paar Hilfsfunktionen geschrieben die die Berechnung und das ....fhem "set...." übernehmen.
Das Doing war garnicht so einfach bis zur Lösung zu kommen. Hat mich ca. 3 Stunden meines Lebens bzw. Spielzeit gekostet. Ehefrau hatte Spätschicht und Kinder haben nicht genervt, weil Ferien und Groß :D

Hier mal etwas Code dazu:
Die notify´s:
define az_Licht_Color_up notify Infrarot:IR_KEY_Color_up {set_value_up("COLOR")}
attr az_Licht_Color_up room Büro
define az_Licht_Color_down notify Infrarot:IR_KEY_Color_down {set_value_down("COLOR")}
attr az_Licht_Color_down room Büro


Und die 99_Subroutines_Utils.pm (Gemein wie ich bin, lass ich dir ein bißchen arbeit und poste nur das drumherum ;) )
##############################################
# $Id: 99_Subroutines_Utils.pm
#

package main;

use strict;
use warnings;
use POSIX;

sub
Subroutines_Utils_Initialize($$) # Initialize of 99_Subroutines_Utils.pm
{
  my ($hash) = @_;
}

#############################################
# My Subroutines below here
#

sub set_value_down($)
{
  my ($choose) = @_; # which should be decreased? Hue or Saturation
  my $hue = ReadingsVal('az_LEDlicht1','hue','');
  my $sat = ReadingsVal('az_LEDlicht1','saturation','');
  my $val = ReadingsVal('az_LEDlicht1','brightness','');

  if (........ ){
    .............
}

sub set_value_up($)
{
  my ($choose) = @_; # which should be increased? Hue or Saturation
  my $hue = ReadingsVal('az_LEDlicht1','hue','');
  my $sat = ReadingsVal('az_LEDlicht1','saturation','');
  my $val = ReadingsVal('az_LEDlicht1','brightness','');

  if (..... ){
     ............
}

1;


Ich sage schon mal das ich keine Gewähr für die Funktionalität des dargestellten Codes übernehme!!! :D
Ist noch etwas hackelig, zumindest hat es um 0:30 Uhr super funktioniert und heute Abend um 18:00 Uhr war der Wurm drin. :o
Jetzt geht es ohne Probleme! Hab noch etwas dran geschraubt.  ;D

Falls du noch Hilfe benötigst, bin ich gerne bereit noch mehr zu Posten. Aber "ohne Fleiß kein Preis", wie man so schön sagt.
Und "learning by doing"... Was bin ich doch für ein Philosoph :D
LG
Hartmut

Equipment in use:
- Raspberry Pi B+, LW12, FHEM 5.6

TeeVau

Zitat von: herrmannj am 12 März 2015, 10:42:04
starte fhem über cmd line, nimm eine jungfäuliche cfg,
installiere den ld382 und mach dann mal einen Test. Nix anderes drin, nur das. Beim start kannst Du die cfg angeben, musst also nichts an Deiner bestehen verändern.

Danach apptime und perfmon um die Ursache in Deiner cfg zu finden ....  ;)

vg
jörg

Kurze Rückmeldung: Du hattest recht, es liegt an einem Modul was fhem blockiert. Dadurch werden dann Frames von dem Modul verworfen.
Trotzdem Schade, dass der Fade Befehl nicht direkt in dem Magic UFO ausgeführt wird. :-)
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

Take-Off

@Thory

Vielen Dank für die ausführliche Antwort  :)

Leider komm ich mit meinen noch spärlichen PERL Kentnissen nicht wirklich weiter.
Von den Subroutines hab ich eben zum erstenmal gehört.  :D

Wenn du mir die komplette Subroutines zur Verfügung stellen würdest wär ich dir dankbar. Ich denke damit komm ich dann weiter.
Schonmal herzlichen Dank.  :)

Gruß
FHEM auf Raspberry Pi4
CUL868, CUL433, HM-CFG-USB2, HMW-LGW

Thory

@ Take-Off:

:D

Ist nicht schlimm.
Ich bin auch kein Programmierprofi.

Ich werde es hier Posten wenn ich heute Abend wieder Zuhause bin. Die Arbeit eben. :D

Bis dann...
LG
Hartmut

Equipment in use:
- Raspberry Pi B+, LW12, FHEM 5.6

Thory

Endlich Feierabend. ;)

Wie versprochen hier meine 99_Subroutines_Utils.pm:

##############################################
# $Id: 99_Subroutines_Utils.pm
#


package main;

use strict;
use warnings;
use POSIX;

sub
Subroutines_Utils_Initialize($$) # Initialize of 99_Subroutines_Utils.pm
{
  my ($hash) = @_;
}

#############################################
# My Subroutines below here
#


sub set_value_down($)
{
  my ($choose) = @_; # which should be decreased? Hue or Saturation
#  chomp($choose);
  my $hue = ReadingsVal('az_LEDlicht1','hue','');
  my $sat = ReadingsVal('az_LEDlicht1','saturation','');
  my $val = ReadingsVal('az_LEDlicht1','brightness','');

#  {Log 1, "$choose, $hue, $sat, $val"}; # Debug lines

# When "COLOR" then will be the HUE value decreased with 5, when the value is less 5 then
# the value will be decreased with 5 and increased with 360 (e.g.: 2 - 5 + 360 = 357).
# When it is not "COLOR", "Saturation" will be decreased with 2. If it is less then 2, nothing
# will be done.

  if ( $choose =~ m"COLOR" ){
  if ($hue < 5){
    $hue += 355;
#        {Log 1, "COLOR1.1, $hue, $sat, $val"}; # Debug lines
        fhem("set az_LEDlicht1 HSV $hue,$sat,$val");
    }
    else {
    $hue -= 5;
#        {Log 1, "COLOR1.2, $hue, $sat, $val"}; # Debug lines
fhem("set az_LEDlicht1 HSV $hue,$sat,$val");
#        return $hue;
    }
  }
  else{
  if ($sat >= 2){
    $sat -= 2;
#        {Log 1, "SAT1.1, $hue, $sat, $val"}; # Debug lines
        fhem("set az_LEDlicht1 HSV $hue,$sat,$val");
    }
  }
}

# When "COLOR" then will be the HUE value increased with 5, when the value greater is as 355, then
# the value will be increased with 5 and decreased with 360 (e.g.: 358 + 5 - 360 = 3).
# When it is not "COLOR", "Saturation" will be increased with 2. If it is greater then 98, nothing
# will be done.

sub set_value_up($)
{
  my ($choose) = @_; # which should be increased? Hue or Saturation
#  chomp($choose);
  my $hue = ReadingsVal('az_LEDlicht1','hue','');
  my $sat = ReadingsVal('az_LEDlicht1','saturation','');
  my $val = ReadingsVal('az_LEDlicht1','brightness','');
 
#  {Log 1, "$choose, $hue, $sat, $val"}; # Debug lines
 
  if ( $choose =~ m"COLOR" ){
  if ($hue > 355){
    $hue -= 355;
#        {Log 1, "COLOR2.1, $hue, $sat, $val"}; # Debug lines
        fhem("set az_LEDlicht1 HSV $hue,$sat,$val");
    }
    else {
    $hue += 5;
#        {Log 1, "COLOR2.2, $hue, $sat, $val"}; # Debug lines
fhem("set az_LEDlicht1 HSV $hue,$sat,$val");
#        return $hue;
    }
  }
  else{
  if ($sat <= 98){
    $sat += 2;
#        {Log 1, "SAT2.1, $hue, $sat, $val"}; # Debug lines
        fhem("set az_LEDlicht1 HSV $hue,$sat,$val");
    }
  }
}

##########################################################
# Code trash below here!
#

# Enter you functions below _this_ line.
#  my ($hsv) = @_;
#my $hsv = ReadingsVal('az_LEDlicht1','hsv','');
#my ($h,$s,$v) = split(/ /,$hsv);
 
#  $x += $time_step;
#  $x = $time_step if ($x > $time_length);
 
#  my $y = $y1 + $x * ($y2 - $y1) / $time_length;
#  Log(3, "x = $x - y = $y");
#  return $y;


1;


Wie gesagt, ich übernehme keine Gewähr! Entstandene Schäden, durch Verwendung des gezeigten Codes, sind selber zu verantworten. ;)

Die verwendeten notify´s sind im Post vorher zu finden.

Alle Reaktionen der notify´s geschehen durch das einbinden eines IR-Empfängers über LIRC an den Raspi. Und natürlich einer angelernten IR-Fernbedienung Mithilfe von LIRC.
Falls Bedarf besteht kann ich auch noch die Anleitungen oder die Links zu diesem Thema Posten ODER GOOGLE und dieses Forum helfen euch weiter.

Als Tip dieser Forumsbeitrag: :D
HOWTO - Infrarottransceiver für RaspPi im Selbstbau OHNE Löten
http://forum.fhem.de/index.php/topic,23646.15.html

Super Beitrag dazu, aber auch andere aus dem großen WWW.

So einen schönen Abend noch. Und viel Spass beim üben.
LG
Hartmut

Equipment in use:
- Raspberry Pi B+, LW12, FHEM 5.6

Take-Off

#1372
Vielen Dank dafür. 
Ich werds in einer ruhigen Stunde mal ausprobieren.  :)

EDIT:
Klappt hervorragend  :) Dank der Erklärungen ist das Script auch verständlich und ich kann mir das für meine Zwecke anpassen.

FHEM auf Raspberry Pi4
CUL868, CUL433, HM-CFG-USB2, HMW-LGW

Ascos

Hi,

irgendwie habe ich im Moment ein Problem in der Art, das keine Befehle mehr an meine UFOs geschickt werden.
Meine beiden UFOs hängen an jeweils einer Homematic SChaltsteckdose und werden via FHEM geschaltet.
Wenn ich sie einschalte, gehen sie auf den zuletzt gesetzten Wert.
Wenn ich nun aber etwas ändern will, sei es Farbe oder Helligkeit, passiert nichts.
Starte ich FHEM neu, werden die nun neu eingestellten Werte übertragen und nun kann ich auch alles ändern, was ich will.
Schalte ich die STeckdosen aus und wieder an, geht wieder nichts mehr.
Im WLAN sind aber beide UFOs eingewählt und über die APP sehe ich sie auch.

Hat jemand eine Idee?
Kann es mit einem Stromausfall zu tun haben, den ich vor einer guten Woche hatte? Da wurde mein Raspberry leider hart ausgeschaltet.
Der Rest funktioniert aber einwandfrei.

Vele Grüße
Ascos
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

herrmannj

Hi,

vmtl nicht der Stromausfall von letzter Woche. Die wlan module (bzw deren FW) sind bei den ganzen LED Controllern eher suboptimal.
Die Beschreibung (im wlan eingebucht) passt vage zu einem bekannten Problem wenn man zwei accesspoints verwendet - da buchen die sich in eines ein und wenn die Feldstärke sich ändert gehen die auf den zweiten hören aber noch auf den ersten (der nichts sagt. Gleiche ssid). Zweiter Punkt kann die App sein, die Controller zicken oft rum wenn man zwischenzeitlich die app nimmt.

Versuch mal die im Fehlerfall zu pingen. Fehler -> reagieren nicht.

Ich habe einen LD382 im Einsatz, der läuft sehr zuverlässig, ich nehme aber weder die app noch trenne ich den vom Netz.

vg
jörg

Ascos

Zitat von: herrmannj am 02 April 2015, 12:50:18
Hi,

vmtl nicht der Stromausfall von letzter Woche. Die wlan module (bzw deren FW) sind bei den ganzen LED Controllern eher suboptimal.
Die Beschreibung (im wlan eingebucht) passt vage zu einem bekannten Problem wenn man zwei accesspoints verwendet - da buchen die sich in eines ein und wenn die Feldstärke sich ändert gehen die auf den zweiten hören aber noch auf den ersten (der nichts sagt. Gleiche ssid). Zweiter Punkt kann die App sein, die Controller zicken oft rum wenn man zwischenzeitlich die app nimmt.

Versuch mal die im Fehlerfall zu pingen. Fehler -> reagieren nicht.

Ich habe einen LD382 im Einsatz, der läuft sehr zuverlässig, ich nehme aber weder die app noch trenne ich den vom Netz.

vg
jörg

Hey,

ich habe keinen AccessPoint, somit sollten sich die Dinger nicht woanders einwählen.
Via Ping sind sie auch erreichbar (getestet von meinem Laptop).
Feste IPs haben sie auch.
Hab es nun so gemacht, wie du und meine Schaltdosen heraus genommen und schalte sie nur via FHEM. Muss nur mal gucken, was die Vorschaltgeräte auf Dauer an Strom ziehen, wenn die UFOs aus sind.
Aber so funktioniert es auf jeden Fall bisher.

Vielen Dank

Ascos
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Ascos

Hey,

ich hab mal noch eine Frage.
Ich habe 2 RGBW Stripes bei mir mit UFOs via WLAN mit FHEM verbunden.
Nachdem ich nun auch die Funksteckdosen weggelassen habe damit die UFOs am Strom bleiben, funktioniert nun alles soweit gut.

Nun ist mir noch aufgefallen, das wenn ich die Stripes via FHEM ausschalte und dann wieder einschalte, die farbigen LEDs angehen, die weißen jedoch nicht. Klicke ich nun auf einen meiner vordefinierten Farben, gehen sie mit an. Auch wenn ich via Color Picker eine Farbe auswähle, gehen dann meine weißen LEDs mit an.
Als default Color habe ich

defaultColor 40,100,100


Definiert sind sie als  LD382A.

Es ist nicht schlimm, es wundert mich nur etwas.

Viele Grüße
Ascos
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

herrmannj

Zitat von: Ascos am 07 April 2015, 17:36:22
Hey,

ich hab mal noch eine Frage.
Ich habe 2 RGBW Stripes bei mir mit UFOs via WLAN mit FHEM verbunden.
Nachdem ich nun auch die Funksteckdosen weggelassen habe damit die UFOs am Strom bleiben, funktioniert nun alles soweit gut.

Nun ist mir noch aufgefallen, das wenn ich die Stripes via FHEM ausschalte und dann wieder einschalte, die farbigen LEDs angehen, die weißen jedoch nicht. Klicke ich nun auf einen meiner vordefinierten Farben, gehen sie mit an. Auch wenn ich via Color Picker eine Farbe auswähle, gehen dann meine weißen LEDs mit an.
Als default Color habe ich

defaultColor 40,100,100


Definiert sind sie als  LD382A.

Es ist nicht schlimm, es wundert mich nur etwas.

Viele Grüße
Ascos

Hi,

ob die mit leuchten wird über die Sättigung bestimmt. Bei HSV 40,100,100 ist das 100% Gelb/Orange - das ist ok. Erst bei Sättigungen unter 100% kommen die weißen dazu.

vg
jörg

Ascos

Zitat von: herrmannj am 07 April 2015, 18:05:01
Hi,

ob die mit leuchten wird über die Sättigung bestimmt. Bei HSV 40,100,100 ist das 100% Gelb/Orange - das ist ok. Erst bei Sättigungen unter 100% kommen die weißen dazu.

vg
jörg

Ah, da war mein Dreher. Vielen Dank  :)
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

chaot4ever

Hallo Jörg
Ich habe eine Frage zum Slider der Brightness im Wifilight-Modul:

Zur Zeit versuche ich es mit folgenden Attributen:

colorCast               0, -20, -20, -25, 0, -10
devStateIcon            {(MilightDevice_devStateIcon($name),"toggle")}
eventMap                /on:dim 100/off:dim 0/
icon                    light_led_stripe_rgb
realtimePicker          1
webCmd                  RGB:RGB ffffff:RGB ff3c00:RGB 00ff00:RGB 0000ff:RGB ffff00:on:off:dim
whitePoint              1, 1, 1
widgetOverride          RGB:colorpicker,RGB dim:slider,0,6.25,100


Alles wäre perfekt, der Colorpicker funktioniert einwandfrei, doch obwohl der Slider vorhanden ist, fällt dieser nach einer korrekt ausgewählten Dimmeinstellung grösser 0 immer auf 100% oder bei Nulleinstellung auf 0%.

Gibt es da Abhilfe?

Gruss Richi