SSD-Boot - PoE-HAT

Docker - Portainer - Mosquitto - Zigbee2mqtt - IP-Symcon / Heimdall

Raspberry Pi SSD-Boot

Zuerst ganz normal von Micro-SD Karte booten. Dann per SSH verbinden und folgende Befehle ausführen:

vcgencmd bootloader_version

sudo rpi-eeprom-update

Das angezeigte Datum muss  der 3. September 2020, oder neuer sein. Wenn ein Update verfügbar ist, dann folgende Befehle ausführen.

sudo rpi-eeprom-update -a

sudo reboot

Micro-SD raus und (spätestens jetzt) das USB/SSD Laufwerk verbinden. Raspberry Pi einschalten und zur Erfolgskontrolle per SSH verbinden.

Danach ein Update kann nicht schaden

sudo apt-get update

sudo apt-get full-upgrade

PoE-HAT

Raspberry Pi ausschalten und Netzteil ausstecken! Falls vorhanden, kann jetzt der PoE-HAT aufgesteckt werden. (Foto) Ab jetzt kann der Raspberry Pi über das Netzwerk mit Spannung versorgt werden (Power over Ethernet). Voraussetzung dafür ist neben dem PoE-Hat auch ein entsprechendes Poe-Switch, dass die benötigte Spannung über die Netzwerkleitung zur Verfügung stellt. Hier ist keine Konfiguration nötig.

Nach erfolgter Montage kann der Raspberry Pi wieder in Betrieb genommen werden.

Docker

Verbindung per SSH 

Docker herunterladen:

curl -fsSL https://get.Docker.com -o get-Docker.sh

Script zur Installation ausführen

sudo sh get-Docker.sh

Docker für aktuellen Benutzer ausführbar machen

sudo usermod -aG docker $USER

Benutzerrichtlinien neun laden

newgrp docker 

Docker testen

docker run hello-world

Dockervolumen für Portainer erstellen

docker volume create portainer_data

Portainer pullen, konfigurieren & starten

docker run -d -p 8000:8000 -p 9443:9443 --restart always --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data cr.portainer.io/portainer/portainer-ce:latest

Liste alle aktiven Docker-Container

docker ps

Portainer UI mit <https://ip-adresse:9443> starten. Benutzer & Passwort anlegen!

Mosquitto

Verzeichnisse und config-file anlegen

Befehle SSH in Konsole:

cd

sudo mkdir -p mosquitto/config

sudo nano mosquitto/config/mosquitto.conf

Inhalt “mosquitto.conf”:

persistence true

persistence_location /mosquitto/data/

log_dest file /mosquitto/log/mosquitto.log

listener 1883

## Authentication ##

allow_anonymous true

Mosquitto in Portainer konfigurieren:

Name für Container vergeben: mosquitto

Image: eclipse-mosquitto:latest

Ports:        1883 - 1883 TCP

        9001 - 9001 TCP

Volumes:

Container: /mosquitto                Host: /home/pi/mosquitto                Bind

Container: /mosquitto/data        Host: /home/pi/mosquitto/data        Bind

Container: /mosquitto/log        Host: /home/pi/mosquitto/log                Bind

Restart policy:

Always

Deploy Container

Mosquitto testen mit MQTT-Explorer

Passwortschutz (authentication) einrichten:

Im Mosquitto Container auf die Console gehen

/bin/sh shell auswählen und connect klicken

 

mosquitto_passwd -c /mosquitto/config/password.txt admin

Passwort eingeben

Passwort wiederholen

Disconnect klicken

cd /mosquitto/config

sudo nano mosquitto.conf

mosquitto.conf wie folgt bearbeiten:

persistence true

persistence_location /mosquitto/data/

log_dest file /mosquitto/log/mosquitto.log

listener 1883

## Authentication ##

allow_anonymous false

password_file /mosquitto/config/password.txt

Restart Container!

Mosquitto testen mit MQTT-Explorer (mit den neuen Zugangsdaten)

Bei der Verwendung eines Zigbee LAN-Gateways, müssen die MQTT Zugangsdaten (Benutzer, Passwort und Port) in der UI des Gateways angegeben werden.

Zigbee2mqtt (LAN-Gateway)

per SSH Befehle für Konsole. Dann folgende Befehle ausführen

cd

mkdir -p zigbee2mqtt/data

cd zigbee2mqtt

wget https://raw.githubusercontent.com/Koenkk/zigbee2mqtt/master/data/configuration.yaml -P data

nano data/configuration.yaml

Inhalt configuration.yaml (LAN-Gateway)

 # Home Assistant integration (MQTT discovery)

homeassistant: false

# allow new devices to join

permit_join: true

# MQTT settings

mqtt:

  # MQTT base topic for zigbee2mqtt MQTT messages

  base_topic: zigbee2mqtt

  # MQTT server URL

  server: mqtt://172.17.31.113:1883

  # MQTT server authentication, uncomment if required:

  user:

  password:

# Serial settings

serial:

  # Location of CC2531 USB sniffer

  port: tcp://172.17.31.68:6638

