Discovergy Stromzähler einbinden

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Ferry.Icker
Beiträge: 15
Registriert: 21.08.2017, 17:17

Re: Discovergy Stromzähler einbinden

Beitrag von Ferry.Icker » 22.05.2018, 11:16

Hallo Fonzo,

Danke für die Info. Ich dachte mir schon sowas ;-)

MfG

Ferry.Icker
Beiträge: 15
Registriert: 21.08.2017, 17:17

Re: Discovergy Stromzähler einbinden

Beitrag von Ferry.Icker » 15.06.2018, 14:49

Hallo,

ich habe mal eine schnelle Lösung für die neue Discovergy-Api aus diversen Quellen aus dem Internet erstellt. Mit genau diesen Parametern sollte es mit dem Demoaccount bei Dicovergy funktionieren.

https://my.discovergy.com/dashboard?1 Auswahl von "PV-Anlage Produktion Einspeisung".

1.) auf der HomeMatic eine Systemvariable "iPower", "iPower1", "iPower2", "iPower3", "iEnergyOut", "iEenergy" erstellen.
Der Wertebereich der Zahlen sollte von -9999999 bis 9999999 gehen. Das ist wichtig, da der Wert in mW ausgegeben wird.
2.) Mit z.b. WinsScp das Java Programm "DiscovergyAPIClient.jar" in den Ordner /usr/local/addons/discovergy kopieren
Den Ordner "discovergy" vorher natürlich anlegen. Groß/KleinSchreibung beachten
3.) Auf der Homematic mit Hilfe der Funktion Script Testen das Programm starten. Es wird dann periodisch die Systemvariable mit dem aktuellen Zählerwert beschrieben.
Siehe Beispielcode unten. Es unterscheiden sich nur die Pfade zum Java Speicherort

Pfad für Rasberrry Pi 3

Code: Alles auswählen

string stdout;
string stderr;
var url = "/opt/java/bin/java -jar /usr/local/addons/discovergy/DiscovergyAPIClient.jar demo@discovergy.com demo EASYMETER_1321002901 192.168.178.32 2000";
system.Exec(url,&stdout,&stderr);
WriteLine("FEHLER:\n "#stderr);
WriteLine("AUSGABE:\n"#stdout);
Pfad für Homematic CCU2

Code: Alles auswählen

string stdout;
string stderr;
var url = "/opt/jre-1.8.0_121-compact3/bin/java -jar /usr/local/addons/discovergy/DiscovergyAPIClient.jar demo@discovergy.com demo EASYMETER_1321002901 192.168.178.32 2000";
system.Exec(url,&stdout,&stderr);
WriteLine("FEHLER:\n "#stderr);
WriteLine("AUSGABE:\n"#stdout);
Die Reihenfolge der Parameter muss unbedingt eingehalten werden.
1.) Email bei Discovergy -> demo@discovergy.com
2.) Passwort bei Discovergy > demo
3.) MeterId ->1321002901 das "EASYMETER_" muss immer davor geschrieben werden.
4.) Ip der Homematic
5.) Abfrageintervall in ms >2000 = 2 Sekunden

Ob das Programm läuft kann man via putty und dem Befehl "ps" sehen. Es sollte in der Liste zwei Einträge mit "sh -c /opt/java/bin/java -jar /usr/local/addons/discovergy/DiscovergyAPIClient.jar .." geben.

Falls es Probleme geben sollte, kann das Programm via putty und dem Befehl "kill PID" beendet werden. Die PID seht ihr beim Befehl "ps".

Ich habe es auf dem raspberry pi 3 und der Homematic - CCU2 getestet. (läuft leider nicht mehr auf der CCU2 nach firmwareupdate)

Ein Langzeittest steht noch aus.

Ich übernehme keine Haftung. Test auf eigenes Risiko.

update:01.02.2020:
Nach einem Firmewareupdate auf der CCU2 läuft das javaprogramm im Moment zur zeit nicht mehr. Ich bin noch dran

