Python Skript via Button in Grafana starten

Überwachung der Solaranlage per eMail oder Pushover und Steuerung von Geräten mit Smart Home Zentralen. PV-Überschuss Steuerung verbunden mit Geräten und Tasmota Firmware. Wallbox Steuerungen und API Schnittstelle, über die Daten in die Solaranzeigen Datenbanken geschrieben und gelesen werden können. Alles, was man für Steuerungsaufgaben benötigt.

Moderator: Ulrich

Bogeyof
Beiträge: 938
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 17 Mal
Danksagung erhalten: 103 Mal

Re: Python Skript via Button in Grafana starten

Beitrag von Bogeyof »

Klar, alles ist machbar...
Zum Speichern der Daten braucht es eine WR_math.php, in welcher die Funktionen aufgerufen werden. Dazu die passenden Python-Skripte.
Das Beispiel liest das Schattenmanagement und die Time Control aus und schreibt die Werte unter den Measurements Service bzw. Batterie in die Datenbank.
PHP nach /var/www/html, .py nach /solaranzeige (ohne .txt und IP-Adresse sowie Passwort eintragen)...
Dateianhänge
Kostal_BatTCQ.py.txt
(6.21 KiB) 11-mal heruntergeladen
Kostal_SMQ.py.txt
(7.67 KiB) 9-mal heruntergeladen
kostal_plenticore_math.php
(3.11 KiB) 14-mal heruntergeladen

Doc_snyder
Beiträge: 16
Registriert: Sa 23. Okt 2021, 20:23

Re: Python Skript via Button in Grafana starten

Beitrag von Doc_snyder »

Super, nochmals Danke! Jetzt habe ich für heute Abend die nächste Feierabendbeschäftigung. :)

Doc_snyder
Beiträge: 16
Registriert: Sa 23. Okt 2021, 20:23

Re: Python Skript via Button in Grafana starten

Beitrag von Doc_snyder »

Hallo Bogeyof,

soweit so gut, ich bekomme noch folgende Fehlermeldung:

PHP Notice: Undefined index: zentralerTimestamp in /var/www/html/kostal_plenticore_math.php on line 72
PHP Notice: Undefined index: zentralerTimestamp in /var/www/html/kostal_plenticore_math.php on line 76

Was ist denn der Parameter "zentralerTimestamp"?

Die Datenbankstruktur enthält jetzt die Einträge für den Status des Schattenmanagements und der Time Control, allerdings noch keine Werte.

Bogeyof
Beiträge: 938
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 17 Mal
Danksagung erhalten: 103 Mal

Re: Python Skript via Button in Grafana starten

Beitrag von Bogeyof »

Ich bin etwas verwirrt. Hast Du die kostal_plenticore_math.php evtl. per Hand aufgerufen? Dann kennt sie natürlich den Wert aktuelleDaten[zentralerTimestamp] nicht, dieser wird in der kostal_plenticore.php zugewiesen und dieses Skript ruft dann automatisch die kostal_plenticore_math.php auf. Sind die Einträge in der LOG-Datei minütlich oder nur einmal, weil Du es per Hand aufgerufen hast?

Nachdem Du die Python-Skripte für den Kostal Plenticore nutzt, bin ich davon ausgegangen, dass Dein Wechselrichter ein Kostal Plenticore ist und Du Reglernummer 17 benutzt. Dann sollte die kostal_plenticore_math.php automatisch mit jedem Auslese-Durchlauf des Wechselrichters gestartet werden. Wenn nicht, müsste der Name passend zu Deinem Wechselrichter in WR_math.php geändert werden.

Die Werte für Schattenmanagement und TimeControl sind "Text", das wird in Grafana nicht ohne Änderung der Einstellungen des Panel angezeigt. Wie hast Du festgestellt, dass keine Werte in der Datenbank sind? Leere Einträge sind quasi nicht möglich, dann müsste der Wert "xx undefiniert" sein.
Probiere mal in der Konsole (putty):

Code: Alles auswählen

influx -precision rfc3339
use solaranzeige
select TimeControl from Batterie order by time desc limit 5 tz('Europe/Berlin')
exit
Zeigt er da nichts an?

