WS2812b an Sonoff: Mehre einzelne LEDs gleichzeitig ändern && Farbiges Aufleuchten je nach Anrufernummer über Fritzbox

  • Hallo,

    ich habe aktuell ein WS2812b-RGP-LED-Band an einen Sonoff-basic angeschlossen und mir ein Skript gebastelt, dass bei Anrufen über meine Fritzbox je nach Anrufer das Band in unterschiedlichen Farben aufleuchten lässt. Jetzt würde ich gerne das ganze animieren und dachte, ich steuere die einzelnen LEDs dazu an – geht auch wunderbar, allerdings bekomme ich nicht mehrere gleichzeitig geändert. Ich habe zwar gefunden, dass man mit backlog mehre Befehle gleichzeitig übergeben kann, aber die werden sichtbar einzeln hintereinander abgearbeitet, so dass ich damit wohl nicht das Band zeilenweise aktualisieren kann. Hat da jemand einen Tipp für mich? - dankö

  • Aber gerne doch.

    Hier mal eine Blocky-Version:

    schimmer-media.de/index.php?attachment/1424/

    "ring activ" und "actual last ringing umber" kommen dabei vom "fritzbox adapter".

    In der Falls-Schleife muss dann eine Telefonnummer+Farbe hinterlegt werden und die schleife dann mehrmals für mehrere Nummern/Farben.

    Anfangs hole ich mir noch die IP von meinem Sonoffadapter und bastel damit eine URL nach dem Schema http://ip/ax?c1= worüber man Befehle an den Sonoff schicken kann (welche es da so gibt, findet man hier). In meinem Fall wäre das 'color #farbwert' (bzw. 'dimmer 0' zum ausschalten), wobei %20 dem Leerzeichen und %23 dem # entspricht (URL-Codiert).

    Wenn ein Farbwert von mir gesetzt wurde, dann das ganze per request an den Sonoff senden.


    Mehrere Befehle gleichzeitig (die leider nacheinander abgearbeitet werden, welches genau mein Problem ist) könnte man mit folgendem Aufruf bewerkstelligen: http://ip/ax?c1=backlog befehl 1; befehl 2; befehl 3; befehl 4; (bis max 16).

    Mit Befehl 'led5 #ff0000' kann man z.B. die fünfte LED rot schalten.


    Wenn man übrigens den Farbwert ohne das # (%23) davor übermittelt, dann wird der Farbwert jeweils mit 100% Helligkeit angezeigt (also 110000 ist genauso volles Rot wie ff0000), mit # davor wird die Helligkeit des Farbcodes mit einbezogen (also 110000 dunkelrot - ff0000 volles rot).


    Ich habe das ganze dann non-blocky noch etwas abgewandelt:

    Läuft, aber will ich noch etwas kürzen, ist ursprünglich von Blocky aus konvertiert. Hier habe ich eine Funktion eingefügt, der man eine Farbe übergibt und die diese dann mit 000/schwarz mischt um sie quasi zu dimmen. Will ich später nämlich Sonnenstandsabhängig machen (also nachts weniger hell leuchten lassen, als tags)…

    3 Mal editiert, zuletzt von dieter (7. März 2018 um 13:49)

  • Nachtrag:

    Das RGB-Band ist ein WS2812B (Link).

    Die drei Kabel des Bandes sind an einem Sonoff-Basic an GPIO14, Ground und Volt angeschlossen (bei längeren Kabeln muss man wohl eine externe Stromquelle hinzufügen).

    In der Sonoff-Tasmota-Administrationsoberfläche dann Einstellungen → Gerät konfigurieren → GIOP14 Sensor auf "07 WS2812" stellen.


    Seltsames an diesem einen Sonoff von mir: Ich habe mehrere aus der selben Bestellung, welche alle mit 1.6er-Firmware ausgeliefert wurden und sich daher nur per Hardware flashen ließen. Ich hatte 5.11.1 aufgespielt und bei erscheinen dann auf 5.12 aktualisiert. Alle Sonoffs funktionieren tadellos mit 5.12. Nur eben dieser eine nicht - dieser hat mit 5.12 nach wenigen Sekunden einen vollständigen Verbindungsabbruch vom WLAN. Zurück auf 5.11 geflashed und er funktioniert wieder einwandfrei (nur so als Hinweis, falls das bei wem anderen auch mal auftaucht).

    Hach was könnte man alles schönes noch machen, wenn man die einzelnen LEDs ohne Verzögerung ansprechen könnte… Ganze Displays könnte man basteln damit… Statustexte, animierte GIFs abspielen… Ich hoffe, da weiss wer nen Kniff… :D

  • Das geht, Du kannst statt 'color #RRGGBB' auch direkt 'scheme 1-12' übergeben.

    Du müsstest dann also statt

    http :// ip-adresse/ax?c1=color%20%23ff00ff

    dann

    http :// ip-adresse/ax?c1=scheme%20x

    (und statt dem x dann 1-12 für das Schemata) aufrufen.

    und mit 'speed 1-20' das Tempo festlegen, mit 'dimmer 0-100' die Hellgkeit und mit mit 'fade 0-1' das Überblenden an-/ausschalten (das Leerzeichen immer schön durch %20 ersetzen).

    und mit 'ledX #ff00ff' (wobei X die Nummer der LED in dem Band ist, die Du ansprechen willst) kannst Du einzelne LEDs steuern.

    …wobei wir wieder bei meinem Problem wären, wie man da viele ohne Verzögerung ändern könnte (um eigene Animationen/Muster/Anzeigen damit zu realisieren).

  • Nachtrag zur Skripterklärung:

    Den 50ms-Timeout habe ich drin, da ich das Skipt ja durch 'ring active' von der Fritzbox aktivieren lasse und dann die Anrufernummer weiterverarbeite. Diese wird allerdings ein klein wenig verzögert erst gesetzt, so dass das Feld ohne die Timeoutverzögerung noch leer wäre…

  • Nachtrag zur Skripterklärung:

    Den 50ms-Timeout habe ich drin, da ich das Skipt ja durch 'ring active' von der Fritzbox aktivieren lasse und dann die Anrufernummer weiterverarbeite. Diese wird allerdings ein klein wenig verzögert erst gesetzt, so dass das Feld ohne die Timeoutverzögerung noch leer wäre…

    Sage mal du scheinst ja Ahnung zu haben von den Skripten.... Kann man einen Skript erstellen das man das LED-Band in verschiedene Farben und Aktionen starten kann und zwar so das man in der VIS knöpfe einrichten kann für "weiss" oder "blau" oder "Regenbogen" ????

    Sowas such ich nähmlich das zu realisieren.

  • Das geht da bestimmt. Allerdings habe ich bisher nichts mit VIS gemacht, da ich alles in HomeKit bei mir gepackt habe.

    Zunächst habe ich mir unter Objekte einen eigenen Ordner gemacht: Objekte auswählen → schauen, dass in der Liste dann nichts ausgewählt ist (notfalls Seite neu laden) → (+) klicken → das neue Objekt habe ich "MyVars.0" genannt (keine Leerzeichen/Sonderzeichen, das '.0' muss ans Ende. Das Feld 'Parent' muss leer sein - sonst Seite neu laden und neu machen). Rest so lassen wies ist) → 'Hinzufügen' klicken → 1x den Reiter 'RAW' anklicken, da dann erst unten der Button Speichern aktiv wird → speichern.

    Jetzt den neuen Eintrag in der Objektliste anklicken und wieder auf das (+) → bei 'Parent' steht jetzt 'MyVars.0' (oder wie Dus genannt hast) und bei name kannste dann z.B. 'meinTollesRGBBand' eintragen (keine Leer-/Sonderzeichen).

    Bei Datentyp dann Logikwert (wenn Du nur An/Aus speichern willst) oder Zeichenkette oder Zahl, wenn Du mehrere Zustände speichern willst. Dann könntest du später z.B. 'aus', 'blau', 'regenbogen' darin abspeichern und dann diese Worte per Skript weiterverarbeiten (bzw. wenn Du Zahl als Typ gewählt hast, dann eben 0,1,2,… Programmierer neigen dazu, Datentypen kurz zu halten - sonst isses hier egal).

    Jetzt wieder auf Hinzufügen → RAW → Speichern.

    Damit hätteste jetzt einen eigenen Ordner mit nem eigenen Objekt/Variable, die ich in meinem Fall dann mit YAHKA in HomeKit z.B. als Schalter einbaue bzw. die Du von VIS aus ändern können solltest.

    Müsstest Dir dort dann einen Schalter basteln, der das neue Objekt dann mit true/false (bei Logikwert), 0,1,2… (bei Zahl) oder 'aus', 'rot', 'gruen'… belegt (bei Zeichenkette - welche Wörter Du da reinschreibst, ist erst mal egal, Du musst nur später in dem Skript, welches dann die gewünschte Aktion macht, die selben Ausdrücke verwenden).

    So ein Skript könnte dann, einfach aufgebaut, so aussehen:

    schimmer-media.de/index.php?attachment/1454/

    Zur Funktion:

    Wenn 'meinTollesBand' geändert wird (durch HomeKit, VIS…), dann hole ich mir erst mal die IP von meinem Sonoff und baue damit den Anfangsteil der Befehls-URL (könnte man natürlich auch Hardcoden, aber so funktioniert das ganze auch, wenn die IP sich mal ändert).

    Den Rest habe ich mal so gemacht, als hättest Du als Datentyp 'Zeichenkette' gewählt. Bei 'aus' schalte ich das ganze Band aus, bei 'blau' sende ich den Befehl für Farbcode #0000ff (volles Blau), bei 'regenbogen' sende ich den Befehl für 'Scheme 7' (das war glaube ich der Regenbogen).

    Und so kannste das dann beliebig erweitern.

  • das Band hat 3 Kabel welche bei mir mit GND, DIN und +5V beschriftet sind.

    +5V geht zu 3.3V vom Sonoff (ist ein Band mit 16 LEDs - funktioniert bei mir wunderbar ohne extra Stromversorgung), GND zu GND und DIN zu GPIO14.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!