[ERLEDIGT]Unifi-Modul: keine Verbindung bei FHEM in Docker

Begonnen von balli1187, 14 Juli 2019, 14:27:56

Vorheriges Thema - Nächstes Thema

balli1187

Hallo,

ich setze mich gerade mit docker aus einander und zieh nach und anch alles in Container.
Letzte Woche dann FHEM. So weit so gut.

Seitdem FHEM im Container läuft, bekomme ich aber im Unifi-Modul keine Verbindung mehr zum Unifi-Controller (von anfang an im Container). So lange FHEM noch auf dem Host (einem anderen Host) lief, alles kein Problem.

- UC läuft ebenfalls im Container aber im network_mode = host
- FHEM läuft im eigenen Netzwerk mit entsprechendem Port-Mapping
- beide mit jeweil eigenem docker-compose erstellt.
- ping aus dem FHEM-Container zum UC (=host) funktioniert

FHEM compose
    FHEM:
        image: fhem/fhem-amd64_linux
        container_name: FHEM
        restart: always
        ports:
            - "8083:8083"
            - "8090:8090"
            - "3002:3002"
        volumes:
            - /share/CACHEDEV1_DATA/Docker_Daten/FHEM/fhem:/opt/fhem
        environment:
            FHEM_UID: 1000
            FHEM_GID: 1000
            TIMEOUT: 10
            RESTART: 1
            TZ: Europe/Berlin
            MYSQL_HOST: FHEM-DB
        env_file:
            - /share/CACHEDEV1_DATA/Docker_Daten/FHEM/DataBase/DataBase.env
        depends_on:
            - FHEM-DB
            - MQTT
        networks:
            fhem-net:
                ipv4_address: 172.29.8.3

    networks:
        fhem-net:
            external: true


unifi compose
    unifi:
        image: jacobalberty/unifi:stable
        network_mode: host
        container_name: Unifi
        environment:
            - TZ=Europe/Berlin
        restart: always
        volumes:
          - /share/CACHEDEV1_DATA/Docker_Daten/Basic/unifi:/var/lib/unifi


docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
32d505e0f96b        bridge              bridge              local
10a14e5325d6        fhem-net            bridge              local
5515bacccdf4        host                host                local
022cdf1cf77e        none                null                local


Kann mir jemand helfen das wieder zum laufen zu bekommen?

Grüße, Stephan
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

Loredo

du willst dem Unifi Modul wahrscheinlich sagen, dass der Controller über den DNS Namen oder die IP des Docker Hosts erreichbar ist.
Oder deinem lokalen DNS (wo auch immer der läuft) sagen, dass unifi.deinedomain.tld auf die IP des Docker Hosts zeigt.


Um den Docker Host aus dem FHEM Container heraus zu erreichen, kannst du auch den DNS Namen "host.docker.internal" verwenden, siehe README:
https://github.com/fhem/fhem-docker#connect-to-docker-host-from-within-container
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

balli1187

Habe ich probiert und die IP im def mit 'host.docker.internal' ersetzt.

Ergebnis: disconnected.

