Stromzähler mit HomeMatic auswerten

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: Stromzähler mit HomeMatic auswerten

Beitrag von Black » 17.03.2019, 21:31

Du hast das aus irgendeiner Webseite kopiert.

Zeile 17

< ist ne HTML Codierung und hat nix in dem Script verloren

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Stromzähler mit HomeMatic auswerten

Beitrag von JPS » 23.03.2019, 01:20

Black hat geschrieben:
17.03.2019, 21:31
< ist ne HTML Codierung und hat nix in dem Script verloren
Stimmt, das war ein Fehler in meinem Tutorial, der offensichtlich durch die Umstellung auf WP-Gutenberg da "reingerutscht" ist, ist mittlerweile korrigiert.
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

sickboy2711
Beiträge: 250
Registriert: 12.11.2011, 16:58
System: CCU
Wohnort: Schweiz
Hat sich bedankt: 25 Mal
Danksagung erhalten: 6 Mal

Re: Stromzähler mit HomeMatic auswerten

Beitrag von sickboy2711 » 27.12.2020, 17:58

Hallo zusammen
Habe heute noch mal einigi skripte up to date gebracht. Unter anderem auch das vom Stromzähler gleichzeitig habe ich nach der Anleitung noch die Anzeige der jeweiligen Stromkosten implementiert.

nur leider werden diese Werte nicht aktualisiert.

So sieht mein Skript aus:

Code: Alles auswählen

object oP = dom.GetObject("BidCos-RF.MEQ00xxxxx:x.POWER");
object oE = dom.GetObject("BidCos-RF.MEQ00xxxxx:x.ENERGY_COUNTER");
var aC = dom.GetObject("Strom ENERGY_COUNTER");
var zR = dom.GetObject("Strom Referenz Zaehlerstand");
var zA = dom.GetObject("Strom Zaehlerstand");
var aA = dom.GetObject("Strom Leistungsaufnahme aktuell");
var vLz = dom.GetObject("Strom Referenz Verbrauch seit letzter Ablesung");
var vLg = dom.GetObject("Strom Verbrauch seit letzter Ablesung");
var vTz = dom.GetObject("Strom Referenz Verbrauch heute");
var vTg = dom.GetObject("Strom Verbrauch heute");
var vWz = dom.GetObject("Strom Referenz Verbrauch laufende Woche");
var vWg = dom.GetObject("Strom Verbrauch laufende Woche");
var vMz = dom.GetObject("Strom Referenz Verbrauch laufender Monat");
var vMg = dom.GetObject("Strom Verbrauch laufender Monat");
var vJz = dom.GetObject("Strom Referenz Verbrauch laufendes Kalenderjahr");
var vJg = dom.GetObject("Strom Verbrauch laufendes Kalenderjahr");
var vTk = dom.GetObject("Strom Kosten heute");
var vWk = dom.GetObject("Strom Kosten laufende Woche");
var vMk = dom.GetObject("Strom Kosten laufender Monat");
var vJk = dom.GetObject("Strom Kosten laufendes Kalenderjahr");
var vPk = dom.GetObject("Strompreis");
    if ((oE.State() + 0.001) < aC.State()) {
    zR.State(zR.State() + 838.8607);
    }
aC.State(oE.State());
zA.State((zR.State() + (oE.State()/1000)).Round(2));
aA.State(oP.State());
vLg.State((zA.State() - vLz.State()).Round(2));
vTg.State((zA.State() - vTz.State()).Round(2));
vWg.State((zA.State() - vWz.State()).Round(2));
vMg.State((zA.State() - vMz.State()).Round(2));
vJg.State((zA.State() - vJz.State()).Round(2));
vTk.State((vTg.State() * vPk.State()).Round(2));
vWk.State((vWg.State() * vPk.State()).Round(2));
vMk.State((vMg.State() * vPk.State()).Round(2));
vJk.State((vJg.State() * vPk.State()).Round(2));
Was ich speziell finde, wenn ich Bsp. die Zeile

Code: Alles auswählen

