lokale Anbindung SENEC Batterie an FHEM

Begonnen von cjung, 12 Januar 2020, 13:33:37

Vorheriges Thema - Nächstes Thema

Torsten24

funktioniert leider nach wie vor nich  :(

PapaRiX

#121
sehr spannend.

Okay, lass uns mal den MQTT-explorer und systemd außen vor lassen.
beides sollte irgendwie gehen, aber erst sollten wir das skript laufen haben und sehen, dass es geht.

1. deaktiviere systemd für SENEC2MQTT (dann wird das bei einem Neustart nicht automatisch gestartet)
sudo systemctl disable SENEC2MQTT
2. stoppe den service
sudo systemctl stop SENEC2MQTT


jetzt nimm einfach mal 2 putty fenster.
3. Fenster 1
python skript starten
python3 -d /usr/bin/SENEC2MQTT/SENEC2MQTT.py

4. Fenster 2
mosquitto_sub -v -t Keller/Solar/#


EDIT:
Ach ja, jetzt sehe ich's!
Wenn Du beim mosquitto keinen USER NAME und PASSWORT festgelegt hattest, darfst Du das beim MQTT-Explorer natürlich auch nicht machen. Du loggst Dich beim MQTT-Explorer also nicht mit deinem pi user im MQTT Broker ein, sondern mit dem, was Du im Mosquitto als user und pw eingestellt hast (default wäre kein user und pw, SENEC2MQTT hat ebenfalls keinen user und pw für den MQTT Broker vorgesehen) 

Also die Felder für user und pw im MQTT-Explorer einfach leer lassen

Torsten24

Jetzt sieht es glaub ich gut aus!!  ;)
das mit dem mosquitto explorer habe ich schon versucht. Mit und ohne Benutzer/passwort
Beides mal das gleiche ergebnis

PapaRiX

