EFR Smartmeter auslesen und Variablen in Homemtic schreiben

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

Moderator: Co-Administratoren

m21muc
Beiträge: 9
Registriert: 21.04.2017, 22:47

EFR Smartmeter auslesen und Variablen in Homemtic schreiben

Beitrag von m21muc » 21.04.2017, 22:58

Hallo zusammen,

ich bin neu hier und suche nach einer Möglichkeit aus meinem EFR Smart-Meter periodisch (z.B. alle 3 Minuten) Energieverbrauchswerte auszulesen und diese dann in der CCU als Variablen abzulegen.

Per URL-Aufruf über '<IP-Adresse>/json.txt?LogName=user&LogPSWD=user' kann man die Daten auslesen und man erhält beispielsweise Folgendes zurück:

Code: Alles auswählen

{ „billingData:“ : { „assignment“ :[ { „obis“:“8181C78227FF“,“value“:“0815“}, { „ob
is“:“8181C78205FF“,“value“:“Max“}, { „obis“:“8181C78206FF“,“value“:“Musterm
ann“}, { „obis“:“8181C78207FF“,“value“:“Nymphenburger Str. 20b, 80335 Muenchen“},
{ „obis“:“0100000000FF“,“value“:“1118004892“}, { „obis“:“010000090B0
0“,“value“:“26.11.2012,11:27:23“}], „values“ : [ {„obis“:“0101010800FF“,“value“:36
6.83,“unit“:“kWh“ },{„obis“:“0101010801FF“,“value“:255.16,“unit“:“kWh“},{„obis“
:“0101010802FF“,“value“:60.05,“unit“:“kWh“},{„obis“:“0101010803FF“,“value“:51
.53,“unit“:“kWh“},{„obis“:“0102020800FF“,“value“:6.83,“unit“:“kWh“},{„obis“:“0
102020807FF“,“value“:6.79,“unit“:“kWh“},{„obis“:“0100010700FF“,“value“:54.04
,“unit“:“W“},{„obis“:“0100150700FF“,“value“:-1.57,“unit“:“W“},{„obis“:“01002907
00FF“,“value“:0.00,“unit“:“W“},{„obis“:“01003D0700FF“,“value“:55.61,“unit“:“W“
},{„obis“:“010020070000“,“value“:230.04,“unit“:“V“},{„obis“:“010034070000“,“v
alue“:226.95,“unit“:“V“},{„obis“:“010048070000“,“value“:228.93,“unit“:“V“},{„obi
s“:“01000E070000“,“value“:50.000,“unit“:“Hz“},{„obis“:“010001080080“,“value“:
0.30,“unit“:“kWh“},{„obis“:“010001080081“,“value“:0.49,“unit“:“kWh“},{„obis“:“0
10001080082“,“value“:4.75,“unit“:“kWh“},{„obis“:“010001080083“,“value“:27.86
,“unit“:“kWh“},{„obis“:“010001080084“,“value“:0.00,“unit“:“kWh“},{„obis“:“0100
02080080“,“value“:0.00,“unit“:“kWh“},{„obis“:“010002080081“,“value“:0.00,“unit
“:“kWh“},{„obis“:“010002080082“,“value“:0.00,“unit“:“kWh“},{„obis“:“01000208
0083“,“value“:0.00,“unit“:“kWh“},{„obis“:“010002080084“,“value“:0.00,“unit“:“k
Wh“} ] }}
Vom Hersteller habe ich die folgende Definition für die OBIS-Werte erhalten:

Code: Alles auswählen

