Leistungsmesser mit Systemvariable, Skript

Kabellose und kabelgebundene Sender und Empfänger der klassischen Homematic-Serie

Moderator: Co-Administratoren

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Leistungsmesser mit Systemvarible, Skript

Beitrag von alchy » 29.05.2016, 19:22

Jetzt, da du weißt was Klickibunti ist, kannst du ja zur Seite eins zurück. :D
Wenn du dort was nicht verstehst musst du halt nachfragen.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

bibo09
Beiträge: 165
Registriert: 30.03.2015, 17:34

Re: Leistungsmesser mit Systemvarible, Skript

Beitrag von bibo09 » 27.01.2018, 05:32

Guten Morgen,

wie müsste dieses Skript angepasst werden, damit bei Zählerstand gestern und Zaehlerstand.letzter.Monat
das ganze auch in € errechnet wird?

Code: Alles auswählen

! akt. Zählerstand
real energy = dom.GetObject("BidCos-RF.LEQ0xxxxxx:2.ENERGY_COUNTER").Value();
! Zählerstand vorgestern einlesen
string last = dom.GetObject("Zaehlerstand.gestern").Value();
last = last.StrValueByIndex(" ",0);
! Verbrauch gestern
real verbrauch = energy - last.ToFloat();
dom.GetObject("Verbrauch.gestern").State(verbrauch.ToString(0)#" Wh");
! Zählerstand gestern speichern
dom.GetObject("Zaehlerstand.gestern").State(energy.ToString(0)#" Wh");

! Monatsverbrauch
integer tag = system.Date("%d").ToInteger();
if (tag == 1)
{ last = dom.GetObject("Zaehlerstand.letzter.Monat").Value();
  last = last.StrValueByIndex(" ",0);
  verbrauch = energy - last.ToFloat();
  dom.GetObject("Verbrauch.letzter.Monat").State(verbrauch.ToString(0)#" Wh");
  dom.GetObject("Zaehlerstand.letzter.Monat").State(energy.ToString(0)#" Wh");
}
Danke und Gruß
bibo
Dateianhänge
HM.PNG
Wie hier auf dem Bild
HM.PNG (1.16 KiB) 2163 mal betrachtet

Suenzihome
Beiträge: 96
Registriert: 09.06.2017, 00:19

Re: Leistungsmesser mit Systemvarible, Skript

Beitrag von Suenzihome » 20.08.2019, 19:20

paul53 hat geschrieben:
29.10.2014, 12:17
Wenn der Tagesverbrauch interessiert, muss man den Zählerstand zu einer bestimmten Zeit speichern und vom aktuellen Zählerstand abziehen.
HM Script, ausgelöst täglich um 00:01 Uhr:

Code: Alles auswählen

! akt. Zählerstand
real energy = dom.GetObject("BidCos-RF.LEQ0xxxxxx:2.ENERGY_COUNTER").Value();
! Zählerstand vorgestern einlesen
string last = dom.GetObject("Zaehlerstand.gestern").Value();
last = last.StrValueByIndex(" ",0);
! Verbrauch gestern
real verbrauch = energy - last.ToFloat();
dom.GetObject("Verbrauch.gestern").State(verbrauch.ToString(0)#" Wh");
! Zählerstand gestern speichern
dom.GetObject("Zaehlerstand.gestern").State(energy.ToString(0)#" Wh");

! Monatsverbrauch
integer tag = system.Date("%d").ToInteger();
if (tag == 1)
{ last = dom.GetObject("Zaehlerstand.letzter.Monat").Value();
  last = last.StrValueByIndex(" ",0);
  verbrauch = energy - last.ToFloat();
  dom.GetObject("Verbrauch.letzter.Monat").State(verbrauch.ToString(0)#" Wh");
  dom.GetObject("Zaehlerstand.letzter.Monat").State(energy.ToString(0)#" Wh");
}
Eine Frage habe ich hierzu wieviele Variablen muss ich denn hier anlegen. ich blicke danicht so genau durch.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Leistungsmesser mit Systemvarible, Skript

Beitrag von alchy » 20.08.2019, 19:57

Suenzihome hat geschrieben:
20.08.2019, 19:20
wieviele Variablen muss ich denn hier anlegen
für das gepostete Script brauchst du 4 Systemvariablen wenn ich mich nicht verzählt habe.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Suenzihome
Beiträge: 96
Registriert: 09.06.2017, 00:19

Re: Leistungsmesser mit Systemvarible, Skript

Beitrag von Suenzihome » 20.08.2019, 20:57

Ok vielen Dank und diese Variablen sind alle ohne Kanalzuordnung Oder?
Zuletzt geändert von alchy am 20.08.2019, 21:27, insgesamt 1-mal geändert.
Grund: sinnloses Fullquote entfernt

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Leistungsmesser mit Systemvarible, Skript

Beitrag von alchy » 20.08.2019, 21:12

Eine mögliche Kanalzuordnung der Systemvariablen spielt für das Script keine Rolle.
Ich würde sie verknüpfen um sie dann auch entsprechend bei Status und Bedienung an der richtigen Stelle zu sehen.
Allerdings ist das wie alles Geschmackssache und ich benutze eine solche Auswertung gar nicht.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Suenzihome
Beiträge: 96
Registriert: 09.06.2017, 00:19

Re: Leistungsmesser mit Systemvarible, Skript

Beitrag von Suenzihome » 22.08.2019, 12:12

Vielen Dank.
Habe die variablen mit dem Kanal2 verknüpft.
Und auch das Script im Programm eingefügt jedoch erhalte ich keine werte habe es jetzt schon zwei Tage laufen lassen habe ich irgednwas falsch gemacht?
Wäre nett wenn sich das jemand mal anschauen könnte
Dateianhänge
Screenshot_20190822-010509_Chrome.jpg
Screenshot_20190822-010346_Chrome.jpg
Zuletzt geändert von alchy am 22.08.2019, 22:29, insgesamt 1-mal geändert.
Grund: sinnloses Fullquote entfernt

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Leistungsmesser mit Systemvarible, Skript

Beitrag von alchy » 22.08.2019, 22:06

Nun, da deine Variablen z.B.: Server.Zaehlerstand.gestern heißen und du im Script den Namen: Zaehlerstand.gestern verwendest,
knallt dir das Script im besten Fall nur das >> Fehlerprotokoll << zu.
Du findest den Fehler nun bestimmt selber, oder?
Beseitige diesen und poste das >> Fehlerprotokoll <<
zur Ausführungszeit des Programms.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Suenzihome
Beiträge: 96
Registriert: 09.06.2017, 00:19

Re: Leistungsmesser mit Systemvarible, Skript

Beitrag von Suenzihome » 23.08.2019, 22:27

Ja ok werde ich machen. Das Script hatte ich zu dem Zeitpunkt angepasst.

Code: Alles auswählen

! akt. Zählerstand
real energy = dom.GetObject("BidCos-RF.OEQ0631125:2.ENERGY_COUNTER").Value();
! Zählerstand vorgestern einlesen
string last = dom.GetObject("Server.Zaehlerstand.gestern").Value();
last = last.StrValueByIndex(" ",0);
! Verbrauch gestern
real verbrauch = energy - last.ToFloat();
dom.GetObject("Server.Verbrauch.gestern").State(verbrauch.ToString(0)#" Wh");
! Zählerstand gestern speichern
dom.GetObject("Server.Zaehlerstand.gestern").State(energy.ToString(0)#" Wh");

! Monatsverbrauch
integer tag = system.Date("%d").ToInteger();
if (tag == 1)
{ last = dom.GetObject("Server.Zaehlerstand.letzter.Monat").Value();
  last = last.StrValueByIndex(" ",0);
  verbrauch = energy - last.ToFloat();
  dom.GetObject("Server.Verbrauch.letzter.Monat").State(verbrauch.ToString(0)#" Wh");
  dom.GetObject("Server.Zaehlerstand.letzter.Monat").State(energy.ToString(0)#" Wh");
}

Übrigens stand dies im Log:

Code: Alles auswählen

Homematic-Raspberrymatic local0.err ReGaHss: ERROR: ScriptRuntimeError: ! akt. Zählerstand real energy = dom.GetObject("BidCos-RF.OEQ0631125:2.ENERGY_COUNTER").Value(); ! Zählerstand vorgestern einlesen string last = dom.GetObject("Server.Zaehlerstand.gestern").Value(); last = last.StrValueByIndex(" ",0); ! Verbrauch gestern real verbrauch = energy - last.ToFloat(); dom.GetObject("Server.Verbrauch.gestern").State(verbrauch.ToString(0)#" Wh"); ! Zählerstand gestern speichern dom.GetObject("
erver.Zaehlerstand.gestern").State(energy.ToString(0)#" Wh");  ! Monatsverbrauch integer tag = system.Date("%d").ToInteger(); if (tag == 1) { last = dom.GetObject("Server.Zaehlerstand.letzter.Monat").Value();   last = last.StrValueByIndex(" ",0);   verbrauch = energy - last.ToFloat();   dom.GetObject("Server.Verbrauch.letzter.Monat").State(verbrauch.ToString(0)#" Wh");   dom.GetObject("Server.Zaehlerstand.letzter.Monat").State(energy.ToString(0)#" Wh"); } [ExecError():iseESPexec.cpp:12761]
Ich hoffe es hilft weiter Danke
Zuletzt geändert von alchy am 23.08.2019, 22:38, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Leistungsmesser mit Systemvarible, Skript

Beitrag von alchy » 23.08.2019, 22:52

Suenzihome hat geschrieben:
23.08.2019, 22:27
Das Script hatte ich zu dem Zeitpunkt angepasst.
Tja, und das sollten die Helfer / ich dann wohl hier erraten?
Wie schwer kann es denn sein seinen Soll / Ist zustand so zu dokumentieren, das der Gegenüber auch was damit anfangen kann?


Alchy
Ich verliere immer wieder mehr die Lust hier überhaupt helfen zu wollen.

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren (klassisch)“