HM-Script zum Auslesen eines Varta Pulse Energiespeichers per xml

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

chriwi
Beiträge: 77
Registriert: 20.12.2019, 16:42
Hat sich bedankt: 15 Mal
Danksagung erhalten: 1 Mal

Re: HM-Script zum Auslesen eines Varta Pulse Energiespeichers per xml

Beitrag von chriwi » 19.01.2023, 18:40

Sofern hier jemand drüber stolpert. Es gibt eine inoffizielle JSON Schnittstelle meines Solarlogs, worüber ich meine drei benötigten Werte auslesen kann:

Code: Alles auswählen

!858: voltage, level, charge & discharge power of battery. Empty if no battery is connected.
var JSONObj = "\"Content-Type: application/json\" -d '{\"858\":null}' 192.168.xx.xx/getjp";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -X POST -H +" # JSONObj);
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string response = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
var value_varta_level = (response.StrValueByIndex(',',1)).StrValueByIndex(',').ToInteger();
var value_varta_charge = (response.StrValueByIndex(',',2)).StrValueByIndex(',').ToInteger();
var value_varta_discharge = (response.StrValueByIndex(',',3)).StrValueByIndex(',').ToInteger();
dom.GetObject("Varta_SOC").State(value_varta_level);
dom.GetObject("Varta_Charge").State(value_varta_charge);
dom.GetObject("Varta_Discharge").State(value_varta_discharge);
Raspberry Pi 4 auf Bookworm mit Homebridge und HomeMatic 3.75.7 (piVCCU3, RPI-RF-MOD)
Homematic-HAP
HmIP-PSM, HmIP-PS, HmIP-PS-2 x2, HmIP-BSM x3, HmIP-BROLL x17, HmIP-WTH2, HmIP-STH, HmIP-SWDO, HmIP-SWSD x3, HmIP-WRC6, HmIP-SWDM-2 x2, HmIP-SCTH230
Garagentor (HMIP-SWDO, HM-LC-Sw1-Pl-CT-R1)
Solar-log Base 15, FW 6.0.2
Nuki 3 Pro
IKEA Tradfi (Licht, ShortButton -> Garagentor)
HM-pdetect mit Fritzbox-Config (Anwesenheit)

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: HM-Script zum Auslesen eines Varta Pulse Energiespeichers per xml

Beitrag von Tyfys » 09.02.2023, 21:42

chriwi hat geschrieben:
19.01.2023, 18:40

Code: Alles auswählen

var value_varta_level = (response.StrValueByIndex(',',1)).StrValueByIndex(',').ToInteger();
var value_varta_charge = (response.StrValueByIndex(',',2)).StrValueByIndex(',').ToInteger();
var value_varta_discharge = (response.StrValueByIndex(',',3)).StrValueByIndex(',').ToInteger();
Mir scheinen diese 3 Statements nicht ganz richtig zu sein.
Die Methode StrValueByIndex() erfordert lt. Doku 2 Parameter. [ string.StrValueByIndex(string separator, integer index);]
Das ist in diesen Teilen der Statements nicht gegeben : (response.StrValueByIndex(',', n )).StrValueByIndex(',').ToInteger();

auf der CCU2 mit aktueller Firmwareversion (2.61.7) läuft es jedenfalls nicht.
Gruß
Harry

chriwi
Beiträge: 77
Registriert: 20.12.2019, 16:42
Hat sich bedankt: 15 Mal
Danksagung erhalten: 1 Mal

Re: HM-Script zum Auslesen eines Varta Pulse Energiespeichers per xml

Beitrag von chriwi » 21.02.2023, 22:47

Interessant- bei mir läuft es mit der 3.67
ECEFD1FC-9AE2-4AD8-AE1B-EDA51C9D12A2.jpeg
Raspberry Pi 4 auf Bookworm mit Homebridge und HomeMatic 3.75.7 (piVCCU3, RPI-RF-MOD)
Homematic-HAP
HmIP-PSM, HmIP-PS, HmIP-PS-2 x2, HmIP-BSM x3, HmIP-BROLL x17, HmIP-WTH2, HmIP-STH, HmIP-SWDO, HmIP-SWSD x3, HmIP-WRC6, HmIP-SWDM-2 x2, HmIP-SCTH230
Garagentor (HMIP-SWDO, HM-LC-Sw1-Pl-CT-R1)
Solar-log Base 15, FW 6.0.2
Nuki 3 Pro
IKEA Tradfi (Licht, ShortButton -> Garagentor)
HM-pdetect mit Fritzbox-Config (Anwesenheit)

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: HM-Script zum Auslesen eines Varta Pulse Energiespeichers per xml

Beitrag von MichaelN » 23.02.2023, 20:27

chriwi hat geschrieben:
21.02.2023, 22:47
Interessant- bei mir läuft es mit der 3.67
Faszinierend.
Dröseln wir das mal auf:

Code: Alles auswählen

string response = "1test,2test,3test,4test,5test,6test,7test,8test";
var a =  (response.StrValueByIndex(',',2));
var b =  (response.StrValueByIndex(',',2)).StrValueByIndex(',',0);
!var c = (response.StrValueByIndex(',',2)).StrValueByIndex(',');
var d =  (response.StrValueByIndex(',',2)).StrValueByIndex(',').ToInteger(); 
Ergibt:

Code: Alles auswählen

