Gebe ich im Browser das ein http://192.168.178.11/rpc/shelly.GetStatus, kommt als Rückmeldung das raus
Code: Alles auswählen
ble {}
cloud
connected true
input:0
id 0
state false
mqtt
connected false
switch:0
id 0
source "SHC"
output true
apower 2.1
voltage 241.1
current 0.019
aenergy
total 743.39
by_minute
0 2.528
1 31.597
2 31.175
minute_ts 1709988784
temperature
tC 53.1
tF 127.6
sys
mac "80646FXXXXX"
restart_required false
time "13:53"
unixtime 1709988785
uptime 6944574
ram_size 244552
ram_free 139536
fs_size 458752
fs_free 151552
cfg_rev 18
kvs_rev 0
schedule_rev 0
webhook_rev 6
available_updates
stable
version "1.2.2"
wifi
sta_ip "192.168.178.11"
status "got ip"
ssid "XXXXXXXXX"
rssi -60
ws
connected false
Code: Alles auswählen
! Skript zur Leistungs- und Energieaktualisierung Shelly Plus PM mit Originalfirmware (by SeRef vom 06.03.2024)
! Angepasst von Gen1 auf Gen2
! basiert auf:
! Skript zur Gesamt-Verbrauchsaktualisierung Shelly1PM mit Originalfirmware ©2019 by 66er V1.2.1)
! https://www.shelly-support.eu/forum/thread/649-shelly-pm-leistungsmessung-in-homematic-einbinden-mit-der-originalfirmware/?postID=13125#post13125
! Bohrbrunnen (nur zur Orientierung, ggf anpassen)
! **** Abfrage des Shelly Plus PM *****
! In der folgenden Zeile IP des Shelly anpassen!
var vUrl = "http://192.168.178.11/rpc/shelly.GetStatus";
! In den folgenden Zeilen die CUxD-Exec-Kanal anpassen (hier: 2801001:8)
dom.GetObject("CUxD.CUX2801001:13.CMD_SETS").State("wget -q -O - '" # vUrl # "'");
dom.GetObject("CUxD.CUX2801001:13.CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject("CUxD.CUX2801001:8.CMD_RETS").State();
dom.GetObject("CUxD.CUX2801001:13.CMD_SETS").State("");
! WriteLine(Antwort);
! **** Auswertung Leistung des Antwortstrings ****
! Hier NICHTS ändern
string s;
string p = "-1";
foreach (s, Antwort.Split (",")) {
if (s.Contains ('"apower"')) {
p = (s.StrValueByIndex (":",1));
p = p.ToFloat();
! WriteLine(p);
}
}
string t;
string v = "-1";
foreach (t, Antwort.Split (",")) {
if (t.Contains ('"voltage"')) {
v = (t.StrValueByIndex (":",2));
v = v.ToFloat();
! WriteLine(p);
}
}
string u;
string a = "-1";
foreach (u, Antwort.Split (",")) {
if (u.Contains ('"curent"')) {
a = (u.StrValueByIndex (":",3));
a = a.ToFloat();
! WriteLine(p);
}
}
! **** Auswertung Energie des Antwortstrings ****
! Hier NICHTS ändern
string e = "-1";
foreach (s, Antwort.Split (",")) {
if (s.Contains ('"total"')) {
e = (s.StrValueByIndex (":",4));
! WriteLine(e);
! ***** Umrechnung Wh in kWh ****
e = e.ToFloat();
e = e / 1000;
! WriteLine(e);
}
}
! **** Variablen setzen ****
! Leistung
if (rep > -1.0) {
! Variablennamen anpassen (hier: Leistung_Brunnen)
dom.GetObject("Leistung_Brunnen").State(p);
}
! Energie
if (e > -1.0) {
! Variablennamen anpassen (hier: Gesamtverbrauch_Brunnen)
dom.GetObject("Gesamtverbrauch_Brunnen").State(e);
}
! Strom
if (a > -1.0) {
! Variablennamen anpassen (hier: Strom_Brunnen)
dom.GetObject("Strom_Brunnen").State(a);
}
! Spannung
if (v > -1.0) {
! Variablennamen anpassen (hier: Strom_Brunnen)
dom.GetObject("Spannung_Brunnen").State(u);
}
! Ende Skript
Könnte mir bitte jemand von den "Experten" helfen und vielleicht auch sagen was ich falsch gemacht habe? Verstehe leider (noch) nicht richtig die Zusammenhänge. Vielen Dank