SONOFF S26R2 2PCS WLAN Smarte Steckdose,16A 4000W Alexa Smart Plug,Smart Home Wifi Steckdose mit App Fernsteuerung, Sprachsteuerung und Zeitschaltuhr Funktioniert mit Echo,Echo Dot,Google Home,Ifttt.
Preis: 27,99 € (27,99 € / stück)
(Stand von: 2024/01/24 3:45 pm - Details
×
Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.
)
1 neu von 27,99 € (27,99 € / stück)0 gebraucht
  • 💡 Kompatibilität -SONOFF S26R2 wlan smarte steckdose funktioniert mit Amazon Alexa und Google Assistant für Sprachsteuerung und IFTTT
  • 💡 Fernzugriff - Steuern Sie Geräte, die über die eWelink-App auf Ihrem Smartphone mit der smarte Steckdose verbunden sind, wo auch immer Sie WLAN haben oder 2G/3G/4G Netzwerk
  • 💡 Timer Funktion - Planen Sie die wlan steckdose so ein, dass Ihr elektronisches Gerät bei Bedarf automatisch ein- und ausgeschaltet wird
  • 💡 Teile die Kontrolle mit Anderen: Einfaches Teilen der Kontrolle auf Geräte an Dritte
  • 💡 Einfache Einrichtung: 1.Installieren Sie die wifi steckdose (nur 2.4GHz Router); 2. download app eWeLink; 3. Paar es mit app (bitte drücken Sie die Taste 5 Sekunden, bis grüne LED blinkt); 4. Aktiviere alexa Geschick und entdecke Geräte
(* = Affiliate-Link / Bildquelle: Amazon-Partnerprogramm)

Falls jemand andere LED-Stripes als die APA101 oder 2801 für das Ambilight mit Hyperion am Pi verwenden möchte, kann dies meist auch tun. Hier ist allerdings noch etwas mehr Hardware und Aufwand notwendig. Dafür kommt man bei der Anschaffung der LEDs meist günstiger weg.

Prinzipiell sind mit der folgenden Vorgehensweise alle LEDs die zur FastLED Library kompatibel sind nutzbar.
Dazu gehören z.B.:
• Adafruit’s Neopixel / WS2812B / WS2811 / WS2812
• TM1809/4
• TM1803
• UCS1903
• GW6205

 

Zusätzlich zu den LEDs, dem Raspberry Pi und allem anderen was in der Hauptanleitung bereits erwähnt wird, benötigt Ihr noch einen Arduino Uno R3. Dieser übernimmt die Ansteuerung der LEDs. Der Arduino wird einfach per USB an den Raspberry angeschlossen und erhält über SPI seine benötigten Befehle.

 

Verkabelung

Die WS2812B haben nur 3 Pole im Gegensatz zu den anderen im Tutorial angegebenen Stripes. Hier gibt es nur einen 5V, einen GND und einen Data-Pin. der 5V Pin der Stripe wird direkt mit dem Netzteil verbunden. Der GND-Pin der Stripes muss sowohl mit dem Netzteil als auch mit dem GND des Arduino verbunden sein. Der Data-Pin geht an den im Sketch hinterlegten Data-Pin (Standard wäre Pin 6).
Dann muss später der Arduino nur noch per USB mit dem Raspberry Pi verbunden werden.

 

SerialPort Buffer vergrößern

Zuerst müsst Ihr nun die SerialPort Buffer Größe heraufsetzen. Dazu sucht Ihr den Ordner der Arduino-Software. Darin sollte sich folgende Ordnerstruktur wiederfinden:
ARDUINO_SOFTWARE\hardware\arduino\avr\cores\arduino
Von diesem Ordner erstellt Ihr eine Kopie (z.B. ARDUINO_SOFTWARE\hardware\arduino\avr\cores\arduino_256_buffer)

In dem kopierten Ordner bearbeitet Ihr nun die Datei “USBAPI.h” und ändert die Zeile “#define SERIAL_BUFFER_SIZE 64” in “#define SERIAL_BUFFER_SIZE 256”.

Nun bearbeitet Ihr noch die Datei “ARDUINO_SOFTWARE\hardware\arduino\avr\boards.txt”. In dieser Datei sollte ein Block für den Arduino Uno existieren. Diesen Block kopiert Ihr, ändert den internen Namen und passt die Angabe für “build.core” an den Namen des zu Begin kopierten Ordners an. Das ganze sollte dann wie folgt aussehen:

##############################################################

uno.name=Arduino/Genuino Uno

uno.vid.0=0x2341
uno.pid.0=0x0043
uno.vid.1=0x2341
uno.pid.1=0x0001
uno.vid.2=0x2A03
uno.pid.2=0x0043
uno.vid.3=0x2341
uno.pid.3=0x0243

uno.upload.tool=avrdude
uno.upload.protocol=arduino
uno.upload.maximum_size=32256
uno.upload.maximum_data_size=2048
uno.upload.speed=115200

uno.bootloader.tool=avrdude
uno.bootloader.low_fuses=0xFF
uno.bootloader.high_fuses=0xDE
uno.bootloader.extended_fuses=0x05
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.bootloader.file=optiboot/optiboot_atmega328.hex

uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.board=AVR_UNO
uno.build.core=arduino
uno.build.variant=standard
##############################################################
<em>
uno256.name=Arduino/Genuino Uno (256 Serial Buffer)

