xirixiz / dsmr-reader-docker

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

DSMRREADER_OPERATION_MODE=api_client not working #311

Closed puijken closed 1 year ago

puijken commented 1 year ago

Support guidelines

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

Description

When starting the container with api_client paramater as a remote datalogger, it tries to make a connection to the database which it should not do.

Expected behaviour

Start container, do not try to connect to database but just send the P1 telegrams to the api_server.

Actual behaviour

Upon starting it tries to connect to the dabase and keeps retrying, see logs.

Steps to reproduce

Create the remote datalogger container with enviroment variable:

Docker info

N/A - syntax change in dsmrreader does not seem to work in docker container anymore

Version

N/A - syntax change in dsmrreader does not seem to work in docker container anymore

Docker compose

version: '3'
services:
  dsmr_remote:
    image: xirixiz/dsmr-reader-docker:latest
    container_name: dsmr_remote
    restart: always
    environment:
      - TZ=Europe/Amsterdam
      - DJANGO_TIME_ZONE=Europe/Amsterdam
      - DSMRREADER_REMOTE_DATALOGGER_API_KEYS=**redacted**
      - DSMRREADER_REMOTE_DATALOGGER_API_HOSTS=**redacted**
      - DSMRREADER_REMOTE_DATALOGGER_INPUT_METHOD=serial
      - DSMRREADER_OPERATION_MODE=api_client
      - DSMRREADER_REMOTE_DATALOGGER_SERIAL_PORT=/dev/ttyUSB0
      - DSMRREADER_REMOTE_DATALOGGER_SERIAL_BAUDRATE=115200
      - DSMRREADER_REMOTE_DATALOGGER_SLEEP=5
      - DSMRREADER_REMOTE_DATALOGGER_DEBUG_LOGGING=false
      - DSMRREADER_LOGLEVEL=WARNING
    devices:
      - "/dev/ttyUSB0:/dev/ttyUSB0"
    healthcheck:
      disable: true
    labels:
      com.docker.compose.project: dsmr_remote
      com.docker.compose.service: dsmr_remote
    networks:
      macvlan12:
        ipv4_address: 10.0.12.202
networks:
  macvlan12:
    external: true

Container logs

Creating dsmr_remote ... done Attaching to dsmr_remote dsmr_remote | [s6-init] making user provided files available at /var/run/s6/etc...exited 0. dsmr_remote | [s6-init] ensuring user provided files have correct perms...exited 0. dsmr_remote | [fix-attrs.d] applying ownership & permissions fixes... dsmr_remote | [fix-attrs.d] done. dsmr_remote | [cont-init.d] executing container initialization scripts... dsmr_remote | [cont-init.d] 10-adduser: executing... dsmr_remote | usermod: no changes dsmr_remote | dsmr_remote | ------------------------- dsmr_remote | User UID: 803 dsmr_remote | User GID: 803 dsmr_remote | ------------------------- dsmr_remote | dsmr_remote | [cont-init.d] 10-adduser: exited 0. dsmr_remote | [cont-init.d] 20-set-app-defaults: executing... [ INFO ] DSMR Reader Reader release: 5.9.0 [ INFO ] DSMR Reader Reader Docker release: 2022.12.02 [ INFO ] Ensure permissions... [ INFO ] Setting architecture requirements... [ INFO ] X64 Architecture [ INFO ] Verifying if the DSMR Reader web credential variables have been set... [ INFO ] Verifying database connectivity to host: dsmrdb with port: 5432... dsmr_remote | nc: getaddrinfo: Try again Testing database connectivity: 1 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 2 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 3 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 4 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 5 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 6 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 7 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 8 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 9 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 10 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 11 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 12 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 13 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 14 second(s) of 30 seconds...nc: getaddrinfo: Try again Testing database connectivity: 15 second(s) of 30 seconds...nc: getaddrinfo: Try again

Additional info

No response

xirixiz commented 1 year ago

Ah crap, indeed. This check is done for each setup. I'll fix this Tonight.

xirixiz commented 1 year ago