glückwunsch!  ;D
nebenbei: schön, dass Dein Speicher läuft, meiner ist seit Anfang Mai wieder in der Fernabschaltung :-(


jetzt Probier mal statt das skript manuell auszuführen, den service zu starten.
sudo systemctl start SENEC2MQTT
nachdem Du beim letzten mal schon den SENEC2MQTT.service ausführbar gemacht hattest, sollte es jetzt auch gehen.
Das wollen wir desswegen, weil Du dich dann in zukunft nicht mehr darum kümmern musst.

das mit dem MQTT-explorer macht mir noch etwas sorgen. Das muss gehen. ich habe mal meine settings angehängt.
Ich reite da deswegen drauf rum, weil ich mir sorgen mache, dass Du vielleicht beim einrichten vom mosquitto was anders eingestellt hast. Dann könnte es sein, das FHEM ebenfallls nicht mit dem Broker reden kann.

Prinzipiell kannst du jetzt nämlich in FHEM (oder wenn Du willst in sonst einer Hausautomatisierung) eben genau diese Topics abonieren und kannst die Daten weiterverwerten, ausgeben, speichern umrechnen....


Torsten24

Danke. Aber ich habe da am wenigsten dazu beigetragen, ich habe ja nur Code kopiert...
Bei mir läuft dafür glaub ich ein Wechselrichter nicht und ich bekomme meinen Solateur nicht an die Strippe...

Das mit MQTT explorer funktioniert nach wie vor nicht. Ich habe aber alle Einstellung gelassen, und nichts verändert...

Jetzt habe ich das systemctl gemacht und dann müsste ich doch mit mosquitto_sub... alles sehen, so wie vorher,oder?
Wenn ich aber den Befehl ausführe scheint es wieder so als ob putty auf etwas wartet..

PapaRiX

#125
also, der service läuft nicht und Mosquitto_sub wartet auf Nachrichten.
Da ist irgendwo noch ein bug drin...

zeige bitte nochmal den output von
sudo systemctl status SENEC2MQTT
und den Inhalt der SENEC2MQTT.service Datei
cat /etc/systemd/system/SENEC2MQTT.service
außerdem
ls -l /etc/systemd/system/SENEC2MQTT.service

da ist noch irgendwas nicht rund und ich vermute, es liegt daran, dass ich auf einem "normalen Debian Linux" unterwegs bin und Du auf einem Raspian.
Probier bitte auch mal
sudo journalctl -u SENEC2MQTT.service
journalctl ist ein loggingservice, der mitschreibt, was alles so los ist.
mach das putty fenster groß und schau mal nach Hinweisen.
Am besten Du copy-pastest den output hier rein (nicht als screenshot, copy paste mit putty funktioniert so, dass Du mit der Maus einfach nur den text markierst, damit ist die auswahl automatisch in der Zwischenablage) Ich will nicht alles sehen, nur die letzten 20-40 Einträge, da sollte im Idealfall irgendwo ein Hinweis drinnen sein

Torsten24

So hier der Screenshot der ersten Befehle und dann die direkte ausgabe von putty

May 22 20:58:53 raspberrypi systemd[1]: SENEC2MQTT.service: Scheduled restart job, restart counter is at 51942.
May 22 20:58:53 raspberrypi systemd[1]: Stopped Senec to MQTT Bridge.
May 22 20:58:53 raspberrypi systemd[1]: Started Senec to MQTT Bridge.
May 22 20:58:53 raspberrypi systemd[12473]: SENEC2MQTT.service: Failed to determine user credentials: No such process
May 22 20:58:53 raspberrypi systemd[12473]: SENEC2MQTT.service: Failed at step USER spawning /usr/bin/python3: No such process
May 22 20:58:53 raspberrypi systemd[1]: SENEC2MQTT.service: Main process exited, code=exited, status=217/USER
May 22 20:58:53 raspberrypi systemd[1]: SENEC2MQTT.service: Failed with result 'exit-code'.
May 22 20:58:56 raspberrypi systemd[1]: SENEC2MQTT.service: Scheduled restart job, restart counter is at 51943.
May 22 20:58:56 raspberrypi systemd[1]: Stopped Senec to MQTT Bridge.
May 22 20:58:56 raspberrypi systemd[1]: Started Senec to MQTT Bridge.
May 22 20:58:56 raspberrypi systemd[12474]: SENEC2MQTT.service: Failed to determine user credentials: No such process
May 22 20:58:56 raspberrypi systemd[12474]: SENEC2MQTT.service: Failed at step USER spawning /usr/bin/python3: No such process
May 22 20:58:56 raspberrypi systemd[1]: SENEC2MQTT.service: Main process exited, code=exited, status=217/USER
May 22 20:58:56 raspberrypi systemd[1]: SENEC2MQTT.service: Failed with result 'exit-code'.
May 22 20:59:00 raspberrypi systemd[1]: SENEC2MQTT.service: Scheduled restart job, restart counter is at 51944.
May 22 20:59:00 raspberrypi systemd[1]: Stopped Senec to MQTT Bridge.
May 22 20:59:00 raspberrypi systemd[1]: Started Senec to MQTT Bridge.
May 22 20:59:00 raspberrypi systemd[12475]: SENEC2MQTT.service: Failed to determine user credentials: No such process
May 22 20:59:00 raspberrypi systemd[12475]: SENEC2MQTT.service: Failed at step USER spawning /usr/bin/python3: No such process
May 22 20:59:00 raspberrypi systemd[1]: SENEC2MQTT.service: Main process exited, code=exited, status=217/USER
May 22 20:59:00 raspberrypi systemd[1]: SENEC2MQTT.service: Failed with result 'exit-code'.
May 22 20:59:03 raspberrypi systemd[1]: SENEC2MQTT.service: Scheduled restart job, restart counter is at 51945.

PapaRiX

ah, ich denke ich hab's  :)

der Hinweis ist hier':
May 22 20:59:00 raspberrypi systemd[12475]: SENEC2MQTT.service: Failed to determine user credentials: No such process
May 22 20:59:00 raspberrypi systemd[12475]: SENEC2MQTT.service: Failed at step USER spawning /usr/bin/python3: No such process

in der datei SENEC2MQTT.service habe ich einen Fehler eingebaut, den Du natürlch kopiert hast.
in meinem System gibt es einen user "server" und group "server". Die hast Du natürllich nicht.
Du müsstest die zeilen unter [Service]
User=server
Group=server
ändern in

User=pi
Group=pi


also:
sudo systemctl stop SENEC2MQTT

dann wie gehabt mit
nano /etc/systemd/system/SENEC2MQTT.service
bearbeiten und deinen User und Group eintragen und mit STRG+O oder STRG+X raus und speichern

dann systemd aktualisieren
sudo systemctl daemon-reload
enablen (für neustarts)
sudo systemctl enable SENEC2MQTT
dann service starten
sudo systemctl start SENEC2MQTT

dann mal schauen, ob der Service endlich läuft
sudo systemctl status SENEC2MQTT

DANN sollte auch mosquitto_sub was anzeigen

Torsten24

Ja, das war das Problem. Jetzt läuft es!!!  :)

Torsten24

Allerdings geht der MQTT Explorer immernoch nicht

PapaRiX

