Kategorie: Experimente und Notizen

  • Smart Home: Einrichtung von Conbee und IKEA Tradfri

    Smart Home: Einrichtung von Conbee und IKEA Tradfri

    Nachdem ich meine Dash-Buttons aufgegeben hatte (siehe „Das Ende von Amazon Dash“)

    DeConz und ConBee auf dem RPI3 einrichten

    ConBee und DeConz headless auf einem Raspberry Pi installieren, basierend auf https://phoscon.de/en/conbee2/install

    Starte DeConz von einem entfernten Ubuntu-Server über SSH:

    ssh -XY openhabian@pi

    DeConz und OpenHaban verwenden denselben Port für den Webserver, ändere den Port (auch für die REST-Schnittstelle)

    deCONZ -platform minimal --http-port=8082 --ws-port=8081 --auto-connect=1 --dbg-error=1

    Starte DeConz automatisch mit der Dienstkonfiguration, Infos: https://github.com/dresden-elektronik/phoscon-app-beta/issues/26

    sudo systemctl edit deconz
    # /etc/systemd/system/deconz.service.d/override.conf
    [Service]
    ExecStart=
    ExecStart=/usr/bin/deCONZ -platform minimal --http-port=8082 --ws-port=8081 --auto-connect=1 --dbg-error=1
    

    Weitere Befehle zum Einplanen:

    sudo systemctl enable deconz
    sudo systemctl restart deconz

    OpenHABian konfigurieren

    Binding für Sensoren:

    https://www.openhab.org/addons/bindings/deconz/#dresden-elektronik-deconz-binding

    Binding für Beleuchtung (DeConz kann das Hue-Binding nutzen) mit angepasster Konfiguration:

    Bridge hue:bridge:2 [ ipAddress="192.168.1.106", port="8082", userName="xxx" ]
  • Einen Smart-Home-Schalter für 4 Dollar bauen

    Einen Smart-Home-Schalter für 4 Dollar bauen

    Alles begann mit einem Artikel in meinem Lieblings-Computermagazin Heise – WLAN-Stecker mit Tasmota. So konnte ich einige 220-V-Geräte, wie zum Beispiel eine Stehlampe, mit meinem OpenHAB Super-Cheap – Smart-Home-Lösung Smart Home steuern.

    Manche 220-V-Geräte brauchen keinen Stecker, ich möchte sie mit einem winzigen Schalter steuern und nicht mit einem großen Stecker an der Wand. Hier habe ich das hier gefunden – 4 € pro Stück aus China… wird das funktionieren?

    Nach einem Monat Wartezeit kamen 3 Stück an. Sahen eigentlich ganz gut aus!

    Es ist wirklich erstaunlich, was man für 4 € bekommt: einen ESP8266-Mikrocomputer mit WLAN und die gesamte Hardware zur Steuerung von 220 V / 10 A = 2200 W.

    Aber: Die Firmware stammt aus China, man muss irgendwo ein Konto registrieren, und der kleine Schalter verbindet sich damit und sendet deine Daten irgendwohin – ich habe darauf keinen Einfluss.

    Wo wir die Firmware auf dem Schalter austauschen müssen, ist die Marke „Sonoff“ bekannt für eine „einfache Methode“, dies zu tun

    Die Firmware-Lösung meiner Wahl ist Tasmota, eine Open-Source-Software, die das Gerät nur mit dem internen WLAN-Netzwerk verbindet und eine Benutzeroberfläche zur Konfiguration des Geräts bereitstellt. Wir müssen also zwei Dinge tun, um es zum Laufen zu bringen:

    1. Neue Firmware auf den Switch flashen
    2. Den Switch in OpenHAB (Open-Source-Software für Smart Home) integrieren

    Vorbereitung

    Ganz einfach (alles hier: Details), du brauchst:

    1. Image „tasmota.bin“ von Tasmota: https://github.com/arendst/Tasmota/releases
    2. Flash-Software, um das Gerät mit dem Image aus 1) neu zu programmieren:tasmotizer
    3. Ein Kabel, um deinen PC über einen FTDI (Serial-zu-USB-Konverter) mit dem Switch zu verbinden; der FTDI und der Switch sind beschriftet, ebenso wie der Switch:
      FTDISonoff Smart Swtich
      3V3V
      GNDGND
      TXTREC/RXI
      REC/RXI
      TXT

      Das Löten dauert etwa 5 Minuten; wenn du fertig bist, sollte es in etwa so aussehen wie unten:

    Flashen

    Der Schalter muss über unser praktisches Kabel mit dem PC verbunden werden; das funktioniert einfach durch Einstecken und ein wenig Justieren.

    Um den Switch in den „Programmiermodus“ zu versetzen, muss die Reset-Taste am Switch *vor* dem Anschließen des Switches über das USB-Kabel an den PC gedrückt werden. Sobald die Verbindung hergestellt ist, kannst du die Reset-Taste loslassen (das ist der lange schwarze Stecker).

    Starte dann das Flashen mit Tasmotizer, indem du die Firmware und die USB-Schnittstelle auswählst:

    Nach dem Neustart des Switches öffnet dieser einen Access Point, den du über die Verbindung zu seinem WLAN (ein AP mit „tasmota“ im Namen) konfigurieren kannst, damit er sich später mit deinem eigenen WLAN verbindet. Viel eleganter ist es jedoch, wenn du Tasmotizer über die Schaltfläche „Send Config“ nutzt, um das WLAN direkt zu aktualisieren; dazu musst du die Zugangsdaten (SSID und Passwort deines Heimnetzwerks) eingeben.

    Alle deine Zugangsdaten und Daten bleiben nun in deinem Netzwerk. Auf dem Router habe ich außerdem die Internetverbindung für die IP-Adresse des Switches in meinem Heimnetzwerk deaktiviert – nur zur Sicherheit 🙂

    Konfiguriere den Switch – Tasmota ist super

    Wenn alles funktioniert, verbindet sich der Switch mit deinem WLAN zu Hause. Du findest seine IP-Adresse in deinem Router und kannst die Hauptkonfigurationsseite über einen Webbrowser öffnen. Du siehst dann die neue Firmware von „Tasmota“ aktiv, die dir die volle Kontrolle über das Gerät gibt.

    Es ist eine fantastische Software, komplett Open Source, keine Cloud-Verbindung oder Internetverbindung erforderlich. Sie bleibt bei dir zu Hause 🙂

    Die grundlegende Tasmota-Konfiguration ist bereits korrekt, du musst nichts tun. Vielleicht möchtest du im Einstellungsbereich eine Backup-WLAN-Adresse eingeben – wenn du möchtest.

    Verbindung zu OpenHAB

    Die Switch-Seite

    Das Konzept sieht vor, dass der Switch das MQTT-Protokoll nutzt, um mit OpenHAB zu kommunizieren. Sobald er konfiguriert ist, wartet der Switch auf eine Nachricht über dieses Protokoll und führt seine Aufgabe aus – EIN/AUS.

    Um MQTT zu konfigurieren, musst du die IP-Adresse deines OpenHAB-Servers und die Anmeldedaten des MQTT-Netzwerks angeben, das du in OpenHAB eingerichtet hast. Der Clou ist das „Topic“, also die „Adresse“, auf die der Schalter wartet – jede Nachricht mit diesem Topic wird vom Schalter verarbeitet. In meinem Netzwerk habe ich jedem Switch ein eigenes Topic gegeben, wie „sonoff1“, „sonoff2“ – so kann ich sie separat steuern. OpenHab verfügt über eine Bindung, die die Verbindung zu diesem Protokoll aufrechterhält, und die ist einfach zu konfigurieren.

    Die OpenHab-Seite

    Nachdem ich die MQTT-Bindung in OpenHab installiert hatte, habe ich folgende Konfiguration vorgenommen – wichtig ist, dass das Topic „sonoff1“ überall korrekt steht:

    Bridge mqtt:broker:OH2mqtt "MQTT Broker" @ "MQTT" [
        host="192.168.1.106",
        port=1883,
        username="OpenHAB",
        password="xyz"
    
    ] {
        Thing topic sonoff1 "Sonoff1" @ "MQTT" {
         Channels:
         Type switch : ch1  "Light1" [ stateTopic="sonoff:stat/sonoff1/POWER", commandTopic="cmnd/sonoff1/POWER" ]
        }
    }

    Das Ein- und Ausschalten des Schalters ist ganz einfach:

    Switch Sonoff1 "Light1"  	 	 	 	 	 	 	 	<light> ["Switchable"] { channel="mqtt:topic:OH2mqtt:sonoff1:ch1" }
    
     sendCommand(Sonoff1,ON)</light>

    Viel Spaß 🙂

  • Die komplizierteste Uhr: Der Bau des Gehäuses

    Die komplizierteste Uhr: Der Bau des Gehäuses

    Nach langer Zeit stand die MCW draußen in der rauen Welt – jetzt fand ich, dass es Zeit für ein richtiges Zuhause war – lass uns ihr mit 3D-Druck ein Zuhause bauen.

    Ich habe Tinkercad schon einmal benutzt, für meinen Kalender (schau dir dieses Bild an)

    Nun ist das MCW-Uhrengehäuse komplizierter, denn – als ich die Uhr und die Leiterplatte baute – habe ich nicht an das Gehäuse gedacht. Daher musste das Gehäuse um die Uhr herum gebaut werden.

    Um das hinzukriegen, habe ich erst mal alle Komponenten der MCW vermessen, angefangen beim E-Ink-Display über die Leiterplatte bis hin zur Batterie … einfach alles. Und dann das Gehäuse drum herum gebaut:

    Eigentlich war das für mich die einzige Möglichkeit, das Gesamtergebnis zu visualisieren. Ich möchte die verschiedenen Teile zusammenkleben und alle Komponenten von oben einbauen. Bin mir nicht sicher, ob ich an alles gedacht habe 🙂

    Für die Bestellung habe ich http://www.treatstock.com verwendet.

    Es ist wichtig, dass du jedes Teil separat aus Tinkercad exportierst und als STL-Datei zur Bestellung hochlädst – nach dem Export als STL ist es nicht mehr möglich, die Dateien zu trennen.

    Meine Bestellung ist jetzt bei Treatstock, 17 € inklusive Versand – ich kann das Ergebnis kaum erwarten:

    Wie wird das Endergebnis aussehen:

  • ESP8266-Touchdisplay als Fernbedienung für den Raspberry Pi

    ESP8266-Touchdisplay als Fernbedienung für den Raspberry Pi

    Einleitung

    Ich verwende ein „1,8-Zoll-LCD-Bildschirm-SPI-Seriellport-Modul TFT-Farbdisplay-Touchscreen ST7735 (128*160) für Arduino“, das ich für 9 € bei aliexpress.com gekauft habe.

    Details: Display-Prozessor: ST7735, Touch-Prozessor: XPT2046, Display-Typ: ZJY180-TV2.0, 128×160; als ESP8266 verwende ich den WEMOS D1 Mini Pro (v 2.0) https://wiki.wemos.cc/products:d1:d1_mini_pro.

    Es ist Teil meines Projekts „BigPi“, den PI4 als meinen zentralen Heimserver zu nutzen. Ich habe beschlossen, dass er ein Display braucht.

    Es sollte gut aussehen… also was habe ich gemacht?

    Tatsächlich habe ich das Touchdisplay nach vielen Versuchen auf dem RPI zum Laufen gebracht – aber was steht nun auf meinem Schreibtisch: Eine große schwarze RPI4-Box mit einem Touchdisplay. Sieht nicht gut aus.

    Meine Alternative: Ich baue ein winziges Touchdisplay mit ESP8266 in einer kleinen Box mit Akku, die ich überall platzieren kann. Ich werde über WLAN mit meinem RPI kommunizieren. Keine schwarze Box auf dem Schreibtisch, nur ein cooler Multifunktionsschalter und eine Statusanzeige für die RPI-Fernsteuerung. Ein ziemlich langwieriges Projekt – mal sehen, wie es läuft.

    Verkabelung – wie man alles zusammenbaut

    Natürlich aus China – es gibt nicht viel Dokumentation. Unten ein paar Infos, die ich bei AliExpress zum Display gefunden habe, und alle Kontakte am Display sind beschriftet. Zu beachten: PEN (11) ist hoch und wird niedrig, wenn das Display berührt wird – kann also direkt mit dem Wemos verbunden werden (siehe unten).

    Information from Vendor
    Mapping TFT Panel to Wemos

    Ein paar Details zum WEMOS D1 Mini Pro

    Die Lötpads verstehen

    Das ist ein sehr schöner ESP8266-Prozessor, klein und mit integriertem LiPo-Ladegerät, sodass jeder 3,7-V-Akku direkt angeschlossen und über den Mini-USB-Anschluss geladen werden kann. Er ist pinkompatibel mit dem bekannten WEMOS Mini, der auf der Rückseite einige interessante Lötpads hat:

    • SLEEP: Dies verbindet den Reset-Pin mit dem XPD_DCD-Pin (Deep Sleep Wakeup), sodass sich das WEMOS selbst aus dem Deep Sleep wecken kann. Für eine einfache Programmierung und damit die serielle Schnittstelle funktioniert, sollte diese Verbindung nicht hergestellt werden. Tu dies also, bevor du das Gerät in Betrieb nimmst
    • BAT-A0: Verbindet die Batteriespannung mit dem analogen A0-Eingang, sodass die Batteriespannung gemessen werden kann (um einen niedrigen Batteriestand zu erkennen).
    • LDO_EN: Zum Deaktivieren des 5-V-Reglers, damit du deine eigene Stromquelle direkt an die 3,3-V- und GND-Pins anschließen kannst. Nützlich für den Batteriebetrieb. Wenn du Standard-Lithium-Ionen-Batterien mit 3,7–4,2 V verwendest, ist es besser, diese an den 5-V-Pin anzuschließen, da dieser mit einem LDO-Wandler verbunden ist.

    back side of the board
    Deep Sleep… tzzzzz…

    Ich brauche „Deep Sleep“ mit extrem niedrigem Stromverbrauch, da das Gerät lange laufen soll.

    Ich messe direkt nach dem Auspacken einen Strom von 0,15 mA (150 µA) für den WEMOS Pro Mini über ESP.deepSleep(); mit einem 1200-mAh-LiPo ergibt das eine Laufzeit von 300 Tagen.

    Wenn es mit angeschlossenem Display, aber ohne Hintergrundbeleuchtung (BLK an GND) läuft, verbraucht es 0,48 mA (500 µA) – das entspricht einer Laufzeit von ca. 100 Tagen, 3 Monate sind okay 🙂

    Wenn das Display aktiv ist und die Hintergrundbeleuchtung eingeschaltet ist, verbraucht es etwa 20 mA, wenn das Display aus ist, sinkt der Verbrauch auf 1 mA.

    Zu beachten

    Während der Deep-Sleep-Phase wird GPIO_16 auf High gehalten. Am Ende der Deep-Sleep-Phase geht GPIO_16 auf Low, zieht den Reset-Pin herunter (der Reset-Pin ist Low-aktiv, füge eventuell einen 1–10-kΩ-Widerstand dazwischen ein) und startet den Wemos neu.

    Das Problem ist, dass beim Eintritt des ESP8266 in den Deep-Sleep-Modus alle I/Os auf High gehen – mein Display ist also „an“. Es wird ein Inverter benötigt.

    SPI – Verwirrung

    SPI hat mich verwirrt, es hat 3 Leitungen: MISO, MOSI und Clock, genau wie beim Touch-Display. Am Ende habe ich gemerkt, dass es 2 Controller hat, einen für den Touch-Sensor und einen für das Display. Beide sind am selben SPI-Bus angeschlossen und werden über Chip-Select ausgewählt. Es sieht also in etwa so aus:

    SPI-Logik auf dem TFT-/Touch-Display

    Software – Wie bringe ich es zum Laufen?

    Ich nutze CLION von JetBrains und Platformio für die Entwicklung – was ich wirklich empfehlen kann. Die folgenden Bibliotheken unterstützen beide Controller:

    Adafruit ST7735 and ST7789 Library
    Adafruit GFX Library
    XPT2046_Touchscreen

    Dank dieser tollen Bibliotheken kannst du mit nur wenigen Zeilen Code auf dem kleinen Display mit einem Stift malen.

    void setup(void) {
    tft.initR(INITR_GREENTAB); // initialize a ST7735S chip, CN: My-chip has a "green flag at the protection foil"
    tft.setRotation(1);
    tft.fillScreen(ST7735_BLACK);
    ts.begin();
    ts.setRotation(0);
    
    delay(500);
    
    tft.fillScreen(ST7735_BLACK);
    testdrawtext("Welcome", ST7735_WHITE);
    delay(1000);
    tft.drawPixel(150, 118, ST7735_GREEN);
    
    }
    
    void loop() {
    
    if (ts.touched()) {
    TS_Point p = ts.getPoint();
    tft.drawPixel(p.y * x_tft_scale, p.x*y_tft_scale, ST7735_GREEN);
    }
    delay(5);
    }

    Mission erfüllt 🙂