Wifilight.pm

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

Vorheriges Thema - Nächstes Thema

herrmannj

mach,  wird aber morgen.

vg
jörg

Astrofreak85

das wäre doch mal ne Anwednung für die RGB Streifen: http://whatcolourisit.scn9a.org/

;)

juppzupp


herrmannj

Zitat von: Astrofreak85 am 17 Dezember 2014, 17:15:18
das wäre doch mal ne Anwednung für die RGB Streifen: http://whatcolourisit.scn9a.org/

;)
witzig - ich befürchte jedoch meiner GöGa würde der notwendige Humor für diese Art von Uhr fehlen  ;)

herrmannj

#1009
Zitat von: herrmannj am 16 Dezember 2014, 22:17:02
mach,  wird aber morgen.

ich würde das in die 99myUtils.pm so schreiben:


sub blink(@)
{
  my ($ledName, $color, $t) = @_;
  # preserve actual 
  my $oldColor = ReadingsVal($ledName, 'RGB', '000000');
  # set initial blink - color
  fhem "set $ledName RGB $color";
# blink $t times ...
for (my $i=0; $i<$t; $i++) {
   fhem "set $ledName RGB $color 1 q; set $ledName RGB 000000 0 q; set $ledName RGB 000000 1 q; set $ledName RGB $color 0 q";
}
# restore old color
fhem "set $ledName RGB $oldColor 0 q";
return undef;
}


Aus dem notify rufst Du das dann mit {blink (<led>, '00FF00', 5);} auf -> 5 mal grünes blinken.

Ist ungetestet aber prinzipiell ok -

btw, wenn es funktioniert und Du Dich berufen fühlst das im Wiki zu verewigen wäre das toll  :)

vg
jörg

basi79

Hallo Jörg,

vielen Dank für dein Beispiel..

jedoch erhalte ich nicht das gewünschte ergebniss.. irgendwie habe ich das mit dem <queue> noch nicht so ganz verstanden..

wenn ich das ausführe (habe ein separaten Dummy gebastelt) und ich den RGB Stripe auf rot habe..
spring es auf grün.. für einpaar sekunden (so 2-3 Sec.) und geht rastermäßig über gelb auf rot zurück...
also kein blinken..

anbei der LOG auszug..


Gruß

Basi79 (Ünal)
RaspberryPI, Homematic, FS20, Fritzbox7490

herrmannj

und das bestimmt weil ich oben anstelle von ';' jeweils ',' eingebaut habe ... sry. geändert.

herrmannj

Zitatirgendwie habe ich das mit dem <queue> noch nicht so ganz verstanden..

Das mit der queue ist eigentlich ganz einfach (wie immer, wenn man es verstanden hat)

mit
set led HSV h,s,v 20
startest Du eine Animation. Die läuft 20 Sekunden, startet bei der aktuellen Farbe und endet bei HSV (oder, jje nach Angabe RGB).

Während die jetzt von der Lampe abgearbeitet wird startest Du eine neue Animation (sag einfach das gleiche nochmal). Jetzt können zwei Sachen passieren:
a: die aktuelle Animation wird abgebrochen (sie läuft ja noch) und die neue startet sofort
- oder -
b: die neue Animation wird ausgeführt wenn die aktuelle beendet ist (in die queue des Moduls geschrieben)

Dafür steht das "q". Ohne "q" werden alle laufenden Animationen sofort beendet, die neue wird sofort ausgeführt.
Mit "q" wird die neue Animation in die Warteschlange gestellt.

Startwert einer Animation ist immer die Farbe die zu Beginn der Animation "gültig" ist. Innerhalb der Queue also jeweils die Endfarbe der vorherigen.

besser verständlich ?

vg
Jörg 

ps, wenn das bei Dir deutlich hakt stimmt was mit Deinem fhem nicht. Die Softwareanimationen bestehen bei der LW/LD Familie aus 10Frames / Sekunde. Die CPU Belastung ist dabei sehr gering (wie Du richtig gesehen hast). FHEM selber kann aber kein Multitasking sondern alle Module bekommen nacheinander einen Slot. Wenn sich andere Module (auch ohne CPU Last) also viel Zeit nehmen, beispielsweise weil sie auf Antwort von Peripherie warten, sieht man das. Ansonsten kann man die LEDs selbst auf einer FB vernünftig laufen lassen (10 Frames)

basi79

Hallo Jörg,

ich glaube du wirst gerne meine Adresse wissen wollen um deine Frust bei mir direkt abzulassen.. :) die gibt es aber nicht.. hhihihihi..

also entweder habe ich immer noch ein verständniss Problem.. oder... tja keine ahnung.. :)

ein einfacher Befehl:

set WiFi.LED.WZ.tt RGB 00FF00 0 q; set WiFi.LED.WZ.tt RGB FF0000 0 q; set WiFi.LED.WZ.tt RGB 0000FF 0 q; set WiFi.LED.WZ.tt RGB FF0000 0 q

