Wakeuplight mit individueller LED Farbe

Begonnen von Pythonf, 23 September 2014, 21:01:26

Vorheriges Thema - Nächstes Thema

Pythonf

Meine Wakeuplightdefinition funktioniert leider nicht, wie sie sollte, und ich weiß leider nicht, wo der/die Fehler liegen
define wakeup at *{ReadingsVal("wakeUpChange","state","00:00")} { \
my $Color = ReadingsVal("wakeUpColor","RGB","FFFFFF");;;;\
  if ( ( Value("wakeUpStatus") eq "weekdays" && !$we ) || ( Value("wakeUpStatus") eq "weekend" && $we ) || \
  ( Value("wakeUpStatus") eq "daily" ) || ( Value("wakeUpStatus") eq "oneTime" ) ) { \
    { fhem ("set LED_Fabian RGB $Color") };;;;\
    { fhem ("set LED_Fabian dim 0 4") };;;;\
    { fhem ("set LED_Fabian dim 100 1280") };;;;\
    { fhem ("define wakeupOff at +00:40:00 set LED_Fabian dim 0 100") } \
    if ( Value("wakeUpStatus") eq "oneTime" ) { fhem ("set wakeUpStatus off") } \
  } \
}


Gibt es eigentlich eine einfacher Version für ein LED_dummy mit Colorpicker! als diese:
define wakeUpColor WifiLight RGB LW12:1.1.1.1

Gruß
Fabian

herrmannj

Hi,

was funktioniert denn nicht ? Irgendwas im log ?

Die ganzen dummys machen das etwas unübersichtlich  ;) Wie verwendest Du denn die dummys ? Webif ?

Das
ZitatGibt es eigentlich eine einfacher Version für ein LED_dummy als diese:
Code: [Auswählen]

define wakeUpColor WifiLight RGB LW12:1.1.1.1
verstehe ich nicht.

vg
jörg

Pythonf

Ich hab mich an diese Anleitung gehalten : http://www.fhemwiki.de/wiki/Wakeuplight und versucht sie an meine Bedürfnisse anzupassen.

define wakeUpColor WifiLight RGB LW12:1.1.1.1 --> Da ich nicht weiß, wie ich ein dummy device mit RGB-Picker konfigurieren kann habe ich hier ein Pseudodevice konfiguriert, welches eine solche Eingabemöglichkeit hat.

{ fhem ("set LED_Fabian RGB $Color") };;;;\ --> Das Wakeuplight wird kurz eingeschaltet, damit es die richtige, vorkonfigurierte Farbe bekommt (dies funktioniert auch).
{ fhem ("set LED_Fabian dim 0 4") };;;;\ --> Das Licht wird wieder ausgeschaltet, damit es im nächsten Schritt langsam eingeschaltet wird. (Funktioniert nicht)
{ fhem ("set LED_Fabian dim 100 1280") };;;;\ (Funktioniert nicht)

Die Befehle einzeln funktionieren alle. Die ersten beiden sind m.M. nach die einfachere Lösung die vordefinierte Farbe an das LW12 zu übergeben als ein komplizierterer, selbsgescripteter Dim-Befehl mit Farbwertübergabe.

Es funktioniert alles, bis auf die zwei FHEM-Befehle

Gruß
Fabian

herrmannj

naja, diese vierfach escapten ";" schreien geradezu nach Problemen. Im log wirst Du vermutlich was finden.

Ich würde mir das einfacher machen. Lagere das in eine 99_myUtils.pm aus, dann hast Du schon mal einen klaren perl syntax. Den LW12 als dummy zu nehmen ist eine ganz witzige Idee. Einfacher wäre es aber wenn Du dir anstelle von RGB nur Hue uns Sat holst und dann in der 99_myUtils sowas machst:

fhem ("set LED_Fabian HSV $h,$s,0; set LED_Fabian HSV $h,$s,100 1280 q; set LED_Fabian HSV $h,$s,100 2400 q; set LED_Fabian HSV $h,$s,0 90 q");

In Deinem "at" rufst Du dann nur noch die Routine auf und sparst Dir sogar noch das zweite "at" zum ausschalten.

vg
Jörg

Pythonf

Danke, das ist eine gute Idee. Hab zwar noch nie was mit 99_myUitilis gemacht, aber ich bin mir sicher, ich werde dazu genügend Anleitungen im Forum finden.
Mit dem LW12 als wakeUpColor funktioniert mitterlerweile auch besser, nachdem ich die IP von 1.1.1.1 auf 127.0.0.1 geändert habe (bringt bei mir einen Geschwindigkeitsvorteil).

Gruß
Fabian

Pythonf

So schaut mein erster Versuch aus:
sub wakeup($) {
my ($we) = @_;
my $h = ReadingsVal("wakeUpColor","HUE","0");
my $s = ReadingsVal("wakeUpColor","SATURATION","0");
  if ( ( Value("wakeUpStatus") eq "weekdays" && !$we ) || ( Value("wakeUpStatus") eq "weekend" && $we ) || ( Value("wakeUpStatus") eq "daily" ) || ( Value("wakeUpStatus") eq "oneTime" ) ) {
fhem ("set LED_Fabian HSV $h,$s,0; set LED_Fabian HSV $h,$s,100 1280 q; set LED_Fabian HSV $h,$s,100 2400 q; set LED_Fabian HSV $h,$s,0 90 q");
    if ( Value("wakeUpStatus") eq "oneTime" ) { fhem ("set wakeUpStatus off") }
  }
}
#END


Ich versteh nur noch nicht so ganz, was dieses "q" bedeutet.
Gibt es eine art "trigger wakeup($we)" ?

Gruß
Fabian

herrmannj

Hi,

das "q" ist ein Wifilight Parameter und steht für "queue". Der Parameter bewirkt das die Lichtbefehle vom Modul "vorgemerkt" und dann nacheinander ausgeführt werden.

Das $we (line#2) brauchst Du nicht, fhem liefert das. Schau mal in der commandref unter perl specials.

Das mit dem trigger läuft so: im "at" rufst Du Deine Routine mit dem perl Syntax auf "{wakeup()}"

vg
jörg

Pythonf

#7
Mit trigger meinte ich zum Testen, aber dafür hab ich ne Lösung gefunden, hab einfach en Notify auf einen Dummyschalter gelegt. Wenn ich aber nur $we im Perl Code eingebe meldet FHEM einen Fehler.
Global symbol "$we" requires explicit package name at ./FHEM/99_myUtils.pm line 16.

Aber soweit funktioniert es jetzt gut:D
Danke dafür.

Gruß
Fabian

Freddy

ich arbeite auch gerade daran ein wack up mit dem beispiel von oben aufzubauen. werde mich mal melden wen es geht