Closed ff20000 closed 2 years ago
Dat is wel te doen. Ik zie alleen dat je jouw compose file niet in code geplakt hebt hier, maar als plain text. Zou je het als code willen neerzetten, dan kan ik de wijzigingen die nodig zijn eenvoudig voor jou aanpassen.
version: '3'
services:
dsmrdb2:
# When using Postgres, release 13.x is supported only
# due to the limited availability of client packages, especially for arm32v7
image: postgres:14-alpine
container_name: dsmrdb2
restart: always
volumes:
- ./dsmrdb2:/var/lib/postgresql/data
environment:
- TZ=Europe/Amsterdam
- PG_TZ=Europe/Amsterdam
- POSTGRES_USER=dsmrreader
- POSTGRES_PASSWORD=dsmrreader
- POSTGRES_DB=dsmrreader2
healthcheck:
# postgres is the default user, please update with
# the DJANGO_DATABASE_USER used for dsmr-reader-docker
# default for DSMR Reader is dsmrreader
test: [ "CMD-SHELL", "pg_isready -U dsmrreader" ]
interval: 10s
timeout: 5s
retries: 10
dsmr2:
image: xirixiz/dsmr-reader-docker:latest
depends_on:
dsmrdb2:
condition: service_healthy
container_name: dsmr2
links:
- dsmrdb2
cap_add:
- NET_ADMIN
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ./dsmr_backups2:/app/backups
environment:
- TZ=Europe/Amsterdam
- DJANGO_TIME_ZONE=Europe/Amsterdam
- VIRTUAL_HOST=localhost
ports:
- 7788:80
- 7789:443
devices:
- "/dev/ttyUSB1:/dev/ttyUSB0"
# healthcheck:
# disable: true
healthcheck:
test:
[
"CMD",
"curl",
"-Lsf",
"http://127.0.0.1/about",
"-o",
"/dev/null",
"-w",
"HTTP_%{http_code}"
]
interval: 10s
timeout: 5s
retries: 10
volumes:
dsmrdb2: null
dsmrdb_backups2: null
poging 2
Hi, something like this should work (assuming you run things in bridge network mode):
version: '3'
services:
dsmrdb_01:
image: postgres:14-alpine
container_name: dsmrdb_01
restart: always
volumes:
- ./dsmrdb_01:/var/lib/postgresql/data
environment:
- TZ=Europe/Amsterdam
- PG_TZ=Europe/Amsterdam
- POSTGRES_USER=dsmrreader
- POSTGRES_PASSWORD=dsmrreader
- POSTGRES_DB=dsmrreader
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U dsmrreader" ]
interval: 10s
timeout: 5s
retries: 10
dsmrdb_02:
image: postgres:14-alpine
container_name: dsmrdb_02
restart: always
volumes:
- ./dsmrdb_02:/var/lib/postgresql/data
environment:
- TZ=Europe/Amsterdam
- PG_TZ=Europe/Amsterdam
- POSTGRES_USER=dsmrreader
- POSTGRES_PASSWORD=dsmrreader
- POSTGRES_DB=dsmrreader
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U dsmrreader" ]
interval: 10s
timeout: 5s
retries: 10
dsmr_01:
image: xirixiz/dsmr-reader-docker:latest
depends_on:
dsmrdb_01:
condition: service_healthy
container_name: dsmr_01
links:
- dsmrdb_01
cap_add:
- NET_ADMIN
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ./dsmr_01_backups:/app/backups
environment:
- TZ=Europe/Amsterdam
- DJANGO_TIME_ZONE=Europe/Amsterdam
- VIRTUAL_HOST=localhost
- DJANGO_DATABASE_NAME=dsmrreader
- DJANGO_DATABASE_HOST=dsmrdb_01
ports:
- 7788:80
- 7789:443
devices:
- "/dev/ttyUSB0:/dev/ttyUSB0"
healthcheck:
test:
[
"CMD",
"curl",
"-Lsf",
"http://127.0.0.1/about",
"-o",
"/dev/null",
"-w",
"HTTP_%{http_code}"
]
interval: 10s
timeout: 5s
retries: 10
dsmr_02:
image: xirixiz/dsmr-reader-docker:latest
depends_on:
dsmrdb_02:
condition: service_healthy
container_name: dsmr_02
links:
- dsmrdb_02
cap_add:
- NET_ADMIN
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ./dsmr_02_backups:/app/backups
environment:
- TZ=Europe/Amsterdam
- DJANGO_TIME_ZONE=Europe/Amsterdam
- VIRTUAL_HOST=localhost
- DJANGO_DATABASE_NAME=dsmrreader
- DJANGO_DATABASE_HOST=dsmrdb_02
ports:
- 7888:80
- 7889:443
devices:
- "/dev/ttyUSB1:/dev/ttyUSB1"
healthcheck:
test:
[
"CMD",
"curl",
"-Lsf",
"http://127.0.0.1/about",
"-o",
"/dev/null",
"-w",
"HTTP_%{http_code}"
]
interval: 10s
timeout: 5s
retries: 10
volumes:
dsmrdb_01: null
dsmrdb_01_backups: null
dsmrdb_02: null
dsmrdb_02_backups: null
This creates dsmr_01, dsmr_02, dmsrdb_01 and dsmrdb_02. dsmr_01 will run on ports 7788 and 7789 dsmr_02 will run on ports 7888 and 7889
Then update the device of the second container / DSMR instance in settings at "http://
Validated locally, works like a charm!
Hallo het werkt nu, alleen krijg ik dezelfde waardes binnen in beide containers Ik heb 2 P1 meter lezers aangesloten op mijn NAS.
1 op ttyUSB0 1 op ttyUSB1
Ik heb een klein dingetje veranderd nog aan de code
bij dsmr_01
devices:
- "/dev/ttyUSB1:/dev/ttyUSB0"
bij dsmr_02
devices:
- "/dev/ttyUSB0:/dev/ttyUSB0"
Maar nog komen dezelfde waardes binnen van 1 P1 device.
Doe ik nog iets fout?
Ja klopt, dat moest je idd nog wel aanpassen. Wat Docker/DSMR setup betreft staat alles goed. Wat je kan doen is direct de P1 uitlezen en checken of de waarden die binnenkomen ook echt van elkaar verschillen.
Dat kan met:
cu -l /dev/ttyUSB0 -s 9600 --parity=none
Alleen niet op een Synology, dus je zal het om te testen even anders moeten aansluiten (Windows of Ubuntu oid) om de seriele waarden direct uit te lezen. Wanneer de waarden daar niet indentiek zijn, dan kunnen we het verder onderzoeken, maar ik kan het mij niet voorstellen dat het aan de configuratie van DSMR ligt.
Een andere optie kan nog zijn om /dev/ttyUSB1 ook echt te linken in de container naar /dev/ttyUSB1. Je kan in het admin deel van DSMR Reader dan aanpassen dat de waarden uitgelezen moeten worden van /dev/ttyUSB1. Op die manier sluit je zeker uit dat er ook maar een foutje gemaakt in de koppeling van het device.
http://<host>:<port>/admin/dsmr_datalogger/dataloggersettings/
Het werkt. De laatste tip werkte. Ik heb hem gelinked naar /dev/ttyUSB1 en in het admin deel daar ook naartoe verwezen.
Daarna deze container opnieuw gestart en toen deed hij het.
Top blij mee, bedankt voor je hulp
Mooi, heb de laatst uitgebreide comment daar even mee bijgewerkt met deze info.
Support guidelines
I've found an issue and checked that ...
Description
Ik heb dsmr draaiend op mijn synology. Nu heb ik 2 meters thuis. 1 werk gerelateerd en 1 prive. Beide slimme meters wil ik graag uitlezen middels elke een aparte dsmr docker container.
Ik ben al een tijdje aan het vogelen maar ik kom er niet uit.
Expected behaviour
Ik hoop 2 slimme meters uit te lezen middels de dsmr reader in docker
Actual behaviour
Krijg het niet voor elkaar.
Het lijkt erop als dsmr elke keer naar dezelfde database kijkt. Kan ik dat ook aanpassen?
Steps to reproduce
docker-compose.dsmr.yaml
version: '3'
services: dsmrdb:
When using Postgres, release 13.x is supported only
dsmr: image: xirixiz/dsmr-reader-docker:latest depends_on: dsmrdb: condition: service_healthy container_name: dsmr links:
healthcheck:
disable: true
healthcheck: test: [ "CMD", "curl", "-Lsf", "http://127.0.0.1/about", "-o", "/dev/null", "-w", "HTTP_%{http_code}" ] interval: 10s timeout: 5s retries: 10
volumes: dsmrdb: null dsmrdb_backups: null
docker-compose.dsmr2.yaml
version: '3'
services: dsmrdb2:
When using Postgres, release 13.x is supported only
dsmr2: image: xirixiz/dsmr-reader-docker:latest depends_on: dsmrdb2: condition: service_healthy container_name: dsmr2 links:
healthcheck:
disable: true
healthcheck: test: [ "CMD", "curl", "-Lsf", "http://127.0.0.1/about", "-o", "/dev/null", "-w", "HTTP_%{http_code}" ] interval: 10s timeout: 5s retries: 10
volumes: dsmrdb2: null dsmrdb_backups2: null
Docker info
Version
docker-compose --version
):uname -a
):Docker compose
Container logs
Als ik alleen dsmr2.yaml uitvoer:
Hij zegt dat de database "dsmrreader" bestaat bij het starten van dsmr2.yaml
Voer ik eerst dsrm.yaml en dan dsmr2.yaml dan zitten ze beide op dezelfde database volgens mij.
Kan ik dit ook aanpassen op de een of andere manier, zodat ik een extra database aanmaak voor mijn 2e slimme meter?
Additional info
No response