advanced:

  network_key: GENERATE

frontend:

  port: 8080

Weiter mit Punkt: “Portainer Konfiguration”!

Zigbee2mqtt (USB-Gateway)

USB-Gateway (Dongle) einstecken.

per SSH Befehle für Konsole. Dann folgende Befehle ausführen

lsusb

Ausgabe (Beispiel)

Bus 001 Device 003: ID 1a86:55d4 QinHeng Electronics SONOFF Zigbee 3.0 USB Dongle Plus V2

Vendor-ID und Product-ID notieren.
.rules datei erstellen:

sudo nano /etc/udev/rules.d/99-usb-serial.rules

Inhalt 99-usb-serial.rules

SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55d4", SYMLINK+="zigbee-stick"

Vendor-ID und Product-ID an den hervorgehobenen Stellen eingeben (zwischen den “”)

sudo reboot

Symlink testen

ls -l /dev/zigbee-stick

Ausgabe (Beispiel)

lrwxrwxrwx 1 root root 7 Mar 30 11:28 /dev/zigbee-stick -> ttyACM0

Der USB-Port, hier "ttyACM0", muss später in der “configuration.yaml” eingegeben werden.

Weiter mit configuration file anlegen.  folgende Befehle ausführen:

cd

mkdir -p zigbee2mqtt/data

cd zigbee2mqtt

wget https://raw.githubusercontent.com/Koenkk/zigbee2mqtt/master/data/configuration.yaml -P data

nano data/configuration.yaml

Inhalt configuration.yaml (USB-Gateway)

 # Home Assistant integration (MQTT discovery)

homeassistant: false

# allow new devices to join

permit_join: true

# MQTT settings

mqtt:

  # MQTT base topic for zigbee2mqtt MQTT messages

  base_topic: zigbee2mqtt

  # MQTT server URL

  server: mqtt://172.17.31.113:1883

  # MQTT server authentication, uncomment if required:

  user:

  password:

# Serial settings

serial:

  # Location of CC2531 USB sniffer

  port: /dev/ttyACM0 

advanced:

  network_key: GENERATE

frontend:

  port: 8080

Portainer Konfiguration

Name vergeben: zigbee2mqtt

Image: koenkk/zigbee2mqtt:latest

Ports: 8080 - 8080 TCP

Command & Logging

Driver: json-file

2x add logging driver option

Volumes
Container: /app/data                Host:  /home/pi/zigbee2mqtt/data        Bind
Container: /run/udev                Host: /run/udev                        Bind (Read-only)
 (Nur bei USB-Dongle)

Restart policy
always

Runtime & Ressources (nur bei USB-Dongle)

Host: /dev/zigbee-stick        container: /dev/ttyACM0 (entspricht dem Eintrag in "configuration.yaml")

 

Deploy container!

Zigbee2mqtt Ui: http://[RaspberryPi-IP]:8080 

IP-Symcon (Docker-Container)

Portainer Konfiguration

Name: IP-Symcon

Image: symcon/symcon:latest  ODER symcon/symcon:7.0-378-armhf

Ports:         3777 - 3777        TCP

        1883 - 1883        TCP - Für MQTT-Server (wenn aus IP-Symcon und nicht aus Mosquitto etc.)

Volumes

Container: /var/lib/symcon         Host: /home/pi/symcon/data                Bind
Container: /var/log/symcon        Host: /home/pi/symcon/log                Bind

Container: /root                Host: clear

        Bind

Env

TZ        Europe/Berlin

Restart policy
always

Deploy container!

IP-Symcon starten

Starten der IP-Symcon Konsole:  http://IP-Adresse:3777/console/

Für neue Visu neue Visualisierungsinstanz hinzufügen “Tile-Visualisation”

Modul “Zigbee2mqtt” herunterladen und konfigurieren.

MQTT - Benutzer und Passwort vergeben.
MQTT - Port: 1883

Bei Verwendung von LAN-Gateway müssen die MQTT Server Zugangsdaten und der Port in der UI des Gateways angegeben werden.

Wechseln in UI von Zigbee2mqtt

Wechseln in Ip-Symcon

Im Objektbaum auf “Discovery Instanzen” und “Zigbee2mqtt” Konfigurator anklicken. Hier werden (wenn gepairt) alle von Zigbee2mqtt verwalteteten Devices angezeigt.

Ein Device auswählen und “Erstellen” → Instanz wird mit den entsprechenden Variablen im Objektbaum angelegt.

Steuerung über Funktionen: RequestAction($VariablenID, $Value);

Oder über die Visu!!

Heimdall

Name vergeben: heimdall

image: linuxserver/heimdall:latest

Ports:        80 - 80                TCP

443 - 443        TCP

Volumes

Container: /config                Host: home/pi/heimdall

Env

PUID = 1000

PGID = 1000

TZ = Europe/Berlin

Tipp:         PUID und PGID herausfinden

ssh auf Pi und Befehl eingeben

id user

Ergebnis (Beispiel)

Restart policy
always

deploy Container -- http://IP-Adresse