#130
das ist allerdings ein Rätsel.. aber auch erst mal nicht so wild. Mit dem MQTT-explorer kann man halt auch schönn spielen und probieren.
Schau mal im FHEM nach, Du hattest ja den MQTT Broker eingerichtet und er sagte auch er sei STATE "opened"
damit sollte zumindest die lokale Verbindung von FHEM zum Broker stehen. Ich vermute fast, Du hast irgendwie den port 1883 nach außen dicht?

Eigentlich kannst Du jetzt (sofern noch nicht geschehen) Dein senec device mit Topics füllen.
attr senec publishSet_UpdateInterval slider,1,1,60 Keller/Solar/control/SENEC2MQTTInterval
attr senec subscribeReading_BatCurrent Keller/Solar/BatCurrent
attr senec subscribeReading_BatEnergyCharge Keller/Solar/BatEnergyCharge
attr senec subscribeReading_BatEnergyDischarge Keller/Solar/BatEnergyDischarge
attr senec subscribeReading_BatPower Keller/Solar/BatPower
attr senec subscribeReading_BatVoltage Keller/Solar/BatVoltage
attr senec subscribeReading_GridEnergyIn Keller/Solar/GridEnergyIn
attr senec subscribeReading_GridEnergyOut Keller/Solar/GridEnergyOut
attr senec subscribeReading_GridLimit Keller/Solar/GridLimit
attr senec subscribeReading_GridPower Keller/Solar/GridPower
attr senec subscribeReading_HouseEnergy Keller/Solar/HouseEnergy
attr senec subscribeReading_HousePower Keller/Solar/HousePower
attr senec subscribeReading_OpHours Keller/Solar/OpHours
attr senec subscribeReading_SOC Keller/Solar/SOC
attr senec subscribeReading_SolarEnergy Keller/Solar/SolarEnergy
attr senec subscribeReading_SolarPower Keller/Solar/SolarPower
attr senec subscribeReading_Status Keller/Solar/SystemStatus
attr senec subscribeReading_TimeStamp Keller/Solar/TimeStamp

Torsten24

Also soweit ich weiß, habe ich da nichts verschlüsselt oder gesichert...
Das mit Fhem funktioniert so wie ich das sehe.
Jetzt muss ich ja dann über eine Bridge die WErte so verpacken, dass sie von meiner WB gelesen werden,oder? Weil die müssen ja da dann auch in ein bestimmtes Format gebracht werden

PapaRiX

ui interessant.
Also das würe ich vielleicht gar nicht über FHEM machen sondern die SENEC2MQTT.py modifizieren.
Es sind eigentlich alle informationen da, außer die Phasenströme. Da müssten wir mal schauen, wie wir an die kommen.

Torsten24

Aber dafür habe ich doch das jetzt alles gemacht oder nicht? Um die Daten dann so zu verarbeiten, dass sie von meiner WB gelesen werden können... Kann ich dann jetzt nicht einfach den Wert was ich von dem Device bekomme, über eine Bridge an die WB mit dem entsprechenden Pfad senden? Ich bin leider totaler laie und habe durch viel googeln, halt diese Weg "gefunden"... ich habe ja auch über ein anderes Forum schon meine WB in fhem eingebunden, glaub ich  ;D

PapaRiX

ja, ich denke das geht schon über FHEM.
Ich sehe nur gerade das problem, dass wir die Ströme, Spannung und Frequenz noch nicht haben (Senec.py liest die Daten nicht aus).
Ich denke gerade drüber nach, wie das geht - bin ja leider auch kein python experte  :D

Strom, Spannung und Freqzenz sind im SENEC unter
PM1OBJ1 zu finden.
Strom und Spannung kommen aber als Array also in der form [Strom1, Strom2, Strom3] von SENEC zurück und ich weiß noch nicht so richtig, wie man das decodieren kann um es als einzelne Werte in den MQTT zu schreiben. Ist bestimmt nicht schwer, aber wir sind zwei Blinde, die von der Farbe sprechen  ;D
Das zweite Problem ist, dass Senec die Ströme nicht wie gewünsch mit negativ-->Einspeisung, positiv-->Netzbezug ausgibt, sondern nur den Absolutbetrag. Also muss z.B. die Leistung je phase genommen werden, um zu bestimmen, ob strom rein oder raus geht. Leistung je phase lesen wir aber auch nicht von SENEC aus  :)

Ich werde mein Hirn mal drumwickeln und schauen wie das geht. Idealerweise liefert SENEC2MQTT gleich die topics auf dem MQTT, die openWB will. Dann ginge das ohne FHEM - und wir müssten das alles vielleicht in ein openWB Forum umziehen  ;)