{"id":168306,"date":"2025-01-25T16:28:16","date_gmt":"2025-01-25T15:28:16","guid":{"rendered":"https:\/\/clubcomputer.at\/?p=168306"},"modified":"2025-01-25T16:29:19","modified_gmt":"2025-01-25T15:29:19","slug":"diy-umzug-der-heimsteuerung-auf-unraid-server","status":"publish","type":"post","link":"https:\/\/clubcomputer.at\/2025\/01\/25\/diy-umzug-der-heimsteuerung-auf-unraid-server\/","title":{"rendered":"DIY: Umzug der Heimsteuerung auf unraid-Server"},"content":{"rendered":"

[et_pb_section fb_built=“1″ theme_builder_area=“post_content“ _builder_version=“4.27.4″ _module_preset=“default“ hover_enabled=“0″ sticky_enabled=“0″][et_pb_row _builder_version=“4.27.4″ _module_preset=“default“ column_structure=“2_5,3_5″ theme_builder_area=“post_content“ custom_padding=“||0px|||“ min_height=“288px“][et_pb_column _builder_version=“4.27.4″ _module_preset=“default“ type=“2_5″ theme_builder_area=“post_content“][et_pb_image src=“https:\/\/clubcomputer.at\/wp-content\/uploads\/sites\/6\/2025\/01\/2501-Heimsteuerung-auf-unraid-267×300.png“ _builder_version=“4.27.4″ _module_preset=“default“ theme_builder_area=“post_content“ alt=“Dockeransicht auf unraid“ title_text=“2501 Heimsteuerung auf unraid“ hover_enabled=“0″ sticky_enabled=“0″][\/et_pb_image][\/et_pb_column][et_pb_column _builder_version=“4.27.4″ _module_preset=“default“ type=“3_5″ theme_builder_area=“post_content“][et_pb_text _builder_version=“4.27.4″ _module_preset=“default“ theme_builder_area=“post_content“ hover_enabled=“0″ sticky_enabled=“0″]<\/p>\n

Einleitung und Motivation<\/h2>\n

Bisher habe ich meine Haussteuerung (haupts\u00e4chlich Zigbee-Devices mit Programmierung \u00fcber Node-RED) auf einem Raspberry-400 (ein normaler RPi-4 war damals nicht zu bekommen) betrieben.
Aber irgendwie machte die Konfiguration immer Mucken, wenn sie mit einem pl\u00f6tzlichen Stromausfall konfrontiert war.
So super war der Einsatz auf SD-Karten halt nicht wirklich.<\/p>\n

Andererseits hatte ich vor einiger Zeit einen Unraid-Server in Betrieb genommen, der ohnehin unausgelastet war und zus\u00e4tzliche Aufgaben vertragen w\u00fcrde. Au\u00dferdem h\u00e4ngt der an einer USV.<\/p>\n

\u00a0<\/p>\n

[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=“1″ theme_builder_area=“post_content“ _builder_version=“4.27.4″ _module_preset=“default“ custom_padding=“3px||3px|||“ custom_margin=“-36px|||||“ min_height=“2196.1px“][et_pb_row _builder_version=“4.27.4″ _module_preset=“default“ theme_builder_area=“post_content“ min_height=“465.4px“ custom_padding=“0px|||||“ custom_margin=“|auto|-24px|auto||“][et_pb_column _builder_version=“4.27.4″ _module_preset=“default“ type=“4_4″ theme_builder_area=“post_content“][et_pb_text _builder_version=“4.27.4″ _module_preset=“default“ theme_builder_area=“post_content“ hover_enabled=“0″ sticky_enabled=“0″]<\/p>\n

Damit war einigerma\u00dfen klar, dass ich meine Haussteuerung auf diesen neuen Server umziehen will.<\/p>\n

Was an Software ben\u00f6tigt wird:<\/p>\n

* MQTT-Broker (Mosquitto)
* Zigbee2MQTT
* Node-RED
* eine exportierte Flow-Datei von der alten Installation<\/p>\n

Der Vorteil der neuen Variante ist, dass die einzelnen Komponenten sich in Docker-Containern befinden und daher rasch installiert und gewartet werden k\u00f6nnen.<\/p>\n

An Hardware wird von mir verwendet:<\/p>\n

* Ein MiniPC „HP-Elitedesk 800 G3 Tiny“ (Intel i3-6100, 16GB RAM) (war 2nd-hand um g\u00fcnstiges Geld)
* Bootstick mit Unraid-OS (ja, das geh\u00f6rt so…)
* Daran h\u00e4ngen dann 2 Stk. 4GB-Festplatten, die schon vorhanden waren
* Ein Zigbee-Adapter „Zigbee 3.0 USB Dongle Plus“, siehe sonoff-zigbee-3-0-usb-dongle-plus-e<\/a>
* Eine USV „EATON Ellipse ECO 650“<\/p>\n

Also dann, gehen wir’s an…<\/p>\n

[\/et_pb_text][et_pb_text _builder_version=“4.27.4″ _module_preset=“default“ theme_builder_area=“post_content“ hover_enabled=“0″ sticky_enabled=“0″ custom_margin=“||-10px|||“]<\/p>\n

Mosquitto installieren<\/h2>\n

Dazu eine Anleitung aus dem Netz:
\n
how-to-install-an-mqtt-broker-mosquitto-on-unraid\/<\/a><\/p>\n

* In Unraid unter „APPS“ sucht man nach „Mosquitto“ und w\u00e4hlt die Containervorlage von „cmccambridge“<\/p>\n

* Dockereinstellungen<\/strong>
\n** Port: 1883 (default belassen)
\n** Config directory: \/mnt\/user\/appdata\/mosquito (default belassen)<\/p>\n

* Container starten<\/strong>
\nEr wird sich zwar gleich wieder beenden, aber daf\u00fcr wird das File „mosquitto-unraid-default.conf“ angelegt.<\/p>\n

* Konfigurationsdatei bearbeiten und die „Option 1“ aktivieren<\/strong> (unsichere Variante)
\nDazu \u00f6ffnet man das globale Terminal (icon rechts oben ‚>‘) und gibt dann folgende Kommandos ein:<\/p>\n

----
\nnano \/mnt\/user\/appdata\/mosquitto\/mosquitto-unraid-default.conf
\n\/\/ Die #-Zeichen bei der Option 1 entfernen
\nlistener 1883
\nprotocol mqtt
\nallow_anonymous true
\n\/\/ jetzt noch die Datei sichern und schlie\u00dfen
\n\/\/ Ctrl-o und <Enter> f\u00fcr Schreiben
\n\/\/ Ctrl-x f\u00fcr Beenden
\n----<\/pre>\n

* Den Docker Container „mosquitto“ starten<\/strong>
\nDamit ist die Datei vorbereitet und der Docker-Dienst sollte sich jetzt normal starten lassen.<\/p>\n

Hinweis:<\/em> im jetzigen Zustand kann jeder Client mit dem MQTT-Broker v\u00f6llig ohne Passwort kommunzieren, was allerdings nicht empfehlenswert ist.
\nDaher wird in einem zweiten Schritt eine User-Passwort-Kombination erzeugt.
\nDen Schritt mit der _ungesch\u00fctzten_ Variante ist notwendig, weil wir das Kommando `mosquitto_passwd` ben\u00f6tigen, das allerdings nur verf\u00fcgbar ist, wenn mosquitto bereits l\u00e4uft (wieder einmal Henne-Ei…)<\/p>\n

* Username und Passwort erzeugen<\/strong>
\nWieder im Terminal:<\/p>\n

----
\n\/\/ Erzeuge eine leere Passwort-Datei, soferne sie noch nicht existiert
\ndocker exec -it mosquitto touch \/mosquitto\/config\/passwd
\n\/\/ oder alternativ
\ntouch \/mnt\/user\/appdata\/mosquito\/passwd
\n\/\/ Lege einen neuen User an.
\n\/\/ Das Kommando verlangt dann gleich nach dem zu verwendenden Passwort.
\ndocker exec -it mosquitto mosquitto_passwd \/mosquitto\/config\/passwd user_name
\n----<\/pre>\n

* Konfigurationsdatei nochmals bearbeiten und die „Option 2“ aktivieren<\/strong> (diesmal wollen wir das Passwort verwenden)
\nD.h. wieder auf der Commandozeile\/Terminal die Konfigurationsdatei \u00f6ffnen und editieren<\/p>\n

----
\nnano \/mnt\/user\/appdata\/mosquitto\/mosquitto-unraid-default.conf
\n\/\/ Die #-Zeichen bei der Option 1 wieder hinzuf\u00fcgen
\n# listener 1883
\n# protocol mqtt
\n# allow_anonymous true
\n\/\/ Daf\u00fcr aber die #-Zeichen bei der Option 2 entfernen
\nlistener 1883
\nprotocol mqtt
\npassword_file \/mosquitto\/config\/passwd
\n\/\/ Wieder die Datei sichern und schlie\u00dfen
\n\/\/ Ctrl-o und <Enter> f\u00fcr Schreiben
\n\/\/ Ctrl-x f\u00fcr Beenden
\n----<\/pre>\n

* Jetzt den Mosquitto-Docker-Container neu starten und die Logs kontrollieren<\/strong>
\nWenn die unterste Zeile folgenderma\u00dfen aussieht:<\/p>\n

`1725780124: mosquitto version 2.0.18 running`<\/pre>\n

Gratulation an mich selbst… der erste Teil ist geschafft…<\/p>\n

Hinweis an mich selbst…<\/em>
\nEs erscheinen noch 2 Warnungen. Um das werde ich mich irgendwann (vielleicht) k\u00fcmmern.<\/p>\n

Jetzt aber weiter zu Schritt 2…[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=“1″ theme_builder_area=“post_content“ _builder_version=“4.27.4″ _module_preset=“default“ custom_padding=“5px||0px|||“ min_height=“1641px“][et_pb_row _builder_version=“4.27.4″ _module_preset=“default“ theme_builder_area=“post_content“ min_height=“524px“][et_pb_column _builder_version=“4.27.4″ _module_preset=“default“ type=“4_4″ theme_builder_area=“post_content“][et_pb_text _builder_version=“4.27.4″ _module_preset=“default“ theme_builder_area=“post_content“ hover_enabled=“0″ sticky_enabled=“0″ content_last_edited=“off|desktop“]<\/p>\n

Zigbee2MQTT installieren<\/h3>\n

Jetzt wird der docker container „zigbee2mqtt“ von koenkk installiert.<\/p>\n

Siehe folgende Links:
\n
https:\/\/www.zigbee2mqtt.io\/<\/a>
\n
https:\/\/hub.docker.com\/r\/koenkk\/zigbee2mqtt\/<\/a><\/p>\n

Der schwierigste Teil ist, dass man aus dem container heraus, den USB-Funkstick ansprechen kann.
\nDazu sieht man mittels Konsolenbefehl nach, wie dieser benannt ist.<\/p>\n

----
\nls -l \/dev\/serial\/by-id
\n
\ntotal 0
\nlrwxrwxrwx 1 root root 13 Sep 7 08:39 usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_18ccaa8057c9eb119662914f1d69213e-if00-port0
\n-> ..\/..\/ttyUSB0
\n----<\/pre>\n

Wichtig ist hier das „ttyUSB0“<\/b>.<\/p>\n

Einerseits muss man den Stick in den Docker-Einstellungen und andererseits (neben anderen Parametern) in der configuration.yaml-Datei eintragen.<\/p>\n

\"\"<\/a><\/p>\n

----
\nroot@togebox:\/mnt\/user\/appdata\/zigbee2mqtt# nano configuration.yaml
\nhomeassistant: false
\nfrontend: true
\nmqtt:
\nbase_topic: zigbee2mqtt
\nserver: mqtt:\/\/192.168.8.139
\nuser: user1
\npassword: user1pw
\nserial:
\nport: \/dev\/ttyUSB0
\nadvanced:
\nnetwork_key:
\n- 3
\n- 160
\n...
\n- 149
\n- 174
\npan_id: 34097
\next_pan_id:
\n- 34
\n...
\n- 113
\nhomeassistant_legacy_entity_attributes: false
\nlegacy_api: false
\nlegacy_availability_payload: false
\ndevice_options:
\nlegacy: false
\n----<\/pre>\n

Jetzt nochmals den docker starten und dann die logs kontrollieren.<\/p>\n

----
\n[2024-09-08 10:15:05] info: z2m: Connecting to MQTT server at mqtt:\/\/192.168.8.139
\n[2024-09-08 10:15:05] info: z2m: Connected to MQTT server
\n[2024-09-08 10:15:05] info: z2m:mqtt: MQTT publish: topic 'zigbee2mqtt\/bridge\/state', payload '{\"state\":\"online\"}'
\n[2024-09-08 10:15:05] info: z2m: Started frontend on port 8080
\n[2024-09-08 10:15:05] info: z2m: Zigbee2MQTT started!
\n----<\/pre>\n

Der schwierigste Teil, n\u00e4mlich den Zigbee-Adapter zum Laufen zu bringen, ist auch geschafft. Der Rest sollte eine ziemlich gem\u00e4hte Wiese sein…<\/p>\n

Also frohen Mutes auf zu Schritt 3…[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=“1″ theme_builder_area=“post_content“ _builder_version=“4.27.4″ _module_preset=“default“ custom_padding=“1px|||||“][et_pb_row _builder_version=“4.27.4″ _module_preset=“default“ theme_builder_area=“post_content“ custom_padding=“3px|||||“][et_pb_column _builder_version=“4.27.4″ _module_preset=“default“ type=“4_4″ theme_builder_area=“post_content“][et_pb_text _builder_version=“4.27.4″ _module_preset=“default“ theme_builder_area=“post_content“ hover_enabled=“0″ sticky_enabled=“0″]<\/p>\n

Node-RED installieren<\/h3>\n

Docker container f\u00fcr nodered installieren<\/strong>
\nDas ist jetzt recht einfach. Man bel\u00e4sst einfach alle Standardwerte und startet dann das docker image ganz normal.<\/p>\n

Flowdatei importieren<\/strong>
\nDa man nun mit vor einer leeren nodered Installation sitzt, muss man die exportierte Flowdatei importieren.<\/p>\n

mqtt-broker node anpassen<\/strong>
\nDann muss der mqtt-broker node auf die neue Gegebenheit angepasst werden:
\nServer: 192.168.8.139
\nSecurity: Username \/ Password<\/p>\n

Manage Palette \/ Install<\/strong>
\nEinige der importierten nodes sind unbekannt und m\u00fcssen daher zur Palette hinzugef\u00fcgt werden.
\nIn meinem Fall sind das:
\n* node-red-contrib-eztimer
\n* node-red-contrib-telegrambot
\n* node-red-contrib-wemo-emulator
\n* node-red-dashboard<\/p>\n

UI-Links<\/strong>
\nDie Weboberfl\u00e4chen sind nun (in meinem Fall) unter folgenden Adressen aufrufbar:
\n* http:\/\/192.168.8.139:9442\/#\/ Zigbee2MQTT
\n* http:\/\/192.168.8.139:1880 Node-RED flows
\n* http:\/\/192.168.8.139:1880\/ui Node-RED UI[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"

Einleitung und Motivation Bisher habe ich meine Haussteuerung (haupts\u00e4chlich Zigbee-Devices mit Programmierung \u00fcber Node-RED) auf einem Raspberry-400 (ein normaler RPi-4 war damals nicht zu bekommen) betrieben. Aber irgendwie machte die Konfiguration immer Mucken, wenn sie mit einem pl\u00f6tzlichen Stromausfall konfrontiert war. So super war der Einsatz auf SD-Karten halt nicht wirklich.Andererseits hatte ich vor einiger […]<\/p>\n","protected":false},"author":758,"featured_media":168309,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[1,1229,1098,1251,1234,1581,1479,1103,1165,1472],"tags":[1446,1558,1207,1469],"class_list":["post-168306","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","category-betriebssystem","category-haussteuerung","category-infrastruktur","category-iot","category-iot-forum","category-nas","category-pc","category-server","category-software","tag-betriebssysteme","tag-linux","tag-server","tag-sw-raid"],"jetpack_featured_media_url":"https:\/\/clubcomputer.at\/wp-content\/uploads\/sites\/6\/2025\/01\/2501-Heimsteuerung-auf-unraid.png","_links":{"self":[{"href":"https:\/\/clubcomputer.at\/wp-json\/wp\/v2\/posts\/168306","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clubcomputer.at\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/clubcomputer.at\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/clubcomputer.at\/wp-json\/wp\/v2\/users\/758"}],"replies":[{"embeddable":true,"href":"https:\/\/clubcomputer.at\/wp-json\/wp\/v2\/comments?post=168306"}],"version-history":[{"count":2,"href":"https:\/\/clubcomputer.at\/wp-json\/wp\/v2\/posts\/168306\/revisions"}],"predecessor-version":[{"id":168313,"href":"https:\/\/clubcomputer.at\/wp-json\/wp\/v2\/posts\/168306\/revisions\/168313"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/clubcomputer.at\/wp-json\/wp\/v2\/media\/168309"}],"wp:attachment":[{"href":"https:\/\/clubcomputer.at\/wp-json\/wp\/v2\/media?parent=168306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clubcomputer.at\/wp-json\/wp\/v2\/categories?post=168306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clubcomputer.at\/wp-json\/wp\/v2\/tags?post=168306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}