8181C78227FF 0815 Kundennummer
8181C78205FF Max Vorname
8181C78206FF Mustermann Nachname
8181C78207FF Nymphenburger Str. 20b
80335 Muenchen
Adresse
0100000000FF 1118004892 Zählernummer
010000090B00 26.11.2012,11:27:23 Zeitstempel
0101010800FF 366.83 kWh Summenregister 1.8.0
0101010801FF 255.16 kWh Register 1.8.1
0101010802FF 60.05 kWh Register 1.8.2
0101010803FF 51.53 kWh Register 1.8.3
0102020800FF 6.83 kWh Register 2.8.0
0102020807FF 6.79 kWh Register 2.8.7
0100010700FF 54.04 W Gesamtleistung
0100150700FF -1.57 W Leistung Phase 1
0100290700FF 0.00 W Leistung Phase 2
01003D0700FF 55.61 W Leistung Phase 3
010020070000 230.04 V Spannung Phase 1
010034070000 226.95 V Spannung Phase 2
010048070000 228.93 V Spannung Phase 3
01000E070000 50.000 Hz Netzfrequenz
010001080080 0.30 kWh Verbrauch heute
010001080081 0.49 kWh Verbrauch gestern
010001080082 4.75 kWh Verbrauch letzte Woche
010001080083 27.86 kWh Verbrauch letzten Monat
010001080084 0.00 kWh Verbrauch letztes Jahr
010002080080 0.00 kWh Einspeisung heute
010002080081 0.00 kWh Einspeisung gestern
010002080082 0.00 kWh Einspeisung letzte Woche
010002080083 0.00 kWh Einspeisung letzten Monat
010002080084 0.00 kWh Einspeisung letztes Jahr
Gibt es dazu eine Möglichkeit?

Schon mal vielen Dank für eure Tipps ;-)

ChristianF
Beiträge: 395
Registriert: 27.06.2014, 21:50

Re: EFR Smartmeter auslesen und Variablen in Homemtic schrei

Beitrag von ChristianF » 23.04.2017, 23:25

Kann über ioBroker gehen, der kann JSON Inputs verarbeiten. Zu iobroker gibt es hier ein eigenes Unterforum.
370 Kanäle in 119 Geräten und 22 CUxD-Kanäle in 18 CUxD-Geräten, dazu ioBroker und diverse weitere eingebundene Systeme, vom 433MHz Bewegungsmelder bis hin zur Wallbox.

lesiflo
Beiträge: 112
Registriert: 03.02.2017, 10:01

Re: EFR Smartmeter auslesen und Variablen in Homemtic schrei

Beitrag von lesiflo » 24.04.2017, 11:39

Hallo,

vielleicht dieser Beitrag dir etwas weiter "Integration Photovoltaik-Anlage mit SolarEdge". Hier werden über die API Schnittstelle
die PV-Daten ausgelesen und in die HM-Anlage geschrieben.

alchy
Beiträge: 10744
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 671 Mal

Re: EFR Smartmeter auslesen und Variablen in Homemtic schrei

Beitrag von alchy » 25.04.2017, 18:46

Das geht auch über HM Script.

Wenn du da Hilfe benötigen solltest, bitte die JSON Rückgabe des Script Executers (Siehe Signatur) posten.

Code: Alles auswählen

var url = "http://<IP-Adresse>/json.txt?LogName=user&LogPSWD=user";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q  --auth-no-challenge -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State(); 
Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

m21muc
Beiträge: 9
Registriert: 21.04.2017, 22:47

Re: EFR Smartmeter auslesen und Variablen in Homemtic schrei

Beitrag von m21muc » 28.04.2017, 19:21

Erst mal vielen Dank für die hilfreichen Tipps an euch alle - versuche das mal!!

@Alchy - ich habe das Skript mal laufen lassen - hier ist die Ausgabe:

Code: Alles auswählen

{
  "srueck": "",
  "sessionId": "",
  "httpUserAgent": "",
  "url": "http:\/\/192.168.8.210\/json.txt?LogName=user&LogPSWD=user",
  "STDOUT": ""
}

alchy
Beiträge: 10744
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 671 Mal

Re: EFR Smartmeter auslesen und Variablen in Homemtic schrei

Beitrag von alchy » 28.04.2017, 19:34

m21muc hat geschrieben:hier ist die Ausgabe:
Was mich zur Frage bringt, ob du überhaupt >>CUXD inklussive CUXD.Exec<< installiert hast und dieses auch funktioniert?
und solltest du wider Erwarten jetzt ja sagen, du die URL natürlich mit Daten gefüttert hast und diese hier nur verfremdet hast?

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

