Autor Thema: Neues Modul zur Steuerung von WS2812b LED stripes  (Gelesen 9424 mal)

Offline swhome

  • Developer
  • Full Member
  • ****
  • Beiträge: 120
Neues Modul zur Steuerung von WS2812b LED stripes
« am: 03 März 2016, 13:27:41 »
Hallo Forum,

zur Steuerung der WS2812b LED Streifen habe ich einen kleinen Controller mit Hilfe eines Arduino mit Ethernet Shield (Wiznet oder UIP) selbst gebaut. Mittlerweile funktioniert es auch mit einem ESP 8266 per WLAN.

Der Anschluß der LED an den Controller kommt ohne weitere Bauteile aus und ist hier gut beschrieben.

An der Netzwerkschnittstelle steht ein einfaches http-basiertes Protokoll zur Verfügung um die LEDs anzusteuern. Das zugehörige FHEM Modul bietet einen einfachen Befehlssatz mit folgenden Funktionen:
  • alle LED mit einer Farbe aus dem Color-Picker setzen
  • eine einzelne LED individuell ansteuern
  • eine Reihe von LED mit der gleichen Farbe setzen
  • die individuellen Farben aller LED in einem Aufruf definieren
  • einen in einer Datei definierten Lichteffekt abspielen
  • Feuereffekt starten
  • Regenbogen-Lauflicht starten
  • alle LEDs ausschalten

Insbesondere die Abspielfunktion aus Dateien ermöglicht trickreiches Lichtdesign, zum Beispiel Sonnenaufgänge oder sanfte Farbwechsel. Leider ist die Anzahl der ansteuerbaren Farben in diesem Modus noch auf 4096 beschränkt aber das will ich bei Gelegenheit noch ändern.

Wer das LED Netzteil nicht nur im Standby lassen sondern gern richtig ausschalten will, kann einen zusätzlichen Schaltkanal mit dem Attribut power_switch deklarieren. Das Modul wird diesen Kanal dann einschalten bevor LEDs aktiviert werden und ihn beim Kommando off wieder ausschalten.

Installation des Moduls aus GitHub: Hierzu in der FHEM Kommandozeile folgendes eingeben:
update all https://raw.githubusercontent.com/sw-home/FHEM-LEDStripe/master/controls_ledstripe.txt
Arduino

Die Anzahl der LEDs muss im Sketch eingestellt werden:
#define NUMPIXELS1     150
#define NUMPIXELS2     150
Der Arduino-Sketch kann zwei LED-Streifen steuern und ist so gedacht, daß der Controller in der Mitte der beiden Streifen plaziert wird. Das ist aber optional, die Länge des zweiten Streifens kann auch 0 sein.

Im Moment benutze ich einen alternativen Bootloader der ein Sketch-Update übers Netzwerk ermöglicht. Die IP-Adresse wird im Flash hinterlegt, und auch der Sketch verwendet diese. Alternativ kann die MAC und IP auch im Sketch definiert werden, das ist im Source auskommentiert.

Limitierend ist mitunter der Speicherbedarf im Microcontroller, bei Einzelansteuerung pro LED 3 Byte. Nachdem die Netzwerk-Libraries je nach Implementierung ziemlich speicherhungrig sind, kann es bei hunderten von LEDs schnell eng werden. Mit dem originalen Ethernet-Shield oder einem Arduino Ethernet sind bei mir 220 LED möglich, aber schon grenzwertig. Andere Netzwerk-Libs nehmen noch mehr Speicher und erlauben weniger LEDs. Im Zweifel muss man einen Arduino Mega benutzen. Wenn der Controller nicht richtig funktioniert, liegts am Speicher...

Man braucht eine ordentliche 5V Spannungsversorgung und sollte längere Streifen mit parallelen Versorgungsleitungen unterstützen. Ich habe den Controller an der 5V-Leitung direkt angeklemmt was in der Szene umstritten ist aber prima funktioniert. Wenn alle LEDs mit allen Farben voll aufgedreht werden, fließen 60mA pro LED, bei 200 Stück also 12A. In der Praxis braucht man meist weniger weil dies ja eher eine Akzentbeleuchtung sein soll. Denkbar wäre auch eine Limitierung des Stromverbrauchs im FHEM-Modul.

Modul LEDStripe

Define

