Closed bsmeding closed 1 year ago
I searched trough the code and see that the settings must be saved in .env, when checking that file that is correct
root@dsmr_reader_docker:/app# cat .env
DSMRREADER_REMOTE_DATALOGGER_INPUT_METHOD=ipv4
DSMRREADER_REMOTE_DATALOGGER_NETWORK_HOST=192.168.10.10
DSMRREADER_REMOTE_DATALOGGER_NETWORK_PORT=23
DSMRREADER_LOGLEVEL=WARNING
root@dsmr_reader_docker:/app#
Hi @bsmeding, we kunnen het ook in het Nederlands over hebben volgens mij. Omdat het opgelost werd met handmatig instellen heb ik er geen tijd meer aan besteed. Ik heb wel de code destijds aangepast voor de verschillende modi waarin DSMR Reader gestart kan worden.
Wellicht heeft @dennissiemensma een aanvulling waarom de settings uit de .env file niet gezet worden in de app settings zelf.
Ja dat kan inderdaad ben zo gewend het in Engels te doen ging automatisch 🙂
Vreemd is dat ze inderdaad wel juist worden geladen als env, maar niks mee wordt gedaan verder in de app
Wacht verdere reactie van @dennissiemensma af
Als ik de aanname mag doen dat je de hele DSMR-reader applicatie draait en daarbij DSMRREADER_REMOTE_DATALOGGER_INPUT_METHOD
gebruikt, dan gaat die combinatie niet werken.
De envvars voor de remote datalogger zijn alleen voor wanneer het datalogger script zonder DSMR-reader draait. Dit omdat er dan dus ook geen database-instelling is die gebruikt kan worden.
Eerdere versies van het remote datalogger script vereisten nog dat iemand in de eigen kopie instellingen moest aanpassen, zoals in v3:
Later is dat veranderd naar envvars, maar dus puur voor bovenstaande use-case.
Als je DSMR-reader gebruikt zul je het via de database of GUI moeten instellen. Alleen staat dat wellicht niet expliciet in de docs:
Het is wellicht wat verwarrend omdat het script zowel los werkend uit de repo te downloaden is:
Als ook door DSMR-reader zelf gebruikt wordt, bij een volledige installatie:
Echter wordt alles qua envvars in dat script niet gebruikt door DSMR-reader, alleen als het direct via de command-line als individueel script gedraaid wordt met letterlijk: python3 dsmr_datalogger_api_client.py
:
Overigens kun je uiteraard ook zonder GUI de instellingen wijzigen, direct in de database, alleen zul je moeten opletten dat je geen ongeldige waardes invoert, omdat er dan geen validatie van de GUI op zit.
De datalogger instellingen staan in dsmr_datalogger_dataloggersettings
:
select * from dsmr_datalogger_dataloggersettings;
id | serial_port | dsmr_version | process_sleep | input_method | network_socket_address | network_socket_port | restart_required | override_telegram_timestamp | dsmr_extra_device_channel
----+--------------+--------------+---------------+--------------+------------------------+---------------------+------------------+-----------------------------+---------------------------
1 | /dev/ttyUSB0 | 4 | 0.5 | serial | localhost | 4000 | f | f |
(1 row)
Hi @dennissiemensma ik gebruik inderdaad de hele applicatie zoals in deze repo in Docker. Gezien ik alle applicaties die ik draai via automatisch (Ansible) uitrol op mijn servers wil ik ook de configuratie hiervan automatisch instellen zodat ik een Test en Productie omgeving heb en hiermee beter versie upgrades kan doen.
Vandaar dat ik probeer om een kant en klaar pakket (Ansible Role) te maken waarin zonder manuele handelingen in de GUI alles weer werkt. En het liefst ook niet direct in een Database werken.
De ENV vars lijken te doen wat ik nodig had, maar ik lees dat dit alleen is als de logger en reader apart worden gebruikt? Als ik er twee aparte containers van maak zou het wel moeten werken? Een voor Logger en een voor de Reader?
Bedankt voor je aanvulling! Technisch gezien kun je het proberen, alleen is het dus niet op die manier ervoor gemaakt, dus je kunt alsnog tegen dingen aanlopen die je niet op die manier kan configueren. Plus dat een remote datalogger complexiteit toevoegt als je hem niet nodig hebt. Verder zullen er misschien meer instellingen zijn in DSMR-reader die je wellicht wilt provisionen naar je eigen defaults bij een re-install/upgrade, maar dus ook in de database staan.
Mijn advies is om (als je eigen probeersel niet werkt), UPDATE-queries te gebruiken door dergelijke instellingen, zodat je het vooral simpel en onderhoudbaar voor jezelf houdt. Omdat het update-queries zijn voor instellingen, zijn ze tevens idempotent en kun je ze zonder gevolgen vaker uitvoeren, wat meestal wel wenselijk is bij playbooks.
Ok dank je duidelijk, jammer dat het niet met de ENV werkt of een config file.
Ik zal zelf nog beide scenario's testen kijken of het op een gedegen manier lukt om dit te automatiseren. Rechtstreeks in de DB ben ik niet zo een voorstander van, maar wellicht de oplossing.
beide bedankt voor de feedback!
Heldere en waardevolle info heren, bedankt! Zou het mogelijk zijn om dit soort zaken middels een API te configureren? Het is maar iets dat mij te binnen schiet. Ik heb geen idee of het veel werk is iets dergelijks toe te voegen.
Ik ben hier zonet ook tegen aan gelopen. En eerder ook https://github.com/xirixiz/dsmr-reader-docker/issues/303#issuecomment-1345186020.
~Waarom is dit gesloten? 🤔~ Zou het mogelijk zijn om dit alsnog configureerbaar te maken via een environment variable? If not, zouden de docs dan kunnen verduidelijkt worden, zodat gebruikers van "seriële poort via ethernet" ook de juiste richting uitgeduwd worden?
Voor context: in België is het níet zo dat de meter in je appartement staat! Die staat in de "gemeenschappelijke delen". Een P1-kabel van daar tot in je appartement is quasi nooit mogelijk. Blijft over: WiFi of Ethernet!
@wimleers helpt dit je niet verder? https://github.com/xirixiz/dsmr-reader-docker/issues/303#issuecomment-1345268194
Afhankelijk van wat je exact dichtbij je slimme meter hebt staan, kun je het daar laten forwarden naar de DSMR-installatie binnen je netwerk binnen. Of je kunt iets draaien wat de meter serieel uitleest en het via je netwerk beschikbaar maakt via ser2net
, waardoor DSMR-reader er ook bij kan (mits op hetzelfde netwerk uiteraard).
Support guidelines
I've found an issue and checked that ...
Description
I try to automate the setup of my DSMR environment en test. I use a remote logger on IP socket.
See issue 303 with the same question only not solved in this issue.
I want to automatically set the correct logger, so not manual after the deployment but with the environment variables that are made for this configuration part only they doesn't apply, when settings this environment vars:
The DSMR still configured as Standalone -> Serial -> '/dev/ttyUSB0'
Expected behaviour
IPv4 socket used with IP address and port configured in the ENV
Actual behaviour
Default configuration of
serial
and/dev/ttyUSB0
Steps to reproduce
Docker info
Container logs
LOGS:
Docker inspect - CONFIG:
Additional info
No response