Auf dem Raspberry PI gibt es keine Probleme.
Ich habe die MeterId vom Demokonto angepasst.Diese wurde von Discovergie geändert. Bzw ein anderer Zähler verwendet.
Ich habe das Programm etwas angepasst.
- Es wird aller 24 Stunden ein neuer Token für die Cloudverbindung erzeugt.

Sourcecode habe ich von Discovergy als Basis genommen und etwas erweitert.
https://api.discovergy.com/docs/ siehe Demobeispiel.


Ich habe IntelliJ als Programmieroberfläche verendet.
GitHub:
https://github.com/FerryIcker/DiscovergyAPIClient

Das Zipfile auspacken und das jar -file wie oben beschrieben auf die RasperryMatic kopieren.
Dateianhänge
DiscovergyAPIClient.zip
Neue Version vom 01.02.2020
(2.87 MiB) 68-mal heruntergeladen
Zuletzt geändert von Ferry.Icker am 01.02.2020, 22:15, insgesamt 5-mal geändert.

Ferry.Icker
Beiträge: 15
Registriert: 21.08.2017, 17:17

Re: Discovergy Stromzähler einbinden

Beitrag von Ferry.Icker » 21.06.2018, 08:57

Hallo,
Wer kann helfen?

Meine Javaprogramm bescheibt kontinuierlich (aller 2 Sekunden) eine Systemvariable in die HM. Nach einer Stunde bricht es immer ab. Siehe log unten. Es gibt keine Fehlermeldung oder ähnliches.


CUX2801001:1 timeout(3600s) /opt/java/bin/java -jar /usr/local/addons/discovergy/DiscovergyAPIClient.jar

MfG
Ferry Icker

Ferry.Icker
Beiträge: 15
Registriert: 21.08.2017, 17:17

Re: Discovergy Stromzähler einbinden

Beitrag von Ferry.Icker » 22.06.2018, 18:31

Hallo,

für alle die es interessiert.

das CuxD - Gerät hat einen konfigurierbaren Timeout. Der stand auf 60 min. Das bedeutet das jedes Programm was über diese Gerät mit (CUxD.CUX2801001:1.CMD_EXEC) gestartet wird, nach diesem Timeout automatisch beendet wird.

Deshalb habe ich die alte Methode "system.Exec()" benutzt. So läuft das Programm.

Nachteil:
Man kann das Programm nur via Putty beenden. mit dem Kommando "ps" die Prozesse anzeigen lassen und PID ermitteln. Über "kill PID" kann der Prozess dann gelöscht werden.
Aber das Programm sollte eigentlich nicht beendet werden da es ständig im Intervall von 2 Sekunden die Zählerstände abfragt.

MfG

Code: Alles auswählen