define <name> LEDStripe <ip_address>
Defines a module for controlling WS2812b LED stripes connected to an Arduino with Ethernet shield
  define LED_Wohnzimmer LEDStripe 192.168.1.21
  attr LED_Wohnzimmer playfile /opt/fhem/ledwall.txt
    Attributes
    •     attr <name> playfile <string>
              Points to a file with LED color information containing several lines in the pixels format described below
    •     attr <name> playtimer <integer>
              Delay in seconds when playing a LED color file
    •     attr <name> webCmd rgb:off:rgb 5a2000:rgb 654D8A
              Show a color picker and color buttons (the colors are just examples, any combinations are possible).
    •     attr <name> power_switch <on/off-channel>
              Control LED power on/off using s switch channel
    [/li][/list]
    Commands
    •     set <name> on
              Start 'playing' the file with LED color information
    •     set <name> off
              Switch all LEDs off and stop any effects
    •     set <name> rgb rrggbb
              Switch all LEDs to RGB color specified in hex values. This is compatible with the Color.pm color picker
    •     set <name> pixel <led id> <red> <green> <blue>
              Set the color of a single LED, index starts at 0, color values are from 0-255
    •     set <name> range <start id> <end id> <red> <green> <blue>
              Set the color of a range of LEDs, start and end are inclusive beginning with 0
    •     set <name> pixels <color data>
              Define the color of all LEDs, the color data consists of three hex digits per LED containing the three colors, e.g. 000 would be off, F00 would be all red, 080 would be 50% green, 001 a faint blue
    •     set <name> fire
              Start a 'fire' light effect on all LEDs
    •     set <name> rainbow <string>
              Start a 'rainbow color chase' light effect on all LEDs

    « Letzte Änderung: 24 Mai 2017, 15:47:51 von swhome »
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!
    Gefällt mir Gefällt mir x 8 Liste anzeigen

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #1 am: 08 März 2016, 08:52:40 »
    Anbei noch ein Foto wie ich die Lichtleisten an der Decke montiert habe.
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline roedert

    • Full Member
    • ***
    • Beiträge: 481
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #2 am: 14 März 2016, 15:44:07 »
    Interessante Geschichte ... werd ich direkt mal nachbauen :)
    Soll nicht zur Beleuchtung dienen, sondern als Statusanzeige - diesen Ansatz gabs hier schon mehrfach.

    Im Moment benutze ich einen alternativen Bootloader der ein Sketch-Update übers Netzwerk ermöglicht. Die IP-Adresse wird im Flash hinterlegt, und auch der Sketch verwendet diese. Alternativ kann die MAC und IP auch im Sketch definiert werden, das ist im Source auskommentiert.
    Kannst du mehr zu diesem Bootloader sagen?
    Bzw. zum Festlegen der IP im Quelltext ... dort steht nur:
    // Enter a MAC address and IP address for your controller below
    // uncomment if using fixed IP:
    //byte mac[] = { 0x90, 0x42, 0xDA, 0x0D, 0x5D, 0x99 };

    // The IP address will be dependent on your local network
    // uncomment if using fixed IP:
    //IPAddress ip(10,222,11,42);
    Mac-Adresse ... kann ich mir eine aussuchen? Hat die Netzwerkkarte keien fest "eingebrannte"?
    Was ist mit den restlichen infos wie Netzmaske und Gateway?

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #3 am: 15 März 2016, 08:12:19 »
    Bei diesen sehr simplen Netzwerkkarten ist keine MAC gespeichert, das muss man in der eigenen Firmware machen. Wenn man eine echte Arduino Komponente kauft, ist eine MAC als Aufkleber dabei, die man in den eigenen Code übernehmen kann, ansonsten muss man sich halt selber eine ausdenken. Die anderen TCP Parameter hab ich vergessen, wahrscheinlich passen die defaults zu meinem Netzwerk. Schau mal hier:

    https://www.arduino.cc/en/Reference/EthernetIPAddress

    Die Sache mit dem Bootloader ist noch etwas unfertig. Mein Wunsch ist, den oben in der Zwischendecke sitzenden Controller ohne Baumaßnahmen neu flashen zu können. Der Code stammt von hier:

    http://playground.arduino.cc/Code/TFTPBootloader1

    Allerdings hab ich jetzt irgendwo anders einen Bootloader mit DHCP/Bootp gefunden, das erscheint mir noch viel eleganter. Die ganze Geschichte mit der statischen Netzwerkkonfiguration im Flash entfiele, und auch das etwas fummelige 5 Sekunden Timing.

    Viel Erfolg beim Bauen, bin gespannt auf deine Resultate. An eine Statusanzeige hatte ich auch schon gedacht, oder an eine raumfüllende Zeitanzeige...
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline roedert

    • Full Member
    • ***
    • Beiträge: 481
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #4 am: 15 März 2016, 14:43:00 »
    gekauft, Sketch angepasst und hochgeladen, bisschen gelötet ..... läuft alles prima :)

    Offline roedert

    • Full Member
    • ***
    • Beiträge: 481
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #5 am: 15 März 2016, 16:27:24 »
    Alle Tests bisher erfolgreich .... nun muss der fliegende Testaufbau nur noch "schön" gemacht werden.

    Plan ist es eine Raumecke neben der Tür mit einer Platte "abzuschrägen", darauf komtm dann der Cubietruck mit FHEM, HM-LAN-CFG, Huebridge und eben das Statusdisplay optisch angelehnt an diese Umsetzung:
    https://forum.fhem.de/index.php/topic,28025.0.html

    Möchtest du dein Modul nicht "offiziell" machen und einen entsprechenden Wiki-Eintrag mit den zugehörigen Infos zum Nachbau ... Hardware, Verkabelung, Sketch etc.
    Gefällt mir Gefällt mir x 1 Liste anzeigen

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #6 am: 18 März 2016, 23:35:08 »
    Na klar da spricht nichts dagegen. Ich wollte hier erstmal das Interesse checken  ;D
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline roedert

    • Full Member
    • ***
    • Beiträge: 481
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #7 am: 18 März 2016, 23:37:24 »
    ....einen Fan hast du schon ;)

    Vielleicht weisst du auf die Schnelle die Lösung .... wie kann ich die ständigen Logmeldungen
    2016.03.18 23:34:32 3: set Statusdisplay pixel 19 0 0 0 : LEDStripe returned OK,60,8, new state is onverhindern?

    attr verbose 0 hat nix genützt :(

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #8 am: 19 März 2016, 00:06:13 »
    Oh sorry ja das ist dumm. Falls du es auf die Schnelle ändern willst, entferne in diesen Zeilen
    $rc = LEDStripe_request($hash,$URL);die Zuweisung $rc=, dann sollte das Resultat des http Aufrufes nicht mehr geloggt oder angezeigt werden. Ich mache am Wochenende mal ein Update des ersten Beitrages.
    « Letzte Änderung: 19 März 2016, 00:09:46 von swhome »
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline Papaloewe

    • Full Member
    • ***
    • Beiträge: 309
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #9 am: 19 März 2016, 20:28:16 »
    Bin schon lange auf der Suche nach einem solchen Modul, das auch die Einzelansteuerung und Effekte unterstüzt.
    Wäre es vielleicht auch prinzipiell anpassbar, damit es auf einem ESP8266 mit WIFI Anbindung läuft?
    Das fände ich dann richtig spannend und würde sofort einen Testaufbau machen.

    Gruß
    Thomas

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #10 am: 22 März 2016, 00:01:44 »
    Hi, ich bin ziemlich sicher dass es mit dem ESP funktionieren würde, aber ich bin noch nicht dazu gekommen es auszuprobieren. Aktuell hab ich noch ein anderes dringenderes ESP Projekt das noch nicht so recht laufen will...
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline harway2007

    • Full Member
    • ***
    • Beiträge: 117
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #11 am: 23 Mai 2016, 09:38:32 »
    würde gern ein raspberry 2 oder 3 als Kontroller benutzen .. was ist da zu beachten oder zu ändern?

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #12 am: 23 Mai 2016, 20:21:11 »
    Hi, Arduino und Raspberry sind total verschiedene Dinge. Soviel ich weiß kann man die WS2812 nicht zuverlässig direkt mit einen Pi ansteuern. Bei mir läuft FHEM auf dem Pi, du brauchst also nur noch den Arduino dazu :-)
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline dev0

    • Developer
    • Hero Member
    • ****
    • Beiträge: 2554
      • _.:|:._
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #13 am: 23 Mai 2016, 20:46:43 »
    Und für den Anschluss direkt an den Raspi eigenen sich WS2801 besser.

    Offline rippi46

    • Full Member
    • ***
    • Beiträge: 239
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #14 am: 26 Mai 2016, 08:54:20 »
    Hallo swhome,

    wirklich tolle Geschichte. :)

    Habe aber leider das Problem, dass beim Absetzen eines Befehls zuerst einmal nichts passiert. Erst wenn ich noch einmal einen Befehl abschicke ändert sich am Stripe etwas.

    Dicht gefolgte Befehle funktionieren sofort. Es sieht so aus als ob die Verbindug verloren geht.

    Hast du ähnliche Probleme?

    Gruß rippi
    FHEM, LMS, VDR ,Dell 9010 Ubuntu 14.04; Max-Thermostate, Max Gateway, HM-Thermostate; Elro, Brennenstuhl u. Intertechno mit Connair-GW.
    Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
    nanocul433, nanocul868, fhemduino, Signalduino(wifi)
    MySensor-GW mit diversen Sensoren, RGBWW

    Offline harway2007

    • Full Member
    • ***
    • Beiträge: 117
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #15 am: 26 Mai 2016, 22:39:03 »
    Ich finde euren Ansatz prima .. da ich aber
    a. den Raspberry 2 und 3 nutzen möchte
    b. die Lösung mit Kondensator Anschluss am Raspberry nicht stabil läuft
    schaut euch doch bitte mal das Modul
    DIGI-DOT-Booster am SPI des Raspberry
    an ...
    würde das nicht alle Anschluss- und Steuerprobleme erledigen ?
    Habe eine Forum parralel einen Eintrag dazu gestartet,
    da ich es auf jeden Fall mit Raspberry anbinden möchte.
    MFG Harway




    Offline harway2007

    • Full Member
    • ***
    • Beiträge: 117
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #16 am: 30 Mai 2016, 22:41:41 »
    Das Modul ist da und klappt ....
    Habe 184 LEDs dran am Raspberry 2
    sind noch ne Menge Fragen offen...
    weiteres im Forumseintrag:
    DIGI-DOT-Booster zur Ansteuerung von WS2812 LED per Raspberry
    MFG Harway

    Nachtrag:
    einzelne LEDs mit beliebiger Farbe nach RGB

    spi.writebytes([0xA2, 190, 25, 180, 254])
    time.sleep(DELAY)
    spi.writebytes([0xA4, 10]) 
    time.sleep(DELAY)
    spi.writebytes([0xB2]) 
    time.sleep(DELAY)
    spi.close()
    « Letzte Änderung: 30 Mai 2016, 23:21:33 von harway2007 »

    Offline exciter

    • New Member
    • *
    • Beiträge: 11
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #17 am: 06 September 2016, 17:20:32 »
    Hier mal die ESP8266 Version:

    #include <Adafruit_NeoPixel.h>
    #include <ESP8266WiFi.h>

    const char* ssid     = "XXX";
    const char* password = "XXX";
    WiFiServer server(80);
    // Which pin on the Arduino is connected to the NeoPixels?
    #define LEDPIN1           14
    #define LEDPIN2           0

    // How many NeoPixels are attached to the Arduino?
    #define NUMPIXELS1     144
    #define NUMPIXELS2     0


    void reset();
    // control special effects
    boolean fire=false;
    boolean rainbow=false;
    uint16_t rainbowColor=0;

    // setup network and output pins
    void setup() {
    // Open serial communications and wait for port to open:
      Serial.begin(9600);
       while (!Serial) {
        ; // wait for serial port to connect. Needed for Leonardo only
      }
      Serial.println(F("Booting"));

     // Initialize all pixels to 'off'
     stripe_setup();
      WiFi.mode(WIFI_STA);
    Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);
     
      WiFi.begin(ssid, password);
     
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }

      Serial.println("");
      Serial.println("WiFi connected"); 
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
      server.begin();
    }

    // request receive loop
    void loop() {
    // listen for incoming clients
      WiFiClient client = server.available();  // Check if a client has connected
      if (client) {
        Serial.println(F("new client"));
       
        String inputLine = "";
       // an http request ends with a blank line
        boolean currentLineIsBlank = true;
        boolean isGet = false;
        boolean isPost = false;
        boolean isPostData = false;
        int postDataLength;
        int ledix = 0;
        int tupel = 0;
        int redLevel = 0;
        int greenLevel = 0;
        int blueLevel = 0;
       
        while (client.connected()) {
          if (client.available()) {
            char c = client.read();
            if (isPostData && postDataLength > 0) {
              switch (tupel++) {
                case 0:
                  redLevel = colorVal(c);
                  break;
                case 1:
                  greenLevel = colorVal(c);
                  break;
                case 2:
                  blueLevel = colorVal(c);
                  tupel = 0;
                  stripe_setPixelColor(ledix++, stripe_color(redLevel,greenLevel,blueLevel));
                  break;
              }
              if (--postDataLength == 0) {
                stripe_show();
                sendOkResponse(client);
                break;
              }
            }
            // if you've gotten to the end of the line (received a newline
            // character) and the line is blank, the http request has ended,
            // so you can send a reply
            if (c == '\n' && currentLineIsBlank) {
              if (isPost) {
                isPostData = true;
                continue;
              } else {
                // send http response
                if (isGet) {
                  sendOkResponse(client);
                } else {
                  client.println(F("HTTP/1.1 500 Invalid request"));
                  client.println(F("Connection: close"));  // the connection will be closed after completion of the response
                  client.println();
                }
                break;
              }
            }
            if (c == '\n') {
              // http starting a new line, evaluate current line
              currentLineIsBlank = true;
              Serial.println(inputLine);
             
    // SET SINGLE PIXEL url should be GET /rgb/n/rrr,ggg,bbb
              if (inputLine.length() > 3 && inputLine.substring(0,9) == F("GET /rgb/")) {
                int slash = inputLine.indexOf('/', 9 );
                ledix = inputLine.substring(9,slash).toInt();
                int urlend = inputLine.indexOf(' ', 9 );
                String getParam = inputLine.substring(slash+1,urlend+1);
                int komma1 = getParam.indexOf(',');
                int komma2 = getParam.indexOf(',',komma1+1);
                redLevel = getParam.substring(0,komma1).toInt();
                greenLevel = getParam.substring(komma1+1,komma2).toInt();
                blueLevel = getParam.substring(komma2+1).toInt();
                stripe_setPixelColor(ledix, stripe_color(redLevel,greenLevel,blueLevel));
                stripe_show();
                isGet = true;
              }
              // SET PIXEL RANGE url should be GET /range/x,y/rrr,ggg,bbb
              if (inputLine.length() > 3 && inputLine.substring(0,11) == F("GET /range/")) {
                int slash = inputLine.indexOf('/', 11 );
                int komma1 = inputLine.indexOf(',');
                int x = inputLine.substring(11, komma1).toInt();
                int y = inputLine.substring(komma1+1, slash).toInt();
                int urlend = inputLine.indexOf(' ', 11 );
                String getParam = inputLine.substring(slash+1,urlend+1);
                komma1 = getParam.indexOf(',');
                int komma2 = getParam.indexOf(',',komma1+1);
                redLevel = getParam.substring(0,komma1).toInt();
                greenLevel = getParam.substring(komma1+1,komma2).toInt();
                blueLevel = getParam.substring(komma2+1).toInt();
                for(int i=x; i<=y; i++) {
                  stripe_setPixelColor(i, stripe_color(redLevel,greenLevel,blueLevel));
                }
                stripe_show();
                isGet = true;
              }
              // POST PIXEL DATA
              if (inputLine.length() > 3 && inputLine.substring(0,10) == F("POST /leds")) {
                isPost = true;
              }
              if (inputLine.length() > 3 && inputLine.substring(0,16) == F("Content-Length: ")) {
                postDataLength = inputLine.substring(16).toInt();
              }
              // SET ALL PIXELS OFF url should be GET /off
              if (inputLine.length() > 3 && inputLine.substring(0,8) == F("GET /off")) {
                reset();
                isGet = true;
              }
             
              // GET STATUS url should be GET /status
              if (inputLine.length() > 3 && inputLine.substring(0,11) == F("GET /status")) {
                isGet = true;
              }
              // SET FIRE EFFECT
              if (inputLine.length() > 3 && inputLine.substring(0,9) == F("GET /fire")) {
                fire = true;
                rainbow = false;
                stripe_setBrightness(128);
                isGet = true;
              }
              // SET RAINBOW EFFECT
              if (inputLine.length() > 3 && inputLine.substring(0,12) == F("GET /rainbow")) {
                rainbow = true;
                fire = false;
                stripe_setBrightness(128);
                isGet = true;
              }
              inputLine = "";
            }
            else if (c != '\r') {
              // add character to the current line
              currentLineIsBlank = false;
              inputLine += c;
            }
          }
        }
        // give the web browser time to receive the data
        delay(1);
        // close the connection:
        client.stop();
        Serial.println(F("client disconnected"));
      }
      if (fire) fireEffect();
      if (rainbow) rainbowCycle();
    }

    // Reset stripe, all LED off and no effects
    void reset() {
      for(int i=0; i<stripe_numPixels(); i++) {
        stripe_setPixelColor(i, 0);
      }
      stripe_setBrightness(255);
      stripe_show();
      fire = false;
      rainbow = false;
    }

    // LED flicker fire effect
    void fireEffect() {
      for(int x = 0; x <stripe_numPixels(); x++) {
        int flicker = random(0,55);
        int r1 = 226-flicker;
        int g1 = 121-flicker;
        int b1 = 35-flicker;
        if(g1<0) g1=0;
        if(r1<0) r1=0;
        if(b1<0) b1=0;
        stripe_setPixelColor(x,stripe_color(r1,g1, b1));
      }
      stripe_show();
      delay(random(10,113));
    }

    // Slightly different, this makes the rainbow equally distributed throughout
    void rainbowCycle() {
      uint16_t i;

      if (rainbowColor++>255) rainbowColor=0;
      for(i=0; i< stripe_numPixels(); i++) {
        stripe_setPixelColor(i, Wheel(((i * 256 / stripe_numPixels()) + rainbowColor) & 255));
      }
      stripe_show();
      delay(20);
    }

    // Input a value 0 to 255 to get a color value.
    // The colours are a transition r - g - b - back to r.
    uint32_t Wheel(byte WheelPos) {
      WheelPos = 255 - WheelPos;
      if(WheelPos < 85) {
        return stripe_color(255 - WheelPos * 3, 0, WheelPos * 3);
      }
      if(WheelPos < 170) {
        WheelPos -= 85;
        return stripe_color(0, WheelPos * 3, 255 - WheelPos * 3);
      }
      WheelPos -= 170;
      return stripe_color(WheelPos * 3, 255 - WheelPos * 3, 0);
    }

    int colorVal(char c) {
      int i = (c>='0' && c<='9') ? (c-'0') : (c - 'A' + 10);
      return i*i + i*2;
    }

    void sendOkResponse(WiFiClient client) {
      client.println(F("HTTP/1.1 200 OK"));
      client.println(F("Content-Type: text/html"));
      client.println(F("Connection: close"));  // the connection will be closed after completion of the response
      client.println();
      // standard response
      client.print(F("OK,"));
      client.print(stripe_numPixels());
      client.print(F(","));
      int oncount=0;
      for(int i=0; i<stripe_numPixels(); i++) {
        if (stripe_getPixelColor(i) != 0) oncount++;
      }
      client.println(oncount);
    }


    Mit der vstripe aus dem Originalfile zu kompilieren. Pin, SSID, KEY, nach Bedarf anpassen.

    Gruß Steffen
    Intel NUC i5, Ubuntu Server, nanoCUL 868, Fhem 5.7, Smartphone.py + smartvisu

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #18 am: 07 September 2016, 08:44:27 »
    Das ist ja cool! Wie hast Du das technisch gelöst? LEDs an 5 Volt und einen separaten 3,3V Regler für die ESP? Und der Ausgang des ESP direkt an die erste LED?
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline exciter

    • New Member
    • *
    • Beiträge: 11
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #19 am: 07 September 2016, 21:21:20 »
    Habe das ganze noch am labornetzteil bei 3,4V Volt laufen. Ja Ausgang vom ESP direkt auf die erste LED.
    Habe das Programm auch noch erweitert mit der Adafruit neo Matrix Bibliothek. Kann nun auf eine Matrix 5x29 ws2812b LEDs, Text aus Fhem heraus schicken, bzw. readings ausgeben.
    Ist aber eher alles zusammengewürfelter Code, welcher noch stark verbesserungsbedürftig ist.
    Intel NUC i5, Ubuntu Server, nanoCUL 868, Fhem 5.7, Smartphone.py + smartvisu

    Offline tiwo85

    • Jr. Member
    • **
    • Beiträge: 82
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #20 am: 09 September 2016, 10:05:16 »
    Hallo swhome,
    Cooles Projekt. Ich habe mir gleich ein paar stripes bestellt.
    Wie muss die Playfile aufgebaut sein?

    Mfg

    Gesendet von meinem D5803 mit Tapatalk


    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #21 am: 10 September 2016, 19:16:52 »
    Hi tiwo, das Playfile besteht aus beliebig vielen Zeilen mit jeweils allen Farbwerten für die LEDs.

    Die Farbwerte sind komprimiert, es gibt nur 16 Helligkeiten pro Kanal, kodiert als Hexadezimalzahl. 0 = aus, F = maximale Helligkeit. Die Farbe rot mit maximaler Helligkeit ist also f00, gelb ist ff0, weiss ist fff.

    Nehmen wir an, Du hast 10 LEDs und willst ein laufendes Muster aus blau und weiss darstellen, dann sieht die Datei so aus:

    fff00f000fff00f000fff00f000fff
    000fff00f000fff00f000fff00f000
    00f000fff00f000fff00f000fff00f

    Zugegeben wären unter Zuhilfenahme aller druckbaren Zeichen mehr Farben darstellbar, da war ich wohl etwas faul ;-)
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline juppzupp

    • Full Member
    • ***
    • Beiträge: 441
    • Anti-Dev ;)
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #22 am: 20 September 2016, 20:24:22 »
    Spannendes Projekt! Gestern mal auf die Schnelle probiert, klappt einwandfrei.
    Leicht erweiterbar.
    Danke!

    Edit : auf esp8266 mit 60 leds
    « Letzte Änderung: 20 September 2016, 21:36:54 von juppzupp »

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #23 am: 21 September 2016, 10:01:13 »
    Hallo allseits, vielen Dank für das feedback!

    Ich habe eine neue Version des Moduls an den ersten Beitrag angehängt, die eine Farbwahl per Mausklick ermöglicht. Damit werden dann alle LED's mit der gleichen Farbe gesetzt. Es bleibt noch etwas hinter den Möglichkeiten zurück, aber ist sehr benutzerfreundlich. Bin dran noch mehr rauszuholen.

    Viele Grüße
    Stefan
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline juppzupp

    • Full Member
    • ***
    • Beiträge: 441
    • Anti-Dev ;)
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #24 am: 21 September 2016, 10:46:27 »
    Hi,

    es kommt natürlich immer darauf an was man damit vor hat.....
    Ich hab beim "spielen" gestern schnell "hunger" nach mehr entwickelt.
    Als Beispiel : 60 LEDs in der Küche, die Abends mit dem Sonnenuntergang anfangen hoch zu dimmen.
    Wenn Abfall ansteht, 5 LEDs die blinken (blau, gelb, grau).
    Könnte man mit dem playfile lösen - allerdings gibt es nur einen. Attribute umschreiben per notify, at, etc. wäre möglich.
    Gefällt mir noch nicht so ganz, weil die last auf fhem liegt, und der ESP eh nix zu tun hat. Auch schnellere abfolgen könnten schwierig werden.
    So hab ich ich dem ESP (quick and dirty) ne blink routing spendiert, die ich von fhem aufrufe.

        if($command eq "blink")
      {
        return "Set blink needs seven parameters: <first_led> <last_led> <red> <green> <blue> <ontime> <offtime>" if ( @a != 7 );
        my $first_led=$a[0];
        $first_led=($first_led=~ m/$reDOUBLE/) ? $1:undef;
        return "first_led value ".$a[0]." is not a valid number" if (!defined($first_led));

        my $last_led=$a[1];
        $last_led=($last_led=~ m/$reDOUBLE/) ? $1:undef;
        return "last_led value ".$a[1]." is not a valid number" if (!defined($last_led));

        my $red=$a[2];
        $red=($red=~ m/$reDOUBLE/) ? $1:undef;
        return "red value ".$a[2]." is not a valid number" if (!defined($red));

        my $green=$a[3];
        $green=($green=~ m/$reDOUBLE/) ? $1:undef;
        return "green value ".$a[3]." is not a valid number" if (!defined($green));

        my $blue=$a[4];
        $blue=($blue=~ m/$reDOUBLE/) ? $1:undef;
        return "blue value ".$a[4]." is not a valid number" if (!defined($blue));

        my $ontime=$a[5];
        $ontime=($ontime=~ m/$reDOUBLE/) ? $1:undef;
        return "ontime value ".$a[5]." is not a valid number" if (!defined($ontime));

        my $offtime=$a[6];
        $offtime=($offtime=~ m/$reDOUBLE/) ? $1:undef;
        return "offtime value ".$a[6]." is not a valid number" if (!defined($offtime));

        Log 4, "set command: " . $command ." desired:". $first_led . " to " . $last_led;
        $URL .= "/blink/" . $first_led . "," . $last_led . "/" . $red . "," . $green . "," . $blue . "," . $ontime . "," . $offtime;
        $rc = LEDStripe_request($hash,$URL);
      }

    passend dazu einen aufruf der nur die loops beendet, damit ich nicht den ganzen stripe reseten muss.
      if($command eq "nofx")
      {
        $URL .= "/nofx";
        LEDStripe_request($hash,$URL);
      }

    Beim dimmen hab ich aufgehört, da ich mich frage, ob es vielleicht besser wäre auf fastled.h statt neopixel.h zu setzen.
    Vielleicht sind meine Ideen auch zu speziell um den weg ins modul oder den sketch zu finden.

    Grüße !


    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #25 am: 21 September 2016, 11:16:34 »
    Hi, das mit dem Hunger geht mir genauso :-)

    Playfiles wechseln mache ich auch per Attributänderung. Was die Last angeht: klar die ESP hat nix zu tun aber die Leistungsfähigkeit der Platform meines fhem ist auch deutich höher als die der ESP. Und ich muss nicht jedesmal flashen wenn sich was an der Software ändert.

    Ein Dimmen mit Zeitangabe so wie die Homematic-Dimmer es können steht auch auf meiner Roadmap. Das langsame Auffahren zb. am Abend mache ich allerdings wegen der Farbvielfalt als Playfile.

    Deine Blinkroutine werde ich in die nächste Version aufnehmen. Danke!

    Ausserdem gibts noch ein neues Feature im Modul:

    Wer das LED Netzteil nicht nur im Standby lassen sondern gern richtig ausschalten will, kann einen zusätzlichen Schaltkanal mit dem Attribut power_switch deklarieren. Das Modul wird diesen Kanal dann einschalten bevor LEDs aktiviert werden und ihn beim Kommando off wieder ausschalten.

    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline juppzupp

    • Full Member
    • ***
    • Beiträge: 441
    • Anti-Dev ;)
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #26 am: 21 September 2016, 12:04:37 »
    ;-)
    Ich überschlage mich vor Ideen. Muss allerdings erstmal den nonsensfilfter anwenden...
    Spiffs Filesystem auf den esp und dann den playfile local abspielen?
    Wobei im Alltag die Frage ist, wie oft man schnelle Farbwechsel ala Rainbow braucht/ändert.
    Vielleicht mehrere playfile Attribute so das man mit play "diman" oder play "dimaus" einfacher wählen kann?
    Bzgl dimmen. Besteht bei dir auch die Idee auf fastled umzustellen?
    Und kannst du deinen playfile fürs abendliche aufdimmen sharen?

    Grüße!

    Offline exciter

    • New Member
    • *
    • Beiträge: 11
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #27 am: 21 September 2016, 19:52:54 »
    Habe nun noch die neomatrix Library eingebunden.
    Macht schon Laune, nur leider zu wenig Zeit....
    Intel NUC i5, Ubuntu Server, nanoCUL 868, Fhem 5.7, Smartphone.py + smartvisu

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #28 am: 21 September 2016, 22:29:54 »
    Cool! Das ist ein definitiv ein no-nonsense-Feature :-)
    Code aufräumen und her damit
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline juppzupp

    • Full Member
    • ***
    • Beiträge: 441
    • Anti-Dev ;)
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #29 am: 22 September 2016, 16:49:35 »
    kein neomatrix, aber der blinker & nofx :

    #include <Adafruit_NeoPixel.h>
    #include <ESP8266WiFi.h>

    const char* ssid     = "XXX";
    const char* password = "XXX";
    WiFiServer server(80);
    // Which pin on the Arduino is connected to the NeoPixels?
    #define LEDPIN1           14
    #define LEDPIN2           12

    // How many NeoPixels are attached to the Arduino?
    #define NUMPIXELS1     30
    #define NUMPIXELS2     30
    int xfrom;
    int yto;
    int myredLevel;
    int mygreenLevel;
    int myblueLevel;
    int myOn;
    int myOff;


    void reset();
    // control special effects
    boolean fire=false;
    boolean rainbow=false;
    boolean blinker=false;
    uint16_t rainbowColor=0;



    // setup network and output pins
    void setup() {
    // Open serial communications and wait for port to open:
      Serial.begin(9600);
       while (!Serial) {
        ; // wait for serial port to connect. Needed for Leonardo only
      }
      Serial.println(F("Booting"));

     // Initialize all pixels to 'off'
     stripe_setup();
      WiFi.mode(WIFI_STA);
    Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);
     
      WiFi.begin(ssid, password);
     
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }

      Serial.println("");
      Serial.println("WiFi connected"); 
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
      server.begin();
     
    }

    // request receive loop
    void loop() {
    // listen for incoming clients
      WiFiClient client = server.available();  // Check if a client has connected
      if (client) {
        Serial.println(F("new client"));
       
        String inputLine = "";
       // an http request ends with a blank line
        boolean currentLineIsBlank = true;
        boolean isGet = false;
        boolean isPost = false;
        boolean isPostData = false;
        int postDataLength;
        int ledix = 0;
        int tupel = 0;
        int redLevel = 0;
        int greenLevel = 0;
        int blueLevel = 0;
       
        while (client.connected()) {
          if (client.available()) {
            char c = client.read();
            if (isPostData && postDataLength > 0) {
              switch (tupel++) {
                case 0:
                  redLevel = colorVal(c);
                  break;
                case 1:
                  greenLevel = colorVal(c);
                  break;
                case 2:
                  blueLevel = colorVal(c);
                  tupel = 0;
                  stripe_setPixelColor(ledix++, stripe_color(redLevel,greenLevel,blueLevel));
                  break;
              }
              if (--postDataLength == 0) {
                stripe_show();
                sendOkResponse(client);
                break;
              }
            }
            // if you've gotten to the end of the line (received a newline
            // character) and the line is blank, the http request has ended,
            // so you can send a reply
            if (c == '\n' && currentLineIsBlank) {
              if (isPost) {
                isPostData = true;
                continue;
              } else {
                // send http response
                if (isGet) {
                  sendOkResponse(client);
                } else {
                  client.println(F("HTTP/1.1 500 Invalid request"));
                  client.println(F("Connection: close"));  // the connection will be closed after completion of the response
                  client.println();
                }
                break;
              }
            }
            if (c == '\n') {
              // http starting a new line, evaluate current line
              currentLineIsBlank = true;
              Serial.println(inputLine);
             
    // SET SINGLE PIXEL url should be GET /rgb/n/rrr,ggg,bbb
              if (inputLine.length() > 3 && inputLine.substring(0,9) == F("GET /rgb/")) {
                int slash = inputLine.indexOf('/', 9 );
                ledix = inputLine.substring(9,slash).toInt();
                int urlend = inputLine.indexOf(' ', 9 );
                String getParam = inputLine.substring(slash+1,urlend+1);
                int komma1 = getParam.indexOf(',');
                int komma2 = getParam.indexOf(',',komma1+1);
                redLevel = getParam.substring(0,komma1).toInt();
                greenLevel = getParam.substring(komma1+1,komma2).toInt();
                blueLevel = getParam.substring(komma2+1).toInt();
                stripe_setPixelColor(ledix, stripe_color(redLevel,greenLevel,blueLevel));
                stripe_show();
                isGet = true;
              }
              // SET PIXEL RANGE url should be GET /range/x,y/rrr,ggg,bbb
              if (inputLine.length() > 3 && inputLine.substring(0,11) == F("GET /range/")) {
                int slash = inputLine.indexOf('/', 11 );
                int komma1 = inputLine.indexOf(',');
                int x = inputLine.substring(11, komma1).toInt();
                int y = inputLine.substring(komma1+1, slash).toInt();
                int urlend = inputLine.indexOf(' ', 11 );
                String getParam = inputLine.substring(slash+1,urlend+1);
                komma1 = getParam.indexOf(',');
                int komma2 = getParam.indexOf(',',komma1+1);
                redLevel = getParam.substring(0,komma1).toInt();
                greenLevel = getParam.substring(komma1+1,komma2).toInt();
                blueLevel = getParam.substring(komma2+1).toInt();
                for(int i=x; i<=y; i++) {
                  stripe_setPixelColor(i, stripe_color(redLevel,greenLevel,blueLevel));
                }
                stripe_show();
                isGet = true;
              }
              // POST PIXEL DATA
              if (inputLine.length() > 3 && inputLine.substring(0,10) == F("POST /leds")) {
                isPost = true;
              }
              if (inputLine.length() > 3 && inputLine.substring(0,16) == F("Content-Length: ")) {
                postDataLength = inputLine.substring(16).toInt();
              }
              // SET ALL PIXELS OFF url should be GET /off
              if (inputLine.length() > 3 && inputLine.substring(0,8) == F("GET /off")) {
                reset();
                isGet = true;
              }
             
              // GET STATUS url should be GET /status
              if (inputLine.length() > 3 && inputLine.substring(0,11) == F("GET /status")) {
                isGet = true;
              }
              // SET FIRE EFFECT
              if (inputLine.length() > 3 && inputLine.substring(0,9) == F("GET /fire")) {
                fire = true;
                rainbow = false;
                stripe_setBrightness(128);
                isGet = true;
              }
              // SET RAINBOW EFFECT
              if (inputLine.length() > 3 && inputLine.substring(0,12) == F("GET /rainbow")) {
                rainbow = true;
                fire = false;
                stripe_setBrightness(128);
                isGet = true;
              }
              // SET no_effects
              if (inputLine.length() > 3 && inputLine.substring(0,9) == F("GET /nofx")) {
                rainbow = false;
                fire = false;
                blinker = false;
                isGet = true;
              }
              if (inputLine.length() > 3 && inputLine.substring(0,11) == F("GET /blink/")) {
                int slash = inputLine.indexOf('/', 11 );
                int komma1 = inputLine.indexOf(',');
                xfrom = inputLine.substring(11, komma1).toInt();
                yto = inputLine.substring(komma1+1, slash).toInt();
                int urlend = inputLine.indexOf(' ', 11 );
                String getParam = inputLine.substring(slash+1,urlend+1);
                komma1 = getParam.indexOf(',');
                int komma2 = getParam.indexOf(',',komma1+1);
                int komma3 = getParam.indexOf(',',komma2+1);
                int komma4 = getParam.indexOf(',',komma3+1);
                myredLevel = getParam.substring(0,komma1).toInt();
                mygreenLevel = getParam.substring(komma1+1, komma2).toInt();
                myblueLevel = getParam.substring(komma2+1, komma3).toInt();
               
                myOn = getParam.substring(komma3+1, komma4).toInt();
                myOff = getParam.substring(komma4+1).toInt();

                blinker = true;
                rainbow = false;
                fire = false;
               
                isGet = true;
              }
              inputLine = "";
            }
            else if (c != '\r') {
              // add character to the current line
              currentLineIsBlank = false;
              inputLine += c;
            }
          }
        }
        // give the web browser time to receive the data
        delay(1);
        // close the connection:
        client.stop();
        Serial.println(F("client disconnected"));
      }
      if (fire) fireEffect();
      if (rainbow) rainbowCycle();
      if (blinker) blinkerEffect();
    }

    // Reset stripe, all LED off and no effects
    void reset() {
      for(int i=0; i<stripe_numPixels(); i++) {
        stripe_setPixelColor(i, 0);
      }
      stripe_setBrightness(255);
      stripe_show();
      fire = false;
      rainbow = false;
      blinker = false;
    }

    // LED flicker fire effect
    void fireEffect() {
      for(int x = 0; x <stripe_numPixels(); x++) {
        int flicker = random(0,55);
        int r1 = 226-flicker;
        int g1 = 121-flicker;
        int b1 = 35-flicker;
        if(g1<0) g1=0;
        if(r1<0) r1=0;
        if(b1<0) b1=0;
        stripe_setPixelColor(x,stripe_color(r1,g1, b1));
      }
      stripe_show();
      delay(random(10,113));
    }

    // Slightly different, this makes the rainbow equally distributed throughout
    void rainbowCycle() {
      uint16_t i;

      if (rainbowColor++>255) rainbowColor=0;
      for(i=0; i< stripe_numPixels(); i++) {
        stripe_setPixelColor(i, Wheel(((i * 256 / stripe_numPixels()) + rainbowColor) & 255));
      }
      stripe_show();
      delay(20);
    }

    void blinkerEffect() {
     for(int i=xfrom; i<=yto; i++) {
        stripe_setPixelColor(i, stripe_color(myredLevel,mygreenLevel,myblueLevel));
      }
      stripe_show();
     delay(myOn);
     for(int i=xfrom; i<= yto; i++) {
        stripe_setPixelColor(i, stripe_color(0,0,0));
      }
      stripe_show();
    delay(myOff);
    }

    // Input a value 0 to 255 to get a color value.
    // The colours are a transition r - g - b - back to r.
    uint32_t Wheel(byte WheelPos) {
      WheelPos = 255 - WheelPos;
      if(WheelPos < 85) {
        return stripe_color(255 - WheelPos * 3, 0, WheelPos * 3);
      }
      if(WheelPos < 170) {
        WheelPos -= 85;
        return stripe_color(0, WheelPos * 3, 255 - WheelPos * 3);
      }
      WheelPos -= 170;
      return stripe_color(WheelPos * 3, 255 - WheelPos * 3, 0);
    }

    int colorVal(char c) {
      int i = (c>='0' && c<='9') ? (c-'0') : (c - 'A' + 10);
      return i*i + i*2;
    }

    void sendOkResponse(WiFiClient client) {
      client.println(F("HTTP/1.1 200 OK"));
      client.println(F("Content-Type: text/html"));
      client.println(F("Connection: close"));  // the connection will be closed after completion of the response
      client.println();
      // standard response
      client.print(F("OK,"));
      client.print(stripe_numPixels());
      client.print(F(","));
      int oncount=0;
      for(int i=0; i<stripe_numPixels(); i++) {
        if (stripe_getPixelColor(i) != 0) oncount++;
      }
      client.println(oncount);
    }

    Offline ArminK

    • Jr. Member
    • **
    • Beiträge: 96
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #30 am: 27 September 2016, 16:56:08 »
    Hallo zusammen,

    spiele auch schon länger mit Neopixels (allerdings die Ringe) und ESP-Ansteuerung herum. Gesteuert wird das ganze über ein Webinterface (also auch von fhem aus) bei dem man verschiedene Effekte (u.a. auch der Regenbogeneffekt), sowie Farbe/Helligkeit ändern kann. Ich habe mir aus Internet-Funden und Wifimanager für den ESP einen Sketch gebaut, mit dem es möglich ist die Wifi-Anbindung über einen im ESP integrierten Konfigurations-Webserver zu anzulegen (falls er sich nicht mit der zuletzt bekannten SSID verbinden kann wird der Konfigurationsmodus gestartet). Ich verwende das für solche "Blumenlampen", siehe Anhang (aus dem 3D-Drucker). Wenn es jemanden interessiert kann ich mal alles zusammen suchen, eventuell könnte man ja auch den Wifimanager noch in den Sketch aus diesem Fred integrieren, ich finde das sehr praktisch.
    Grüße
    Armin
    Cubietruck mit fhem 5.7;1xCUL USB, 2xCUNO, 1xCUL Raspi über Fhem2Fhem, 2xHMLAN; diverse Homematic und FS20-Komponenten; AVR NetIO (derzeit inaktiv); 6 x Sonos-Player; diverse Eigenbauten mittels FS20 WUE, ESPEasy, MQTT, MySensors

    Offline Edi77

    • Full Member
    • ***
    • Beiträge: 297
    • Der Weg ist das Ziel
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #31 am: 14 Oktober 2016, 22:54:57 »
    Schönes Projekt, gefällt mir, habs auch sofort nachgebaut und läuft.
    Ich hätte da nur eine Frage, wie steuert man die Helligkeit der LEDs?
    Master FHEM 5.8 als VM auf einem ESX mit Mint Linux mit CUNO 868 | RPi 1 ser2net COC | HMUARTLGW | Arduino Mega mit Firmata| RPi mit SMAspot via Bluetooth an Solarwechselrichter & Stromzähler | RPi mit GammaScout,nanoCUL868 | MQTT mit EasyESP 8266 | MySensors | LuftdatenInfo

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #32 am: 15 Oktober 2016, 00:13:01 »
    Du musst die Helligkeitswerte der drei Grundfarben gleichmäßig verkleinern, aus 256,256,0 für gelb wird für halbe Helligkeit 128,128,0 usw.
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline Edi77

    • Full Member
    • ***
    • Beiträge: 297
    • Der Weg ist das Ziel
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #33 am: 16 Oktober 2016, 00:53:42 »
    Hallo

    DANKE klingt logisch, hatte das aber in anderen Projekten auch schon erlebt das es eine spezielle Helligkeits Variable gab.
    Master FHEM 5.8 als VM auf einem ESX mit Mint Linux mit CUNO 868 | RPi 1 ser2net COC | HMUARTLGW | Arduino Mega mit Firmata| RPi mit SMAspot via Bluetooth an Solarwechselrichter & Stromzähler | RPi mit GammaScout,nanoCUL868 | MQTT mit EasyESP 8266 | MySensors | LuftdatenInfo

    Offline erpel

    • Newbie
    • Beiträge: 1
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #34 am: 21 Oktober 2016, 14:14:44 »
    Hi swhome,

    danke fuer das Projekt!

    Ich habe es jetzt auch mal mit einem ESP12E in Verbindung mit einem 144er Neopixel ausprobiert und muss sagen: Es klappt super (auch mit OTA-Firmware-Updates)!

    Koenntest Du bitte den Code fuer das FHEM-Modul sowie die beiden Firmwares (Arduino/ESP) auf GitHub hochladen?
    Bzw. falls Du da kein Interesse daran hast, haettest Du was dagegen, wenn ich es hochladen wuerde?

    Ich wuerde gerne ein bisschen mit dem Code rumspielen und da bietet sich ein entsprechendes Repository fuer an.
    Auch kann man einfacher Verbesserungen von anderen einbauen (Stichwort: Forks und Pull Requests).
    Und man kann dann das Modul runterladen ohne sich extra hier im Forum anmelden zu muessen...

    Danke und Gruss,
    Christian

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #35 am: 24 Oktober 2016, 08:52:37 »
    Freut mich dass es auch bei Dir funktioniert. Ich werde es hochladen.
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #36 am: 25 Oktober 2016, 19:57:24 »
    So, nun gibts die neueste Version in Github: https://github.com/sw-home/FHEM-LEDStripe

    Bitte mal checken obs funktioniert.

    @juppzupp: Ist die Funktion von nofx nicht eigentlich schon mit off abgedeckt? Habe deine beiden Features aktuell noch nicht im Perl Modul und in den Arduino Versionen eingepflegt, das kommt noch.
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline swhobby

    • New Member
    • *
    • Beiträge: 3
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #37 am: 10 November 2016, 15:08:11 »
    Hallo,

    ich habe mal das ganze auch auf Basis eines ESP8266 nachgebaut. Leider funktioniert es bei mir noch nicht. Ich habe das Problem, den richtigen Pin für den LED Stripe anzugeben.
    Im Programm wird ja der Pin 14 bzw. 12 angegeben. Ich vermute mal das es sich hierbei um die Angabe für den Arduino handelt.
    Welcher Pin wird den für den ESP8266 hier angegeben?
    Dann habe ich noch das Problem, dass der Aufruf strip_setup() das ganze zum Absturz bringt, keine Ausgabe auf der Konsole. Ohne diesen Aufruf kann ich zumindestens in der Konsole die Verbindung mit FHEM verfolgen. Kann mir jemand einen Tip geben?

    mfg
    Heinz-Rolf

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #38 am: 11 November 2016, 07:45:23 »
    Das müsste Juppzupp beantworten, ich hab selber leider noch keine ESP Version gebaut. Wär aber mal eine Aufgabe fürs Wochenende :-)
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline swhobby

    • New Member
    • *
    • Beiträge: 3
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #39 am: 11 November 2016, 11:50:41 »
    Dann gebe ich die Frage doch mal direkt weiter an Juppzupp. Mittlerweile bin ich schon so weit, das ein Set im FHEM in dem IDE-Monitor protokolliert wird. Aber eine Ansteuerung der LED´s erfolgt leider nicht.
    zB. Set LED_Stripe RGB FFFFFF :

    GET /range/0,9/255,255,255 HTTP/1.1
    TE: deflate,gzip;q=0.3
    Keep-Alive: 300
    Connection: Keep-Alive, TE
    Host: 192.168.2.174
    User-Agent: libwww-perl/6.08
    client disconnected

    Ich habe "#define LEDPIN1           14" angegeben und Data vom LED Stripe auf GPIO14 am ESP-Modul verbunden. Ist das so richtig?

    Arduino-IDE Version 1.6.5
    aktuelle Neopixel-Library
    aktuelle ESP8266WiFi-Library
    und mit vstripe kompiliert.

    mfg
    Heinz-Rolf

    Offline swhobby

    • New Member
    • *
    • Beiträge: 3
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #40 am: 14 November 2016, 11:53:03 »
    Hallo,

    nach intensiver Fehlersuche funktioniert jetzt alles. Hatte leider doch eine alte Neopixel- Library.
    Nach dem Austausch ist jetzt alles ok.

    mfg
    Heinz-Rolf

    Offline yamfhem

    • Jr. Member
    • **
    • Beiträge: 58
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #41 am: 28 November 2016, 08:16:53 »
    Hallo zusammen,

    .... Wenn es jemanden interessiert kann ich mal alles zusammen suchen, eventuell könnte man ja auch den Wifimanager noch in den Sketch aus diesem Fred integrieren, ich finde das sehr praktisch.
    Grüße
    Armin

    Warum hat hier noch keiner Ja gesagt!?
    Ja bitte, such mal alles zusammen.

    Geuß yamfhem

    Offline LAN-Opfer

    • New Member
    • *
    • Beiträge: 34
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #42 am: 05 Dezember 2016, 17:25:29 »
    ...ich habe das Ding auch mal mit einem Wemos D1 nachgebaut: leider bleibt bei mir das Playfile in der letzten Zeile stehen - ich hätte erwartet, dass das File endlos abgespielt wird. Habe ich den falschen Editor - muss da ein EOF stehen?

    Uwe
    FHEM5.7 auf Raspberry 2 mit V 1.53 CUL868, HMLAN, Z-Wave 3.99

    Offline LAN-Opfer

    • New Member
    • *
    • Beiträge: 34
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #43 am: 07 Dezember 2016, 21:01:29 »
    ...ich habe jetzt andere Editoren getestet - leider ohne Ergebnis  :'(
    Oder ist eine Endlosschleife gar nicht implementiert??

    Uwe
    FHEM5.7 auf Raspberry 2 mit V 1.53 CUL868, HMLAN, Z-Wave 3.99

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #44 am: 13 Dezember 2016, 21:36:52 »
    Hi, für die Enlosschleife muss ein Attribut repeat (oder so ähnlich) auf 1 gesetzt werden.
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline speddy99

    • New Member
    • *
    • Beiträge: 34
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #45 am: 27 Dezember 2016, 09:16:31 »
    Moin Moin,
    und Danke für das nette Modul. Innerhalb 10 Minuten fertig..... neuer Rekord :-)

    Habe soeben einen Wemos D1 mini damit befüllt und steuer nun erst mal  8 Led's.
    Das packt der kleine Wemos noch, für mehr LED muss ich mir erst mal Gedanken über die Stromversorgung der LED Strip machen.
    Wie habt ihr das angeklemmt?

    Mit den 8 Led's werde ich mir erst mal einen kleinen Status Bilderrahmen bauen.

    Anschließend möchte ich für's Heimkino länger LED Strip bauen, da kommen garantiert noch mal fragen :-)

    lg Michael


    Raspberry Pi Ver.3 16GB SD, HM Lan,  6* HM CC RT DN 3* HM SEC SC 2
    1-Wire 5*DS18B20 direkt am Raspi
    Signalduino,8*Intertechno Steckdosen,4*WS0002 Feuchtefühler
    WEMOS D1 Mini mit Led´s Statusbildschirm

    Offline Elektrofreak

    • Jr. Member
    • **
    • Beiträge: 59
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #46 am: 03 Januar 2017, 21:05:22 »
    Hallo zusammen,

    ich würde das Modul gerne zur Ansteuerung von einem Status-Display mit einem ESP8266 verwenden. Allerdings habe ich für diesen noch keine Firmware selber kompiliert.

    Bis jetzt habe ich nur die ESPEasy-Firmware mit dem FHEM-Plugin verwendet. Gibt es neben der Ansteuerung der neopixel noch weitere funktionen, die ähnlich wie bei ESPEasy unterstützt werden? Wäre es ggf. möglich, den Code als ESPEasy-Plugin zu Verfügung zu stellen / um-zu-programmieren?

    Ich freue mich schon auf die ersten Versuche mit den neopixel und FHEM  :)

    Offline dev0

    • Developer
    • Hero Member
    • ****
    • Beiträge: 2554
      • _.:|:._
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #47 am: 04 Januar 2017, 08:19:19 »
    Wäre es ggf. möglich, den Code als ESPEasy-Plugin zu Verfügung zu stellen / um-zu-programmieren?

    Es gibt bereits ein NeoPixel Basic Plugin, dass man recht einfach um Funktionen erweitern kann.

    Offline Elektrofreak

    • Jr. Member
    • **
    • Beiträge: 59
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #48 am: 05 Januar 2017, 20:46:38 »
    Hallo.

    Es gibt bereits ein NeoPixel Basic Plugin, dass man recht einfach um Funktionen erweitern kann.

    Ich habe gerade gesehen, dass das Plugin schon im Source-Code von der aktuellen Version R147_RC8 zu sein scheint. Ich finde es aber nirgends in der pre-compillierten Version im Web-Interface. Muss ich das selber mit der Lib kompillieren oder bin ich zu blöd, das Plugin zu finden?  :o

    Danke für die Info!

    Offline dev0

    • Developer
    • Hero Member
    • ****
    • Beiträge: 2554
      • _.:|:._

    Offline Elektrofreak

    • Jr. Member
    • **
    • Beiträge: 59
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #50 am: 06 Januar 2017, 07:34:25 »
    Ja, selbst kompilieren: https://github.com/letscontrolit/ESPEasyPluginPlayground/blob/master/_P122_NeoPixel.ino

    Ok, vielen Dank. Werde ich mal ausprobieren. Trotzdem gefällt mir dein das Modul  :). Am liebsten hätte ich eine Kombination aus beiden bzw. eine Integration von deinem dem Modul in die ESPEasy-Firmware ;D
    « Letzte Änderung: 06 Januar 2017, 08:09:58 von Elektrofreak »

    Offline dev0

    • Developer
    • Hero Member
    • ****
    • Beiträge: 2554
      • _.:|:._
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #51 am: 06 Januar 2017, 07:50:40 »
    Trotzdem gefällt mir dein Modul
    Ich vermute, dass Du mich jetzt mit swhome verwechselst oder Du meinst tatsächslich das Lights Plugin, das mehr oder weniger nur ein PoC ist...

    Offline Elektrofreak

    • Jr. Member
    • **
    • Beiträge: 59
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #52 am: 09 Januar 2017, 11:08:33 »
    So, ich habe jetzt ein wenig mit dem Modul und der Firmware gespielt. Funktioniert an sich ganz gut  :).

    Ich habe nur ein Feature-Request:
    Ich schalte den ESP und die LEDs bei Nicht-Gebrauch ab. Wenn ich nur die LEDs aber nicht den ESP abschalte, merkt er sich die Zustände der LEDs und stellt den Zustand alle LEDs beim nächsten Update von einer LEDs wieder her.

    Nun wäre ein ähnliches Feature für das FHEM-Modul super, welches auch dann funktioniert, wenn ich den ESP komplett abschalte und erneut einschalte. Dazu müsste ein kleines Array intern gespeichert werden, welches den Zustand aller LEDs speichert und bei einem reconnect automatisch wiederherstellt. wäre das möglich?  ::)

    BTW: Ich könnte mir gut vorstellen, dass die ESP-Firmware und das FHEM-Modul für viele Status-Display-Anhänger zum Must-Have wird  ;D

    Edit:
    Ja, selbst kompilieren: https://github.com/letscontrolit/ESPEasyPluginPlayground/blob/master/_P122_NeoPixel.ino

    Das hat auf Anhieb leider nicht geklappt. Kompillieren und flashen funktioniert. Ich finde zwar das Plugin und kann es auch einrichten, den Befehl kann ich aber trotzdem nicht absenden (unknown command) und mir fehlt auch die einfache Integration in FHEM...  :'(
    « Letzte Änderung: 09 Januar 2017, 11:11:20 von Elektrofreak »

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #53 am: 14 Januar 2017, 15:44:07 »
    Das Feature ist eine gute Idee, mir missfällt auch dass man nach dem Ausschalten nicht wieder einfach den vorigen Zustand herstellen kann. Werde mich mal dran setzen. Würde auch gern die FHEM integrierte http Funktion mit non blocking iO einsetzen...
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline Wilm

    • New Member
    • *
    • Beiträge: 8
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #54 am: 14 Januar 2017, 18:03:54 »
    Hallo,

    habe den Sketch erfolgreich auf meinen ESP8266 geladen und kann ihn auch per Curl und dem entsprechenden Aufruf steuern. Leider kann ich jedoch das FHEM Modul nicht laden, bekomme immer einen Fehler

    2017.01.14 18:00:28 1: ledstripe
    2017.01.14 18:00:29 1: PERL WARNING: Use of uninitialized value $r[0] in string eq at ./FHEM/98_update.pm line 308.
    2017.01.14 18:00:29 1: PERL WARNING: Use of uninitialized value $r[0] in string ne at ./FHEM/98_update.pm line 318.
    2017.01.14 18:00:29 1: nothing to do...

    Was mache ich falsch?

    Viele Grüße,
    Wilm

    Offline Papaloewe

    • Full Member
    • ***
    • Beiträge: 309
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #55 am: 16 Januar 2017, 14:22:40 »
    Hallo,

    endlich bin ich am Wochenende dazu gekommen. Soweit funktioniert es auch auf Anhieb.
    Dann habe ich mich mit den Playfiles befasst und wollte ein einzelnes Lauflich über 20 (2x10) LED's huschen lassen.

    Soweit auch noch gut, aber wie mir scheint wird das Playfile immer Zeile für Zeile übertragen, richtig?

    Sobald ich das Lauflicht etwas schneller haben möchte, wird es kritisch!
    Aussetzer und mächtige Ruckler...

    Lässt sich das auch vielleicht so ändern, dass das Playfile nur einmal und dann komplett zum ESP übertragen wird und dann nur noch "intern" aufgerufen wird?

    Gruß Thomas


    Offline newjoist

    • New Member
    • *
    • Beiträge: 4
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #56 am: 17 Januar 2017, 07:50:53 »
    Ich betreibe einen WS2812B LED-Strip mit einem Arduino als Controller an einem Enigma2 Receiver. Gibt es da auch Möglichkeiten "von außen" die LEDs zu steuern?

    Offline Papaloewe

    • Full Member
    • ***
    • Beiträge: 309
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #57 am: 17 Januar 2017, 16:32:46 »
    Hallo,

    habe den Sketch erfolgreich auf meinen ESP8266 geladen und kann ihn auch per Curl und dem entsprechenden Aufruf steuern. Leider kann ich jedoch das FHEM Modul nicht laden, bekomme immer einen Fehler

    2017.01.14 18:00:28 1: ledstripe
    2017.01.14 18:00:29 1: PERL WARNING: Use of uninitialized value $r[0] in string eq at ./FHEM/98_update.pm line 308.
    2017.01.14 18:00:29 1: PERL WARNING: Use of uninitialized value $r[0] in string ne at ./FHEM/98_update.pm line 318.
    2017.01.14 18:00:29 1: nothing to do...

    Was mache ich falsch?

    Viele Grüße,
    Wilm

    Komisch, ich habe dieselbe Meldung bei diesem und einem ganz anderen Modul:
    https://forum.fhem.de/index.php/topic,64610.msg562734.html#msg562734

    Was haben denn die beiden gemeinsam?

    Ich denke es liegt an dem Controlfile im Git.
    Das DEL wird nicht (mehr) vom update unterstützt.
    « Letzte Änderung: 17 Januar 2017, 18:17:38 von Papaloewe »

    Offline bjbrill

    • New Member
    • *
    • Beiträge: 13
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #58 am: 25 Januar 2017, 09:33:40 »
    Herzlichen dank für dieses tolle Modul,
    das eröffnet mir hunderte neue Beleuchtungsmöglichkeiten.
    Zur Zeit baue ich einen ausgehöhlten Baumstamm,
    der "Jetzt" von innen beleuchtet ist, sieht mit Fire & Rainbow schon super aus.
    Mal sehen was für individuelle Lichtzehnarien ich noch hin bekomme.

    Großes Lob und Riesen Dank Björn

    Nachtrag: Am Wochenende ein NodeMCU mit 30 NeoPixel zu einer Aquarien Nachtbeleuchtung gelötet.
    (Sonnen auf und Untergang inbegriffen), super!
    Ein Dimmbefehl mit Transitzeiten wäre nicht schlecht, geht aber auch ohne ;-)
    « Letzte Änderung: 30 Januar 2017, 10:18:51 von bjbrill »
    Ubuntu 14.04 Server, Tecalor Heizung/Lüftung, Homematic, Dect200, Jeelink, Unifi Wlan AP, GWY 433 Mhz, Arduino mit Firmata (USB),ESP 8266 mit WS2812b LED, HUE Lights, JeeLight Wifi, Alexa, Bewässerung Garten.

    Offline ComputerZOO

    • Jr. Member
    • **
    • Beiträge: 87
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #59 am: 11 Februar 2017, 18:58:29 »
    Nabend,
    ich bekomme das Modul in FHEM nicht geladen. Wenn ich ein reload 98_LEDStripe in der CMD-Zeile von FHEM eingebe erscheint folgende Fehlermeldung:
    Can't locate Switch.pm in @INC (you may need to install the Switch module) (@INC contains: . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl ./FHEM ./FHEM/lib) at ./FHEM/98_LEDStripe.pm line 26.
    BEGIN failed--compilation aborted at ./FHEM/98_LEDStripe.pm line 26.
    Jemand eine Idee?

    Offline Papaloewe

    • Full Member
    • ***
    • Beiträge: 309
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #60 am: 11 Februar 2017, 19:10:02 »
    Wahrscheinlich musst du noch das Perl Modul "switch" installieren.

    cpan -i switch
    oder so... 8)

    Offline ComputerZOO

    • Jr. Member
    • **
    • Beiträge: 87
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #61 am: 11 Februar 2017, 19:26:43 »
    Das wäre ja zu einfach :-)
    cpan -i switch
    Reading '/home/pi/.cpan/Metadata'
      Database was generated on Sat, 11 Feb 2017 15:17:02 GMT
    Warning: Cannot install switch, don't know what it is.
    Try the command

        i /switch/

    to find objects with matching identifiers.

    EDIT: sudo apt-get install libswitch-perl hat geholfen 8-)
    « Letzte Änderung: 11 Februar 2017, 19:33:22 von ComputerZOO »

    Online RaspiLED

    • Sr. Member
    • ****
    • Beiträge: 719
    • Es begann alles so klein ;-)
    Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #62 am: 11 Februar 2017, 20:39:26 »
    Hi,
    Dann probier doch mal switch.pm zu installieren ;-)

    sudo apt-get install libswitch-perl

    Oder unter CPAN mit
    cpan
    am prompt cpan[1]> dann
    install Switch
    wenn es installiert ist dann ein
    exit

    Gruß Arnd


    Raspi2 mit FHEM, CUL, MySensor, HomeBridge, Presence, Bravia, ...
    Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

    Offline ComputerZOO

    • Jr. Member
    • **
    • Beiträge: 87
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #63 am: 11 Februar 2017, 21:00:33 »
    Dann probier doch mal switch.pm zu installieren ;-)

    sudo apt-get install libswitch-perl

    Funktioniert mit dem Befehl (siehe Edit in meinem vorherigen Post).
    Wenn mich in der nächsten Zeit mal die Langeweile überkommt, dann werde ich mal versuchen das ganze auf fastled umzubauen.

    Offline olli001003

    • New Member
    • *
    • Beiträge: 12
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #64 am: 19 Februar 2017, 14:43:25 »
    Funktioniert mit dem Befehl (siehe Edit in meinem vorherigen Post).
    Wenn mich in der nächsten Zeit mal die Langeweile überkommt, dann werde ich mal versuchen das ganze auf fastled umzubauen.

    Ich hoffe Dich überkommt demnächst mal die Langeweile ;-)

    ------------------

    Besten Dank an swhome für dieses Modul.
    Läuft bei mir seit gestern problemlos an einem 5m Stripe (150 LEDs).


    VG
    Olli
    Proxmox Server, FHEM 5.8 VM, NanoCul Selbstbau 433 & 868 Mhz, MAX! Thermostate Basic, Intertechno Funksteckdosen, WS2812B LED Stripe + ESP8266 Wlan Chip

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #65 am: 19 Februar 2017, 21:29:37 »
    Freut mich dass es so viele Anwendungsmöglichkeit für mein Modul gibt!

    Ich habe angefangen die Anregungen von Elektrofreak umzusetzen, es gibt nun ein on / off Setting und einen neuen Set-Befehl play zum Starten der Animationen. Der on-Befehl versucht sich darin, den letzten Modus vor "off" wieder herzustellen, allerdings werden noch nicht alle LED-Zustände in einem Array gespeichert. Sorry dafür! Ich hab irgendwie zuviele Projekte und zu wenig Geduld mit perl...

    @olli001003: Wäre fastled einfach ein Ersatz für die Neopixel-Library oder ersetzt das gleich die komplette Arduino/ESP-Programmierung?
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline olli001003

    • New Member
    • *
    • Beiträge: 12
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #66 am: 20 Februar 2017, 14:50:17 »

    @olli001003: Wäre fastled einfach ein Ersatz für die Neopixel-Library oder ersetzt das gleich die komplette Arduino/ESP-Programmierung?

    Wenn ich das richtig verstanden habe, ersetzt es die Neopixel-Library UND ist eine komplett andere Programmierung.

    Ich bin noch sehr neu in dem Thema Arduino Programmierung...Von daher ist die oben stehende Aussage mit Vorsicht zu genießen!
    Proxmox Server, FHEM 5.8 VM, NanoCul Selbstbau 433 & 868 Mhz, MAX! Thermostate Basic, Intertechno Funksteckdosen, WS2812B LED Stripe + ESP8266 Wlan Chip

    Offline heikoxxxx

    • New Member
    • *
    • Beiträge: 5
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #67 am: 09 März 2017, 20:54:16 »
    Wirklich ein tolles Modul, einfache Anbindung und funktioniert sofort. 
    Toll wäre es wenn die Files noch flüssig laufen würden und man denn Rainbow bzgl der Geschwindigkeit steuern könnte.
    Zudem wäre ein direkter Aufruf der Effect Files toll.

    LG Heiko

    Offline roedert

    • Full Member
    • ***
    • Beiträge: 481
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #68 am: 21 März 2017, 22:56:44 »
    Hatte das Teil schon vor Monaten erfolgreich getestet, jetzt bin ich dabei das ganze auch mal "in schön" wohnzimmertauglich umzusetzen.
    Ich nutze es bei mir als Statusanzeige für Fenster etc.
    Dabei sind auch 2 "Balkenanzeigen" für den aktuellen Stromverbrauch mit je 20 LEDs. Dazu lasse ich in einer Schleife die Pixel einzeln einschalten (einzeln, da jede LED eine eigene Farbe bekommen soll - fliessend von grün bis rot), die restlichen LEDs schalte ich dann mit "range x y 0 0 0" aus.
    Mir ist jedoch aufgefallen, dass die Schleife zum Einschalten der einzelnen Pixel sehr lange braucht,  pro LED ca 0,5 Sekunden. In dieser Zeit (also bis zu 10 Sekunden) ist FHEM "lahmgelegt". In dieser Zeit kann ich zB mit eienr Fernbedienung nix mehr schalten, da FHEM mit dem LEDstripe beschäftigt ist.
    Hat wer ne Idee wie man das umgehen oder besser umsetzen könnte?
    Zustimmung Zustimmung x 1 Liste anzeigen

    Offline Frank_Huber

    • Sr. Member
    • ****
    • Beiträge: 567
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #69 am: 22 März 2017, 13:49:19 »
    Hi,

    erstmal danke für das super Modul!
    Das ist genau das wonach ich gesucht habe! :-) Einfacher und schneller kann man das fast nicht einrichten!

    kleine feedbacks:
    1. die "commandref" auf Seite 1 könnte noch aufgehübscht werden. gerade der "pixels" befehl. hab ewig nach dem richtigen Trennzwichen gesucht.
    korrekt ist aber einfach alles hintereinandr weg schreiben. also 24stellig. muss man auch erstmal drauf kommen. :-)
    2. Zwei / Drei Sätze zum installieren des ESP. z.B. das importieren der zweiten Datei im Arduino.

    Das wars auch schon.
    Danke nochmal für das Tolle Modul und den Sketch! :)

    Offline Frank_Huber

    • Sr. Member
    • ****
    • Beiträge: 567
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #70 am: 22 März 2017, 15:58:29 »
    Noch eine weitere Frage kam auf,

    über welchen Port kommuniziert FHEM denn mit dem ESP?
    würde das ganze auch mal von extern testen wollen.

    Grüße
    Frank

    EDIT: Port 80. im Log gefunden in ner Fehlermeldung. vergiss die Frage. :-)

    und btw: es muss nicht zwingend IP sein. FQDN geht auch für das device.
    « Letzte Änderung: 22 März 2017, 17:24:36 von Frank_Huber »

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #71 am: 23 März 2017, 09:27:58 »
    Mir ist jedoch aufgefallen, dass die Schleife zum Einschalten der einzelnen Pixel sehr lange braucht,  pro LED ca 0,5 Sekunden. In dieser Zeit (also bis zu 10 Sekunden) ist FHEM "lahmgelegt".

    Das ist bei mir nicht so extrem, aber generell gibt es das Problem hier auch, zum Beispiel beim Übertragen von Pixeln für meine 350 LED's im Schlafzimmer. Die richtige Lösung wäre, die Übermittlung der Daten an die ESP asynchron zu machen. Das erfordert aber einige größere Umstellungen in Code, zu denen ich im Moment leider keine Zeit finde.

    Die von dir genannten 0,5 Sekunden sind aber definitiv zu lang, da stimmt vielleicht was nicht in der ESP Programmierung. Bei mir dauert eine ganze Zeile vielleicht 200ms, allerdings Arduino mit wired ethernet.
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

    Offline roedert

    • Full Member
    • ***
    • Beiträge: 481
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #72 am: 23 März 2017, 09:44:41 »
    ....allerdings Arduino mit wired ethernet.

    Ist es bei mir auch - ein Arduino Uno mit Ethernet-Modul. FHEM läuft auf einem Intel i3 ... also auch ein ziemlich performantes Teil.
    Habe mal ein Shellscript mit einer Schleife mit wget http://<ip>/rgb/<pixel>/<r>,<g>,<b> getestet ... die Geschwindigkeit ist ähnlich langsam (6,5 sec für 10 LEDs)

    Offline higlhagl

    • New Member
    • *
    • Beiträge: 21
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #73 am: 25 März 2017, 10:52:28 »
    ich bekomme immer die meldung
    Cannot load module LEDStripe
    bitte um hilfe modul 98_LEDStipe ist im FHEM-Ordner

    danke

    Offline Kreon

    • New Member
    • *
    • Beiträge: 5
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #74 am: 25 März 2017, 13:48:44 »
    @higkhagl:
    Dann probier doch mal switch.pm zu installieren ;-)

    sudo apt-get install libswitch-perl

    Oder unter CPAN mit
    cpan
    am prompt cpan[1]> dann
    install Switch
    wenn es installiert ist dann ein
    exit

    Offline higlhagl

    • New Member
    • *
    • Beiträge: 21
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #75 am: 25 März 2017, 17:52:27 »
    Danke hat geklappt Devise angelegt.
    aber weiss nicht wie ich meinen wemos flashen kann,
    vom pc oder vom raspberry ?
    mit ein serial/usb Kabel oder direkt am usb-port , mit welcher Software dazu ?
    dann noch welche File muss auf den wemos drauf

    sorry sehr viele offenen punkte bei mir (Anfänger halt)

    danke im voraus

    ANDY

    Offline Frank_Huber

    • Sr. Member
    • ****
    • Beiträge: 567
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #76 am: 27 März 2017, 09:04:29 »
    aber weiss nicht wie ich meinen wemos flashen kann,
    vom pc oder vom raspberry ?
    mit ein serial/usb Kabel oder direkt am usb-port , mit welcher Software dazu ?
    dann noch welche File muss auf den wemos drauf

    in Stichworten:
    - von Github die files holen. vstripe.ino und httpledstripe_esp.ino (im gleichen Ordner ablegen)
    - Arduino IDE auf dem PC installieren
    - mit der Arduino IDE die htp.....ino öffnen
    - WLAN Daten anpassen
    - flashen

    /Frank

    Offline Frank_Huber

    • Sr. Member
    • ****
    • Beiträge: 567
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #77 am: 27 März 2017, 14:21:37 »
    Ist es ein Fehler oder läuft hier nur bei mir was falsch:

    bei jedem Update check gibt FHEM mir die ledstripe als veraltet an und will updaten.
    im Log finde ich keinen Fehler beim Update.

    Zitat
    fhem
    nothing to do...

    ledstripe
    List of new / modified files since last update:
    UPD FHEM/98_LEDStripe.pm

    Log vom letzten Update (gerade vor paar Minuten:
    Zitat
    2017.03.27 14:09:19 1: ledstripe
    2017.03.27 14:09:24 1: UPD FHEM/98_LEDStripe.pm
    2017.03.27 14:09:25 1: saving fhem.cfg

    im Ordner ist die PM Datei mit aktuellem Datum:
    Zitat
    -rw-r--r-- 1 fhem dialout  15300 Mär 27 14:09 98_LEDStripe.pm

    liegt der immer wiederkehrende Update Vorgang an meinem System?
    Oder ist hier was faul?
    funktionieren tuts einwandfrei...

    Grüße
    Frank

    Offline higlhagl

    • New Member
    • *
    • Beiträge: 21
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #78 am: 27 März 2017, 19:38:11 »
    Danke Frank
    habe die Files und das Programm inst. und angepasst
    aber mit was und wie flashe ich den wemos habe folgende Hardware

    USB zu TTL-Konverter-Modul mit eingebautem in CP2102
    oder Ugreen 1m USB auf RS232 Seriell Adapter USB Seriell Konverter Kabel USB Seriell DB9 Stecker auf A Stecker mit PL2303 Chipsatz

    Aufruf im Arduino ist Bootloader Brennen ?
    Kannst du mir bitte eine kurze Skitze schreiben, im Netz habe ich nix gefunden

    Vielen Dank

    Offline higlhagl

    • New Member
    • *
    • Beiträge: 21
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #79 am: 28 März 2017, 19:43:46 »
    Danke habe alles gelöst !
    Gefällt mir Gefällt mir x 1 Liste anzeigen

    Offline Frank_Huber

    • Sr. Member
    • ****
    • Beiträge: 567
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #80 am: 08 April 2017, 23:20:39 »
    Hi,

    LEDStripe will immer updaten, obwohl die Version identisch ist.

    updatre check sagt jedes mal:
    Zitat
    ledstripe
    List of new / modified files since last update:
    UPD FHEM/98_LEDStripe.pm

    New entries in the CHANGED file:
    Feb 06, 2017
    btw: last update war heute früh.
    woran kann das liegen?

    Offline higlhagl

    • New Member
    • *
    • Beiträge: 21
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #81 am: 10 April 2017, 22:29:00 »
    Hi
    ich steuere die status-anzeigeled's mit DOIF, nacht schalte ich die anzeige aus
    gibt es eine möglichkeit beim einschalten alle DOIF's anzuschmeissen dass
    der status angezeigt wird. so habe ich erst die anzeige wenn ein ereigniss
    eintritt
    beispiel aus der cfg:([Kont_BalkW] eq "open") (set LED pixel 0 30 0 0) DOELSE (set LED pixel 0 0 30 0)
    verwende auch : attr LED power_switch <Anzeige>

    Offline Frank_Huber

    • Sr. Member
    • ****
    • Beiträge: 567
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #82 am: 12 April 2017, 07:43:42 »
    Moin,

    Sollte über Befehle im DOIF machbar sein.
    Set Doif Name DOIFAME:state.

    Vorausgesetzt natürlich dass die DOIF weiterarbeiten und du die Abschaltung woanders machst.

    Offline Homer1978

    • New Member
    • *
    • Beiträge: 15
    • Homer1978
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #83 am: 13 April 2017, 16:58:09 »
    Erst mal vielen Dank für dieses Modul und auch die Umsetzung auf ESP. Nun meine Frage, da ich keine Ahnung habe wie man das lösen könnte.
    Ist es von der Programmierung schwer dem arduino oder ESP einen Eingang zu spendieren, der es ermöglicht den Stripe vor Ort einzuschalten. Da sind ja eigentlich jede Menge gpios frei und extra einen zweiten ESP oder Schalter hinzubekommen nur zum Einschalten wäre doch Verschwendung.
    Ich Stelle mir das so vor das man einen gpio einstellen kann wo man einen Schalter oder Taster anschließt der entweder selbst oder an Fhem übermittelt das eine Farbe angemacht werden soll.
    Irgendwer eine Idee dazu?
    Fhem auf Raspberry2, Cul433 und 868, 9 Max Fensterkkontakte und 4 Thermostate. 2 easyesp und ein arduino über Configurable Firmdata eingebunden zur Tür Steuerung

    Offline Torben80

    • Jr. Member
    • **
    • Beiträge: 77
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #84 am: 16 April 2017, 23:55:07 »
    in Stichworten:
    - von Github die files holen. vstripe.ino und httpledstripe_esp.ino (im gleichen Ordner ablegen)
    - Arduino IDE auf dem PC installieren
    - mit der Arduino IDE die htp.....ino öffnen
    - WLAN Daten anpassen
    - flashen

    /Frank

    Huhu, habe mir auch das WEMOS D1 Mini besorgt, und die o.g. Schritte vollzogen.

    Das Flashen läuft "hoffe ich" einwandfrei, da ich keinerlei Fehler bekommen haben.
    Aber wie steuere ich das Modul an? Mein DHCP zeigt  mir nichts an, dass er eine IP gerade vergeben hat und ich weiss nicht woher sich das Modul eine IP gezogen hat, wenn das überhaupt der fall ist.
    Weiter weiss ich auch nicht wo das hier aus "roedert's" Post Antwort Nr. 2 stehen soll:
    // Enter a MAC address and IP address for your controller below
    // uncomment if using fixed IP:
    //byte mac[] = { 0x90, 0x42, 0xDA, 0x0D, 0x5D, 0x99 };

    // The IP address will be dependent on your local network
    // uncomment if using fixed IP:
    //IPAddress ip(10,222,11,42);

    Fakt ist, ich habe das Modul WEMOS D1 Mini, kann es flashen, habe den 8'er LED-Streifen an Pin D5 was ja Arduino Port 14 ist dran.

    UPDATE: Ich habe in der Arduino-IDE den serial-Monitor an und sehe, dass das Modul in "Connecting to Meine_eingetragene_SSID" hängt und nichts passiert, er läuft sich da wohl tot...

    Hat jemand eine Idee?

    FROHE OSTERN,
    Torben

    Online RaspiLED

    • Sr. Member
    • ****
    • Beiträge: 719
    • Es begann alles so klein ;-)
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #85 am: 17 April 2017, 03:19:20 »
    Hi,
    Ist doch beschrieben, Du musst Deine WLAN Daten in der httpledstripe_esp.ino Datei eintragen, bevor Du diese kompilierst und auf den ESP Chip flasht.
    (https://uploads.tapatalk-cdn.com/20170417/bc50cd61f044f3f4637d849764c16efe.jpg)
    Gruß Arnd


    Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
    Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

    Offline Torben80

    • Jr. Member
    • **
    • Beiträge: 77
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #86 am: 17 April 2017, 09:25:10 »
    Das ist richtig, aber da muss ich ja nur ssid und password eintragen. Von ip steht da nichts. Das ist es ja was ich komisch finde.


    Gesendet von iPhone mit Tapatalk

    Offline Frank_Huber

    • Sr. Member
    • ****
    • Beiträge: 567
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #87 am: 17 April 2017, 09:56:37 »
    IP kommt vom DHCP deines Netzwerks.

    Gesendet von meinem JY-S3 mit Tapatalk


    Offline Torben80

    • Jr. Member
    • **
    • Beiträge: 77
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #88 am: 17 April 2017, 11:36:34 »
    Moin Frank. Das habe ich mir schon gedacht, aber das möchte ich eigentlich nicht. Möchte bei solchen Komponenten lieber static IP.

    Aber im Moment sieht es eher so aus als könne er sich nicht Connecten...


    Gesendet von iPhone mit Tapatalk

    Offline Frank_Huber

    • Sr. Member
    • ****
    • Beiträge: 567
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #89 am: 17 April 2017, 11:44:55 »
    Lass ihn eine vom DHCP holen und vergib diese dann im DHCP fest als Reservierung. Das kann eigentlich jeder DHCP...

    Wenn er nicht connected stimmt was mit den zugangsdaten nicht.

    Gesendet von meinem JY-S3 mit Tapatalk


    Online RaspiLED

    • Sr. Member
    • ****
    • Beiträge: 719
    • Es begann alles so klein ;-)
    Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #90 am: 17 April 2017, 12:32:51 »
    Hi,
    Hast Du einen besonderen Namen (SSID mit Sonder- oder Leerzeichen oder zu lang)? Oder halt ein besonderes Passwort?
    Teste doch mal mit einem einfachen GastWLAN ;-)
    Gruß Arnd


    Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
    Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

    Offline Torben80

    • Jr. Member
    • **
    • Beiträge: 77
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #91 am: 17 April 2017, 14:59:09 »
    Update:
    vielen Dank erstmal für die schnelle Hilfe!

    Fehler Nr. 1 bei mir: Wer seine WLAN-SSID falsch schreibt, der  kommt nicht rein. Habe alles groß geschrieben <---- IDIOT
    Fehler Nr. 2 habe in der Arduino IDE die ESP8266 Vers 2.2 genutzt, habe dann auf 2.3 geupdatet (im Boardmanager) danach lief alles.

    Also zusammen gefasst für den der das als letztes ließt und das gleiche vor hat...

    + Arduino-IDE downloaden und installieren
      - Adafruit NeoPixel Library (Adafruit_NeoPixel-master.zip) von Github downloaden und in den Arduino / Libraries Ordner packen
      -unter DATEI  / VOREINSTELLUNGEN im Punkt "zusätzliche Boardverwalter-URL" folgende URL einfügen:
             "http://arduino.esp8266.com/stable/package_esp8266com_index.json"
      - danach in der IDE unter WERKZEUGE folgende Einstellungen vornehmen:
      - Board --> Boardverwalter --> ESP8266 Version 2.3 auswählen --> installieren
      +danach wieder auf:
      - Board "Wemos D1 R2 & mini"
      - CPU-Frequency "80MHz"
      - Flash-Size "4M (3MSpiffs)"
      - UploadSpeed "921600"
      - Port "wenn WEMOS Baustein angesteckt sollte hier ein Port auswählbar sein" (je nach USB Port  variiert er)
    +danach
    - von Github die files holen. (https://github.com/sw-home/FHEM-LEDStripe)
    - vstripe.ino und httpledstripe_esp.ino (im gleichen Ordner ablegen)
    - httpledstripe_esp.ino mit Arduino-IDE laden
    - WLAN Daten und NeoPixel anpassen (siehe unten meine Enstellungen)
    - flashen / hochladen

    const char* ssid     = "MeineWLANssid";
    const char* password = "ganzGeheim";
    WiFiServer server(80);
    // Which pin on the Arduino is connected to the NeoPixels?
    #define LEDPIN1           14
    #define LEDPIN2           12

    // How many NeoPixels are attached to the Arduino?
    #define NUMPIXELS1     8
    #define NUMPIXELS2     0

    Am besten einmal vom Strom trennen den WeMos und neu starten lassen. Jetzt sollte er schon eine IP bekommen haben.

    danach die Datei 98_LEDStripe aus dem Github-Ordner in "/opt/fhem/FHEM" kopieren, die Dateiberechtigungen anpassen (sonst gibt es beim Update des Moduls evtl probleme) und versuchen sein "device" zu definieren.
    Beispiel:
    define LED_Rahmen LEDStripe 192.168.11.39Bei wem JETZT die Fehlermeldung kommt, dass er das Modul LedStripe nicht laden konnte, der muss noch auf seinem Raspi libswitch-perl installieren...
    sudo apt-get install libswitch-perlDanach wieder versuchen das Device  zu definieren.

    Sollte jetzt geklappt haben. Nachdem das Device nun angelegt ist und wir die NeoPixel angeschlossen haben am Device (ich habe nur einen 8'er LED-Streifen dran), kann man auf der Weboberfläche im "SET" befehl einfach mal "Rainbow" oder "fire" auswählen und FEUER! ääähhh SET klicken. Dann kommt etwas Fehenstaub und Magic und die LEDs sollten leuchten. Entschuldigt mein Humor aber ich war begeistert als das lief :-)

    So, nun erstmal etwas damit spielen...
    Ich hoffe ich konnte irgendjemandem mit dieser Zusammenfassung helfen.

    Schönen OSTERMONTAG noch ;-)
    Torben
    « Letzte Änderung: 17 April 2017, 15:29:30 von Torben80 »

    Offline Frank_Huber

    • Sr. Member
    • ****
    • Beiträge: 567
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #92 am: 17 April 2017, 15:16:13 »
    Eines noch:
    Die Berechtigung der 98_LEDStripe.pm prüfen / anpassen. Sonst hast evtl später Probleme das Modul zu updaten.

    Gesendet von meinem JY-S3 mit Tapatalk


    Offline moppy

    • New Member
    • *
    • Beiträge: 49
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #93 am: 08 Mai 2017, 18:44:06 »
    Servus,

    tolles Modul, hat mit eurer Beschreibung auf Anhieb funktioniert!
    Wie stelle ich jetzt folgendes an: Immer wenn ich den NodeMCU vom Strom nehme und dann wieder mit Strom versorge, ist nur ein Pixel an, und zwar grün.

    Ich hätte gerne nach jedem Stromausfall, dass alle Pixel weiß leuchten.

    Jemand ne Idee?

    Gruß, Manu
    Raspberry Pi 3 + Official 7 Inch Touch Display mit Tablet-UI, Homebridge, Alexa
    Z-Wave, HomeMatic, Harmony, HUE, LMS

    Online tklein

    • Full Member
    • ***
    • Beiträge: 391
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #94 am: 08 Mai 2017, 19:55:49 »
    Hallo,

    auch das ist mal wieder ein richtig gutes Modul. Vielen Dank dafür!!

    Ein paar Fragen habe ich noch:

    1) Kann ich auch einen Sonoff basic/dual etc. nutzen? Dann könnte ich zuvor das Netzteil via dem Relais mit Strom versorgen. Flashen kann man den ja mit Tasmota/ESP Easy etc.
    2) Wie viele Leds können je Stripe max genutzt werden?
    3) Wie ist die Darstellung bei Nutzung von 2 Stripes (NUMPIXELS1, NUMPIXELS2) gespiegelt, weitergeführt etc.
    4) Ist eine Integration in ESP-Easy geplant, damit man evtl. die ESP Bridge nutzen könnte?
    5) Ist eine Hilfe geplant? Bei mir bekomme ich auf der FHEM-Gui nichts angezeigt
    6) Gibt es es eine Sammlung von Playfiles die eingelesen werden können? Sind die auf die jeweilige LED-Anzahl zugeschnitten?

    Wäre klasse, wenn ich da Antworten drauf bekommen könnte.

    Grüße
    Thomas
    FHEM 5.8 Pi 3, Echo(Dot), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Brennenstuhl/One4All Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor

    Offline oxident

    • New Member
    • *
    • Beiträge: 42
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #95 am: 17 Mai 2017, 18:46:23 »
    Sehr geniale Arbeit, vielen Dank an den Autor!

    Ich habe den Arduino-Sketch so angepasst, dass er auch mit der FastLED-Bibliothek und APA102(C) Streifen zusammenarbeitet.
    Das klappt auch soweit alles prima, es musste halt nur an mehreren Stellen leicht angepasst werden. Würde es gerne der Community zur Verfügung stellen, jedoch lieber in Absprache mit dem Modulautor ... damit hier kein Wildwuchs entsteht ;-)
    Gefällt mir Gefällt mir x 1 Liste anzeigen

    Offline swhome

    • Developer
    • Full Member
    • ****
    • Beiträge: 120
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #96 am: 24 Mai 2017, 14:32:08 »
    1) Kann ich auch einen Sonoff basic/dual etc. nutzen? Dann könnte ich zuvor das Netzteil via dem Relais mit Strom versorgen. Flashen kann man den ja mit Tasmota/ESP Easy etc.
    2) Wie viele Leds können je Stripe max genutzt werden?
    3) Wie ist die Darstellung bei Nutzung von 2 Stripes (NUMPIXELS1, NUMPIXELS2) gespiegelt, weitergeführt etc.
    4) Ist eine Integration in ESP-Easy geplant, damit man evtl. die ESP Bridge nutzen könnte?
    5) Ist eine Hilfe geplant? Bei mir bekomme ich auf der FHEM-Gui nichts angezeigt
    6) Gibt es es eine Sammlung von Playfiles die eingelesen werden können? Sind die auf die jeweilige LED-Anzahl zugeschnitten?

    Hi Thomas
    1) Sagt mir leider nix

    2) Das hängt vom verfügbaren Speicher im Controller (ESP) ab, jedes Pixel verbraucht drei oder vier Bytes

    3) Bei 2 Stripes hängt der Controller in der Mitte, d.h. beim zweiten Stripe ist die Richtung umgekehrt

    4) Leider bin ich nicht so der Esp-Kenner

    5) Es gibt eine Hilfe, sie wird aber nur in der Commandref angezeigt, nachdem das Modul über folgenden Befehl in der fhem Kommandozeile installiert wurde:
    update all https://raw.githubusercontent.com/sw-home/FHEM-LEDStripe/master/controls_ledstripe.txtDieser Weg war bisher hier nicht dokumentiert, Sorry!

    6) Das Playfile muss zur Pixelanzahl Deiner Installation passen

    Ich habe den Arduino-Sketch so angepasst, dass er auch mit der FastLED-Bibliothek und APA102(C) Streifen zusammenarbeitet.
    Das klappt auch soweit alles prima, es musste halt nur an mehreren Stellen leicht angepasst werden. Würde es gerne der Community zur Verfügung stellen, jedoch lieber in Absprache mit dem Modulautor ... damit hier kein Wildwuchs entsteht ;-)

    Super! das hätte ich sehr gerne.

    Der richtige Weg wäre, das Repository in Deinem Github Account zu forken, deine Version dann dort einzuchecken, und mir dann einen Pull Request zu schicken. (Falls das nun Böhmische Dörfer waren: Ich schick Dir meine Mailadresse per PN, dann kannst es mir schicken und ich lade es hoch.

    Viele Grüße und Danke für das viele Feedback
    Stefan
    « Letzte Änderung: 24 Mai 2017, 15:46:18 von swhome »
    Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!
    Gefällt mir Gefällt mir x 1 Liste anzeigen

    Offline Frank_Huber

    • Sr. Member
    • ****
    • Beiträge: 567
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #97 am: 26 Mai 2017, 12:35:20 »
    Mahlzeit,

    98_Ledstripe will noch immer bei jedem Update updaten.

    Update check sagt:
    Zitat
    fhem
    nothing to do...

    fhemrollo
    nothing to do...

    ledstripe
    List of new / modified files since last update:
    UPD FHEM/98_LEDStripe.pm

    New entries in the CHANGED file:
    May 24, 2017

    Das Update heut früh sagte:
    Zitat
    2017.05.26 09:22:42 1: ledstripe
    2017.05.26 09:22:49 1: UPD FHEM/98_LEDStripe.pm
    2017.05.26 09:22:49 1: saving fhem.cfg
    2017.05.26 09:22:49 1: saving ./log/fhem.save

    version sagt:
    Zitat
    No Id found for 98_LEDStripe.pm

    und in der Konsole sehe ich:
    Zitat
    -rw-r--r-- 1 fhem dialout  14800 Mai 26 09:22 98_LEDStripe.pm

    scheint also alles zu passen, Warm will er aber dennoch jedes mal updaten?

    Grüße
    Frank

    Online tklein

    • Full Member
    • ***
    • Beiträge: 391
    Antw:Neues Modul zur Steuerung von WS2812b LED stripes
    « Antwort #98 am: 03 Juni 2017, 15:46:01 »
    Hi Stefan,

    Zitat
    1) Sagt mir leider nix
    --> eine Kombination von dem Sonoff mit dem Sketch wäre klasse: https://wiki.fhem.de/wiki/Sonoff
    2) Das hängt vom verfügbaren Speicher im Controller (ESP) ab, jedes Pixel verbraucht drei oder vier Bytes
    --> verstanden
    3) Bei 2 Stripes hängt der Controller in der Mitte, d.h. beim zweiten Stripe ist die Richtung umgekehrt
    --> okay
    4) Leider bin ich nicht so der Esp-Kenner

    5) Es gibt eine Hilfe, sie wird aber nur in der Commandref angezeigt, nachdem das Modul über folgenden Befehl in der fhem Kommandozeile installiert wurde:
    Code: [Auswählen]

    update all https://raw.githubusercontent.com/sw-home/FHEM-LEDStripe/master/controls_ledstripe.txt

    Dieser Weg war bisher hier nicht dokumentiert, Sorry!
    --> thx
    6) Das Playfile muss zur Pixelanzahl Deiner Installation passen
    --> hast du mal ein Beispiel wie so eine Datei ausschaut? Würde da ganz gerne etwas basteln


    Bei meinem Stripe (https://de.aliexpress.com/item/individually-addressable-5m-waterproof-ip67-ip30-5050-rgb-30-60-led-m-12v-ws2811-ws2812-ws2812b/32778993095.html?spm=2114.13010608.0.0.Ih1l2Z) passen die RGB Werte nicht überein. Kann ich das softwaremäßig einstellen? Bei dem Grünwert (17FF0F) kommt ein kräftiges blau raus. Auch die anderen Effekte sehen bei meinem kleinen anderen 8 "Stripechen" anders aus

    Kann ich bei dem RGBWW Stripe auch den Warmweisskanal ansprechen? https://de.aliexpress.com/item/Wholesale-4m-5m-SK6812-similar-ws2812b-RGBW-4-in-1-Waterproof-IP65-IP67-60-leds-pixles/32476317187.html?spm=2114.13010608.0.0.Ih1l2Z

    EDIT: Bei mir sind grün und blau vertauscht. Wie kann es sein, dass wenn ich die URL http://IP/rainbow direkt aufrufe es viel länger dauert, bis der Wemos reagiert als wenn ich das via FHEM schalte? Da wird doch auch nur die URL aufgerufen, oder?

    Muss ich bei diesem Playfile die LEDanzahl im Sketch von 150 ändern, oder sollte das so funktionieren?
    fff00f000fff00f000fff00f000fff
    000fff00f000fff00f000fff00f000
    00f000fff00f000fff00f000fff00f
    Sprich das nur die ersten etwas machen? --> bei mir passiert nichts.

    Hier stehe ich auch noch auf dem Schlauch:
        attr <name> power_switch <on/off-channel>
            Control LED power on/off using s switch channel
    Ist das ein GPIO beim Wemos mit einem etvl. daran angeschlossenem Relais?

    Ist es normal, dass ich mit Range nur alle LEDs ansprechen kann? Sobald ich nur ein paar ansprechen möchte z. B. range 2 56 255 255 255 passiert auch nichts

    EDIT2: Wenn ich #define NUMPIXELS1  5 vornehme, sind 15 ansteuerbar. Also immer um Faktor 3. Ist das normal?

    Grüße und frohe Pfingsten
    Thomas
    « Letzte Änderung: 05 Juni 2017, 13:15:15 von tklein »
    FHEM 5.8 Pi 3, Echo(Dot), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Brennenstuhl/One4All Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor

     

    decade-submarginal