Hier noch das List, dass ich eingangs vergessen hab:
Internals:
   DEF        host.docker.internal 8443 crypt:450f5d560a1b56410d crypt:480d60771a607809322e5670152c1256
   FUUID      5cb4556e-f33f-04a0-57c0-841bebd114067c0d
   NAME       UnifiController
   NOTIFYDEV  global
   NR         129
   NTFY_ORDER 50-UnifiController
   STATE      disconnected
   TYPE       Unifi
   UC_VERSION unknown
   VERSION    3.3.3
   READINGS:
     2019-07-14 18:11:33   presence_Anika 
     2019-07-14 18:11:33   presence_AnikaNum
     2019-07-14 18:11:33   presence_Stephan
     2019-07-14 18:11:33   presence_StephanNum
     2019-07-14 18:11:33   state           disconnected
   accespoints:
   alerts_unarchived:
   clients:
   events:
   helper:
     password   crypt:480d60771a607809322e5670152c1256
     username   crypt:450f5d560a1b56410d
   hotspot:
     vouchers:
   httpParams:
     ignoreredirects 1
     loglevel   5
     method     POST
     noshutdown 0
     timeout    5
     hash:
     sslargs:
       SSL_verify_mode 0
   unifi:
     CONNECTED  disconnected
     eventPeriod 24
     interval   30
     url        https://host.docker.internal:8443/api/s/default/
     customClientReadings:
       attr_value .:^accesspoint|^essid|^hostname|^last_seen|^snr|^uptime
       parts:
         0000000_part:
           ReadingRegEx ^accesspoint|^essid|^hostname|^last_seen|^snr|^uptime
           nameRegEx  .
   updateDispatch:
   wlans:
Attributes:
   DbLogExclude .*
   DbLogInclude presence_AnikaNum,presence_StephanNum
   event-min-interval (presence_AnikaNum|presence_StephanNum):900
   event-on-change-reading state
   group      Service
   icon       im_underline
   pr_Anika_map presence_Anika
   pr_Stephan_map presence_Stephan
   room       System->Hardware
   userReadings presence_Stephan {
if (ReadingsVal('UnifiController','Stephans-i8','') eq 'connected')
{return 'present'}
elsif (ReadingsVal('UnifiController','Stephans-i8','') eq 'disconnected')
{return 'absent'}
},
presence_StephanNum {
if (ReadingsVal('UnifiController','Stephans-i8','') eq 'connected')
{return 1}
elsif (ReadingsVal('UnifiController','Stephans-i8','') eq 'disconnected')
{return 0}
},
presence_Anika {
if (ReadingsVal('UnifiController','Galaxy-S9','') eq 'connected')
{return 'present'}
elsif (ReadingsVal('UnifiController','Galaxy-S9','') eq 'disconnected')
{return 'absent'}
},
presence_AnikaNum {
if (ReadingsVal('UnifiController','Galaxy-S9','') eq 'connected')
{return 1}
elsif (ReadingsVal('UnifiController','Galaxy-S9','') eq 'disconnected')
{return 0}
}
   userattr   pr_Anika pr_Anika_map pr_Stephan pr_Stephan_map structexclude



Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

balli1187

wenn ich im Modul verbose auf 5 stelle, bekomme ich folgende Fehlermeldungen im Log
UnifiController (Unifi_Login_Send) - executed.
UnifiController (Unifi_Login_Receive) - executed.
UnifiController (Unifi_Login_Receive) - Error while requesting https://host.docker.internal:8443/api/login - DNS: short DNS answer
UnifiController (Unifi_Login_Receive) - Connect/Login to Unifi-Controller failed. Will try again after interval...


Hat es möglicherweise etwas mit HTTPS zutun? Im Standard Image ist das ja nicht drin, wenn ich das richtig im Kopf hab, oder?!
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

balli1187

Zitat von: Loredo am 14 Juli 2019, 15:05:04
du willst dem Unifi Modul wahrscheinlich sagen, dass der Controller über den DNS Namen oder die IP des Docker Hosts erreichbar ist.
Oder deinem lokalen DNS (wo auch immer der läuft) sagen, dass unifi.deinedomain.tld auf die IP des Docker Hosts zeigt.


Um den Docker Host aus dem FHEM Container heraus zu erreichen, kannst du auch den DNS Namen "host.docker.internal" verwenden, siehe README:
https://github.com/fhem/fhem-docker#connect-to-docker-host-from-within-container
Bist du sicher, dass das funktioniert?
Wenn ich versuche aus dem FHEM-Container danach zu pingen, bekomme ich als Antwort
unkown host
Wohingegen ein Ping auf die IP-Adresse funktioniert.

In der Doku steht auch, dass das nur für entwicklungszwecke funktioniert?!


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

