Mittwoch, 13. Juni 2018

Regenbogen LED Tower

Im Letzten Urlaub habe ich meinen LED Turm mit einem AVR ATMega32U2 gebaut. Mit dem Ergebnis bin ich allerdings nicht ganz zufrieden gewesen. Mechanisch war alles wie ich es wollte, allerdings hat der ATMega32U2 nicht so funktioniert, wie ich mir das gewünscht habe. Außerdem war einer der Footprints falsch und der USB Stecker ist nach dem zweiten mal Stecken abgerissen.

Regenbogen Modus
Ebenso habe ich lange auf die Plexiglas Platten warten müssen. In den Bildern sind nur die Untere und die Obere verbaut.

Ich habe wieder einmal Urlaub und habe mir das Projekt nochmal vorgenommen. Versuch 2 ist fertig und bestellt. Diesmal habe ich einen ESP8266 als Controller verwendet. Jetzt hat Die LED Regenbogen Lampe WLAN und kann über MQTT gesteuert werden. Wenn alles glatt geht. Die Hardware habe ich jetzt mal wieder bei PCBWay bestellt. Fertig bestückt mit allem außer ESP8266 Modul und RGB LEDs. Die müssen nachträglich noch eingelötet werden.

Wenn die Leiterplatte geliefert wird, alles funktioniert und die Daten nochmal aufgehübscht sind, werde ich sie online stellen, für jeden, der interessiert ist das nachzubauen.

Montag, 11. Juni 2018

Home Assistant auf Samsung ARTIK 520: MQTT

Wir haben bisher das ARTIK 520 Board in Betrieb genommen, Linux und Home Assistant installiert, Zigbee aktiviert und mit Home Assistant verbunden. Jetzt ist es an der Zeit, die Home Assistant Instanz mit der bereits verfügbaren im Heimnetzwerk zu verbinden. Dazu verwenden wir den Home Assistant Eventstream. Dieser ermöglicht uns der Hauptinstanz jegliche Änderungen zu übertragen. Die lokale Instanz von Home Assistant kümmert sich lediglich um die Verwaltung der Zigbee Funktionen, teilt der großen Instanz alle Änderungen mit und wird normalerweise nicht über die Weboberfläche bedient.

Damit die beiden Instanzen miteinander kommunizieren können, kommt ein MQTT Broker zum Einsatz. Dieser sorgt dafür, dass die Events zu den passenden Instanzen kommen.

Jede Instanz hat einen Empfang- und einen Sendekanal. Für meine Installation bedeutet das, dass auf der Hauptinstanz der Eventstream wie folgt in der condifguration.yaml eingestellt ist.

mqtt_eventstream:
  publish_topic: /homeassistant/eventstream/Herbert
  subscribe_topic: /homeassistant/eventstream/ARTIK

Auf dem ARTIK Board drehen wir die Topics einfach um. Somit erhalten wir die spezifischen Kanäle zur Kommunikation.

mqtt_eventstream:
  publish_topic: /homeassistant/eventstream/ARTIK
  subscribe_topic: /homeassistant/eventstream/Herbert

Jetzt fehlt der ARTIK Instanz nur noch die Verbindung zum lokalen MQTT Broker. Dazu konfigurieren wir die MQTT Komponente mit der IP des Brokers. In meinem Netzwerk ist das die 192.168.0.21. Das ist aber in jedem Netzwerk unterschiedlich. Wenn ihr den MQTT Server der Hauptinstanz lokal auf dem Home Assistant Server laufen habt, dann ist die Adresse die des Home Assistant Servers.

mqtt:
  broker: 192.168.0.21
  client_id: "HomeAssistant ARTIK"
  protocol: 3.1


Nach einem Neustart verbinden sich die beiden Home Assistant Instanzen und teilen ihre Events. 

Sonntag, 11. März 2018

Home Assistant auf Samsung ARTIK 520: Zigbee

Weiter geht es mit dem ARTIK Board. Wir haben das letzte Mal das System aufgesetzt, aktualisiert und Home Assistant installiert. Jetzt starten wir Home Assistant bei jedem Boot, updaten die Firmware des Zigbee Controllers um mit Home Assisatant zusammen zu arbeiten und konfigurieren Zigbee für eine Philips hue Glühlampe.

Um nach dem Power-up Home Assistant direkt zu starten, müssen wir dem Initialisierungs-Dämon mitteilen, dass hass ausgeführt werden soll. Das machen wir ähnlich dem wifi mit Hilfe von einem Initialisierungsscript. Dazu erzeugen wir einen Service mit Namen home-assistant