Fixed. Build is running now: https://github.com/xirixiz/dsmr-reader-docker/actions/runs/3697536083

xirixiz commented 1 year ago

Hmm, I do notice this:

    environment:
      - TZ=Europe/Amsterdam
      - DJANGO_TIME_ZONE=Europe/Amsterdam
      - DSMRREADER_REMOTE_DATALOGGER_API_KEYS=**redacted**
      - DSMRREADER_REMOTE_DATALOGGER_API_HOSTS=**redacted**
      - DSMRREADER_REMOTE_DATALOGGER_INPUT_METHOD=serial
      - DSMRREADER_OPERATION_MODE=api_client
      - DSMRREADER_REMOTE_DATALOGGER_SERIAL_PORT=/dev/ttyUSB0
      - DSMRREADER_REMOTE_DATALOGGER_SERIAL_BAUDRATE=115200
      - DSMRREADER_REMOTE_DATALOGGER_SLEEP=5
      - DSMRREADER_REMOTE_DATALOGGER_DEBUG_LOGGING=false
      - DSMRREADER_LOGLEVEL=WARNING

A series of variables are mixed here, for api_client and standalone (serial). Why is thiis if I may ask?

For an API client, this will do:

    environment:
      - TZ=Europe/Amsterdam
      - DJANGO_TIME_ZONE=Europe/Amsterdam
      - DSMRREADER_REMOTE_DATALOGGER_API_KEYS=**redacted**
      - DSMRREADER_REMOTE_DATALOGGER_API_HOSTS=**redacted**
      - DSMRREADER_OPERATION_MODE=api_client
      - DSMRREADER_REMOTE_DATALOGGER_SLEEP=5
      - DSMRREADER_REMOTE_DATALOGGER_DEBUG_LOGGING=false
      - DSMRREADER_LOGLEVEL=WARNING
puijken commented 1 year ago

It works, however getting some error messages upon starting the container - which eventually does work. After soms errors it's just running fine.