sollte meines erwartens folgende Licht folge ausgeben:

RGB steht auf rot (FF0000) => Befehl => setze LED auf grün (00FF00) in 0 sec nach der aktuellen Animation (beim start existiert keins) => setze LED auf rot (FF0000) in 0 sec nach Animatin => setze LED auf blau (0000FF) in 0 sec nach Animation => setze rot (FF0000) in 0 sec nach Animation

Dies sollte dann ein wechsel direkt von rot (startfarbe) => in grün => in rot => in blau und wieder in rot ergeben.
Man würde das aus rot heraus 1x blinken in grün und dann 1x blinken in blau wahrnehmen.. richtig..???

Ich nehme allerding folgendes wahr.. von rot heraus => wechsel in grün und wieder zurück in rot.. keine blaue farbe zu sehen..??? hääää..????

mache ich jetzt ein denkfehler oder hab ich ein problem in meiner Umgebung hier..??


P.S.: ich probiere das ganze aktuell mit dem LW12 aus was direkt hinter mir ist.. der LD382 ist in einem anderem Raum.. :)

Gruß

Basi79 (Ünal)
RaspberryPI, Homematic, FS20, Fritzbox7490

arne.dien

Hallo Ünal,

wieso sollte der LW12 bei irgendeiner Farbe verweilen, wenn du alle Zeiten auf null setzt?
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

Hallo Ünal,

Zitat von: basi79 am 18 Dezember 2014, 12:04:51
ich glaube du wirst gerne meine Adresse wissen wollen um deine Frust bei mir direkt abzulassen.. :) die gibt es aber nicht.. hhihihihi..
nö, alles gut - mach ich gern, mit der folgenden Bitte: perfekt wäre wenn Du das, was Du jetzt lernst, anderen im Wiki zur Verfügung stellst. Schreibberechtigung bekommst du im Wiki unklompliziert und Du kannst Deinerseits damit anderen helfen.

Zitat
also entweder habe ich immer noch ein verständniss Problem..
set WiFi.LED.WZ.tt RGB 00FF00 0 q; set WiFi.LED.WZ.tt RGB FF0000 0 q; set WiFi.LED.WZ.tt RGB 0000FF 0 q; set WiFi.LED.WZ.tt RGB FF0000 0 q

sollte meines erwartens folgende Licht folge ausgeben:

RGB steht auf rot (FF0000) => Befehl => setze LED auf grün (00FF00) in 0 sec nach der aktuellen Animation (beim start existiert keins) => setze LED auf rot (FF0000) in 0 sec nach Animatin => setze LED auf blau (0000FF) in 0 sec nach Animation => setze rot (FF0000) in 0 sec nach Animation

Dies sollte dann ein wechsel direkt von rot (startfarbe) => in grün => in rot => in blau und wieder in rot ergeben.
Man würde das aus rot heraus 1x blinken in grün und dann 1x blinken in blau wahrnehmen.. richtig..???

Ich nehme allerding folgendes wahr.. von rot heraus => wechsel in grün und wieder zurück in rot.. keine blaue farbe zu sehen..??? hääää..????

mache ich jetzt ein denkfehler oder hab ich ein problem in meiner Umgebung hier..??

Ein (kleiner) Denkfehler:
Die Animation wird von links nach rechts abgearbeitet, der Punkt liegt in der Angabe der Zeit. Die Zeiten (ramp) geben an wie lange die Animation braucht um den Zustand (RGB) zu erreichen, jeweils beginnend beim Ende der vorherigen.

Übersetzt sagt Deine Animation:
von der aktuellen Farbe aus geh nach grün, in Null Sekunden sollst Du da sein.
Von dort aus gehe nach blau, in Null Sekunden sollst Du da sein ... usw

In der Summe schreibst Du eine Animation mit der Dauer von Null Sekunden (0 + 0 + 0 ...) , von der Du (per definition im modul) genau den Startwert und den Endwert siehst.

Wenn Du Dir mein Beispiel von gestern anschaust, da nehme ich eine ramp-Zeit von 0 um "hart" von Farbe A auf Farbe B umzuschalten. Im Anschluss kommt eine ramp von 1 Sekunde ohne Farbänderung (fade von blau nach blau innerhalb einer Sekunde = es bleibt blau).

Wenn Du Dir den code anschaust ist er sogar kürzer als Dein Beispiel vom lw12 - und Du bist flexibel. Natürlich muss man einmal verstehen wie man die Animationen definiert - danach geht alles.

vg
Jörg

edith: mit dem post von arne überschnitten ... sorry

basi79

Hi,

ich versuche euch zu verstehen.. und verstehe auch die Theorie.. aaaaber... es ergibt einfach keine sinn zwischen Befehl und was man sieht.. irgendwie stimmt da was nicht..
Es kann auch durch aus an meiner Umgebung sein.. will ich garnicht ausschließen..