uno256.vid.0=0x2341
uno256.pid.0=0x0043
uno256.vid.1=0x2341
uno256.pid.1=0x0001
uno256.vid.2=0x2A03
uno256.pid.2=0x0043
uno256.vid.3=0x2341
uno256.pid.3=0x0243

uno256.upload.tool=avrdude
uno256.upload.protocol=arduino
uno256.upload.maximum_size=32256
uno256.upload.maximum_data_size=2048
uno256.upload.speed=115200

uno256.bootloader.tool=avrdude
uno256.bootloader.low_fuses=0xFF
uno256.bootloader.high_fuses=0xDE
uno256.bootloader.extended_fuses=0x05
uno256.bootloader.unlock_bits=0x3F
uno256.bootloader.lock_bits=0x0F
uno256.bootloader.file=optiboot/optiboot_atmega328.hex

uno256.build.mcu=atmega328p
uno256.build.f_cpu=16000000L
uno256.build.board=AVR_UNO
uno256.build.core=arduino_256_buffer
uno256.build.variant=standard</em>
##############################################################

 

Arduino Sketch

Spielt nun das folgende Sketch auf euren Arduino, wählt hierbei das neue Board mit dem erweiterten Buffer aus.

#include "FastLED.h"

// How many leds in your strip?
#define NUM_LEDS 60

// For led chips like Neopixels, which have a data line, ground, and power, you just
// need to define DATA_PIN.  For led chipsets that are SPI based (four wires - data, clock,
// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN
#define DATA_PIN 6
#define CLOCK_PIN 13

#define COLOR_ORDER GRB

// Adalight sends a "Magic Word" (defined in /etc/boblight.conf) before sending the pixel data
uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i;

// Baudrate, higher rate allows faster refresh rate and more LEDs (defined in /etc/boblight.conf)
#define serialRate 115200

// Define the array of leds
CRGB leds[NUM_LEDS];

void setup() { 
      // Uncomment/edit one of the following lines for your leds arrangement.
      // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
         FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
      // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
      
      // FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS);

      // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      
        // initial RGB flash
        LEDS.showColor(CRGB(255, 0, 0));
        delay(500);
        LEDS.showColor(CRGB(0, 255, 0));
        delay(500);
        LEDS.showColor(CRGB(0, 0, 255));
        delay(500);
        LEDS.showColor(CRGB(0, 0, 0));
        
        Serial.begin(serialRate);
        Serial.print("Ada\n"); // Send "Magic Word" string to host

}

void loop() { 
  // wait for first byte of Magic Word
  for(i = 0; i < sizeof prefix; ++i) {
    waitLoop: while (!Serial.available()) ;;
    // Check next byte in Magic Word
    if(prefix[i] == Serial.read()) continue;
    // otherwise, start over
    i = 0;
    goto waitLoop;
  }
  
  // Hi, Lo, Checksum
  
  while (!Serial.available()) ;;
  hi=Serial.read();
  while (!Serial.available()) ;;
  lo=Serial.read();
  while (!Serial.available()) ;;
  chk=Serial.read();
  
  // if checksum does not match go back to wait
  if (chk != (hi ^ lo ^ 0x55))
  {
    i=0;
    goto waitLoop;
  }
  
  memset(leds, 0, NUM_LEDS * sizeof(struct CRGB));
  // read the transmission data and set LED values
  for (uint8_t i = 0; i < NUM_LEDS; i++) {
    byte r, g, b;    
    while(!Serial.available());
    r = Serial.read();
    while(!Serial.available());
    g = Serial.read();
    while(!Serial.available());
    b = Serial.read();
    leds[i].r = r;
    leds[i].g = g;
    leds[i].b = b;
  }
  // shows new values
 FastLED.show();
}

 

Hyperion auf Raspberry Pi einrichten

Installiert nun Hyperion auf dem Pi wie in der Hauptanleitung beschrieben:
https://smarthomeyourself.de/anleitung-zum-selber-bauen/unabhaengige-projekte/ambilight-mit-raspberry-pi-und-hyperion

 

Folgenden Punkte  müsst Ihr anschließend noch anpassen, damit das ganze auch mit den LEDs am Arduino funktioniert:

HyperCon Einstellungen

Bei den LED-Einstellungen müsst Ihr nun anstatt eurer LEDs “adalight” auswählen.
Als output war der Arduino bei mir “/dev/ttyUSB0”. (müsst Ihr ggf. mit “ls /dev” am Pi prüfen, welches Device hinzu kommt, wenn Ihr den Arduino anschließt)
Als Baud-Rate habe ich 115200 verwendet. Delay 0 und colorOrder GRB.

Der Eintrag sollte dann wie folgt aussehen:

"device" :
{
"name" : "MyHyperionConfig",
"type" : "adalight",
"output" : "/dev/ttyUSB0",
"rate" : 115200,
"delayAfterConnect" : 0,
"colorOrder" : "grb"
},

 

UART-Clock

Jetzt solltet Ihr noch die UART-Clock des Pi umstellen. Dazu steckt ihr die SD-Karte in euren Kartenleser und bearbeitet die Datei config.txt. In dieser Datei fügt Ihr am Ende folgende Zeile ein:

init_uart_clock=14745600

Speichert die Änderungen und startet den Pi nun mit der modifizierten SD-Karte neu.

 

Nun sollte das ganze auch mit den alternativen WS2812B laufen.