openv / openv

:fire: OpenV Wiki
https://github.com/openv/openv/wiki
249 stars 28 forks source link

Startup Script error - vcontrol service startet nicht #593

Closed compumark closed 1 year ago

compumark commented 1 year ago

Hallo,

wenn ich vcontrol nach dieser Anleitung installiere, scheitere ich beim Startupscript zum registrieren. https://github.com/openv/openv/wiki/vcontrold-mit-Raspberry-Pi#6-service-starten-inkl-automatischer-start

pi@raspberrypi:/etc/init.d $ sudo update-rc.d vcontrol start 99 2 3 4 5 . stop 99 0 1 6 . update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults

scheint bei debian 11 - raspberian lite nicht mehr zu funktionieren. wenn die ich die zahlen weglasse sudo update-rc.d vcontrol defaults kommt keine fehlermeldung, aber starten geht nicht

pi@raspberrypi:/etc/init.d $ sudo /etc/init.d/vcontrol start Starting vcontrol (via systemctl): vcontrol.serviceJob for vcontrol.service failed because the control process exited with error code. See "systemctl status vcontrol.service" and "journalctl -xe" for details. failed!

Wenn ich dann den systemctl status abfrage: image

und der journalctl eintrag image

Hat jemand einen Ahnung wie ich das beheben kann, dass vcontrol endlich immer als service läuft? Vielen Dank Mark

speters commented 1 year ago

Unter doc/examples/vcontrold.service wird gezeigt, wie man das mit aktuellen Linux-Distributionen und systemd macht.

Wenn es dann bei dir läuft, kannst du das dann gerne im Wiki für andere Anfgänger dokumentieren.

compumark commented 1 year ago

Das hab ich leider auch nicht geschafft. Ich habe unter /etc/systemd/system ein vcontrol.service angelegt und den inhalt von doc/examples/vcontrold.service reinkopiert und mittels sudo systemctl start vcontrold gestartet, kommt der gleiche Fehler: image

Meine Idee ist eigentlich das so zu modifizeren, dann der vclient 2 abfragen macht einmal die klassische rrdb befüllen vclient -h localhost:3002 -f /home/pi/openv/vcontrold/rrdb/vc-commands.txt -t /home/pi/openv/vcontrold/rrdb/rrdb-update.tmpl -x /home/pi/openv/vcontrold/rrdb/rrdb-update.sh

und einmal: vclient -h localhost:3002 -f /home/pi/openv/vcontrold/rrdb/vc-commands.txt -J -o result.json

schöner wäre es, in einem kommando zusammen, das geht aber leider nicht.

Das mit dem json und weiter mittels MQTT hätte ich hier gefunden: https://github.com/michelde/openv-vcontrold-docker/blob/main/startup.sh

Also eine Kombi aus beiden ;-)

compumark commented 1 year ago

Hi @speters Ich habe es nun teilweise zum laufen gebracht. Ein Phänomen habe ich aber noch und ich komm nicht drauf Hier mein startup script, welches nun vom systemd korrekt gestartet wird.

Hier sieht man, dass ich 2x den vclient starte, einmal mit dem Template file und schreiben nach RRD sowie JSON, gefolgt von MQTT publisher.

Wenn beide aktiv sind, dann schreibt vclient anscheinend daten in die RRD Datenbank - da diese im rhytmus immer aktualisiert wird mit einem ls -l zu sehen. auch das rrdb-update.sh file hat korrekt daten drinnen. Es wird aber dann nur ein fehlerhaftes Grafikfile erstellt - siehe weiter unten. Der MQTT / JSON Teil läuft einwandfrei durch. Sobald ich den JSON Teil sowie MQTT auskommentiere läuft auch die Erstellung der Grafik einwandfrei.... Beides hintereinander aber nicht :-(

Hat jemand eine Idee dazu, wie man das laufend bekommt? eine kombination aus dem Tempalte command mit dem JSON geht auch nicht, dass kann der vclient anscheinend nicht und die -v option beim client gibt auch nur eine Meldung vom connect her.

`#!/bin/bash set -x sleep 3

search the USB device as it sometimes is USB0 or USB1

USB_DEVICE=find /dev/ -name vitocal*

USB_DEVICE=/dev/vitocal

echo "Device ${USB_DEVICE}"

make device accessable

chmod 777 ${USB_DEVICE}

set the USB device in the vcontrold.xml settings file

sed -i -e "//,/<\/serial>/ s|[0-9a-z\/._A-Z:]{1,}|$USB_DEVICE|g" /etc/vcontrold/vcontrold.xml

vcontrold -x /etc/vcontrold/vcontrold.xml -P /home/pi/openv/vcontrold.pid

vcontrold -x /etc/vcontrold/vcontrold.xml -l /home/pi/openv/vcontrold.log -v -P /home/pi/openv/vcontrold.pid sleep 10 status=$? pid=$(pidof vcontrold) if [ $status -ne 0 ];then echo "Failed to start vcontrold" fi

if [ $MQTTACTIVE = true ]; then echo "vcontrold gestartet (PID $pid)" echo "MQTT: aktiv (var = $MQTTACTIVE)" echo "Aktualisierungsintervall: $INTERVAL sec" echo "Lese Parameter: $COMMANDS"

/config/mqtt_sub.sh

    while sleep $INTERVAL; do
            vclient -h localhost:3002 -f /home/pi/openv/vcontrold/rrdb/vc-commands.txt -t /home/pi/openv/vcontrold/rrdb/rrdb-update.tmpl -x /home/pi/openv/vcontrold/rrdb/rrdb-update.sh -v
            sleep 10
            vclient -h 127.0.0.1:3002 -f /home/pi/openv/vcontrold/rrdb/vc-commands.txt -J -o /home/pi/openv/mqtt/result.json
             sleep 5
           . /home/pi/openv/mqtt/mqtt_publish.sh
            sleep 5
            if [ -e /home/pi/openv/vcontrold.pid ]; then
                    :
            else
                    echo "vcontrold.pid nicht vorhanden, exit 0"
                    exit 0
            fi
    done

else echo "vcontrold gestartet" echo "MQTT: inaktiv (var = $MQTTACTIVE)" echo "PID: $pid" while sleep 300; do if [ -e /home/pi/openv/vcontrold.pid ]; then : else echo "vcontrold.pid nicht vorhanden, exit 0" exit 0 fi done fi`

image

compumark commented 1 year ago

Ich habe das Problem geudfunden, es war in der RRD Datenbank ein Step von 120 angegeben, welcher aber mehr als 120 sekunden gedauert hat, bis beide vclient Abfragen durchgelaufen sind.

In der Wiki ist es nun dokumentiert, das Startup thema, als Punkt 6.1