Stromzähler mit HomeMatic auswerten
Moderator: Co-Administratoren
- 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
Du hast das aus irgendeiner Webseite kopiert.
Zeile 17
< ist ne HTML Codierung und hat nix in dem Script verloren
Black
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
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
- 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
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
-
- 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
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:
Was ich speziell finde, wenn ich Bsp. die Zeile 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 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));
Code: Alles auswählen
vTk.State((vTg.State() * vPk.State()).Round(2));
Code: Alles auswählen
!
Stehe hier irgendwie auf dem Schlauch....
Wäre um einen kleinen Denkanstupser dankbar.
-
- 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
Habe den Fehler nun selber gefunden.... Der Name der von Mirangelegten Systemvariable hat nicht mit jener im Script übereingestimmt....sickboy2711 hat geschrieben: ↑27.12.2020, 17:58Hallo 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:Was ich speziell finde, wenn ich Bsp. die ZeileCode: 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));
mittelsCode: Alles auswählen
vTk.State((vTg.State() * vPk.State()).Round(2));
auskommentiere, wird die Systemwariable "Strom Kosten laufende Woche" aktualisiert. Alle nachfolgenden jedoch immer noch nicht.Code: Alles auswählen
!
Stehe hier irgendwie auf dem Schlauch....
Wäre um einen kleinen Denkanstupser dankbar.
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
- 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
Hallo Denni,sickboy2711 hat geschrieben: ↑27.12.2020, 18:43Eine 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
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
-
- Beiträge: 68
- Registriert: 17.01.2017, 22:00
- Wohnort: Nordrhein-Westfalen
- Hat sich bedankt: 6 Mal
Re: Stromzähler mit HomeMatic auswerten
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.
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?
der Narrowmatiker
__________________________________________________________________________________________________________________________________________
Die Lösung ist so nah - warum bin ich so weit weg?
-
- Beiträge: 355
- Registriert: 19.06.2017, 09:24
- Hat sich bedankt: 20 Mal
- Danksagung erhalten: 63 Mal
Re: Stromzähler mit HomeMatic auswerten
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
-
- Beiträge: 68
- Registriert: 17.01.2017, 22:00
- Wohnort: Nordrhein-Westfalen
- Hat sich bedankt: 6 Mal
Re: Stromzähler mit HomeMatic auswerten
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" :
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?
der Narrowmatiker
__________________________________________________________________________________________________________________________________________
Die Lösung ist so nah - warum bin ich so weit weg?
-
- Beiträge: 355
- Registriert: 19.06.2017, 09:24
- Hat sich bedankt: 20 Mal
- Danksagung erhalten: 63 Mal
Re: Stromzähler mit HomeMatic auswerten
Zum Beispiel so
Code: Alles auswählen
MailText = MailText # "Zaehlerstand: " # zA.ToString(2) # "kWh, Verbrauch heute: " # sTg.ToString(2) # "kWh. ";
-
- 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
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
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
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