Hallo HomematicFreunde.
Ich darf Euch heute ein kleines Skript vorstellen, welches aus diesem Beitrag zur 3EM Kopplung von SparkyMaster und dem Beitrag bzw. der Frage von shellifeuer entstanden ist.
Saldieren der Werte des Shelly3EM
Das Skript ist neutral gehalten. D.h. egal welche Werte der 3 Phasen Ihr saldieren wollt, dieses Skript erledigt das für Euch.
Was müßt Ihr tun?
Für die Werte der Phasen 1 bis 3 sind ja schon Systemvariablen vorhanden. Zusätzlich legt Ihr eine Systemvariable vom Typ Zahl an für das Ergebnis der Saldierung.
Das sieht dann so aus:
(Name der SV kann natürlich frei vergeben werden)
In Eurem Aktualisierungsprogramm für den Shelly3EM legt Ihr eine weitere DANN-Zeile mit dem folgenden Skript an und passt die Namen der Systemvariablen im SETUP an.(4 Namen)
! Skript V1.0.1 Saldieren der Werte von 3 Phasen Shelly3EM mit Originalfirmware (c)2022 by 66er (alias Stefan K.)
! Publiziert und Updates auf https://smarthome-forum.eu/forum/index.php?board/145-homematic/
! entwickelt und getestet auf Homematic-Firmware 2.61.7
! Versionsdatum: 02.04.2024
! Die Nutzung des Skriptes erfolgt auf eigenes Risiko.
! Aus der Nutzung entsteht kein Rechtsanspruch auf Suppport oder Fehlerbeseitigung durch den Autor.
! Der Autor haftet nicht für eventuelle Folgen der Nutzung auf der Homematic-Zentrale des Nutzers.
! Das Skript ist ausführlich getestet und sollte problemlos funktionieren.
! SETUP
! Systemvariablen
! ( keine "" löschen! )
var svl1 = "SV-L1" ; ! Name der Systemvariablen für L1 anpassen
var svl2 = "SV-L2" ; ! Name der Systemvariablen für L2 anpassen
var svl3 = "SV-L3" ; ! Name der Systemvariablen für L3 anpassen
var svlges = "SV-gesamt" ; ! Name der Systemvariablen für den Summenwert anpassen
! ENDE SETUP, ab hier nicht mehr ändern
var wl1 = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svl1).Value();
WriteLine(wl1);
var wl2 = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svl2).Value();
WriteLine(wl2);
var wl3 = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svl3).Value();
WriteLine(wl3);
var wlg = wl1 + wl2 + wl3;
WriteLine(wlg);
dom.GetObject(svlges).State(wlg);
WriteLine("Skript beendet");
Alles anzeigen
Mit jeder Aktualisierung wird nun auch die Variable für den Gesamtwert aktualisiert. Wie im Beispiel zu sehen, funktioniert das auch mit Negativwerten (Einspeisung).
Viel Spass damit.