Passwort und IP-Adresse in den Python-Skripten sind angepasst und korrekt? Was passiert beim manuellen Aufruf der Python-Skripte?

Doc_snyder
Beiträge: 16
Registriert: Sa 23. Okt 2021, 20:23

Re: Python Skript via Button in Grafana starten

Beitrag von Doc_snyder »

Guten Morgen,

ich hatte das php von Hand aufgerufen, deshalb gab es die Fehlermeldung. In Grafana hatte ich zusätzlich die Panel Einstellungen nicht richtig gesetzt, wie Du richtig vermutet hast.

Beides ist jetzt OK, der Status in der InfluxDB passt aber nicht zum Output des TimeControl Skripts :?:

Code: Alles auswählen

pi@solaranzeige:/solaranzeige $ python3 /solaranzeige/Kostal_BatTCQ.py
1
pi@solaranzeige:/solaranzeige $ influx -precision rfc3339
Connected to http://localhost:8086 version 1.8.3
InfluxDB shell version: 1.8.3
> use solaranzeige
Using database solaranzeige
> select TimeControl from Batterie order by time desc limit 5
name: Batterie
time                 TimeControl
----                 -----------
2022-06-15T05:11:11Z TC aus
2022-06-15T05:10:11Z TC aus
2022-06-15T05:09:12Z TC aus
2022-06-15T05:08:11Z TC aus
2022-06-15T05:07:11Z TC aus
> exit
pi@solaranzeige:/solaranzeige $ python3 /solaranzeige/Kostal_BatTCQ.py
1
Kann es sein, dass der Zeitstempel aktualisiert, das Skript für den Status aber nicht korrekt ausgeführt wird, und dadurch ein alter Status mit neuem Zeitstempel in die Datenbank geschrieben wird?

Bogeyof
Beiträge: 938
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 17 Mal
Danksagung erhalten: 103 Mal

Re: Python Skript via Button in Grafana starten

Beitrag von Bogeyof »

Das ist echt seltsam, ich benutze es ja selbst und es funktioniert problemlos.
Probiere doch bitte mal das Test-Skript im Anhang, diesmal bewusst manuell aufrufen. Zuvor nach /var/www/html kopieren und ausführbar machen (755). Dann bitte die Ausgabe hier posten...

Bei mir:

Code: Alles auswählen

root@solaranzeige:/var/www/html# ./kostal_plenticore_test.php
Ergebnis: 0
TC aus
SM aus
root@solaranzeige:/var/www/html# python3 /solaranzeige/Kostal_BatTCQ.py
0
root@solaranzeige:/var/www/html# ./kostal_plenticore_test.php
Ergebnis: 1
TC ein
SM aus
root@solaranzeige:/var/www/html# python3 /solaranzeige/Kostal_BatTCQ.py
1
root@solaranzeige:/var/www/html#
Dateianhänge
kostal_plenticore_test.php
(3.33 KiB) 8-mal heruntergeladen

Doc_snyder
Beiträge: 16
Registriert: Sa 23. Okt 2021, 20:23

Re: Python Skript via Button in Grafana starten

Beitrag von Doc_snyder »

Hier der Output bei manueller Ausführung, scheint soweit zu funktionieren - es ist ja nichts außer dem Print geändert, oder?

Code: Alles auswählen

