Stripe für optische Anzeige

Begonnen von MarkusRobertAllen, 30 Dezember 2015, 17:22:50

Vorheriges Thema - Nächstes Thema

MarkusRobertAllen

Hallo,
ich verwende einen LED Stripe als optische Anzeige für Klingelsignale und ähnliches.

Der LED Streifen ist ein RGBW (Chinaware), die ich mit einem Empfänger aus dem Wi-Light System und dem WILIGHT Modul von FHEM ansteuere.

Dazu habe ich mir ein kleines Utility entwickelt, um mir die Arbeit etwas zu erleichtern.

Es setzt voraus, dass das Gerät als Konstante in meiner eigenen UTIL Datei hinterlegt ist:

Zitatuse constant {
  DEVICE_STRIPE_TV => "StripeTV"
};

Übergabeparameter:
Es lässt das Stripe in den
- definierten Farben (white, red, yellow, green, blue) blinken mit einer
- Anzahl von Blinksignalen und einer
- Dauer (in Sekunden).


Zitat######################################################
# Stripe unter TV blinken lassen
#  Parameter:
#   - color (optional) - white, red, yellow, green, blue
#   - times (optonal) - number of blinks
#   - interval (otional) - duration of blink
######################################################
sub stripe_blink($;$;$) {
   my($color,$times,$interval)=@_;

   if(!defined($color)) {$color="red"}
   if(!defined($times)) {$times=1}
   if(!defined($interval)) {$interval=1}

   my $colorcode = "";


   Log 1, "Sub stripe_blink started";
   # set color   
   if ($color eq "white") {$colorcode = "ffffff"}
   if ($color eq "red") {$colorcode = "ff2a00"}
   if ($color eq "green") {$colorcode = "00ff00"}
   if ($color eq "blue") {$colorcode = "0000ff"}
   if ($color eq "yellow") {$colorcode = "ffff00"}

   Log 2, "Color ".$color." set to RGB ".$colorcode;


   fhem("set ".+DEVICE_STRIPE_TV." rgb ".$colorcode);
   
   # blink     
   fhem("set ".+DEVICE_STRIPE_TV." blink ".$times." ".$interval);
   Log 1, "Sub stripe_blink ended";
}

broadway

kannst du die verwendete hardware noch näher beschreiben?
Linksys NSLU2 debian + CUL | FHT80B, FS20, Elro

harway2007

erhalte bei Aufruf der Routine
{stripe_blink(red,10,1)}
Bareword "red" not allowed while "strict subs" in use at (eval 2433) line 1.
was mach ich falsch oder habe ich übersehen?

MarkusRobertAllen

Hallo,
Hardware:
Die verwendete LED Leiste ist aus dem Baumarkt. Wichtig ist, dass es mit 12-24V funktioniert und für RGBW 4 Ausgänge hat.
http://www.amazon.de/gp/product/B00KF9W7ES?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s00

Die Leiste wird dann daran angeschlossen, ab diesem Zeitpunkt ist diese über eine Fernbedienung schaltbar. Für FHEM oder auch über eine Steuerung über App ist noch ein WLAN Hub notwendig.
Den gibt es z.B. hier:
http://www.amazon.de/MiLight-Wireless-Kontroller-Controller-Streifen/dp/B00M0DYWDQ/ref=pd_sim_60_5?ie=UTF8&dpID=41klq2cC8CL&dpSrc=sims&preST=_AC_UL160_SR160%2C160_&refRID=0KFC6H5MVKC68XXJS86E


Diese Angebote sind weder die günstigsten noch die besten. Es ging mir nur darum, die Produkte zu nennen! Prinzipiell gibt es zum Thema Milight eine Menge, was man im Markt bekommt, generell eine günstige Alternative zu Hue von Philips.

Gruss


MarkusRobertAllen

Zitat{stripe_blink(red,10,1)}
Bareword "red" not allowed while "strict subs" in use at (eval 2433) line 1.

Hier würde ich mit klassischen Methoden auf die Fehlersuche gehen. Generell:
a) Der Code ist vermutlich nur in einer ausgelagerten MyUtil so lauffähig.
b) Er stört sich am "nackten" Wort "red", es könnte einfach auf ein Komma, Semikolon, etc. Problem hinauslaufen
c) Durch Verwendung von ' anstatt " wird Perl genötigt, den Ausdruck nicht zu interpretieren. Vielleicht hilft das schon.

Ich kann erstmal nur sagen, dass es einwandfrei bei mir läuft und nun vielleicht folgendes ratsam wäre:

attr   global verbose 5
attr   global stacktrace 1


Darüber hinaus bin ich auch kein PERL-Guru...

Panik

Hallo mschneeweis@web.de

kommt dieser MiLight Wireless Controller dann an die Fritzbox?
Oder an den Cubietruck, auf dem mein FHEM läuft? Muss man dann noch was installieren (besondere Linux-Pakete)?

Gruß
Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

MarkusRobertAllen

Hallo Panik,
nein, es läuft alles ohne Verkabelung. FHEM spricht über die Module 30 und 31. Ich bin hier zwar auch nur Anwender, aber ich denke, das Bridge Modul (30_) wird verwendet um die Verbindung über das lokale LAN aufzubauen und darüber die Steuerung zu übernehmen. Die Bridge selber stellt die Verbindung zu den einzelnen Mi-Light Komponenten her.

