NEWS
Conbee DeConz - Could not connect
-
@Gilly
Oh cool, danke für die Info. Sobald ich ausreichend Zeit finde, werde ich mich da dran geben.@succo_J
Trotzdem forsche ich auch gerne mit dir weiter an dem aktuellen Setting
Hilf mir mal bitte auf die Sprünge, was du genau versuchst herauszufinden.
Nach meinem (sicher laienhaften) Verständnis zeigt lsof ja Sockets von Anwendungen an.root@Deconz-Zigbee:/# lsof -Pni | grep deCONZ deCONZ 8 root 6u IPv4 46551 0t0 TCP *:8080 (LISTEN) deCONZ 8 root 10u IPv4 47698 0t0 TCP *:8088 (LISTEN) deCONZ 8 root 11u IPv4 47777 0t0 UDP *:1900 deCONZ 8 root 17u IPv4 44589884 0t0 TCP 192.168.178.139:8088->192.168.178.129:54784 (ESTABLISHED)
Also scheint der Container auf 3 Ports zu lauschen.
Der 8080 ist auch der, über den ich die Phoscon Seite aufrufe:
Kommen wir hier denn überhaupt weiter oder liegt das Problem nicht vielleicht außerhalb des DeConz Containers, nämlich in der Docker Konfiguration (MACVLAN)?!
-
@oetzi Dein Port 8088 ist der für die API. Wenn der vom Docker nicht umgebogen wird, versuche den statt der 80 im ioBroker.
-
@succo_J
Leider geht das auch nicht.deconz.0 2021-01-04 14:42:18.717 error (23080) Could not connect to deConz/Phoscon. Error: connect EHOSTUNREACH 192.168.178.139:8088
Hätte aber nicht dann auch der Ping von der .200 auf die .139 funktionieren müssen?
-
@oetzi Keine Ahnung ob Ping mit Docker vielleicht ein Problem hat. Mir fallen nur noch zwei Möglichkeiten ein. Entweder Docker macht die 8088 nicht publik oder dieser Port wird auf eine ganz andere Nummer umgebogen.
Deshalb mal: docker inspect Deconz-Zigbee und nach NetworkSetting suchen.
Hier mal ein Beispiel von einem anderen Container:
"NetworkSettings": { "Bridge": "", "SandboxID": "77e745ec8f5d996698cc7cbd89519c9340cc5d7e28c799d0e838d91e77cbd155", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": { "7071/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "7071" } ], "8083/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "9083" } ]
Da wird Port 7071 einfach durchgereicht und die interne 8083 als 9083 veröffenlicht.
Villeicht findet sich bei dir dort eine Zuordnung zur 8088...
-
Mhh, die Ports-Einstellung sieht arg dünn aus bei mir
"NetworkSettings": { "Bridge": "", "SandboxID": "c275fd38b4c8c4b644a86829f61d43481a86082ab4dcfb7d9cb051252a1ee31f", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": {}, "SandboxKey": "/var/run/docker/netns/default", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "", "Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "MacAddress": "", "Networks": { "host": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "c6aa4c8511fca2ee1707474cf074cf7ec02e4be8f78f63daa286ddffeebe5992", "EndpointID": "fc9431f2ba366e9416561626201e7afd94b492d30eeab1fbdfd5eade156a1251", "Gateway": "", "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "", "DriverOpts": null }
-
@Gilly said in Conbee DeConz - Could not connect:
Wenn man das MACVLAN Netzwerk so anlegt, dass man dort mehrere Images verwenden kann, klappt es wunderbar.
Ich habe für die Konfiguration folgendes verwendet:IPV4 Subnet - 192.168.178.0/24
IPV4 IP range - 192.168.178.192/27Im Container->Netzwerk kann man dann noch die IP angeben, welche man haben möchte.
Ich habe jetzt verschiedenes ausprobiert, kriege es aber irgendwie nicht hin.
Als erstes habe ich eine neue MACVLAN CONF "docker_macvlan_conf" angelegt mit folgenden Parametern:
- IPV4 Subnet - 192.168.178.0/24
- IPV4 IP range - 192.168.178.200/29
Nach meinem Verständnis sollten mit der 29er Maskierung nun 8 IP Adressen möglich sein (200-207). Eine (bei mir .200) kann ich dann dem ioBroker Container geben und die andere (bei mir .201) dem Deconz.
Dann habe ich ein neues Netzwerk (für Deconz) anlegt:
- Name: deconz_macvlan_201
- Conf: docker_macvlan_conf
Das hat noch funktioniert. Wenn ich jetzt aber ein zweites Netzwerk (für den ioBroker) anlegen will und die gleiche conf auswähle:
- Name: iobroker_macvlan_200
- Conf: docker_macvlan_conf
Kriege ich folgende Fehlermeldung:
Failure Pool overlaps with other one on this address space
Wo ist mein Denkfehler, bzw. was habe ich vergessen oder falsch gemacht?
-
- Laut Netzwerkrechner von heise, kann man bei deiner Konfiguration einen Bereich von 200-206 verwenden.
- Du musst nur eine Netzwerkkonfiguration "docker_macvlan_conf" und ein Netzwerk anlegen "docker_macvlan". (Den gleichen Fehler hatte ich aber auch gemacht )
Ich mache das nicht auf der Kommandozeile sondern direkt über Portainer. Da kann man dann den Netzwerk noch die Wunsch-IP mit angeben.
-
Ein ganz dickes Dankeschön geht an @Gilly, der mit mir gestern Abend das Problem gelöst hat!
Damit der ein oder andere damit leichter zurecht kommt, versuche ich das ganze mal zusammen zu fassen und die Hürden zu nennen, die ich gestern noch nehmen musste:
Grundlage für die grundsätzliche Einrichtung von ioBroker unter Docker ist die wohl sehr bekannte Anleitung hier:
https://smarthome.buanet.de/2019/05/iobroker-unter-docker-auf-der-synology-diskstation-v3/
An der Stelle wo im Tutorial die "iob_public_conf" angelegt wird, setzt meine Ergänzung hier an.
Ich nutze Portainer für die gesamte Einrichtung.Grundproblem nochmal zusammengefasst: Wenn ein Container per MACVLAN (iobroker) arbeitet, ein anderer aber über HOST (deconz) angebunden ist, können diese nicht miteinander kommunizieren. (Hier kann man ein paar mehr Details zu der Problem nachlesen: https://www.synology-forum.de/threads/macvlan-zugriff-auf-den-host.103178/)
Lösungsweg
- Anlegen einer Netzwerkkonfiguration mit mehr als einer IP Adresse in der Range, um eben mehrere Container per MACVLAN versorgen zu können
Beispiel:
Zu beachten:
- Die IP Range auf größer 1 IP Adresse setzen. Folgender Calculator hilft dabei. http://www.subnet-calculator.com/cidr.php
- In meinem Beispiel habe ich folgende Range gewählt: 192.168.178.200/29 --> Dies führt dazu, dass folgende IPs zur Verfügung stehen: 192.168.178.200 - 192.168.178.207
- Nun noch dran denken, dass ihr in eurem Router / DHCP Server konfiguriert, dass dieser Bereich nicht vergeben wird, um Adresskonflikte durch Doppeltvergabe zu vermeiden.
-
MACVLAN Netzwerk mit neuer Konfig anlegen
Beispiel:
Hinweis: Die Einträge unter "Containers in Network" sollten zunächst leer sein bzw. die Einträge kommen später hinzu. -
Netzwerk dem 1. Container zuweisen
Container > ioBroker auswählen (draufklicken/Details aufrufen)
Dann ganz unten bei "join a network" das gerade angelegte Netzwerk auswählen und ggf. bereits vorhandene alte Netzwerke rausschmeißen "Leave Network".
3.1 Netzwerkdetails des Containers anpassen
Wählt "Edit" des Containers aus.
Achtung Fallstrick: Das geht nur aus der Detailansicht eines Containers, nicht auf der Übersicht, wo ihr alle Container seht (warum auch immer).
3.2 Dem Container eine feste IP aus der Range vergeben
Bei mir die 192.168.178.200
Fallstrick: Unter Network muss erneut erneut das Netzwerk (bei mir "docker_macvlan") ausgewählt werden. Das übernimmt er irgendwie nicht.--> Jetzt auf "Deploy the Container" klicken und drauf hoffen, dass kein Fehler auftritt
Fallstrick (zumindest bei mir):
Unter "Command & Logging" > Entrypoint sollte nur /start.sh stehen. Bei mir stand am Anfang /tini,--,/start.sh und damit hat das Deployment nicht funktioniert.
- Das GLEICHE Netzwerk dem 2. Container zuweisen
Jetzt macht ihr mit dem 2. Container genau das gleiche, nur das ihr logischerweise eine andere feste IP aus der Range vergebt (z. B. .201).
Zu beachten: Wirklich das gleiche Netzwerk nutzen, kein 2. über die gleiche conf oder ähnliches verwenden.
Das sollte es gewesen sein.
Ich konnte danach den Deconz Container aus dem ioBroker Container anpingen und mir einen API Key holen:
@Gilly Kannst du mal drüber gucken, ob ich irgendeinen Fallstrick oder sonstiges vergessen habe?
- Anlegen einer Netzwerkkonfiguration mit mehr als einer IP Adresse in der Range, um eben mehrere Container per MACVLAN versorgen zu können
-
@oetzi Da hast du dir aber sehr viel Mühe gegeben. Passt soweit
-
@oetzi Sehr schön aufgearbeitet. Wenn du das Ganze jetzt noch in einen Stack verpackst sparst du dir sogar die (leider Portainer bedingten) Fallstricke und deployst die Container inkl. des MACVLAN mit einem Klick.
Schau mal hier, vielleicht ist das was für dich:https://smarthome.buanet.de/2021/01/arbeiten-mit-portainer-stacks/
MfG,
André -
@andre
Hallo
habe eigentlich erfolgreich den Iobroker Container angelegt, wollte ihn jetzt nochmals anlegen, allerdings bringe ich es nicht mehr zusammen.
Grund ist, es kommt immer diese Fehlermeldung.Habe alles gleich gemacht wie zuvor. Einzig habe ich diesmal bei Netzwerk MACVLAN genommen. Was ich zuvor erstellt habe.
Kann mir wer helfen. -
@nwh sagte in Conbee DeConz - Could not connect:
Hallo,
ohne Infos von deinem Setup zu kennen, würde ich sagen, dass dein MACVLAN nicht korrekt konfiguriert ist.
Wie hast du das eingerichtet? Was für ein System nutzt du als Docker Host?MfG,
André -
@andre Ja stimmt, ich habe es mit host versucht und siehe da es funktioniert.
Aber ich würde gerne MACVLAN nutzen, da ich mehrer Container verwenden möchte.
Hier meine Config vom MACVLANMein Netz ist 192.168.100.0 eigentlich bin ich der Meinung das so funktionieren sollte.
Bei Netzwerk trage ich dann folgendes ein:
-
Du kannst doch auch so mehrere Container verwenden.
Wenn du die HOST Einstellung hast, dann haben die Container immer die IP deines Gerätes Raspi/Synology und dann verschiedene Portnummern.
Beispiel:
Iobroker 192.168.2.100:8081
Deconz 192.168.2.100:8077
Motion Eye 192.168.2.100:8765Meistens kannst du beim Einrichten des Containers in den Umgebungsvariablen den Wunschport einstellen oder eben default lassen.
-
@haselchen ja dann werde ich das so machen.
Ich wollte jetzt aus meinen Fehlern lernen und alle neu mit Portainer machen.
Container läuft jetzt nur kann ich nicht darauf zu greifen, warum auch immer.
Eigentlich bin ich nicht so blöd, aber schön langsam zweifle ich an mir.Das ist der Log:
-
-
@haselchen Ja genau, da geht nix. Ich habe noch meinen alten Container den du mir gerettet hast, allerdings habe ich diesen gestoppt.
Spielt das eine Rolle? -
Puh, gute Frage. Da bin ich ehrlich, dass kann ich dir nicht beantworten.
Kann mich gaaaaaanz dunkel erinnern, dass ich so eine Konstellation mal hatte und es auch Probleme gab. Will mich aber nicht festlegen.
Kannst du den jetzigen löschen ohne Gewissensbisse und den gestoppten wieder aktivieren? -
@haselchen so ja das geht.
So ich habe jetzt den Container nochmals gelöscht und neu erstellt und unter "EV"
die 2 Einträge aus der Anleitung weggelassen und siehe da es geht. Jetzt komme ich mit
ip:8081 auf einen frischen Iobroker!
Ein frage (wahrscheinlich noch mehrer ) Iobroker ist frisch, bei Host zeigt er jetzt Js.Controller 3.1.6 an. Bei meinen alten 3.2. wäre verfügbar. sorry für diese Frage. -
Das liegt vermutlich am Verwahrungsort.
3.1.6 ist stable und dabei solltest du auch erstmal bleiben.Links oben
Dann siehste unten den Verwahrungsort.
Bei dir sollte da Stable stehen.