pi@solaranzeige:/var/www/html $  ./kostal_plenticore_test.php
Ergebnis: 0
TC aus
SM aus
PHP Notice:  Undefined index: zentralerTimestamp in /var/www/html/kostal_plenticore_test.php on line 77
PHP Notice:  Undefined index: zentralerTimestamp in /var/www/html/kostal_plenticore_test.php on line 81
pi@solaranzeige:/var/www/html $ python3 /solaranzeige/Kostal_BatTC_T.py
Authentication successful
[{'id': 'Battery:TimeControl:Enable', 'value': '0'}]
Successfully changed Parameter : Battery:DynamicSoc:Enable to value  0
Successfully changed Parameter : Battery:SmartBatteryControl:Enable to value  0
Successfully changed Parameter : Battery:TimeControl:Enable to value  1
[{'id': 'Battery:TimeControl:Enable', 'value': '1'}]
pi@solaranzeige:/var/www/html $ python3 /solaranzeige/Kostal_BatTCQ.py
1
pi@solaranzeige:/var/www/html $ ./kostal_plenticore_test.php
Ergebnis: 1
TC ein
SM aus
PHP Notice:  Undefined index: zentralerTimestamp in /var/www/html/kostal_plenticore_test.php on line 77
PHP Notice:  Undefined index: zentralerTimestamp in /var/www/html/kostal_plenticore_test.php on line 81
pi@solaranzeige:/var/www/html $ python3 /solaranzeige/Kostal_BatTC_T.py
[{'id': 'Battery:TimeControl:Enable', 'value': '1'}]
Successfully changed Parameter : Battery:TimeControl:Enable to value  0
Successfully changed Parameter : Battery:SmartBatteryControl:Enable to value  1
[{'id': 'Battery:TimeControl:Enable', 'value': '0'}]
@solaranzeige:/var/www/htmpython3 /solaranzeige/Kostal_BatTCQ.py
0

Bogeyof
Beiträge: 938
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 17 Mal
Danksagung erhalten: 103 Mal

Re: Python Skript via Button in Grafana starten

Beitrag von Bogeyof »

Ja seltsam. Eigentlich nichts Großes geändert außer den Ausgaben. Du kannst ja mal die kostal_plenticore_test.php in kostal_plenticore_math.php umbenennen (also die bestehende überschreiben) und noch einmal testen. Er kann eigentlich nichts anderes in die Datenbank schreiben wie er in der Meldung ausgibt...

Doc_snyder
Beiträge: 16
Registriert: Sa 23. Okt 2021, 20:23

Re: Python Skript via Button in Grafana starten

Beitrag von Doc_snyder »

Ok, ich habe das testskript umbenannt und die Rechte geändert - hat sich leider nichts verändert.

Was würde denn in die Datenbank geschrieben, wenn beim automatischen Aufruf von kostal_math.php das Skript "Kostal_BatTCQ.py" einfach nicht ausgeführt wird? Das müsste doch eigentlich dann "TC undefiniert" sein, oder?

Kann Influx einen neuen Eintrag mit Zeitstempel aber ohne neuen Wert anlegen? Bleibt in dem Fall der Wert evtl. dann auf dem letzten bekannten Status?

Fällt Dir noch etwas ein?

Viele Grüße und vielen Dank,
Nils

Bogeyof
Beiträge: 938
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 17 Mal
Danksagung erhalten: 103 Mal

Re: Python Skript via Button in Grafana starten

Beitrag von Bogeyof »

Das ist richtig, wenn der Aufruf fehlschlägt (dank manuellem Test kann das aber eigentlich ausgeschlossen werden), müsste eigentlich "TC undefiniert" geschrieben werden.
Die Hypothese mit Influx Zeitstempel ohne Wert kann nach meinem Wissen nicht eintreten.

Neuer Test, angehängte kostal_plenticore_math.php nutzen, diese schreibt Meldungen in die /var/www/log/solaranzeige.log beim jeweiligen Durchlauf. Hier wird auch die ZusatzQuery (also die generierte Anweisung fürs Schreiben der Werte) geloggt.

Ideen, gibt es noch andere Routinen aus dem Forum, z.B. byd_steuerung.php oder ähnliches, die Du bereits eingebaut hast und welche die Werte evtl. wieder überschreibt? Oder nutzt Du wirklich Original Solaranzeige im bisher unveränderten zustand? Auch scheint mir die Datenbankversion Influx 1.8.3 etwas älter, daher die Frage, hast Du die aktuelle Version der Solaranzeige? Evtl. musst Du mal updaten, falls dies nicht der Fall ist.
Aktuelle Version ist "Software Version 4.7.8c [32Bit] update Mai 2022"
Dateianhänge
kostal_plenticore_math.php
(3.53 KiB) 9-mal heruntergeladen

Antworten