lokale Anbindung SENEC Batterie an FHEM

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

Vorheriges Thema - Nächstes Thema

PapaRiX

#105
Hey Torsten.

das skript läuft unabhängig von FHEM.
Du brauchst also dein Putty (oder auch gerne auch direkt mit Tastatur und Display am Raspi).
wie beschrieben brauchst du dann Mosquitto eingerichtet, python3 mit den libraries paho-mqtt und requests und die skripte.
Kopieren kannst Du das zum Beispiel mit winscp oder etwa auch mit einem USB stick oder (für ganz harte) über die kommandozeile.

Du kannst auch für den Anfang auf diese Systemd Geschichte verzichten und zum Testen das SENEC2MQTT skript direkt aus dem Terminal (z.B. Putty) starten.

Das ist ein wenig Bastelei, aber wenn Du Google und fragen hier nutzt und ein wenig probierst, klappt das :-D


Torsten24

Hi. 
Muss nochmal nachfragen... Also ich denk ich habe das jetzt alles soweit geschafft... Zumindest konnte ich über putty die ganzen schritte abarbeiten ohne Fehlermeldung...
Aber wie bekomme ich das jetzt im fhem, dass es mir da irgendwas anzeigt?
Wie kann ich überprüfen ob meine Vorarbeit korrekt war?

Vielen Dank für deine Geduld und hilfe

PapaRiX

