Hauptmenü

EBUSD in Docker

Begonnen von Citrus91, 12 November 2025, 21:31:16

Vorheriges Thema - Nächstes Thema

Citrus91

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


DiegoFulton

Wenn du dein Skript ReadValues.sh zyklisch in einem Docker-Container mit ebusd ausführen möchtest, geht das am besten so:

1. Skript ins Volume legen
Lege dein Skript z. B. in das gemountete Volume ebusd_home oder ebusd_etc, damit es im Container verfügbar ist:
volumes:
  - ./ReadValues.sh:/home/ReadValues.sh
2. Skript ausführbar machen
chmod +x ./ReadValues.sh3. Zyklische Ausführung einrichten
Du kannst entweder Cron nutzen oder eine Endlosschleife im Container starten:

Mit Cron:
Erstelle ein entrypoint.sh:

#!/bin/bash
ebusd -d "$EBUSD_DEVICE" &
echo "*/5 * * * * /home/ReadValues.sh" > /etc/crontabs/root
crond -f
Docker-Compose anpassen:
[code]entrypoint: ["/home/entrypoint.sh"]Oder mit Endlosschleife:
[code]#!/bin/bash
ebusd -d "$EBUSD_DEVICE" &
while true; do
  /home/ReadValues.sh
  sleep 300  # alle 5 Minuten
done
Dann als command im Docker-Compose starten:
command: ["/home/ReadValues-loop.sh"]4.Wichtig:
ebusctl muss im Container verfügbar sein – im offiziellen john30/ebusd Image ist es bereits enthalten, daher sollte dein Skript direkt funktionieren.
Mit dieser Methode läuft dein Skript automatisch in festgelegten Intervallen und liest die Werte von deiner Vaillant-Wärmepumpe aus.