kaifa
kaifa copied to clipboard
Docker und influxDB
Ich habe das Python-Script in ein Docker Image verpackt. Außerdem noch influxdb v2 als Exportformat hinzugefügt. Damit landen die Werte alle 5s in der Datenbank und können später mit Grafana ausgewertet werden. Influxdb und Grafana gibts ebenfalls als Docker Images.
Falls jemand Interesse hat: https://github.com/Phil1pp/kaifareader
Hallo Phil1pp
Bin sehr interessiert an deinem Projekt. Habs mir gerade auf meine Synology runtergeladen und werde es in Docker installieren. Weisst du zurällig, ob es auch mit den VKW (Vorarlberger Kraftwerke) funktioniert?
SG
Ja, habe auch VKW. KSMWest (Kooperation Smartmeter West) ist Vorarlberg, Tirol, Salzburg
Hast du denn deinen AES KEY schon bekommen? Ich musste fast einen Monat darauf warten.
Hallo, wollte gerade den Key beantragen, aber leider scheint das Portal down... Welchen MBus converter hast du im Einsatz?
VKW ist da extrem schlecht mit dem Support. Auf Email bekommt man keine Antwort und an der Hotline kennt sich irgendwie niemand aus. Mein Smartmeter war zuerst gar nie Online. Nach Wochen haben die dann ein LTE Modem eingebaut. Danach dauert es nochmals 4 Wochen bis ich den Key bekommen habe.
Ich wollte einen Konverter mit Gehäuse: https://de.aliexpress.com/item/1005004540180026.html Der Konverter aus China war jedenfalls schneller da als der AES-Key.
Je nach Konverter musst du Parity aktivieren oder nicht in den Settings.
Das mit der Verbindung ist mir auch aufgefallen, ich habe keine. Der Monteur hat mir gesagt, es könne auch 6 Monate dauern bis da Verbindung ist. Offensichtlich funktionieren die Zähler auch als Repeater und wenn man zu weit von der Trafostation entfernt ist und kein Repeater dazwischen gibts ein Problem. Mal sehen ob heute jemand erreichbar ist...
Ich nehme an, du hast den Mbus slave adapter genommen? SG
Ohne stabile Verbindung kannst du auch die M-Bus Schnittstelle nicht aktivieren lassen. Wirst also vermutlich auch LTE benötigen.
Ja, habe den Slave Adapter. Sollte aber auch jeder x-beliebige von Amazon funktionieren.
Hallo Phi1pp Ich habe jetzt endlich meine Anlage soweit fertig, dass ich auch die Zähler auslesen kann. Habe mir den selben Adapter gekauft wie du und und alles verkabelt. Heute habe ich das Docker image installiert und mal getestet. Leider funktioniert es nicht, ich bekomme im Log immer die Fehlermeldung:
Error loading config file /etc/kaifareader/meter.json Could not load config file
Ich bin kein Docker Fachmann, habe die meter.json auf meinem Server in ein Verzeichnis gepackt und mit /etc/kaifareader verbunden.
Weil das nicht funktioniert, habe ich auch mal ohne Docker getestet und das Script auf meiner Synology laufen lassen, dabei hatte ich die meter.json sowohl im gleichen Verzeichnis wie das kaifareader.py wie auch in /etc/kaifareader gespeichert. Immer die selbe Fehlermeldung.
Vielleicht hast du noch einen Tip, warum er das Konfigurationsfile nicht findet...
SG
Hi teefixx, wenn du den kaifareader im Docker-Container laufen lasst, muss auch dort drin das Konfigurationsfile liegen.
Wenn du es aber nur auf deinem Hostsystem abgelegt hast (im ordner /etc/kaifareader), dann wird es deine Dockerumgebung nicht finden, weil diese ein eigenes abgegrenztes System ist.
Du musst also dort drinnen dein meter.json ablegen und der kaifareader wird es finden. Wenn du nicht weißt, wie du dein Docker-Image erweiterst, kannst du auch beim Starten des Containers ein File von außen ins System bringen mit der Option "--volume / -v" (also z.B. docker run -it -v /etc/kaifareader/meter.json:/etc/kaifareader/meter.json ...).
Hoffe, das hilft!
Hallo Danke, das werde ich versuchen. Läuft das Script grundsätzlich auch ohne docker Image? Das habe ich auch versucht und das Konfigurationsfile im absoluten Pfad abgelegt, hat auch nicht funktioniert...
Das ist Python, das läuft überall, wo die Umgebung und die Abhängigkeiten installiert sind. Das Debian Paket würde sich darum automatisch kümmern.
Mach es mal genau so wie in meinem Beispiel aufgeführt.
mit -v kaifareader-config:/etc/kaifareader
Dann erstellt dir Docker automatisch ein Volume in dem sich schon eine Basis config von mir befindet.
Diese ersetzt du dann einfach durch deine bzw. bearbeitest sie.
Hallo Stefan, Danke für deine Antwort.
Hallo Phil1pp
Das Script läuft jetzt. Fehler war banal. In deinem meter_template.json fehlt ein Beistrich in Zeile 59, nach "influxdb_measurement": "smartmeter"
Das hat die Fehlermeldung verursacht, mich aber leider sehr lange auf die falsche Fährte gelockt...
Danke für die Rückmeldung. Habe den Fehler behoben und eine neue Version hochgeladen.
Hallo Phil1pp So weit läuft das Script. Hab jetzt den Export in die influxDB aktiviert, auch das läuft.
Wenn ich allerdings im meter.json die Werte "DateAndTime", "DeviceNumber"oder "DeviceName" auf true setze kommt eine Fehlermeldung. Alle anderen Werte gehen tadellos...
Traceback (most recent call last):
File "kaifa-HAUS.py", line 705, in
SG
Bei den 3 von dir genannten Werten handelt es sich um Strings, die dazu auch noch konstant sind. Diese machen in einer InfluxDB auch keinen Sinn. Und den Zeitstempel setzt influx sowieso selber.
Hallo Phil1pp Da hast du natürlich recht was das Datum betrifft. Ich lese 3 Zähler aus, es wäre schön, wenn beim Datensatz die Identifikation des Zählers mitkäme. Nur falls sich der USB Anschluss ändert beim Restart des Systems und zB ttyUSB0 auf einmal ttyUSB1 ist und umgekehrt... Gibt es eine Möglichkeit den Fehler zu eliminieren? SG
Hallo Philipp
Das Thema mit dem Fehler bei den Strings habe ich inzwischen gelöst.
Nun ist ein neues Problem aufgetreten: Das Script ist bis heute tadellos gelaufen. Mein MQTT server war Mosquitto auf VenusOS. Alle Werte konnten problemlos auf dem Server veröffentlicht werden.
Heute hab ich ein Update von VenusOS gemacht. Der MQTT server ist jetzt nicht mehr Mosquitto sonder FlashMQ. Der Server läuft einwandfrei, mit MQTT Explorer kann ich problemlos publishen und schreiben.
Dein Script hat aber Probleme beim Verbinden mit dem Server, log anbei. Hast du eine Idee, an was das liegen könnte?
Das Problem ist vermutlich in der verwendeten MQTT Library in Python zu suchen. Die ist seit 2021 nicht mehr gepflegt. Da es bei mir aber aktuell mit Mosquitto problemlos läuft, werd ich da aktuell aber keine Zeit investieren. Musst du leider selber schauen ob du eine andere Library findest die funktioniert.
Danke, ich habe den Fehler inzwischen gefunden. Ein Leerzeichen zuviel und schon ging das nicht mehr :-( Jetzt läuft es wieder vollständig. Habe übrigens das Problem mit den Strings auch gelöst, kenn mich aber mit Github nicht wirklich aus. Soll ich es dir irgendwo hochladen? SG
Du kannst es gerne irgendwo hochladen und den Link hier reinstellen. Dann kann ich es mir anschauen und wenn möglich in ein neues Docker Image einbauen.
@Phil1pp https://github.com/tirolerstefan/kaifa/issues/27