Skript Zählerstände

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Manuel.P
Beiträge: 296
Registriert: 13.12.2015, 14:04
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Skript Zählerstände

Beitrag von Manuel.P » 26.07.2022, 11:58

habe es....

Fehler wurden keine Angezeigt....

hatte einen Schreibfehler...

Geht jetzt...

Nein ich habe deinen Radschlag noch nicht umgesetzt, werde es aber jetzt machen... Ich Mache gerne eins nach dem anderen bevor ich 5 Fehler eingebaut habe.... wenn es läuft, dann gehe ich in die Verbesserung... Also jetzt

Code: Alles auswählen

! Einspeisung einen Tag weiter schreiben
!
var tag6 = dom.GetObject("Einspeisung_vor_6_Tagen").Value();
dom.GetObject("Einspeisung_vor_7_Tagen").State(tag6);

var tag5 = dom.GetObject("Einspeisung_vor_5_Tagen").Value();
dom.GetObject("Einspeisung_vor_6_Tagen").State(tag5);

var tag4 = dom.GetObject("Einspeisung_vor_4_Tagen").Value();
dom.GetObject("Einspeisung_vor_5_Tagen").State(tag4);

var tag3 = dom.GetObject("Einspeisung_vor_3_Tagen").Value();
dom.GetObject("Einspeisung_vor_4_Tagen").State(tag3);

var tag2 = dom.GetObject("Einspeisung_vor_2_Tagen").Value();
dom.GetObject("Einspeisung_vor_3_Tagen").State(tag2);

var tag1 = dom.GetObject("Einspeisung_vor_1_Tagen").Value();
dom.GetObject("Einspeisung_vor_2_Tagen").State(tag1);

!Zählerstand von heute auf gestern schreiben

var zahler0 = dom.GetObject("Einspeisung_Zahlerstand_heute").Value();
dom.GetObject("Einspeisung_Zahlerstand_ gestern").State(zahler0);

var zahler1 = dom.GetObject("Einspeisung_Zahlerstand_ gestern").Value();

! Verbrauch errechnen 
!
var zahler0 = (dom.GetObject(ID_DATAPOINTS)).Get("HmIP-RF.0001DD89A46680:6.ENERGY_COUNTER").Value();
WriteLine(zahler0);
dom.GetObject("Einspeisung_Zahlerstand_heute").State(zahler0);


var tag0 = zahler0 - zahler1;
dom.GetObject("Einspeisung_vor_1_Tagen").State(tag0);

Manuel.P
Beiträge: 296
Registriert: 13.12.2015, 14:04
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Skript Zählerstände

Beitrag von Manuel.P » 26.07.2022, 12:42

Also ich habe deine Anmerkung jetzt auch umgesetzt.
klappt auch soweit...

ich lasse mir jetzt unten den Wert von Wh in kWh noch umrechnen, jedoch werden nur zwei Stellen hinter dem Komma angezeigt, wie kann ich das ändern, dass ich auch 4-5 Nachkommastellen sehe?

Code: Alles auswählen

! Einspeisung einen Tag weiter schreiben
!
var tag6 = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_6_Tagen").Value();
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_7_Tagen").State(tag6);

var tag5 = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_5_Tagen").Value();
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_6_Tagen").State(tag5);

var tag4 = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_4_Tagen").Value();
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_5_Tagen").State(tag4);

var tag3 = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_3_Tagen").Value();
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_4_Tagen").State(tag3);

var tag2 = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_2_Tagen").Value();
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_3_Tagen").State(tag2);

var tag1 = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_1_Tagen").Value();
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_2_Tagen").State(tag1);

!Zählerstand von heute auf gestern schreiben

var zahler0 = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_Zahlerstand_heute").Value();
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_Zahlerstand_ gestern").State(zahler0);

var zahler1 = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_Zahlerstand_ gestern").Value();

! Verbrauch errechnen 
!
var zahler0 = (dom.GetObject(ID_DATAPOINTS)).Get("HmIP-RF.0001DD89A46680:6.ENERGY_COUNTER").Value();
WriteLine(zahler0);
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_Zahlerstand_heute").State(zahler0);


var tag0 = zahler0 - zahler1;
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Einspeisung_vor_1_Tagen").State(tag0/1000);

MichaelN
Beiträge: 9656
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Skript Zählerstände

Beitrag von MichaelN » 26.07.2022, 12:49

Musst Du in Neo entsprechend angeben

Aber als Messtechniker der Hinweis - wenn ich 4-5 Nachkommastellen brauche, dann rechne ich nicht in k
Lass Dir nur das anzeigen, was relevant ist. Ist die 5. Nachkommastellen noch relevant?
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 +++

Manuel.P
Beiträge: 296
Registriert: 13.12.2015, 14:04
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Skript Zählerstände

Beitrag von Manuel.P » 26.07.2022, 13:00

DIe Systemvariable wird schon nur mit 2 Nachkommastellen angezeigt, dann bringt es doch in neo auch nichts oder?

MichaelN
Beiträge: 9656
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Skript Zählerstände

Beitrag von MichaelN » 26.07.2022, 13:02

Kommt drauf an, wie die SV definiert ist.
Lass Dich mal überraschen, was ein WriteLine ausgibt
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: 544
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 123 Mal

Re: Skript Zählerstände

Beitrag von Tyfys » 26.07.2022, 15:52

Manuel.P hat geschrieben:
26.07.2022, 13:00
DIe Systemvariable wird schon nur mit 2 Nachkommastellen angezeigt
in der WebUi - Ansicht : Startseite > Status und Bedienung > Systemvariable

Die Variable selbst enthält aber alle Nachkommastellen, die reingeschrieben wurden.
Kannst du wie Michael schrieb selbst überprüfen.

ich hätte noch einen Vorschlag für das Um-Shiften der Variablen:

Code: Alles auswählen

string VarName_von;
string VarName_nach;
string index;
integer ix;
foreach(index, system.GenerateEnum(0, 6)) {
    ix = 6 + 0 - (index.ToInteger());
    VarName_von = "Einspeisung_vor_" # ix # "_Tagen";
    VarName_nach = "Einspeisung_vor_" # (ix+1) # "_Tagen";
    WriteLine(VarName_von);
    WriteLine(VarName_nach);
    dom.GetObject(ID_SYSTEM_VARIABLES).Get(VarName_nach).State((dom.GetObject(ID_SYSTEM_VARIABLES).Get(VarName_von).Value()));
}
Gruß
Harry

Antworten

Zurück zu „HomeMatic allgemein“