hier ein weiteres beispiel:

dem nach sollte mein Befehl von vorhin wie folgt aussehen:
set WiFi.LED.WZ.tt RGB 00FF00 0 q; set WiFi.LED.WZ.tt RGB 00FF00 1 q; set WiFi.LED.WZ.tt RGB FF0000 0 q; set WiFi.LED.WZ.tt RGB FF0000 1 q; set WiFi.LED.WZ.tt RGB 0000FF 0 q; set WiFi.LED.WZ.tt RGB 0000FF 3 q; set WiFi.LED.WZ.tt RGB FF0000 0 q;

gehe von rot => auf grün und warte 1 sec => gehe zu rot und warte 1 sec => gehe zu blau und warte 3 sec => gehe zu rot

sehen tuhe ich aber von rot in grün und wieder zurück in rot... :)

Ich meine ich komme auch aus der IT und bin nicht grad auf den kopf gefallen.. aber logisch ist dat nicht oder..????

habe das dieses mal sogar per Telnet Session zu FHEM versucht.. siehe Anhang..
Wenn ihr mir nicht glaubt werde ich glaube ich sogar ein Video für euch drehen.. :)

Gruß

Basi79 (Ünal)
RaspberryPI, Homematic, FS20, Fritzbox7490

herrmannj

#1017
Hi,

sieht gut aus und macht (hier) auch genau das was es soll.

Schalte doch bitte auf verbose 5 (an der LED ist das ein attribut), setz das dann so ab und schicke mir, bitte nur diesen Teil  ;), des logs.

gerne als txt Anhang am post mit Angabe der Zeit damit ich nicht ellenlang suchen muss  :)

vg
jörg


2014-12-18 14:13:57 WifiLight kizi.bett.led hue: 120
2014-12-18 14:13:57 WifiLight kizi.bett.led saturation: 100
2014-12-18 14:13:57 WifiLight kizi.bett.led brightness: 100
2014-12-18 14:13:57 WifiLight kizi.bett.led RGB: 00FF00
2014-12-18 14:13:57 WifiLight kizi.bett.led on
2014-12-18 14:13:57 WifiLight kizi.bett.led RGB 00FF00 1 q
2014-12-18 14:13:57 WifiLight kizi.bett.led RGB FF0000 0 q
2014-12-18 14:13:57 WifiLight kizi.bett.led RGB FF0000 1 q
2014-12-18 14:13:57 WifiLight kizi.bett.led RGB 0000FF 0 q
2014-12-18 14:13:57 WifiLight kizi.bett.led RGB 0000FF 3 q
2014-12-18 14:13:57 WifiLight kizi.bett.led RGB FF0000 0 q
2014-12-18 14:13:57 WifiLight kizi.bett.led hue: 120
2014-12-18 14:13:57 WifiLight kizi.bett.led saturation: 100
2014-12-18 14:13:57 WifiLight kizi.bett.led brightness: 100
2014-12-18 14:13:57 WifiLight kizi.bett.led RGB: 00FF00
2014-12-18 14:13:57 WifiLight kizi.bett.led on
2014-12-18 14:13:59 WifiLight kizi.bett.led hue: 240
2014-12-18 14:13:59 WifiLight kizi.bett.led saturation: 100
2014-12-18 14:13:59 WifiLight kizi.bett.led brightness: 100
2014-12-18 14:13:59 WifiLight kizi.bett.led RGB: 0000FF
2014-12-18 14:13:59 WifiLight kizi.bett.led on
2014-12-18 14:14:02 WifiLight kizi.bett.led hue: 0
2014-12-18 14:14:02 WifiLight kizi.bett.led saturation: 100
2014-12-18 14:14:02 WifiLight kizi.bett.led brightness: 100
2014-12-18 14:14:02 WifiLight kizi.bett.led RGB: FF0000
2014-12-18 14:14:02 WifiLight kizi.bett.led on


edith: btw: was passiert wenn Du die Zeiten deutlich (!) erhöhst - also aus einer Sekunde 10 Sekunden machst ?

juppzupp

seit gestern LD382 dazu gekommen. ist wirklich eine generation weiter als der "alte" lw12. wirkt im gesamt eindruck besser, wertiger.

was ich noch nicht verstanden habe, ist wie ich die brightness getrennt für ww und rgb einstellen kann, um die stripes einander anzugleichen ?
mit der app geht das ja.


danke!

herrmannj

hör auf - das iss nu das einzige was ich nich drin habe  :) Im Kern müsste ich ja einen von beiden begrenzen (vmtl weiß). Ich mach das hier indem ich eine höhere Sättigung nehme - vielleicht könnt man das das als Parameter nehmen (Modul justiert.) Hast Du ne Idee dazu ?

vg
jörg

der ld382 ist cool, fast 'ne andere Hausnummer  :D