Nachdem ich das Glück hatte bei den ersten Testplatinen schon mit an Bord zu sein - danke nochmal dafür - habe ich letztes Jahr schon ein Auslese-Script direkt für Homematic-User ohne Umwege über iobroker, etc. erstellt, welches ich hier mit euch teilen will:
Hinweise befinden sich im Script in den Kommentaren!
Code: Alles auswählen
!FOLGENDE SYSTEMVARIABLEN MÜSSEN ERSTELLT WERDEN BZW. WENN NICHT ALLE BENÖTIGT WERDEN MUSS DAS SCRIPT ENTSPRECHEND ANGEPASST WERDEN
object sv_bezug = dom.GetObject("Stromzähler Bezug");
object sv_einspeisung = dom.GetObject("Stromzähler Einspeisung");
object sv_stromleistung = dom.GetObject("Stromleistung Netzanschluss");
object sv_spannung1 = dom.GetObject("Spannung L1");
object sv_spannung2 = dom.GetObject("Spannung L2");
object sv_spannung3 = dom.GetObject("Spannung L3");
object sv_strom1 = dom.GetObject("Strom L1");
object sv_strom2 = dom.GetObject("Strom L2");
object sv_strom3 = dom.GetObject("Strom L3");
object sv_cosphi = dom.GetObject("Strom Leistungsfaktor");
!NUR FORTFAHREN WENN SHRDZM ERREICHBAR - WIRD MITTELS CUXD-PING GERÄT GETESTET, GGF. DIE SERIENNUMMER ANPASSEN (OPTIONAL)
if (dom.GetObject("CUxD.CUX2803001:6.STATE").Value())
{
string datenpunkte = "timestamp,1.8.0,2.8.0,16.7.0,32.7.0,52.7.0,72.7.0,31.7.0,51.7.0,71.7.0,13.7.0";
!Titel und Einheit nur für WriteLine
string titel = "Timestamp des letzten Datensatzes: ,Stromzähler Bezug: ,Stromzähler Einspeisung: ,Momentanleistung (+Bezug/-Einspeisung): ,Spannung L1: ,Spannung L2: ,Spannung L3: ,Strom L1: ,Strom L2: ,Strom L3: ,Leistungsfaktor: ";
string einheit= ", kWh, kWh, kW, V, V, V, A, A, A, cosPhi";
!CUXD-SYSTEMEXEC GERÄT MUSS EINGERICHTET SEIN, GGF. DIE SERIENNUMMER ANPASSEN
!HIER DIE URL DER REST-AUSGABE DES SHRDZM-MODULS EINTRAGEN UNTER EINFACHEN ANFÜHRUNGSZEICHEN
dom.GetObject("CUxD.CUX2801001:4.CMD_SETS").State("wget --timeout=3 --tries=1 -q -O - 'http://192.168.0.123/getLastData?user=xxxxxxxxxxxx&password=xxxxxxxx'");
dom.GetObject("CUxD.CUX2801001:4.CMD_QUERY_RET").State(1);
var stdout = dom.GetObject("CUxD.CUX2801001:4.CMD_RETS").State();
var index = 0;
while(index <=10)
{
string wert = stdout.Substr(stdout.Find(datenpunkte.StrValueByIndex(",",index)),600).StrValueByIndex("\"",2); !"(nur für Notepad++)
if(index<=10){var ausgabe=0.01*wert.ToFloat();}
if(index<=9){var ausgabe=wert.ToFloat();}
if(index<=6){var ausgabe=wert.ToFloat();}
if(index<=3){var ausgabe=0.001*wert.ToFloat();}
if(index==0){var ausgabe=(wert.StrValueByIndex("T",0)#" "#wert.StrValueByIndex("T",1)).ToTime();}
if(index==11){var ausgabe=wert;}
if(index == 0) {var zeit=ausgabe;}
if(index == 1) {var bezug=ausgabe;}
if(index == 2) {var einspeisung=ausgabe;}
if(index == 3) {var stromleistung=ausgabe;}
if(index == 4) {var spannung1=ausgabe;}
if(index == 5) {var spannung2=ausgabe;}
if(index == 6) {var spannung3=ausgabe;}
if(index == 7) {var strom1=ausgabe;}
if(index == 8) {var strom2=ausgabe;}
if(index == 9) {var strom3=ausgabe;}
if(index == 10) {var cosphi=ausgabe;}
!AUSGABE IM "SCRIPT TESTEN"-FENSTER
WriteLine(titel.StrValueByIndex(",",index) # ausgabe # einheit.StrValueByIndex(",",index));
index = index + 1;
}
!NUR FORTFAHREN WENN AUSLESUNG WERTE ENTHÄLT (BEI FEHLAUSLESUNG, VERBINDUNGSPROBLEMEN, ETC.)
if (bezug && einspeisung && spannung1 && spannung2 && spannung3)
{
!SCHREIBEN IN SV NUR WENN SICH WERTE GEÄNDERT HABEN
if (sv_stromleistung.Value() <> stromleistung) {sv_stromleistung.State(stromleistung);}
if (sv_bezug.Value() <> bezug) {sv_bezug.State(bezug);}
if (sv_einspeisung.Value() <> einspeisung) {sv_einspeisung.State(einspeisung);}
if (sv_spannung1.Value() <> spannung1) {sv_spannung1.State(spannung1);}
if (sv_spannung2.Value() <> spannung2) {sv_spannung2.State(spannung2);}
if (sv_spannung3.Value() <> spannung3) {sv_spannung3.State(spannung3);}
if (sv_strom1.Value() <> strom1) {sv_strom1.State(strom1);}
if (sv_strom2.Value() <> strom2) {sv_strom2.State(strom2);}
if (sv_strom3.Value() <> strom3) {sv_strom3.State(strom3);}
if (sv_cosphi.Value() <> cosphi) {sv_cosphi.State(cosphi);}
}
}
else
{
sv_stromleistung.State(0);
sv_spannung1.State(0);
sv_spannung2.State(0);
sv_spannung3.State(0);
sv_strom1.State(0);
sv_strom2.State(0);
sv_strom3.State(0);
sv_cosphi.State(0);
}
Viel Spaß damit - bei Fragen einfach melden
[Update 02.02.2023: Saghon] Beitrag wie gewünscht nach Homematic verschoben