vTk.State((vTg.State() * vPk.State()).Round(2));
mittels auskommentiere, wird die Systemwariable "Strom Kosten laufende Woche" aktualisiert. Alle nachfolgenden jedoch immer noch nicht.

Stehe hier irgendwie auf dem Schlauch....

Wäre um einen kleinen Denkanstupser dankbar.

sickboy2711
Beiträge: 250
Registriert: 12.11.2011, 16:58
System: CCU
Wohnort: Schweiz
Hat sich bedankt: 25 Mal
Danksagung erhalten: 6 Mal

Re: Stromzähler mit HomeMatic auswerten

Beitrag von sickboy2711 » 27.12.2020, 18:43

sickboy2711 hat geschrieben:
27.12.2020, 17:58
Hallo zusammen
Habe heute noch mal einigi skripte up to date gebracht. Unter anderem auch das vom Stromzähler gleichzeitig habe ich nach der Anleitung noch die Anzeige der jeweiligen Stromkosten implementiert.

nur leider werden diese Werte nicht aktualisiert.

So sieht mein Skript aus:

Code: Alles auswählen

object oP = dom.GetObject("BidCos-RF.MEQ00xxxxx:x.POWER");
object oE = dom.GetObject("BidCos-RF.MEQ00xxxxx:x.ENERGY_COUNTER");
var aC = dom.GetObject("Strom ENERGY_COUNTER");
var zR = dom.GetObject("Strom Referenz Zaehlerstand");
var zA = dom.GetObject("Strom Zaehlerstand");
var aA = dom.GetObject("Strom Leistungsaufnahme aktuell");
var vLz = dom.GetObject("Strom Referenz Verbrauch seit letzter Ablesung");
var vLg = dom.GetObject("Strom Verbrauch seit letzter Ablesung");
var vTz = dom.GetObject("Strom Referenz Verbrauch heute");
var vTg = dom.GetObject("Strom Verbrauch heute");
var vWz = dom.GetObject("Strom Referenz Verbrauch laufende Woche");
var vWg = dom.GetObject("Strom Verbrauch laufende Woche");
var vMz = dom.GetObject("Strom Referenz Verbrauch laufender Monat");
var vMg = dom.GetObject("Strom Verbrauch laufender Monat");
var vJz = dom.GetObject("Strom Referenz Verbrauch laufendes Kalenderjahr");
var vJg = dom.GetObject("Strom Verbrauch laufendes Kalenderjahr");
var vTk = dom.GetObject("Strom Kosten heute");
var vWk = dom.GetObject("Strom Kosten laufende Woche");
var vMk = dom.GetObject("Strom Kosten laufender Monat");
var vJk = dom.GetObject("Strom Kosten laufendes Kalenderjahr");
var vPk = dom.GetObject("Strompreis");
    if ((oE.State() + 0.001) < aC.State()) {
    zR.State(zR.State() + 838.8607);
    }
aC.State(oE.State());
zA.State((zR.State() + (oE.State()/1000)).Round(2));
aA.State(oP.State());
vLg.State((zA.State() - vLz.State()).Round(2));
vTg.State((zA.State() - vTz.State()).Round(2));
vWg.State((zA.State() - vWz.State()).Round(2));
vMg.State((zA.State() - vMz.State()).Round(2));
vJg.State((zA.State() - vJz.State()).Round(2));
vTk.State((vTg.State() * vPk.State()).Round(2));
vWk.State((vWg.State() * vPk.State()).Round(2));
vMk.State((vMg.State() * vPk.State()).Round(2));
vJk.State((vJg.State() * vPk.State()).Round(2));
Was ich speziell finde, wenn ich Bsp. die Zeile

Code: Alles auswählen

vTk.State((vTg.State() * vPk.State()).Round(2));
mittels auskommentiere, wird die Systemwariable "Strom Kosten laufende Woche" aktualisiert. Alle nachfolgenden jedoch immer noch nicht.

Stehe hier irgendwie auf dem Schlauch....

Wäre um einen kleinen Denkanstupser dankbar.
Habe den Fehler nun selber gefunden.... Der Name der von Mirangelegten Systemvariable hat nicht mit jener im Script übereingestimmt....
Da wird noch etwas Restalc von den Feiertagen im Blut gewesen sein...


