@toralt hi, hab mich mal etwas weiter damit beschaeftigt. Wenn ich das konzeptmaessig so zusammenfassen wuerde, waere es korrekt? Das Thema Docker und Port publishing muss dann auch noch angehen.
Der zigbee2mqtt-Container empfängt die Daten von den Zigbee-Geräten über das SLZB-06 und sendet diese als MQTT-Nachrichten an den Mosquitto-Container. Dazu verbindet sich zigbee2mqtt als MQTT-Client mit Mosquitto und veröffentlicht die Daten unter bestimmten MQTT-Themen (Topics). Der Mosquitto-Container (der MQTT-Broker) nimmt diese Nachrichten entgegen und verwaltet sie.
Der ioBroker zigbee2mqtt-Adapter fungiert ebenfalls als MQTT-Client und stellt eine Verbindung zum Mosquitto-Container her. Der Adapter "abonniert" die relevanten MQTT-Themen, unter denen zigbee2mqtt die Zigbee-Daten veröffentlicht. Sobald Mosquitto eine neue Nachricht zu einem dieser abonnierten Themen empfängt, leitet er diese an den ioBroker.zigbee2mqtt-Adapter weiter. Der Adapter verarbeitet diese Nachrichten und stellt die darin enthaltenen Informationen über die Zigbee-Geräte als nutzbare Datenpunkte in ioBroker zur Verfügung.
Die Kommunikation läuft also über den zentralen Punkt Mosquitto: zigbee2mqtt sendet Daten an Mosquitto, und ioBroker holt sich diese Daten von Mosquitto ab.
NEWS
Latest posts made by thaiyoda
-
RE: ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation
-
RE: ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation
@marc-berg stimmt, das war ja das zigbee2mqtt Protokoll
War gedanklich bei Mosquitto, den Raspi und slzb-06 abgebaut und eingepackt, da morgen früh wieder nach Hause und von dort weitermachen bzw. von vorne beginnen am ordentlich Arbeitsplatz.
War jetzt nur am Handy und Tablet und das wird zusätzlich kompliziert/unübersichtlich. -
RE: ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation
@marc-berg kann es sein (kannst du das aus den Protokollen raulesen?), dass der Port vom Mosquito noch nicht published ist und somit von außerhalb des Containers nicht erreichbar?
-
RE: ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation
@toralt said in ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation:
Containers sollte man als aller erstes mal da rein schauen, was denn da drinnen steht.
an der Stelle haenge ich grundsaetzlich und stehe aufm Schlauch.
Ich bin mir im Unklaren, wo genau ich die Konfiguration finde und anpasse.
Hab mir ein paar Docker Tutorials vorgemerkt. -
RE: ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation
@marc-berg @toralt aus diversen Gründen, möchte ich den mqtt Broker außerhalb ioBroker aufbauen und dann den zigbee2mqtt Adapter im ioBroker nutzen. Auch wenn das erst mal komplizierter erscheint, aber Mosquitto sieht nach einer guten Lösung aus. Ich denke, das macht die ganze Sache auch unabhängiger vom ioBroker, für den Fall ich würde doch gerne eine andere Verwaltung, Visualisierung etc. wählen.
Außerdem wird m.W. grundsätzlich die Geräte ID der ZigBee Geräte in der Visualisierung etc. als Identifikator verwendet. Ich gehe davon aus, dass die ID Geraeteeigen und eineindeutig sind.
Was benötige ich nun für den Aufbau?
Raspi 4 mit:
- OS Lite 64
- Docker (ich verwende portainer. Oder gibt es eine bessere Variante?)
ZigBee Coordinator - slzb-06 vorhanden
Im Docker:
-
Mosquitto
-- Mosquitto Mqtt broker bekommt eine IP und x Ports
-- Port für Zigbee2mqtt im ioBroker
-- Port fuer Web UI zum Mosquitto -
ioBroker
-- das tool für die Visualisierungen, Regelerstellung etc. -
zigbee2mqtt benötige ich dann im Docker nicht mehr?
Im ioBroker:
- Zigbee2mqtt Adapter
-- dieser muss mit der IP und Port des Mosquitto verbunden werden - Mqtt Broker Adapter benötige ich dann nicht?
Den slzb-06 mache ich mit dem Mosquitto (irgendwie in der Containerkonfiguration) bekannt, hat mit dem Zigbee2mqtt Adapter keine direkte Verknüpfung.
Wäre das soweit erst mal korrekt?
-
RE: ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation
@toralt hi, ja da war ich schon mehrfach drauf, aber je öfter ich drauf bin, ergibt sich kein besseres Verständnis.
Z.b.
Wo kriege ich die Info her, wo mein device zu finden ist?
"--device=/dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0018ED3DDF-if00:/dev/ttyACM0: Location of adapter. The path before the : is the path on the host, the path after it is the path that is mapped to inside the container. You should always use the /dev/serial/by-id/ path on the host.
"Gebe ich das ganze "Docker run ... " dann am Stück auf dem. Raspi im Shell ein oder ist das ein File, was ich irgendwie erstellen und ablegen muss?
-
RE: ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation
@marc-berg
Danke!
Ich hoffe unten die Konfiguration des Containers aus Container Inspect ist das, was du meinst. Ansonsten, wo finde ich diese?zigbee-herdsman [2025-04-18 15:45:18] info: zh:zstack:znp: Port closed Using '/app/data' as data directory Starting Zigbee2MQTT without watchdog. [2025-04-18 15:45:21] info: z2m: Logging to console, file (filename: log.log) [2025-04-18 15:45:21] info: z2m: Starting Zigbee2MQTT version 2.2.1 (commit #a14feef8c13f5ce49b0ac358d98d3234d21d7ff4 ) [2025-04-18 15:45:21] info: z2m: Starting zigbee-herdsman (3.4.11) [2025-04-18 15:45:21] info: zh:zstack:znp: Opening TCP socket with 192.168.0.116:6638 [2025-04-18 15:45:21] info: zh:zstack:znp: Socket connected [2025-04-18 15:45:21] info: zh:zstack:znp: Socket ready [2025-04-18 15:45:21] info: zh:zstack:znp: Writing CC2530/CC2531 skip bootloader payload [2025-04-18 15:45:22] info: zh:zstack:znp: Skip bootloader for CC2652/CC1352 [2025-04-18 15:45:23] info: z2m: zigbee-herdsman started (resumed) [2025-04-18 15:45:23] info: z2m: Coordinator firmware version: '{"meta":{"maintrel":1,"majorrel":2,"minorrel":7,"product":1,"revision":20221226,"transportrev":2},"type":"zStack3x0"}' [2025-04-18 15:45:23] info: z2m: Currently 0 devices are joined. [2025-04-18 15:45:23] info: z2m: Connecting to MQTT server at mqtt://localhost:1883 [2025-04-18 15:45:23] error: z2m: MQTT failed to connect, exiting... () [2025-04-18 15:45:23] info: z2m: Stopping zigbee-herdsman... [2025-04-18 15:45:46] info: zh:controller: Wrote coordinator backup to '/app/data/coordinator_backup.json' [2025-04-18 15:45:46] info: zh:zstack:znp: closing [2025-04-18 15:45:46] info: z2m: Stopped zigbee-herdsman [2025-04-18 15:45:46] info: zh:zstack:znp: Port closed Using '/app/data' as data directory Starting Zigbee2MQTT without watchdog.
Das hier kommt aus Inspection, hoffe das ist die Konfiguration.
{ "AppArmorProfile": "", "Args": [ "/sbin/tini", "--", "node", "index.js" ], "Config": { "AttachStderr": false, "AttachStdin": false, "AttachStdout": false, "Cmd": [ "/sbin/tini", "--", "node", "index.js" ], "Domainname": "", "Entrypoint": [ "docker-entrypoint.sh" ], "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "NODE_ENV=production" ], "Hostname": "raspberrypi", "Image": "koenkk/zigbee2mqtt:latest", "Labels": { "org.opencontainers.image.authors": "Koen Kanters", "org.opencontainers.image.created": "2025-04-04T05:51:39Z", "org.opencontainers.image.description": "Zigbee to MQTT bridge using Zigbee-herdsman", "org.opencontainers.image.documentation": "https://www.zigbee2mqtt.io/", "org.opencontainers.image.licenses": "GPL-3.0", "org.opencontainers.image.source": "https://github.com/Koenkk/zigbee2mqtt", "org.opencontainers.image.title": "Zigbee2MQTT", "org.opencontainers.image.url": "https://github.com/Koenkk/zigbee2mqtt", "org.opencontainers.image.version": "2.2.1" }, "OnBuild": null, "OpenStdin": false, "StdinOnce": false, "Tty": false, "User": "", "Volumes": null, "WorkingDir": "/app" }, "Created": "2025-04-17T11:39:09.26242666Z", "Driver": "overlay2", "ExecIDs": null, "GraphDriver": { "Data": { "ID": "b2d6559c98103a432ae64f6715152f4032c8f6a1c756367e50c95a20f1e9adf0", "LowerDir": "/var/lib/docker/overlay2/4e574ce5b699b8cf2bcb78526e8de94a46acf3f645cb7b7068c99b331f54dcbf-init/diff:/var/lib/docker/overlay2/a86fc07523bc5ec745837bb3fa6389faaa335c5660a59c93b8f5ce8d9e46bb27/diff:/var/lib/docker/overlay2/9a05c17358f59ee1457d3c129424112e54ee9da4a2b4bdd0502689c60e60ca4d/diff:/var/lib/docker/overlay2/b2a0f638296e1b65ab2cf6158a8681755b0c530b6546bda16b2dbbc0d43838d0/diff:/var/lib/docker/overlay2/da5551fb685570e58a196a1a894f9b7e245b07da2501ca4afebb0f6b5e1798fc/diff:/var/lib/docker/overlay2/fe35a11332897a2f3ca8d1cf4ddac8e2d77e8d223b9459d6a916d8d684a79823/diff:/var/lib/docker/overlay2/5ebdc85ae9d189a4c92b1721cfb27a21e478ace2e06b7afa77730ccc704e00cd/diff:/var/lib/docker/overlay2/60ca59bc889446e85067e522778285a3f1e592a516fa5d558157b4385f481553/diff:/var/lib/docker/overlay2/7d231517371a40d9b3dad87f425027685a71667edb94bd397ceb0bdc6e5dff08/diff:/var/lib/docker/overlay2/7529736db05a10d9f88733858ff9521cf0208a43bc065201150d6e67da7a75e5/diff:/var/lib/docker/overlay2/90a353298bc10fdf4d3e1b98a736883f490768575c8f1ab3ffbd1906e5b212e6/diff:/var/lib/docker/overlay2/10df07a976159db1ff3a19ed44c4f48d6729e572ddd507885330e87041f73bcb/diff", "MergedDir": "/var/lib/docker/overlay2/4e574ce5b699b8cf2bcb78526e8de94a46acf3f645cb7b7068c99b331f54dcbf/merged", "UpperDir": "/var/lib/docker/overlay2/4e574ce5b699b8cf2bcb78526e8de94a46acf3f645cb7b7068c99b331f54dcbf/diff", "WorkDir": "/var/lib/docker/overlay2/4e574ce5b699b8cf2bcb78526e8de94a46acf3f645cb7b7068c99b331f54dcbf/work" }, "Name": "overlay2" }, "HostConfig": { "AutoRemove": false, "Binds": [], "BlkioDeviceReadBps": null, "BlkioDeviceReadIOps": null, "BlkioDeviceWriteBps": null, "BlkioDeviceWriteIOps": null, "BlkioWeight": 0, "BlkioWeightDevice": null, "CapAdd": [ "AUDIT_WRITE", "CHOWN", "DAC_OVERRIDE", "FOWNER", "FSETID", "KILL", "MKNOD", "NET_BIND_SERVICE", "NET_RAW", "SETFCAP", "SETGID", "SETPCAP", "SETUID", "SYS_CHROOT" ], "CapDrop": [ "AUDIT_CONTROL", "BLOCK_SUSPEND", "DAC_READ_SEARCH", "IPC_LOCK", "IPC_OWNER", "LEASE", "LINUX_IMMUTABLE", "MAC_ADMIN", "MAC_OVERRIDE", "NET_ADMIN", "NET_BROADCAST", "SYSLOG", "SYS_ADMIN", "SYS_BOOT", "SYS_MODULE", "SYS_NICE", "SYS_PACCT", "SYS_PTRACE", "SYS_RAWIO", "SYS_RESOURCE", "SYS_TIME", "SYS_TTY_CONFIG", "WAKE_ALARM" ], "Cgroup": "", "CgroupParent": "", "CgroupnsMode": "private", "ConsoleSize": [ 0, 0 ], "ContainerIDFile": "", "CpuCount": 0, "CpuPercent": 0, "CpuPeriod": 0, "CpuQuota": 0, "CpuRealtimePeriod": 0, "CpuRealtimeRuntime": 0, "CpuShares": 0, "CpusetCpus": "", "CpusetMems": "", "DeviceCgroupRules": null, "DeviceRequests": [], "Devices": [], "Dns": [], "DnsOptions": [], "DnsSearch": [], "ExtraHosts": [], "GroupAdd": null, "IOMaximumBandwidth": 0, "IOMaximumIOps": 0, "Init": false, "IpcMode": "private", "Isolation": "", "Links": null, "LogConfig": { "Config": {}, "Type": "json-file" }, "MaskedPaths": [ "/proc/asound", "/proc/acpi", "/proc/interrupts", "/proc/kcore", "/proc/keys", "/proc/latency_stats", "/proc/timer_list", "/proc/timer_stats", "/proc/sched_debug", "/proc/scsi", "/sys/firmware", "/sys/devices/virtual/powercap" ], "Memory": 0, "MemoryReservation": 0, "MemorySwap": 0, "MemorySwappiness": null, "NanoCpus": 0, "NetworkMode": "host", "OomKillDisable": null, "OomScoreAdj": 0, "PidMode": "", "PidsLimit": null, "PortBindings": {}, "Privileged": false, "PublishAllPorts": false, "ReadonlyPaths": [ "/proc/bus", "/proc/fs", "/proc/irq", "/proc/sys", "/proc/sysrq-trigger" ], "ReadonlyRootfs": false, "RestartPolicy": { "MaximumRetryCount": 0, "Name": "always" }, "Runtime": "runc", "SecurityOpt": null, "ShmSize": 67108864, "UTSMode": "", "Ulimits": null, "UsernsMode": "", "VolumeDriver": "", "VolumesFrom": null }, "HostnamePath": "/var/lib/docker/containers/b2d6559c98103a432ae64f6715152f4032c8f6a1c756367e50c95a20f1e9adf0/hostname", "HostsPath": "/var/lib/docker/containers/b2d6559c98103a432ae64f6715152f4032c8f6a1c756367e50c95a20f1e9adf0/hosts", "Id": "b2d6559c98103a432ae64f6715152f4032c8f6a1c756367e50c95a20f1e9adf0", "Image": "sha256:c6ff44cdb3da0e84818334cedd8bc5e31cc7540ce05158cd7b14ce490ab966df", "LogPath": "/var/lib/docker/containers/b2d6559c98103a432ae64f6715152f4032c8f6a1c756367e50c95a20f1e9adf0/b2d6559c98103a432ae64f6715152f4032c8f6a1c756367e50c95a20f1e9adf0-json.log", "MountLabel": "", "Mounts": [], "Name": "/zigbee2mqtt", "NetworkSettings": { "Bridge": "", "EndpointID": "", "Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "HairpinMode": false, "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "MacAddress": "", "Networks": { "host": { "Aliases": null, "DNSNames": null, "DriverOpts": null, "EndpointID": "c0a56842123c64f919321a19bb73dc3f5f0af0e9d8d51168432c8388ae82e5d1", "Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "GwPriority": 0, "IPAMConfig": {}, "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "Links": null, "MacAddress": "", "NetworkID": "e93b369329328cd863bb36ad8039423a70a246bed5026e37569fe8a7ea414505" } }, "Ports": {}, "SandboxID": "2dc32b21e4b8baf52638d3c6bd2b05b875a933eb647265e92b5471ec8c22a5c4", "SandboxKey": "/var/run/docker/netns/default", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null }, "Path": "docker-entrypoint.sh", "Platform": "linux", "Portainer": { "ResourceControl": { "Id": 2, "ResourceId": "b2d6559c98103a432ae64f6715152f4032c8f6a1c756367e50c95a20f1e9adf0", "SubResourceIds": [], "Type": 1, "UserAccesses": [], "TeamAccesses": [], "Public": false, "AdministratorsOnly": true, "System": false } }, "ProcessLabel": "", "ResolvConfPath": "/var/lib/docker/containers/b2d6559c98103a432ae64f6715152f4032c8f6a1c756367e50c95a20f1e9adf0/resolv.conf", "RestartCount": 11, "State": { "Dead": false, "Error": "", "ExitCode": 0, "FinishedAt": "2025-04-18T15:48:01.351383006Z", "OOMKilled": false, "Paused": false, "Pid": 58108, "Restarting": false, "Running": true, "StartedAt": "2025-04-18T15:48:01.87302661Z", "Status": "running" } }
-
RE: ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation
@homoran said in ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation:
Dann schiebe ich das mal weiter
OK, war mir erst nicht so klar wohin damit. Aber nach jetzigem neuem Verständnis, für mich, macht es unter Docker natürlich viel mehr Sinn.
-
RE: ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation
@homoran said in ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation:
Und wenn dir dabei jemand helfen können soll, braucht es deutlich mehr Informationen
Das verstehe ich.
Frage mich nur, welche Infos sollte ich am effizientesten bereitstellen, damit ich verstanden werde, gezielt am Problem gearbeitet werden kann.Auch wenn Docker eine weitere Ebene ist, verstand ich das Konzept dahinter so, dass man damit Recht gut und isoliert einzelne Komponenten aufsetzen, ändern kann. Was -richtig- kein spezifische ioBroker Thema ist.
-
RE: ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation
@asgothian said in ioBroker, slzb-06, zigbee2mqtt, raspi 4 installation:
hast du die Web-Oberfläche des zigbee2mqtt.io geöffnet um die Geräte einzubinden etc ? Wenn ja müsstest du die addresse kennen
War mir zuerst naiver weisse gar nicht bewusst, dass man diese benötigt. Konzept falsch verstanden. 🫣
An der Stelle hänge ich jetzt aber anscheinend fest und komme bei Linux, Portainer und Docker noch nicht klar.
Aber ich möchte das mit den Docker und dem Konfigurieren verstehen und daher tue ich mir das jetzt an.
Danke für deine Geduld.