
- Funktioniert mit jedem Dekor – Hinweis: Ein Aqara Zigbee 3.0 Hub ist erforderlich und separat erhältlich. Montieren Sie den Smarter Gardinenmotor E1 ganz einfach ohne zusätzliches Werkzeug an Ihrer vorhandenen Vorhangschiene oder -stange. Er wird hinter dem Vorhang versteckt. (* Hinweis: Unterstützt die meisten gängigen Gardinen- und Vorhangstangen („Durchführungsset“ im Lieferumfang enthalten), ausgenommen ausziehbare Stangen. Durchmesserbereich der Stange: 25–32 mm.)
- Mehrere Steuerungsmethoden: Nachdem Sie die Führung in der Aqara Home App eingestellt haben, können Sie Ihre Vorhänge steuern, wenn Sie nicht zu Hause sind, oder durch Sprachbefehle mit Siri, Alexa oder Google Assistant. Darüber hinaus ermöglicht der eingebaute Lichtsensor die automatische Steuerung des Smarter Gardinenmotor E1 je nach Helligkeitsverhältnissen. Wenn es draußen zu hell ist, schließen sich die Vorhänge von selbst.
- Automationen für das Smart Home: Der Smarter Gardinenmotor E1 kann Ihnen helfen, Ihre vorhandenen Vorhänge automatisch zu steuern, je nach Wetter, Zeit, Lichtverhältnissen oder nach Auslösung anderer Aqara-Geräte. Sie können einen Timer einstellen, um eine Schlaf-Wach-Routine anzupassen, die perfekt zu Ihrem persönlichen Zeitplan passt. Automationen über HomeKit, Alexa, Google Home und IFTTT werden unterstützt.
- Leistungsstarker Motor: Kann die maximale Belastung des Smarter Gardinenmotor E1 bis zu 12 kg erreichen. Sie können zwischen einem oder zwei Motoren pro Fenster wählen. Wenn Sie zwei installieren, können sie gruppiert werden, sodass Sie die Vorhänge gleichzeitig öffnen können. Darüber hinaus kann die Geschwindigkeit des Motors auf drei Stufen eingestellt werden, sodass er leiser arbeitet und der Vorhang langsam geöffnet wird, um das Aufwachen angenehmer zu gestalten.
- Lange Akkulaufzeit: Ein riesiger 6000-mAh-Akku kann bis zu einem Jahr ohne Aufladen halten. (Die berechnete Batterielebensdauer bezieht sich auf das einmalige Öffnen und Schließen eines Vorhangs auf einer 1,5 m langen Schiene (d. h. 2 Vorhangmotoren pro Fenster) pro Tag und hängt auch von der Reibung, dem Gewicht und dem Typ des Vorhangs ab.) Außerdem kann das Gerät über den Typ-C-Anschluss entweder mit einer Powerbank oder einem Netzteil(beides nicht im Lieferumfang enthalten) aufgeladen werden
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.