Das Konzept ist ähnlich wie bei Philips Hue, wobei Hue deutlich teurer und natürlich auch wertiger ist. Am Ende war es für mich entscheidend, dass es für einen vernünftigen Preis funktioniert und in FHEM einbindbar ist. Es gibt hier im Forum noch weitere Vergleiche zwischen Milight und Hue. Da macht es sicherlich für Dich, danach zu suchen.

harway2007

 :o irgendetwas fehlt in deiner Routine - das Problem mit red bei
{stripe_blink("green",2,20)} war durch Anführungszeichen bei red zu beheben...

aber blinken tun die Stripes nicht ...
der Stripe geht an mit der gewünschten Farbe ....
aber was macht der Absatz # blink .. da passiert nichts ..

fhem("set ".+DEVICE_STRIPE_TV." RGB ".$colorcode);
   
   # blink     
   fhem("set ".+DEVICE_STRIPE_TV." blink ".$times." ".$interval);
   Log 1, "Sub stripe_blink ended";
}

was fehlt oder habe ich übersehen ?

MFG Harway


Mumpitz

Zitat von: harway2007 am 11 Februar 2016, 23:26:19
:o irgendetwas fehlt in deiner Routine - das Problem mit red bei
{stripe_blink("green",2,20)} war durch Anführungszeichen bei red zu beheben...

aber blinken tun die Stripes nicht ...
der Stripe geht an mit der gewünschten Farbe ....
aber was macht der Absatz # blink .. da passiert nichts ..

fhem("set ".+DEVICE_STRIPE_TV." RGB ".$colorcode);
   
   # blink     
   fhem("set ".+DEVICE_STRIPE_TV." blink ".$times." ".$interval);
   Log 1, "Sub stripe_blink ended";
}

was fehlt oder habe ich übersehen ?

MFG Harway

Ich habe das selbe Problem. Ich kann wohl die Farbe mit folgendem Eintrag in myutils setzen:
sub stripe_blink($;$;$) {
   my($color,$times,$interval)=@_;

   if(!defined($color)) {$color="red"}
   if(!defined($times)) {$times=1}
   if(!defined($interval)) {$interval=1}

   my $colorcode = "";


   Log 1, "Sub stripe_blink started";
   # set color   
   if ($color eq "white") {$colorcode = "ffffff"}
   if ($color eq "red") {$colorcode = "ff2a00"}
   if ($color eq "green") {$colorcode = "00ff00"}
   if ($color eq "blue") {$colorcode = "0000ff"}
   if ($color eq "yellow") {$colorcode = "ffff00"}

   Log 2, "Color ".$color." set to RGB ".$colorcode;


   fhem("set LED_Band_Wohnzimmer RGB $colorcode");
   
   # blink     
   fhem("set LED_Band_Wohnzimmer blink $times $interval");
   Log 1, "Sub stripe_blink ended";
}


Allerdings geht der Stripe nur Rot an. Blinken tut nichts. Im LogFile erscheint das:

2016.12.30 18:57:25 1: Sub stripe_blink ended
2016.12.30 18:57:25 3: set LED_Band_Wohnzimmer blink 10 1 : unknown command (blink): choose one of on off dim dimup dimdown HSV RGB
2016.12.30 18:57:25 2: Color red set to RGB ff2a00


Wie bringe ich den Stripe zum blinken? möchte ihn nämlich mit der Innensirene koppeln, dass nicht nur die Sirene ertönt sondern auch der Stripe noch zu blinken beginnt!

Mumpitz

Zitat von: Mumpitz am 30 Dezember 2016, 19:00:21
Ich habe das selbe Problem. Ich kann wohl die Farbe mit folgendem Eintrag in myutils setzen:
sub stripe_blink($;$;$) {
   my($color,$times,$interval)=@_;

   if(!defined($color)) {$color="red"}
   if(!defined($times)) {$times=1}
   if(!defined($interval)) {$interval=1}

   my $colorcode = "";


   Log 1, "Sub stripe_blink started";
   # set color   
   if ($color eq "white") {$colorcode = "ffffff"}
   if ($color eq "red") {$colorcode = "ff2a00"}
   if ($color eq "green") {$colorcode = "00ff00"}
   if ($color eq "blue") {$colorcode = "0000ff"}
   if ($color eq "yellow") {$colorcode = "ffff00"}

   Log 2, "Color ".$color." set to RGB ".$colorcode;


   fhem("set LED_Band_Wohnzimmer RGB $colorcode");
   
   # blink     
   fhem("set LED_Band_Wohnzimmer blink $times $interval");
   Log 1, "Sub stripe_blink ended";
}


Allerdings geht der Stripe nur Rot an. Blinken tut nichts. Im LogFile erscheint das:

2016.12.30 18:57:25 1: Sub stripe_blink ended
2016.12.30 18:57:25 3: set LED_Band_Wohnzimmer blink 10 1 : unknown command (blink): choose one of on off dim dimup dimdown HSV RGB
2016.12.30 18:57:25 2: Color red set to RGB ff2a00


Wie bringe ich den Stripe zum blinken? möchte ihn nämlich mit der Innensirene koppeln, dass nicht nur die Sirene ertönt sondern auch der Stripe noch zu blinken beginnt!
Darf ich nochmals um Rat bitten?


Gesendet von iPad mit Tapatalk