m21muc
Beiträge: 9
Registriert: 21.04.2017, 22:47

Re: EFR Smartmeter auslesen und Variablen in Homemtic schrei

Beitrag von m21muc » 28.04.2017, 20:02

Danke, Alchy....hatte CuxD nicht drauf... :(

Jetzt hat es funktionier...hier nun die Ausgabe:

Code: Alles auswählen

{
  "srueck": "\{ \"billingData:\" : \{ \"assignment\" :\[  \{ \"obis\":\"8181C78227FF\",\"value\":\"user\"}, \{ \"obis\":\"8181C78205FF\",\"value\":\"Vorname\"}, \{ \"obis\":\"8181C78206FF\",\"value\":\"Nachname\"}, \{ \"obis\":\"8181C78207FF\",\"value\":\"Adresse\"}, \{ \"obis\":\"0100000000FF\",\"value\":\"1271316001886\"}, \{ \"obis\":\"010000090B00\",\"value\":\"28.04.2017,20:00:47\"}], \"values\" : \[  \{\"obis\":\"0101010800FF\",\"value\":8357.50,\"unit\":\"kWh\" },\{\"obis\":\"0101010801FF\",\"value\":8349.61,\"unit\":\"kWh\"},\{\"obis\":\"0100010700FF\",\"value\":436.50,\"unit\":\"W\"},\{\"obis\":\"0100150700FF\",\"value\":130.77,\"unit\":\"W\"},\{\"obis\":\"0100290700FF\",\"value\":258.06,\"unit\":\"W\"},\{\"obis\":\"01003D0700FF\",\"value\":47.67,\"unit\":\"W\"},\{\"obis\":\"010020070000\",\"value\":229.90,\"unit\":\"V\"},\{\"obis\":\"010034070000\",\"value\":232.26,\"unit\":\"V\"},\{\"obis\":\"010048070000\",\"value\":231.30,\"unit\":\"V\"},\{\"obis\":\"01000E070000\",\"value\":50.000,\"unit\":\"Hz\"},\{\"obis\":\"010001080080\",\"value\":8.52,\"unit\":\"kWh\"},\{\"obis\":\"010001080081\",\"value\":5.83,\"unit\":\"kWh\"},\{\"obis\":\"010001080082\",\"value\":49.71,\"unit\":\"kWh\"},\{\"obis\":\"010001080083\",\"value\":221.10,\"unit\":\"kWh\"},\{\"obis\":\"010001080084\",\"value\":0.02,\"unit\":\"kWh\"} ] }}",
  "sessionId": "",
  "httpUserAgent": "",
  "url": "http:\/\/192.168.8.210\/json.txt?LogName=user&LogPSWD=user",
  "STDOUT": ""
}

alchy
Beiträge: 10744
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 671 Mal

Re: EFR Smartmeter auslesen und Variablen in Homemtic schrei

Beitrag von alchy » 28.04.2017, 20:32

und welche Werte hättest du gern in Variablen eingelesen ?

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

m21muc
Beiträge: 9
Registriert: 21.04.2017, 22:47

Re: EFR Smartmeter auslesen und Variablen in Homemtic schrei

Beitrag von m21muc » 28.04.2017, 20:47

Hi Alchy,

DANKE :wink: - das wären:

0100010700FF 54.04 W Gesamtleistung
0100150700FF -1.57 W Leistung Phase 1
0100290700FF 0.00 W Leistung Phase 2
01003D0700FF 55.61 W Leistung Phase 3
0101010800FF 366.83 kWh Summenregister 1.8.0
0101010801FF 255.16 kWh Register 1.8.1
0101010802FF 60.05 kWh Register 1.8.2
0101010803FF 51.53 kWh Register 1.8.3
0102020800FF 6.83 kWh Register 2.8.0
0102020807FF 6.79 kWh Register 2.8.7
010001080080 0.30 kWh Verbrauch heute
010001080081 0.49 kWh Verbrauch gestern
010001080082 4.75 kWh Verbrauch letzte Woche
010001080083 27.86 kWh Verbrauch letzten Monat
010001080084 0.00 kWh Verbrauch letztes Jahr

alchy
Beiträge: 10744
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 671 Mal

Re: EFR Smartmeter auslesen und Variablen in Homemtic schrei

Beitrag von alchy » 29.04.2017, 19:41

Was dann ja alles sind, abgesehen von den Benutzerdaten. :wink:

Dann probier mal aus:

Code: Alles auswählen

! EFR Smart-Meter auslesen und Werte speichern
! v0.1 (c) by Alchy
var url = "http://<IP-Adresse>/json.txt?LogName=user&LogPSWD=user";
! in der nächsten Variable sind die Register und der dazugehörige Name einzutragen in Form von 010002080083=Einspeisung letzten Monat;
string liste = "0101010800FF=Summenregister 1.8.0;0101010801FF=Register 1.8.1;0101010802FF=Register 1.8.2;0101010803FF=Register 1.8.3;0102020800FF=Register 2.8.0;0102020807FF=Register 2.8.7;0100010700FF=Gesamtleistung;0100150700FF=Leistung Phase 1;0100290700FF=Leistung Phase 2;01003D0700FF=Leistung Phase 3;010020070000=Spannung Phase 1;010034070000=Spannung Phase 2;010048070000=Spannung Phase 3;01000E070000=Netzfrequenz;010001080080=Verbrauch heute;010001080081=Verbrauch gestern;010001080082=Verbrauch letzte Woche;010001080083=Verbrauch letzten Monat;010001080084=Verbrauch letztes Jahr;010002080080=Einspeisung heute;010002080081=Einspeisung gestern;010002080082=Einspeisung letzte Woche;010002080083=Einspeisung letzten Monat;010002080084=Einspeisung letztes Jahr";
! das war es schon - ab hier Finger weg !
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget --no-check-certificate --auth-no-challenge -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State(); 
srueck = srueck.Substr((srueck.Find("values")+16), srueck.Length() );
string index;integer i;string name = "unbekannt";
if(!srueck==""){
WriteLine(srueck);
foreach(index, srueck.Split("{")){
i = i+1;
string code = (index.StrValueByIndex(",",0).StrValueByIndex(":",1));
code = code.Substr(1, code.Length()-2);
string value = index.StrValueByIndex(",",1).StrValueByIndex(":",1);
string indexl;integer il = 0;string codel;string namel = "unbekannt";
foreach(indexl, liste.Split(";")){
il = il+1;codel = indexl.StrValueByIndex("=",0);namel = indexl.StrValueByIndex("=",1);
if (code == codel){name = namel;}
}
if (name != "unbekannt"){
if (dom.GetObject(ID_SYSTEM_VARIABLES).Get(name)){dom.GetObject(ID_SYSTEM_VARIABLES).Get(name).State(value.ToFloat());
WriteLine("Wert: "#value #" aus Register: "#code #" wurde in Variable: " #name #" gespeichert"); 
}else{
WriteLine("Wert: "#value #" aus Register: "#code #" konnte NICHT in Variable: " #name #" gespeichert werden"); 
}}}}else{WriteLine("Abfage nicht erfolgreich");}
Das Script sollte die Werte entsprechend auslesen und wenn die Zahlenvariablen entsprechend auch angelegt sind, wird der jeweilige Wert gespeichert.
Den Namen der anzulegenden Zahlenvariablen kannst du im Script bei string liste = am Anfang des Scriptes einstellen.

....010002080080=Einspeisung heute;010002080081=Einspeisung gestern;010002....

der Wert aus dem Register 010002080080 wird also in der Systemvariablen Einspeisung heute abgespeichert.

Willst du andere Namen verwenden, dann nur in der Variable ändern z.B. in:
....010002080080=EFR heutige Einspeisung;010002080081=EFR gestrige Einspeisung;010002....

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Antworten

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