im FHEM nimmst Du ein MQTT device https://wiki.fhem.de/wiki/MQTT_DEVICE und richtest es entsprechend ein. 
Hier mein Device als Beispiel (vergiss nicht nicht, dass Du in FHEM auch ein MQTT Gateway einrichten musst

define SENEC_MQTT MQTT_DEVICE
setuuid SENEC_MQTT 621fd002-f33f-8632-c019-315ba0f5d958c967
attr SENEC_MQTT alias SENEC_MQTT
attr SENEC_MQTT group SENEC
attr SENEC_MQTT icon solar_icon
attr SENEC_MQTT publishSet_UpdateInterval slider,1,1,60 Keller/Solar/control/SENEC2MQTTInterval
attr SENEC_MQTT room Keller
attr SENEC_MQTT subscribeReading_BatCurrent Keller/Solar/BatCurrent
attr SENEC_MQTT subscribeReading_BatEnergyCharge Keller/Solar/BatEnergyCharge
attr SENEC_MQTT subscribeReading_BatEnergyDischarge Keller/Solar/BatEnergyDischarge
attr SENEC_MQTT subscribeReading_BatPower Keller/Solar/BatPower
attr SENEC_MQTT subscribeReading_BatVoltage Keller/Solar/BatVoltage
attr SENEC_MQTT subscribeReading_GridEnergyIn Keller/Solar/GridEnergyIn
attr SENEC_MQTT subscribeReading_GridEnergyOut Keller/Solar/GridEnergyOut
attr SENEC_MQTT subscribeReading_GridLimit Keller/Solar/GridLimit
attr SENEC_MQTT subscribeReading_GridPower Keller/Solar/GridPower
attr SENEC_MQTT subscribeReading_HouseEnergy Keller/Solar/HouseEnergy
attr SENEC_MQTT subscribeReading_HousePower Keller/Solar/HousePower
attr SENEC_MQTT subscribeReading_OpHours Keller/Solar/OpHours
attr SENEC_MQTT subscribeReading_SOC Keller/Solar/SOC
attr SENEC_MQTT subscribeReading_SolarEnergy Keller/Solar/SolarEnergy
attr SENEC_MQTT subscribeReading_SolarPower Keller/Solar/SolarPower
attr SENEC_MQTT subscribeReading_Status Keller/Solar/SystemStatus
attr SENEC_MQTT subscribeReading_TimeStamp Keller/Solar/TimeStamp


Zum Testen nehme ich in der Regel aber einfach den MQTT explorer http://mqtt-explorer.com/ 
Das ist nettes kleines Tool, mit dem man schnell und einfach nachsehen kann, was auf Deinem MQTT Netz so los ist.

Torsten24

Ich weiß, ich nerve... aber entweder stelle ich mich einfach zu blöd an oder ich check es nicht...
Ich habe jetzt alles nochmal neu aufgestetz, weil ich halt viele verschiedene Sachen getestet habe... Aber bei mir sind die attr Einträge die du in deinem Device hast gar nicht zum auswählen vorhanden...
Desweiteren sehe ich in fhem bis jetzt keinerlei veränderung. Ich hänge mal ein paar screenshots an, vielleicht kann mir jemand helfen und sagen was ich falsch mache...
Ich spiele mittlerweile jeden abend einige stunden daran rum und komme nicht wirklich auf einen grünen Zweig... zum verzweifeln

PapaRiX

Hey Torsten,

kein Problem, lass uns mal schauen...
1. funktioniert das Skript? (mit mqtt explorer geprüft)? 
2. Es sieht für mich so aus, als ob du MQTT und MQTT2 Devices vermischt, das geht so nicht.
 
Du brauchst einmal das hier um FHEM deinen Broker bekannt zu machen: https://fhem.de/commandref.html#MQTT
und Dein SENEC-MQTT device sollte dann ein https://fhem.de/commandref.html#MQTT_DEVICE sein.
 
So funktioniert es bei mir.
Ich denke, Du könntest das bestimmt auch mit MQTT2_SERVER + MQTT2_DEVICE machen, das kenne ich aber nicht.

Torsten24

Hi. Danke für deine Unterstützung
Also ich geh davon aus, dass mosquitto funktioniert. Mit dem mqtt explorer hat es zwar nicht funktioniert, aber wenn ich mich mit zwei terminals über putty einlogge und in eines eine Meldung schreibe bekomme ich es im zweiten angezeigt.
Die MQTT Sachen habe ich geändert. Sieht jetzt so aus...

PapaRiX

#111
Okay, wir kommen der Sache näher. 
achte mal drauf, dass Du bei deinem MQTT "Broker" auch den Port mit angibts
Also bei DEF: 127.0.0.1:1883 
(ich gehe mal davon aus, dass Du Mosquitto auf dem standardport gelassen hast.

 
außerdem hast Du bei deinem MQTT_device "senec" die falsche IODev. Da sollte nicht openWB stehen sondern "Broker".
Dann ist dein MQTT_device auch mit dem Broker verbunden. 
 
Dass der MQTT explorer nicht geht ist aber nicht gut. Damit solltest Du auf jeden Fall einfach feststellen können, was alles auf dem Broker los ist, unter anderem was Dir SENEC2MQTT.py liefert.
da sollten die ganzen infos vom SENEC2MQTT ankommen (sofern Du im Skript die Topics nicht geändert hast)
außerdem kannst Du da recht einfach auch topics zum testen absetzen.
was passiert denn im Putty bei:
mosquitto_sub -v -t Keller/Solar/#




Torsten24

so, also die zwei sachen habe ich geändert. ich habe nochmal 2 scrrenshots angehängt...
Scheinbar läuft das script nicht, weil wenn ich das im Putty eingebe scheint es so als ob es auf irgendwas warten würde...

PapaRiX

Okay, FHEM sieht ganz gut aus. 
Jetzt müssten wir mal schauen was bei dem skript nicht richtig läuft:

- hast Du systemd eingerichtet?
  - läuft der Prozess?
was sagt denn:
systemctl status SENEC2MQTT
 
wenn nein, nicht so schlimm, du kannst das skript auch erst mal manuell starten:
python3 /usr/bin/SENEC2MQTT/SENEC2MQTT.py 

Spontan würde ich noch fragen wollen, ob Du im SENEC2MQTT.py den Broker und deine Senec anlage eingetragen hast?
nano /usr/bin/SENEC2MQTT/SENEC2MQTT.py
(falls nicht bekannt: nano ist ein einfacher texteditor, screenshot hängt an, mit STRG+X kommst Du da raus, und er fragt Dich, ob Du speichern willst)




Torsten24

Hi.Sorry, ich war noch unterwegs...
Ich habe beides gemacht, was du gesagt hast. Scheinbar hat er die Datei SENEC2MQTT nicht gefunden, da ich sie in das Stammverzeichnis kopiert habe, weil mich winscp nicht anders gelassen hat... Jetzt sollte sie aber über umwege da sein wo du ursprünglcih angegeben hattest.Aber scheinbar hat er immernoch ein Problem.
Die IP's passen aber

PapaRiX

#115
Schritt für Schritt...

also ich sehe, Du hast paho noch nicht installiert
python3 -m pip install paho-mqtt
und wenn wir schon dabei sind, versuch gleich noch
python3 -m pip install requests
 
paho ist eine library, die Du brauchst um MQTT zu sprechen
requests ist eine library, die Du brauchst um SENEC anzusprechen. 

Ich bin mir nicht ganz sicher, was Du da hin und her kopiert hattest.
Auch hier einfach mal nur zum Sichergehen:
in dem Verzeichnis befinden sich zwei .py dateien: SENEC2MQTT.py und Senec.py, richtig?
am besten, Du machst mir mal noch einen screenshot von
ls -l /usr/bin/SENEC2MQTT/

damit gibst Du den inhalt von /usr/bin/SENEC2MQTT an und listest auch gleich noch die Rechte mit auf. die Dateien müssen entweder root gehören oder Du machst sie einfach für alles les-,schreib- und ausführbar (wie oben beschrieben mit chmod befehl)


Torsten24

Hi. Sorry, ich kann unter der Woche immer nur um diese Uhrzeit rum...
Also phyton habe ich definitv schon installiert, stand ja in deiner ersten Anleitung schon mit drin... Habe es jetzt nochmal installiert, vielleicht habe ich da was falsch gemacht. die datei Senec.py gehört auch in den Ordner Senec2MQTT? ich hatte da einen eigenen Senec ordner....
Ich hoffe das war jetzt nicht falsch, dass ich die jetzt in den Ordner verschoben habe. Habe die alles anghängt-
Wenn ich aber jetzt mosquitto_sub ausführe

PapaRiX

connected with result code 0 ist genau das, was du willst  :D
Das ist nämlich die Nachricht, dass Du Dich mit dem MQTT broker verbunden hast.
Das passt jetzt also.


schau jetzt nochmal nach, was Dein systemd macht:
sudo systemctl status SENEC2MQTT

wenn Du noch alles beim alten hast, sollte da sowas stehen, dass der Service active (running)  ist.
ggf. müsstest Du den mal noch neustarten
sudo systemctl restart SENEC2MQTT

Jetzt müsstest Du mit dem MQTT explorer am pc schön sehen, was auf dem MQTT läuft.
Alternativ sollte dir im putty:
mosquitto_sub -v -t Keller/Solar/#
oder gleich alles:
mosquitto_sub -v -t #
was ausgeben


Torsten24

ALso so wirklich funktioniert das glaub ich nicht... Habe jetzt alle befehle ausgeführt, habe aber den Eindruck dass da was nicht passt.
Ich kann mich auch immernoch nicht mit dem mqtt explorer verbinden...
Vielen Dank nochmal für deine Geduld

PapaRiX

Ich sehe schon, ich muss meine Anleitung auf jeden Fall etwas überarbeiten  ;D
Danke auf jeden Fall, dass Du dazu beiträgst!

1. das Skript geht jetzt, wenn Du es mit
python3 /usr/bin/SENEC2MQTT/SENEC2MQTT.py
ausführst

2. Dein MQTT explorer kann so nicht funktionieren.
Du darfst nicht 127.0.0.1 angeben. Das wäre ja local host, also der PC, an dem Du MQTT broker laufen lässt.
nimm dort die IP adresse, die Du auch für putty nutzt. Port ist 1883
Zum Probieren also mit putty das skript ausführen, dann am PC den MQTT-explorer (mit Raspi IP) ansehen.

3. Systemd
schau bitte mal nach, welche Rechte Deine SENEC2MQTT.service hat
ls -l /etc/systemd/system
Die datei muss ausführbar sein. (mit der bazooka) Einfach alle rechte geben.
sudo chmod 777 /etc/systemd/system/SENEC2MQTT.service