vi /etc/systemd/system/home-assistant@homeassistant.service


[Unit]
Description=Home Assistant
After=network-online.target

[Service]
Type=simple
User=%i
ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"

[Install]


WantedBy=multi-user.target


Wie der vi Editor verwendet wird, wurde im letzten Artikel kurz erklärt, weitere Informationen findet ihr hier.

Der eben erzeugte Service muss noch initialisiert werden, dazu müssen wir den Dienst neu starten

systemctl --system daemon-reload

Danach können wir den Dienst in den Autostart laden

systemctl enable home-assistant@homeassistant

Jetzt können wir einen reboot durchführen und Home Assistant wird beim Neustart automatisch gestartet.

Das ARTIK 520 Modul hat einen NCP (Network Co-Processor) für Zigbee. Dabei handelt es sich um den EM3587 von Silabs. Dieser hat in der aktuellen Konfiguration eine Firmware geladen, die mit RTS und CTS eine Hardware Flusskontrolle erfordert. Home Assistant hat dafür keine Unterstützung, daher müssen wir die Firmware des NCP (NCP Firmware 2017-04-25) ändern. Für das ARTIK 520 Modul gibt es leider nur die RTS/CTS Firmware, also nehmen wir das Image des ARTIK 710 Moduls. Das ist kompatibel und kommt mit Software Flusskontrolle. Es ist dadurch kompatibel mit Home Assistant. Also entpacken wir ARTIK710NCP.zip aus dem Set der Firmwaren.

Die Dateien müssen wir jetzt auf das Modul übertragen werden. Dazu verwenden wir die SD Karte aus dem ersten Teil. Auf diese kopieren wir die Dateien

flash_firmware
ncp-uart-xon-xoff-use-with-serial-uart-btl-5.7.4.ebl

Die SD-Karte legen wir wieder in den Slot auf dem ARTIK 520 Board und hängen die SD-Karte in das System ein, kopieren die zwei Dateien und machen das Flash-Programm ausführbar.

mkdir /mnt/SD
mount /dev/mmcblk1p1 /mnt/SD
cp /mnt/SD/flash_firmware /root/
cp /mnt/SD/ncp* /root/
chmod +x /root/flash_firmware
umount /mnt/SD

Jetzt müssen wir die Schnittstelle zum NCP frei bekommen. Dazu beenden wir den Zigbee Dienst und deaktivieren ihn. Ebenso stoppen wir Home Assistant.

systemctl stop zigbee-daemon
systemctl disable zigbee-daemon
systemctl stop home-assistant

Das Firmware-Update Tool wird als nächstes ausgeführt und updatet den Co-Prozessor

cd /root
./flash_firmware -p /dev/ttySAC1 -f \
  ncp-uart-xon-xoff-use-with-serial-uart-btl-5.7.4.ebl

...

Do you want to start firmware flashing application? Say Y(es) or N(o): Y

...

============================================
image transfer is completed (version : 0.1)
============================================

Das Firmwareimage ist erfolgreich übertragen worden und der NCP kann jetzt von Home Assistant verwendet werden.

Dazu schalten wir die Komponente zha ein. Diese verwaltet verschiedene Zigbee Komponenten wie Schalter, Lichter und Sensoren.

Dazu editieren wir die Datei configuration.yaml

vi /home/homeassistant/.homeassistant/configuration.yaml

Dort fügen wir ans Ende die folgenden drei Zeilen ein:

zha:
  usb_path: /dev/ttySAC1
  database_path: /home/homeassistant/.homeassistant/zigbee.db

Abspeichern, Home Assistant starten und laden lassen. Dieser Schritt dauert wieder einige Zeit.

systemctl start home-assisatant@homeassistant

Nach einer Weile ist die Webseite wieder erreichbar und wir können die Dienste Tools anwählen.


Dort können wir den zha Dienst mit der Funktion permit auswählen und so Home Assistant anweise auf neue Verbindungen aus dem Zigbee Netzwerk zu lauschen. Nach einem Druck auf CALL SERVICE werden für 60 Sekunden neuen Zigbee Geräte im Netzwerk akzeptiert.


Jetzt ist es an der Zeit unsere Zigbee Geräte einzuschalten, oder in diesem Fall einzudrehen.


Nach einigen Sekunden ist diese dann auch von alleine im Home Assistant Dashboard erschienen. Das Ein- und Ausschalten hat auch bereits automagisch funktioniert.

Somit haben wir Zigbee erfolgreich in Betrieb genommen und können weitere Geräte dem Netzwerk hinzufügen.