Eine Frage habe ich jedoch noch, eigene Zahlen in Systemvariablen können ja über Webmatic eingegeben werden, dort habe ich jedoch das Problem, dass ich nur ganze Zahlen eingeben kann, jedoch keine Nachkommastellen. die wird bei einer Angabe des Stromtarifs jedoch schwierig, da dieser in der Regel unter 1 CHF / kWh liegt. habe es mittels der App Pocket-Control gemacht, dies ist m.E. aber nicht wirklich gut, da nicht jeder User diese App (auch wenn ich es wirklich nahe legen kann) verwendet.

Gruss

Denni

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Stromzähler mit HomeMatic auswerten

Beitrag von JPS » 27.12.2020, 20:03

sickboy2711 hat geschrieben:
27.12.2020, 18:43
Eine Frage habe ich jedoch noch, eigene Zahlen in Systemvariablen können ja über Webmatic eingegeben werden, dort habe ich jedoch das Problem, dass ich nur ganze Zahlen eingeben kann, jedoch keine Nachkommastellen. die wird bei einer Angabe des Stromtarifs jedoch schwierig, da dieser in der Regel unter 1 CHF / kWh liegt. habe es mittels der App Pocket-Control gemacht, dies ist m.E. aber nicht wirklich gut, da nicht jeder User diese App (auch wenn ich es wirklich nahe legen kann) verwendet.

Gruss

Denni
Hallo Denni,
irgendwo meine ich mal gelesen zu haben, dass Webmatic die SysVar zwar als Ganzzahlen anzeigt, intern aber die Kommastellen übernimmt. Ich mache das inzwischen aber über die RedMatic WebApp.

Am einfachsten ist ein HomeMatic Programm, in dem man den Wert in die entsprechende SysVar schreibt, das hat jeder HomeMatic-Anwender.

Oder man nimmt ein Skript, um einzelne oder mehrere SysVar auf einmal zu setzen (das folgende Skript ist exemplarisch für den Wasserzähler)...

Code: Alles auswählen

var vTz = dom.GetObject("Wasser Referenz Verbrauch heute");
var vWz = dom.GetObject("Wasser Referenz Verbrauch laufende Woche");
var vMz = dom.GetObject("Wasser Referenz Verbrauch laufender Monat");
var vJz = dom.GetObject("Wasser Referenz Verbrauch laufendes Kalenderjahr");
var vLz = dom.GetObject("Wasser Referenz Verbrauch seit letzter Ablesung");
! vTz.State(123.128);
! vWz.State(122.066);
! vMz.State(118.400);
! vJz.State(100.000);
! vLz.State(115.000);
WriteLine("Referenz Systemvariablen wie folgt gespeichert:");
WriteLine("Tageszaehler:");
WriteLine(vTz.State());
WriteLine("Wochenzaehler:");
WriteLine(vWz.State());
WriteLine("Monatszaehler:");
WriteLine(vMz.State());
WriteLine("Jahreszaehler:");
WriteLine(vJz.State());
WriteLine("Ablesezaehler:");
WriteLine(vLz.State());
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Narrowmatiker
Beiträge: 68
Registriert: 17.01.2017, 22:00
Wohnort: Nordrhein-Westfalen
Hat sich bedankt: 6 Mal

Re: Stromzähler mit HomeMatic auswerten

Beitrag von Narrowmatiker » 05.05.2023, 00:47

Hallo JPS,

darf ich diesen Thread noch einmal hochholen? Habe Deine hervorragenden Skripte heute erfolgreich zum Laufen gebracht und bekomme auch per Pushover die jeweiligen Nachrichten.

Was noch ein wenig stört, ist, dass sowohl der Zählerstand als auch der jeweilige Verbrauch mit 6 Nachkommastellen in der Push-Nachricht angezeigt wird. Lässt sich das in dem Rücksetzungsskript, analog zu dem Auswerteskript, auch auf zwei Nachkommastellen reduzieren? Schön wäre auch eine Tagesangabe nach Datum, nicht Tag xxx von 365. Aber das Datum sehe ich natürlich auch in der Push-Nachricht.