[response          ](string ): 1test,2test,3test,4test,5test,6test,7test,8test
[a                 ](var-->string): 3test
[b                 ](var-->string): 3test
[c                 ]ScriptRuntimeError
[d                 ](var-->integer): 3
Wie korrekt bemerkt ist

Code: Alles auswählen

(response.StrValueByIndex(',',2)).StrValueByIndex(',')
kein valider Code, weil die Angabe für den Index fehlt.
Das führt dann bei der Zuweisung zu var c auch zu einem Error.

Interessanterweise wird dies aber durch

Code: Alles auswählen

.ToInteger()
"geheilt". Irgendwie wird dadurch der Wert 0 als Index übergeben und trotzdem (auch) noch die Umwandlung in Integer vorgenommen.
HM-Skript ist schon eine geile Sprache.

Aber @chriwi - was soll das doppelt StrValueByIndex bringen, was nicht auch ein syntaktisch korrektes

Code: Alles auswählen

response.StrValueByIndex(',',2).ToInteger();
bewirkt?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: HM-Script zum Auslesen eines Varta Pulse Energiespeichers per xml

Beitrag von Tyfys » 23.02.2023, 21:16

MichaelN hat geschrieben:
23.02.2023, 20:27
Interessanterweise wird dies aber durch

Code: Alles auswählen

.ToInteger()
"geheilt". Irgendwie wird dadurch der Wert 0 als Index übergeben und trotzdem (auch) noch die Umwandlung in Integer vorgenommen.
Auf (m)einer CCU2 klappt diese Wunderheilung nicht. :lol:
HC.png
HC.png (11.73 KiB) 341 mal betrachtet
Die passende Fehlermeldung aus dem LOG:

Code: Alles auswählen

Feb 23 20:56:58 ccu2 local0.err ReGaHss: ERROR: ScriptRuntimeError: string response = "1test,2test,3test,4test,5test,6test,7test,8test"; var a =  (response.StrValueByIndex(',',2)); WriteLine(a); var b =  (response.StrValueByIndex(',',2)).StrValueByIndex(',',0); WriteLine(b); !var c = (response.StrValueByIndex(',',2)).StrValueByIndex(','); var d =  (response.StrValueByIndex(',',2)).StrValueByIndex(',').ToInteger();  WriteLine(d); WriteLine("Testende");  [ExecError():iseESPexec.cpp:12798]
MichaelN hat geschrieben:
23.02.2023, 20:27
HM-Skript ist schon eine geile Sprache.
HM-Skript ist schon eine geile eigenartige Sprache.
Gruß
Harry

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: HM-Script zum Auslesen eines Varta Pulse Energiespeichers per xml

Beitrag von MichaelN » 23.02.2023, 21:19

Möglich das es daran liegt, das die CCU2 auf einem älteren FW Stand (als die CCU3) ist.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: HM-Script zum Auslesen eines Varta Pulse Energiespeichers per xml

Beitrag von Tyfys » 23.02.2023, 21:31

Deine Aufdröselung hast du ja mit dem SDV gemacht.
Hast du das auch mal direkt auf der CCU3 gegengecheckt?
Gruß
Harry

[sprotte80]
Beiträge: 336
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 25 Mal

Re: HM-Script zum Auslesen eines Varta Pulse Energiespeichers per xml

Beitrag von [sprotte80] » 23.02.2023, 22:03

Hi
MichaelN hat geschrieben:
23.02.2023, 20:27
Interessanterweise wird dies aber durch

Code: Alles auswählen

.ToInteger()
"geheilt". Irgendwie wird dadurch der Wert 0 als Index übergeben und trotzdem (auch) noch die Umwandlung in Integer vorgenommen.
geheilt wird da nix.

Wenn du

Code: Alles auswählen

var d =  (response.StrValueByIndex(',',2)).StrValueByIndex(',').ToString();
schreibst dann bekommste sogar das 'richtige' Ergebnis

Hat aber nix mit übergabe eines Parameters durch .ToInteger zu tun

Laut badenpower ist durch das rumgedoktere am doppelparameter-Bug nun diese Erscheinung entstanden wo ein Fehler im Script durch anhängen einer weiteren Function eliminiert wird und ab der fehlerfreien weitergemacht wird.
Und .StrValueByIndex bietet noch weitere Bugs.

Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

jp112sdl
Beiträge: 12115
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: HM-Script zum Auslesen eines Varta Pulse Energiespeichers per xml

Beitrag von jp112sdl » 24.02.2023, 06:20

[sprotte80] hat geschrieben:
23.02.2023, 22:03
Laut badenpower
Hat er in dir ein Sprachrohr gefunden? Wie schön.
[sprotte80] hat geschrieben:
23.02.2023, 22:03
Und .StrValueByIndex bietet noch weitere Bugs.
Gelernt hast du ja schon von ihm. :roll: :mrgreen:

Dann erwähne sie doch gleich, damit andere Leute nicht darüber stolpern.

Schade, dass du nicht mal deiner eigenen Signatur treu bleibst
sig.png
sig.png (784 Bytes) 300 mal betrachtet

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: HM-Script zum Auslesen eines Varta Pulse Energiespeichers per xml

Beitrag von MichaelN » 24.02.2023, 18:00

Tyfys hat geschrieben:
23.02.2023, 21:31
Hast du das auch mal direkt auf der CCU3 gegengecheckt?
Ja
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“