Loredo

Ja, dennoch hängt es auch von deiner lokalen Konstellation ab, also wie beispielsweise dein Host System konfiguriert ist.
Du kannst nachsehen, was in /etc/hosts steht und Einträge, die erzeugt werden, beim Start im Docker Log sehen.


Wie kommst du zu dem Schluss, dass die Funktion nur für Entwicklungszwecke sei? Davon lese ich nichts ;-)
Du kannst aber DOCKER_HOST als Umgebungsvariable für den Container setzen und somit manuell die IP hinterlegen, wenn die automatische Ermittlung nicht richtig ist. Das wäre eine Alternative dazu, dass du die IP direkt beim FHEM Device einträgst, was ich oben ja auch schon als weitere Möglichkeit genannt hatte.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

balli1187

Zitat von: Loredo am 15 Juli 2019, 20:29:09
Ja, dennoch hängt es auch von deiner lokalen Konstellation ab, also wie beispielsweise dein Host System konfiguriert ist.
Du kannst nachsehen, was in /etc/hosts steht und Einträge, die erzeugt werden, beim Start im Docker Log sehen.


Wie kommst du zu dem Schluss, dass die Funktion nur für Entwicklungszwecke sei? Davon lese ich nichts ;-)
ich hatte nur mal kurz danach gegooglet, um mehr darüber zu erfahren. Gelich beim ersten Treffer (https://docs.docker.com/docker-for-mac/networking/) sit dann folgendes zu lesen.
ZitatFrom 18.03 onwards our recommendation is to connect to the special DNS name host.docker.internal, which resolves to the internal IP address used by the host. This is for development purpose and will not work in a production environment outside of Docker Desktop for Mac.
Ist zwar Docker for Mac aber bin erstmal davon ausgegangen, dass das an dieser Stelle keinen großen unterschied macht.
ZitatDu kannst aber DOCKER_HOST als Umgebungsvariable für den Container setzen und somit manuell die IP hinterlegen, wenn die automatische Ermittlung nicht richtig ist. Das wäre eine Alternative dazu, dass du die IP direkt beim FHEM Device einträgst, was ich oben ja auch schon als weitere Möglichkeit genannt hatte.
Ich werd das mal probieren aber ich finde halt nach wie vor merkwürdig, dass ich die IP des Hosts aus dem FHEM-Container anpingen kann aber das Modul sich nicht verbinden will, denn offenbar ist die IP ja aus dem Container heraus zu erreichen.
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

Loredo

Zitat von: balli1187 am 16 Juli 2019, 09:57:03
ich hatte nur mal kurz danach gegooglet, um mehr darüber zu erfahren. Gelich beim ersten Treffer (https://docs.docker.com/docker-for-mac/networking/) sit dann folgendes zu lesen.Ist zwar Docker for Mac aber bin erstmal davon ausgegangen, dass das an dieser Stelle keinen großen unterschied macht.Ich werd das mal probieren aber ich finde halt nach wie vor merkwürdig, dass ich die IP des Hosts aus dem FHEM-Container anpingen kann aber das Modul sich nicht verbinden will, denn offenbar ist die IP ja aus dem Container heraus zu erreichen.


Deine Eigenrecherche ist löblich ;-)
Dennoch stimmt das eben hier nicht, weil die Funktion manuell direkt ins Image eingebaut ist, unabhängig davon, ob du Docker auf einem Mac betreibst oder nicht. Es wird einfach nur der selbe DNS Name Verwendet.



Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

balli1187

ich habe jetzt das Modul nochmal komplett gelöscht und neu definiert. Was soll ich sagen... Jetzt ist er verbunden.
Es funktioniert mit der IP und auch mit dem Hostnamen der Maschine, so wie ich ihn in der Fritzbox sehe.
Trage ich jedoch 'host.docker.internal' ein --> disconnected.

Vielen Dank für deine Hilfe.
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero