Hallo,
ich nutze EBUSD von https://github.com/john30/ebusd um meine Vaillant-Wärmepumpe mit meinem Raspberry auszulesen.
Anfang des Jahres bin ich dazu übergegangen meine Raspberry auf Docker (mit Portainer) umzustellen. Alles ist also in Container umgezogen, auch EBUSD.
Allerdings hatte ich damals noch ein Skript welches mir zyklisch Werte abruft. Das bekomme ich jetzt nicht hin, auch nicht mit KI. Irgendwie bekomme ich es nicht hin, mein "Entrypoint" oder "Command" so anzugeben, das es funktioniert.
Kann mir jemand helfen?
Das ist mein Stack:
services: # https://hub.docker.com/r/john30/ebusd
ebusd: #https://github.com/john30/ebusd/blob/master/contrib/docker/docker-compose.example.yaml
image: john30/ebusd
container_name: ebusd
restart: unless-stopped
ports:
- 8888:8888
- 8080:8080
devices:
- /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bridge_Controller_6e4dcde89fdeea11b47832d299583cc7-if00-port0:/dev/ttyUSB0
networks:
network1:
ipv4_address: 192.168.178.212
volumes:
- ebusd_home:/home
- ebusd_etc:/etc/ebusd/
stdin_open: true
tty: true
environment:
EBUSD_DEVICE: "ens:/dev/ttyUSB0"
EBUSD_SCANCONFIG: ""
EBUSD_MQTTHOST: 192.168.178.211
EBUSD_MQTTPORT: 1883
EBUSD_MQTTCLIENTID: "ebusd"
EBUSD_MQTTUSER: "meinUser"
EBUSD_MQTTPASS: "meinPasswort"
EBUSD_MQTTTOPIC: "ebusd"
EBUSD_MQTTGLOBAL: "ebusd/global/"
#EBUSD_MQTTJSON: "s"
volumes:
ebusd_home:
ebusd_etc:
networks:
network1:
name: vlan-creation
external: true
Und das ist mein Skript, welches ich gern zyklisch aufrufen möchte:
#!/bin/bash
ebusctl read -c hmu EnergyIntegral
ebusctl read -c hmu State
ebusctl read -c hmu WaterThroughput
ebusctl read -c hmu Hours
ebusctl read -c hmu HoursHc
ebusctl read -c hmu EnergyHc
ebusctl read -c hmu CurrentYieldPower
ebusctl read -c hmu CurrentConsumedPower
echo "Script ReadValues.sh done." >> /var/log/ebusd.log
Ich habe es jetzt über ein Skript außerhalb des Containers gelöst, aber nicht wirklich schön.
Hat keiner eine bessere Lösung?
Kannst du nicht einfach docker-entrypoint.sh überschreiben und da dein Skript ablegen bzw. da dein Skript referencen in einem loop?
Also statt dem aktuellen docker-entrypoint.sh (https://github.com/john30/ebusd/blob/master/contrib/docker/docker-entrypoint.sh) einfach ein while true; do und danach dann dein Skript inkl. sleep für die Pause zwischen den Zyklen.
Volumes müsste dann sein
- ./custom-entrypoint.sh:/docker-entrypoint.sh:ro
- ./ebus-read.sh:/ebus-read.sh:ro
Und custom-entrypoint.sh (chmod +x nicht vergessen) irgendwie
#!/bin/bash
while true; do
/ebus-read.sh
sleep 300
done
Jetzt alles ungetestet, aber vielleicht mal als Idee.