string stdout;
string stderr;
var url = "/opt/java/bin/java -jar /usr/local/addons/discovergy/DiscovergyAPIClient.jar demo@discovergy.com demo EASYMETER_1030002797 192.168.178.32 2000";
system.Exec(url,&stdout,&stderr);
WriteLine("FEHLER:\n "#stderr);
WriteLine("AUSGABE:\n"#stdout);

Fratra
Beiträge: 2
Registriert: 11.02.2018, 13:30

Re: Discovergy Stromzähler einbinden

Beitrag von Fratra » 28.06.2018, 15:00

Hallo Ferry-Icker,

ich habe vor meine Discovergy Zähler ins FHEM einzubinden. Leider ist im FHEM zur Zeit nur die alte API als Modul fertig. Kannst Du abschätzen, ob man das alte Modul im FHEM https://github.com/asciidisco/fhem-discovergy einfach umschreiben kann? Oder ist das eine komplette Neuentwicklung?

Gruß Fratra

chrugel
Beiträge: 1
Registriert: 18.09.2018, 15:32

Re: Discovergy Stromzähler einbinden

Beitrag von chrugel » 18.09.2018, 15:37

Hallo Ferry,

DANKE für Dein tolles Programm, das Schreiben der Werte in die definierten Systemvariablen funktioniert super!

Ich würde nun allerdings gerne noch einige Anpassungen vornehmen (bspw. habe ich zwei Discovergy-Zähler, einen Zweirichtungszähler für Bezug/Einspeisung und einen "normalen" Zähler für PV-Erzeugung).

Könntest Du hier auch die original Quelldaten (source code) Deines jar-Programms zur Verfügung stellen?!? Danke!

Herzliche Grüße aus Berlin!

rieggep9
Beiträge: 1
Registriert: 27.08.2019, 06:49

Re: Discovergy Stromzähler einbinden

Beitrag von rieggep9 » 27.08.2019, 06:56

Guten Morgen zusammen,

ich nutze das Java-Programm von Fratra und es funktioniert zunächst auch ganz gut.
Leider bleibt es immer wieder stehen, typischerweise nach 11 bis 22 Stunden.
Ich kann das Skript dann erneut starten und es funktioniert wieder einige Stunden - unabhängig davon ob ich zuvor den alten Prozeß in putty "gekillt" habe oder nicht.

Ich würde gerne das Laden meines Elektroautos damit steuern sobald aus der PV-Anlage ausreichend Leistung eingespeist wird. Das funktioniert auch - nur eben muss ich das Skript jeden morgen von Hand starten, was etwas umständlich ist...

Mache ich etwas falsch / gibt es irgendwo eine Randbedingung die dazu führt?

Vielen Dank vorab,
Grüße vom sonnigen Bodensee

froema
Beiträge: 205
Registriert: 19.12.2018, 15:20
Hat sich bedankt: 3 Mal

Re: Discovergy Stromzähler einbinden

Beitrag von froema » 22.12.2019, 13:54

Hallo,

hat jemand dieses Java-Skript noch laufen?
Bei mir führt es zur Blockade einiger Funktelegramme, die von der CCU aus gesendet werden sollten.

Grüße vom linken Niederrhein
Marc

froema
Beiträge: 205
Registriert: 19.12.2018, 15:20
Hat sich bedankt: 3 Mal

Re: Discovergy Stromzähler einbinden

Beitrag von froema » 27.12.2019, 11:57

Ferry.Icker hat geschrieben:
22.06.2018, 18:31
Hallo,

für alle die es interessiert.

das CuxD - Gerät hat einen konfigurierbaren Timeout. Der stand auf 60 min. Das bedeutet das jedes Programm was über diese Gerät mit (CUxD.CUX2801001:1.CMD_EXEC) gestartet wird, nach diesem Timeout automatisch beendet wird.

Deshalb habe ich die alte Methode "system.Exec()" benutzt. So läuft das Programm.

Nachteil:
Man kann das Programm nur via Putty beenden. mit dem Kommando "ps" die Prozesse anzeigen lassen und PID ermitteln. Über "kill PID" kann der Prozess dann gelöscht werden.
Aber das Programm sollte eigentlich nicht beendet werden da es ständig im Intervall von 2 Sekunden die Zählerstände abfragt.

MfG
Hallo zusammen,

den Fehler, welcher zur Blockade der Funktelegramme führte habe ich ausfindig machen können. Das Java-Skript wurde versehentlich zweimal gestartet, das hatte ich übersehen.

Zu dem Post von @Ferry.Icker habe ich aber eine Frage.
Gibt es nicht doch eine Möglichkeit das Skript über CuxD laufen zu lassen und den Timeout zu umgehen? Bei der alten Methode System.Exec muss man, wie oben beschrieben, via Putty den Prozess beenden. Das finde ich unschön und unpraktisch.

Viele Grüße
Marc

froema
Beiträge: 205
Registriert: 19.12.2018, 15:20
Hat sich bedankt: 3 Mal

Re: Discovergy Stromzähler einbinden

Beitrag von froema » 25.01.2020, 18:07

Hallo zusammen,

leider führt dieses Skript immer wieder zu Ausfällen. Entweder es versagt seinen Dienst, oder es blockiert das Senden von Funktelegrammen in der HM.
Hat einer das stabil laufen? Ich benötige die Discovergy Daten zum aktiven Steuern meine Solaranlage.

Viele Grüße
Marc

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“