alexryd / homebridge-shelly

Homebridge plugin for Shelly devices
MIT License
300 stars 45 forks source link

Shelly plugin in container suddenly stopped working #459

Closed Docjones closed 10 months ago

Docjones commented 10 months ago

Describe your problem After an unexpected power outage, the shelly plugin running in my containerized homebridge instance throws an error. The plugin worked without problems until the power outtage

Describe what you have tried so far

Environment:

Compose file:

version: '3'
services:
  homebridge:
    image: homebridge/homebridge:latest
    restart: always
    network_mode: host
    hostname: homebridge
    volumes:
      - /srv/homebridge/vol:/homebridge
      - /etc/localtime:/etc/localtime:ro

Here is an excerpt from the log:

homebridge-homebridge-1  | [12/10/2023, 9:41:49 AM] [Shelly] Admin server is running on port 8181
homebridge-homebridge-1  | [12/10/2023, 9:41:49 AM] Error: send ENETUNREACH 224.0.1.187:5683
homebridge-homebridge-1  |     at doSend (node:dgram:718:16)
homebridge-homebridge-1  |     at defaultTriggerAsyncIdScope (node:internal/async_hooks:463:18)
homebridge-homebridge-1  |     at afterDns (node:dgram:664:5)
homebridge-homebridge-1  |     at processTicksAndRejections (node:internal/process/task_queues:83:21)
homebridge-homebridge-1  | [12/10/2023, 9:41:49 AM] Got SIGTERM, shutting down Homebridge...
homebridge-homebridge-1  | Withdrawing address record for 2a02:810d:a4c0:16de:e65f:1ff:feac:2ede on eth0.
homebridge-homebridge-1  | Withdrawing address record for 192.168.50.123 on eth0.
homebridge-homebridge-1  | Withdrawing address record for ::1 on lo.
homebridge-homebridge-1  | Withdrawing address record for 127.0.0.1 on lo.
homebridge-homebridge-1  | Host name conflict, retrying with homebridge-10

It looks as if CoAP Multicast has some troubles.

-> Running tcpdump outside the container:

tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:43:59.064561 IP shellyswitch25-40F5202676A9.fritz.box.5683 > 224.0.1.187.5683: UDP, length 283
10:43:59.406207 IP shellyrgbw2-AFEFF2.fritz.box.5683 > 224.0.1.187.5683: UDP, length 231
10:43:59.718271 IP shellyplug-s-880896.fritz.box.5683 > 224.0.1.187.5683: UDP, length 68
10:44:00.279317 IP shelly1-E09806962DEE.fritz.box.5683 > 224.0.1.187.5683: UDP, length 106
10:44:01.643149 IP shelly1-40F5200194D5.fritz.box.5683 > 224.0.1.187.5683: UDP, length 106
...

-> Running the same command inside the container yields the same result! image

-> Running ip a outside:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether e4:5f:01:ac:2e:de brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.123/24 brd 192.168.50.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2a02:810d:a4c0:16de:e65f:1ff:feac:2ede/64 scope global dynamic mngtmpaddr
       valid_lft 4216sec preferred_lft 1515sec
    inet6 fe80::e65f:1ff:feac:2ede/64 scope link
       valid_lft forever preferred_lft forever
...
Docjones commented 10 months ago

While checking the user id of the running container, i saw: image and image

Apparently, the avahi-daemon is restarting due to some stuff?

Docjones commented 10 months ago

Apparently, the broadcast-net route has been lost on my host. After adding it back with

sudo route add -net 224.0.0.0/3 eth0

all systems worked fine.