Attaching to dsmr_remote
dsmr_remote    | [s6-init] making user provided files available at /var/run/s6/etc...exited 0.
dsmr_remote    | [s6-init] ensuring user provided files have correct perms...exited 0.
dsmr_remote    | [fix-attrs.d] applying ownership & permissions fixes...
dsmr_remote    | [fix-attrs.d] done.
dsmr_remote    | [cont-init.d] executing container initialization scripts...
dsmr_remote    | [cont-init.d] 10-adduser: executing...
dsmr_remote    | usermod: no changes
dsmr_remote    |
dsmr_remote    | -------------------------
dsmr_remote    | User UID: 803
dsmr_remote    | User GID: 803
dsmr_remote    | -------------------------
dsmr_remote    |
dsmr_remote    | [cont-init.d] 10-adduser: exited 0.
dsmr_remote    | [cont-init.d] 20-set-app-defaults: executing...
[ INFO ] DSMR Reader Reader release: 5.9.0
[ INFO ] DSMR Reader Reader Docker release: 2022.12.03
[ INFO ] Ensure permissions...
[ INFO ] Setting architecture requirements...
[ INFO ] X64 Architecture
[ INFO ] Running post configuration...
dsmr_remote    | Traceback (most recent call last):
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
dsmr_remote    |     self.connect()
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 33, in inner
dsmr_remote    |     return func(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 200, in connect
dsmr_remote    |     self.connection = self.get_new_connection(conn_params)
dsmr_remote    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 33, in inner
dsmr_remote    |     return func(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 187, in get_new_connection
dsmr_remote    |     connection = Database.connect(**conn_params)
dsmr_remote    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/psycopg2/__init__.py", line 122, in connect
dsmr_remote    |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    | psycopg2.OperationalError: could not translate host name "dsmrdb" to address: Name does not resolve
dsmr_remote    |
dsmr_remote    |
dsmr_remote    | The above exception was the direct cause of the following exception:
dsmr_remote    |
dsmr_remote    | Traceback (most recent call last):
dsmr_remote    |   File "/app/manage.py", line 10, in <module>
dsmr_remote    |     execute_from_command_line(sys.argv)
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
dsmr_remote    |     utility.execute()
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/management/__init__.py", line 413, in execute
dsmr_remote    |     self.fetch_command(subcommand).run_from_argv(self.argv)
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 354, in run_from_argv
dsmr_remote    |     self.execute(*args, **cmd_options)
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 398, in execute
dsmr_remote    |     output = self.handle(*args, **options)
dsmr_remote    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 89, in wrapped
dsmr_remote    |     res = handle_func(*args, **kwargs)
dsmr_remote    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/management/commands/migrate.py", line 75, in handle
dsmr_remote    |     self.check(databases=[database])
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 419, in check
dsmr_remote    |     all_issues = checks.run_checks(
dsmr_remote    |                  ^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/checks/registry.py", line 76, in run_checksdsmr_remote    |     new_errors = check(app_configs=app_configs, databases=databases)
dsmr_remote    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/checks/model_checks.py", line 34, in check_all_models
dsmr_remote    |     errors.extend(model.check(**kwargs))
dsmr_remote    |                   ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/models/base.py", line 1303, in check
dsmr_remote    |     *cls._check_indexes(databases),
dsmr_remote    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/models/base.py", line 1695, in _check_indexesdsmr_remote    |     connection.features.supports_covering_indexes or
dsmr_remote    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/functional.py", line 48, in __get__
dsmr_remote    |     res = instance.__dict__[self.name] = self.func(instance)
dsmr_remote    |                                          ^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/features.py", line 92, in is_postgresql_11
dsmr_remote    |     return self.connection.pg_version >= 110000
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/functional.py", line 48, in __get__
dsmr_remote    |     res = instance.__dict__[self.name] = self.func(instance)
dsmr_remote    |                                          ^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 329, in pg_version
dsmr_remote    |     with self.temporary_connection():
dsmr_remote    |   File "/usr/local/lib/python3.11/contextlib.py", line 137, in __enter__
dsmr_remote    |     return next(self.gen)
dsmr_remote    |            ^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 603, in temporary_connection
dsmr_remote    |     with self.cursor() as cursor:
dsmr_remote    |          ^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 33, in inner
dsmr_remote    |     return func(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 259, in cursor
dsmr_remote    |     return self._cursor()
dsmr_remote    |            ^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 235, in _cursor
dsmr_remote    |     self.ensure_connection()
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 33, in inner
dsmr_remote    |     return func(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 218, in ensure_connection
dsmr_remote    |     with self.wrap_database_errors:
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/utils.py", line 90, in __exit__
dsmr_remote    |     raise dj_exc_value.with_traceback(traceback) from exc_value
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
dsmr_remote    |     self.connect()
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 33, in inner
dsmr_remote    |     return func(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 200, in connect
dsmr_remote    |     self.connection = self.get_new_connection(conn_params)
dsmr_remote    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 33, in inner
dsmr_remote    |     return func(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 187, in get_new_connection
dsmr_remote    |     connection = Database.connect(**conn_params)
dsmr_remote    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/psycopg2/__init__.py", line 122, in connect
dsmr_remote    |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    | django.db.utils.OperationalError: could not translate host name "dsmrdb" to address: Name does not resolve
dsmr_remote    |
dsmr_remote    |
dsmr_remote    | 559 static files copied to '/var/www/dsmrreader/static'.
dsmr_remote    | Traceback (most recent call last):
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
dsmr_remote    |     self.connect()
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 33, in inner
dsmr_remote    |     return func(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 200, in connect
dsmr_remote    |     self.connection = self.get_new_connection(conn_params)
dsmr_remote    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 33, in inner
dsmr_remote    |     return func(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 187, in get_new_connection
dsmr_remote    |     connection = Database.connect(**conn_params)
dsmr_remote    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/psycopg2/__init__.py", line 122, in connect
dsmr_remote    |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    | psycopg2.OperationalError: could not translate host name "dsmrdb" to address: Name does not resolve
dsmr_remote    |
dsmr_remote    |
dsmr_remote    | The above exception was the direct cause of the following exception:
dsmr_remote    |
dsmr_remote    | Traceback (most recent call last):
dsmr_remote    |   File "/app/manage.py", line 10, in <module>
dsmr_remote    |     execute_from_command_line(sys.argv)
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
dsmr_remote    |     utility.execute()
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/management/__init__.py", line 413, in execute
dsmr_remote    |     self.fetch_command(subcommand).run_from_argv(self.argv)
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 354, in run_from_argv
dsmr_remote    |     self.execute(*args, **cmd_options)
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 398, in execute
dsmr_remote    |     output = self.handle(*args, **options)
dsmr_remote    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/app/dsmr_backend/management/commands/dsmr_superuser.py", line 26, in handle
dsmr_remote    |     user = User.objects.get(username=username, is_superuser=True)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/models/manager.py", line 85, in manager_method
dsmr_remote    |     return getattr(self.get_queryset(), name)(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 431, in get
dsmr_remote    |     num = len(clone)
dsmr_remote    |           ^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 262, in __len__
dsmr_remote    |     self._fetch_all()
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 1324, in _fetch_all
dsmr_remote    |     self._result_cache = list(self._iterable_class(self))
dsmr_remote    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 51, in __iter__
dsmr_remote    |     results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
dsmr_remote    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1173, in execute_sql
dsmr_remote    |     cursor = self.connection.cursor()
dsmr_remote    |              ^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 33, in inner
dsmr_remote    |     return func(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 259, in cursor
dsmr_remote    |     return self._cursor()
dsmr_remote    |            ^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 235, in _cursor
dsmr_remote    |     self.ensure_connection()
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 33, in inner
dsmr_remote    |     return func(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 218, in ensure_connection
dsmr_remote    |     with self.wrap_database_errors:
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/utils.py", line 90, in __exit__
dsmr_remote    |     raise dj_exc_value.with_traceback(traceback) from exc_value
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
dsmr_remote    |     self.connect()
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 33, in inner
dsmr_remote    |     return func(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 200, in connect
dsmr_remote    |     self.connection = self.get_new_connection(conn_params)
dsmr_remote    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 33, in inner
dsmr_remote    |     return func(*args, **kwargs)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 187, in get_new_connection
dsmr_remote    |     connection = Database.connect(**conn_params)
dsmr_remote    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    |   File "/usr/local/lib/python3.11/site-packages/psycopg2/__init__.py", line 122, in connect
dsmr_remote    |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
dsmr_remote    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dsmr_remote    | django.db.utils.OperationalError: could not translate host name "dsmrdb" to address: Name does not resolve
dsmr_remote    |
[ INFO ] Checking for CLIENT CERTIFICATE AUTHENTICATION configuration...
[ INFO ] ENABLE_CLIENTCERT_AUTH is disabled, nothing to see here. Continuing...
[ INFO ] Checking for NGINX SSL configuration...
[ INFO ] ENABLE_NGINX_SSL is disabled, nothing to see here. Continuing...
[ INFO ] Checking for HTTP AUTHENTICATION configuration...
[ INFO ] ENABLE_HTTP_AUTH is disabled, nothing to see here. Continuing...
[ INFO ] Configuring DSMR Reader to only start the api client datalogger (API_CLIENT), which sends the P1 telegrams to the server (API_SERVER)...
[ INFO ] Adding remote datalogger (api_client) configuration settings...
[ INFO ] Adding DSMRREADER_REMOTE_DATALOGGER_SLEEP to the DSMR Reader remote datalogger configuration...
[ INFO ] Adding DSMRREADER_REMOTE_DATALOGGER_DEBUG_LOGGING to the DSMR Reader remote datalogger configuration...
dsmr_remote    | [cont-init.d] 20-set-app-defaults: exited 0.
dsmr_remote    | [cont-init.d] done.
dsmr_remote    | [services.d] starting services
dsmr_remote    | [services.d] done.
dsmr_remote    | Starting DSMR Reader - remote datalogger (api_client)...
puijken commented 1 year ago

For an API client, this will do:

    environment:
      - TZ=Europe/Amsterdam
      - DJANGO_TIME_ZONE=Europe/Amsterdam
      - DSMRREADER_REMOTE_DATALOGGER_API_KEYS=**redacted**
      - DSMRREADER_REMOTE_DATALOGGER_API_HOSTS=**redacted**
      - DSMRREADER_OPERATION_MODE=api_client
      - DSMRREADER_REMOTE_DATALOGGER_SLEEP=5
      - DSMRREADER_REMOTE_DATALOGGER_DEBUG_LOGGING=false
      - DSMRREADER_LOGLEVEL=WARNING

This is working fine ! Removed the additional variables from the docker-compose file and still all is running well ! :)

xirixiz commented 1 year ago

So no errors at startup about the DB with these vars set I assume. At least the DB check should not be performed in api_client mode.

xirixiz commented 1 year ago

Ah, bah, toch wel.... komt er nog een release om deze bug eruit te filteren :D

@dennissiemensma

Ik ga ervanuit dat deze zaken niet nodig zijn voor de api push client. Klopt dat?

  /usr/local/bin/python3 /app/manage.py migrate --noinput
  /usr/local/bin/python3 /app/manage.py collectstatic --noinput
  /usr/local/bin/python3 /app/manage.py dsmr_superuser
dennissiemensma commented 1 year ago

Ja klopt. Het is puur een minimaal script met eventueel uitgeklede dependencies. En "iets" moet dat script draaien, zoals een Supervisor of SystemD of vergelijkbaar.

xirixiz commented 1 year ago

Thanks. Nieuwe bugfix release in de maak: https://github.com/xirixiz/dsmr-reader-docker/actions/runs/3708025233

Dat houdt dus ook in dat nginx e.d. helemaal niet nodig zijn... ik kleed het nog wel wat uit in een volgende release. De fouten zijn iig verholpen.

Dit script is het enige dat draait volgens mij: dsmr_datalogger_api_client.py Verder moeten dan alleen de API variabelen gezet worden.

Kortom api_client kan een container zijn met nauwelijks load.

puijken commented 1 year ago

Werkt nu inderdaad, deze ochtend laatste versie gepulled - [ INFO ] DSMR Reader Reader Docker release: 2022.12.04

Geen errors meer na het opstarten, ik zie nu alleen af en toe het volgende, had ik vroeg volgens mij niet. [2022-12-18 06:54:38.687955] API error: HTTP 500 - Failed to parse telegram [2022-12-18 08:05:20.785465] API error: HTTP 500 - Failed to parse telegram [2022-12-18 08:23:15.797102] API error: HTTP 500 - Failed to parse telegram [2022-12-18 09:33:09.892931] API error: HTTP 500 - Failed to parse telegram [2022-12-18 10:26:04.951585] API error: HTTP 500 - Failed to parse telegram [2022-12-18 11:03:42.005515] API error: HTTP 500 - Failed to parse telegram [2022-12-18 11:07:30.023845] API error: HTTP 500 - Failed to parse telegram [2022-12-18 11:59:49.116872] API error: HTTP 500 - Failed to parse telegram [2022-12-18 12:21:55.105540] API error: HTTP 500 - Failed to parse telegram [2022-12-18 12:25:55.124714] API error: HTTP 500 - Failed to parse telegram [2022-12-18 12:45:31.161540] API error: HTTP 500 - Failed to parse telegram [2022-12-18 13:05:13.197486] API error: HTTP 500 - Failed to parse telegram [2022-12-18 14:13:08.273039] API error: HTTP 500 - Failed to parse telegram [2022-12-18 13:22:38.185738] API error: HTTP 500 - Failed to parse telegram

Maar dat ligt volgens mij aan iets anders .. foute uitlezeing van de meter of fout in doorsturen naar de API_SERVER? Niet echt problematisch, in elk geval erg bedankt !!

dennissiemensma commented 1 year ago

In de logs van DSMR-reader staat vermoedelijk meer informatie. Als af en toe een telegram faalt is dat niet heel erg.