Bester Dank für einen Tipp oder einen Hinweis auf einen passenden Thread, der das schon einmal behandelt hat.
Gruß,

der Narrowmatiker
__________________________________________________________________________________________________________________________________________
Die Lösung ist so nah - warum bin ich so weit weg?

rentier-s
Beiträge: 355
Registriert: 19.06.2017, 09:24
Hat sich bedankt: 20 Mal
Danksagung erhalten: 63 Mal

Re: Stromzähler mit HomeMatic auswerten

Beitrag von rentier-s » 05.05.2023, 10:59

Narrowmatiker hat geschrieben:
05.05.2023, 00:47
auf zwei Nachkommastellen reduzieren
Ich habe mir jetzt nicht den ganzen Thread bzw. die Skripte durchgeschaut, aber an der Stelle, an der die Pushover Nachricht zusammengebaut wird, sollte ichbineineZahl.ToString(2) helfen.

viewtopic.php?t=5553

Narrowmatiker
Beiträge: 68
Registriert: 17.01.2017, 22:00
Wohnort: Nordrhein-Westfalen
Hat sich bedankt: 6 Mal

Re: Stromzähler mit HomeMatic auswerten

Beitrag von Narrowmatiker » 05.05.2023, 11:40

Hallo rentier-s,

leider bin ich nicht so fit im Scripting - wo und wie genau müsste hier denn die Ergänzung "ToString(2)" hin? Es betrifft die beiden Variablen "zA" und "sTg" :

Code: Alles auswählen

string zA = dom.GetObject("Strom Zaehlerstand").Value();
string sTg = dom.GetObject("Strom Verbrauch heute").Value();
var vTg = dom.GetObject("Strom Verbrauch heute");
var vTz = dom.GetObject("Strom Referenz Verbrauch heute");
var zeitraum;
! Zwischenwert in Variable speichern
vTz.State(vTg.State() + vTz.State());
! Zeitwert um 1 subtrahieren
time t = system.Date("%j").ToInteger();
if (t == 1) {zeitraum = "Letzter Tag im Vorjahr";}
else {zeitraum = t - 1;}
! Push-Text zusammensetzen
string MailText;
string sDate = zeitraum.ToString();
MailText = "Achtung, der Stromverbrauch-Tageszaehler wird zurueckgesetzt. Verbrauchswerte am Tag " # sDate # " vor dem Reset: ";
MailText = MailText # "Zaehlerstand: " # zA # "kWh, Verbrauch heute: " # sTg # "kWh.  ";
string teilstr;
string sendmail = "";
! Mailtext erstellen (Woerter am Leerzeichen trennen)
foreach(teilstr, MailText.Split(" "))
{
sendmail = sendmail # "+" # teilstr;
}
! Eigentliche Mail absenden
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC")
Gruß,

der Narrowmatiker
__________________________________________________________________________________________________________________________________________
Die Lösung ist so nah - warum bin ich so weit weg?

rentier-s
Beiträge: 355
Registriert: 19.06.2017, 09:24
Hat sich bedankt: 20 Mal
Danksagung erhalten: 63 Mal

Re: Stromzähler mit HomeMatic auswerten

Beitrag von rentier-s » 05.05.2023, 12:34

Zum Beispiel so ;-)

Code: Alles auswählen

MailText = MailText # "Zaehlerstand: " # zA.ToString(2) # "kWh, Verbrauch heute: " # sTg.ToString(2) # "kWh.  ";

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Stromzähler mit HomeMatic auswerten

Beitrag von Xel66 » 05.05.2023, 13:16

Dann achte aber drauf, dass Du mit diesen Werten nicht mehr rechnest. Das kann Dir auf die Füße fallen, denn jetzt sind es eben Strings (im Allgmeinen "Worte", wenn auch aus Ziffern bestehend) Und ein Vergleich von "Baum1" mit "Blume2" ergibt nicht zwangsläufig irgendwas sinnvolles. Auch kann man mit beiden "W(e/o)rten" nicht rechnen. Kann Dir auch passieren, wenn Du für die Optik irgendwelche Einheiten dranbastelst.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“