xirixiz / dsmr-reader-docker

DSMR Reader in Docker.
https://hub.docker.com/r/xirixiz/dsmr-reader-docker
114 stars 33 forks source link

SerialException on Synology (P1 via network) #286

Closed EddyK69 closed 2 years ago

EddyK69 commented 2 years ago

Support guidelines

I've found an issue and checked that ...

Description

I installed DSMR on Synology via Docker, but it cannot connect to my P1 via network. I get a SerialException error. Do I need the extra serial drivers also for a network P1 logger?

Expected behaviour

I expect that DSMR on my Synology NAS can connect to a network P1 logger. My Home Assistant CAN connect (on the same docker instance on NAS)

Actual behaviour

A SerialException error

Steps to reproduce

n/a

Docker info

n/a

Version

docker 20.10.3

Docker compose

n/a

Container logs

2022-05-17 07:54:19,003 ERROR    mixins       run_once                        103 | dsmr_datalogger.management.commands.dsmr_datalogger: [!] Exception raised. Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/serial/urlhandler/protocol_socket.py", line 63, in open
    self._socket = socket.create_connection(self.from_url(self.portstr), timeout=POLL_TIMEOUT)
  File "/usr/local/lib/python3.10/socket.py", line 845, in create_connection
    raise err
  File "/usr/local/lib/python3.10/socket.py", line 833, in create_connection
    sock.connect(sa)
TimeoutError: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/dsmr_datalogger/scripts/dsmr_datalogger_api_client.py", line 37, in read_telegram
    serial_handle = serial.serial_for_url(url=url_or_port, timeout=MAX_READ_TIMEOUT, **serial_kwargs)
  File "/usr/local/lib/python3.10/site-packages/serial/__init__.py", line 90, in serial_for_url
    instance.open()
  File "/usr/local/lib/python3.10/site-packages/serial/urlhandler/protocol_socket.py", line 66, in open
    raise SerialException("Could not open port {}: {}".format(self.portstr, msg))
serial.serialutil.SerialException: Could not open port socket://192.168.107.6:23: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/dsmr_backend/mixins.py", line 92, in run_once
    self.run(data=self.data, **options)
  File "/app/dsmr_datalogger/management/commands/dsmr_datalogger.py", line 29, in run
    telegram = next(self.telegram_generator)
  File "/app/dsmr_datalogger/scripts/dsmr_datalogger_api_client.py", line 39, in read_telegram
    raise RuntimeError('Failed to connect: {}', error)
RuntimeError: ('Failed to connect: {}', SerialException('Could not open port socket://192.168.107.6:23: timed out'))

Additional info

I tested on a Pi against same postgresql and settings, and this is working fine.

EddyK69 commented 2 years ago

Solved by added container to host network