Howto - Zähler-Skripte für HM-ES-TX-WM (per zPNP)

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

Moderator: Co-Administratoren

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - wöchentliche Strom- und Gaszählerwerte, V1.2

Beitrag von dtp » 22.09.2016, 11:59

Hi Dieter,

oh sorry, da bin ich Dir ja noch was schuldig geblieben. War einfach zu viel los die letzte Zeit.

Poste doch mal bitte Dein Skript hier. Dann kann ich mir ein Bild machen.

Was meinst Du mit "aktueller Verbrauchwert"? Den aktuellen Zählerstand in kWh oder die aktuell verbrauchte Leistung in W oder noch etwas anderes?

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
DiJe
Beiträge: 566
Registriert: 04.03.2015, 05:51
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Howto - wöchentliche Strom- und Gaszählerwerte, V1.2

Beitrag von DiJe » 22.09.2016, 13:34

Hallo Thorsten,
danke für deine Rückmeldung,
hier das script

Code: Alles auswählen

! Berechnet den tagesaktuellen Stand des Stromzählers
! Version 1.2, Autor: dtp

! +++++ Parameter einstellen +++++
! Startwert des Stromzählers in kWh
real tmpA = ;

! Bargraph-Anzeige; tmpB = 0 schaltet die Anzeige aus
real tmpB = 12.0; ! Maximaler Verbrauchswert in kWh 
real tmpC = 10.0; ! Anzahl der Bars innerhalb tmpB

! Zählerstand setzen (sofort: 0, Regelbetrieb (täglich 23:59): 1)
integer tmpD = 1; 

! Zählersensor Kanal
string tmpE = "BidCos-RF.MEQ0705634:1.ENERGY_COUNTER";

! ##### ab hier keine Einstellungen mehr vornehmen #####

! +++++ weitere Variablendeklarationen +++++
real tmpF;
real tmpG; 
real tmpH = 0.0; 
string tmpI; 
string tmpJ; 
string tmpK; 
string tmpL = ""; 
string tmpM;
string tmpN = "Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag";
  
! +++++ verbrauchte kWh pro Tag und Zählerstand +++++
! Auslesen des aktuellen Wochentags
tmpK = tmpN.StrValueByIndex(" ", system.Date("%w"));
 
! Auslesen der Systemvariablen "Stromverbrauch Woche"
tmpJ = dom.GetObject("Stromverbrauch Woche").Value();
if(tmpJ.Find("???") != -1){tmpJ = "";}
 
! Berechnen der Werte
tmpG = dom.GetObject(tmpE).Value()/1000;
if(tmpG < 0){tmpG = tmpG+838.8607;}
tmpI = (tmpA+tmpG).ToString(2);
tmpF = tmpI.ToFloat()-dom.GetObject("Stromverbrauch Tag").Value().ToFloat();

! Ausgabe als Bargraph
if(tmpB > 0){
  while((tmpH < tmpF) && (tmpH <= (tmpB - tmpB/tmpC))){
    tmpL = tmpL#"|"; 
    tmpH = tmpH + tmpB/tmpC;
  }
  if(tmpF > tmpB){tmpL = "<b>"#tmpL#"</b>";}
  tmpL = tmpL#" ";
}
 
! Beginnen der Liste mit einem Montag und vermeiden doppelter Zeilen pro Wochentag
if(tmpK == "Montag"){
  tmpJ = "";
}
else{
  while(tmpJ.Find(tmpK) != -1){tmpJ = tmpJ.Substr(tmpJ.Find(tmpK)+tmpK.Length()+1,tmpJ.Length());}
}
tmpJ = tmpL#tmpF.ToString(2)#" kWh, "#tmpK#"\n"#tmpJ;
 
! Setzen der Systemvariablen "Stromverbrauch Woche" und "Stromverbrauch Tag"
dom.GetObject("Stromverbrauch Woche").State(tmpJ);
if(tmpD == 1){
  if(system.Date("%H:%M") == "23:59"){dom.GetObject("Stromverbrauch Tag").State(tmpI);}
}
if(tmpD == 0){
  dom.GetObject("Stromverbrauch Tag").State(tmpI);
}

! ++++ Senden der Verbrauchswerte per Push-Nachricht am Sonntag ++++
if(tmpK == "Sonntag")
{
  ! Erzeugen der Nachricht
 string  tmpM = tmpI#" kWh Strom verbraucht.\nTagesverbrauchswerte in KW "#system.Date('%W')#":\n"#tmpJ; 

dom.GetObject("CUxD.CUX2801001:4.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -d token=xxxxxxxxxxxxxxxxxx -d message='"#tmpM#"' -d sound=bike http://api.pushover.net/1/messages.json");

habe alles in tmp umgeschrieben, läuft so.
Mir geht es um den Monatsverbrauch, aktuellen Zählerstand und die aktuelle verbrauchte Leistung.
Sonnigen Tag
Gruß Dieter
Gruß Dieter
----------------------------------------------------------------------------------------
RaspiMatic auf Raspi4 - 4Gb -nach Kernel Upgrade Temp.~50° - m.Addons: ioBroker, RedMatic, CCU-Historian, CUxD, Email, XMl Api
Geräte 120, davon DIY Geräte 35 -Variablen 213 - Programme 160 / Visualisierung mit Mediola auf 24" Acer DA241HL / läuft alles stabil

Benutzeravatar
DiJe
Beiträge: 566
Registriert: 04.03.2015, 05:51
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Howto - wöchentliche Strom- und Gaszählerwerte, V1.2

Beitrag von DiJe » 26.09.2016, 20:50

Hat sich erledigt
Gruß Dieter
Gruß Dieter
----------------------------------------------------------------------------------------
RaspiMatic auf Raspi4 - 4Gb -nach Kernel Upgrade Temp.~50° - m.Addons: ioBroker, RedMatic, CCU-Historian, CUxD, Email, XMl Api
Geräte 120, davon DIY Geräte 35 -Variablen 213 - Programme 160 / Visualisierung mit Mediola auf 24" Acer DA241HL / läuft alles stabil

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - wöchentliche Strom- und Gaszählerwerte, V1.2

Beitrag von dtp » 02.10.2016, 11:34

Hallo Dieter,

für die Berechnung des monatlichen Verbrauchs teste doch mal folgendes.

1. Erzeuge eine weitere Systemvariable "Stromverbrauch Monat" vom Typ Zahlenwert. Den Namen kannst Du natürlich nach Belieben ändern.
2. Binde folgende Zeilen in das Skript ein:

Code: Alles auswählen

! +++++ weitere Variablendeklarationen +++++
real counter_month;

...

! Setzen der Systemvariablen "Stromverbrauch Monat"
if(system.Date("%d") == "01"){
  counter_month = dom.GetObject("Stromverbrauch Tag").Value().ToFloat()-dom.GetObject("Stromverbrauch Monat").Value().ToFloat();
  dom.GetObject("Stromverbrauch Monat").State(counter_month);
}
Du kannst die lokale Variable "counter_month" natürlich gem. Deiner Notation anpassen. Im untern Teil wird jeden 1. des Monats die Differenz zwischen dem aktuellen Zählerstand und dem bisherigen Monatswert gebildet. Am Anfang wird "Stromverbrauch Monat" zwar den Wert von "Stromverbrauch Tag" haben. Aber im zweiten Monat sollte dann nur noch der tatsächliche Monatsverbrauch angezeigt werden.

Falls es nicht klappt, versuche dann noch mal "dom.GetObject("Stromverbrauch Tag").Value().ToFloat()" durch tempE zu ersetzen.

Gruß,

Thorsten
Zuletzt geändert von dtp am 02.10.2016, 11:46, insgesamt 1-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
DiJe
Beiträge: 566
Registriert: 04.03.2015, 05:51
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Howto - wöchentliche Strom- und Gaszählerwerte, V1.2

Beitrag von DiJe » 02.10.2016, 11:43

Hallo Thorsten,
danke für deine Hilfe, werde ich mal einbauen.
Schönen Sonntag noch.
Gruß Dieter
Gruß Dieter
----------------------------------------------------------------------------------------
RaspiMatic auf Raspi4 - 4Gb -nach Kernel Upgrade Temp.~50° - m.Addons: ioBroker, RedMatic, CCU-Historian, CUxD, Email, XMl Api
Geräte 120, davon DIY Geräte 35 -Variablen 213 - Programme 160 / Visualisierung mit Mediola auf 24" Acer DA241HL / läuft alles stabil

Ghoethe
Beiträge: 48
Registriert: 18.12.2015, 12:50
Kontaktdaten:

Re: Howto - wöchentliche Strom- und Gaszählerwerte, V1.2

Beitrag von Ghoethe » 19.10.2016, 05:01

Hi,

versuche das Programm grade abzuwandeln für meine Wetterstation --> Regenzähler... (Strom/Gas Zähler kommen noch)

Habe eigentlich schon soweit alle Variablen ausgetauscht, aber was spielt der Abschnitt "Berechnen der Werte" für eine Rolle? Warum teil er den aktuellen Wert / 1000 ?

Code: Alles auswählen

! Berechnen der Werte
rain_cnt = dom.GetObject(device).Value()/1000;
if(rain_cnt < 0){rain_cnt = rain_cnt+838.8607;}
counter_value = (offset+rain_cnt).ToString(2);
counter_day = counter_value.ToFloat()-dom.GetObject("Regenzähler").Value().ToFloat();
und wichtiger: Welches Script/anleitung hast du für die Pushnachricht verwendet? :)

Sven_A
Beiträge: 4155
Registriert: 26.01.2016, 08:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Renningen
Hat sich bedankt: 348 Mal
Danksagung erhalten: 284 Mal

Re: Howto - wöchentliche Strom- und Gaszählerwerte, V1.2

Beitrag von Sven_A » 19.10.2016, 08:00

Ich bin jetzt zu faul zu suchen welchen Teil genau du da hast, aber wenn man die Wh durch 1000 teilt kommt man auf kWh.... das wird alles sein. In deinem Fall würde das aus Litern eben Kubikmeter machen, wobei das in unseren Breiten dann eher als Jahresmenge zu betrachten wäre ;)

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - wöchentliche Strom- und Gaszählerwerte, V1.2

Beitrag von dtp » 19.10.2016, 13:04

Ghoethe hat geschrieben:...aber was spielt der Abschnitt "Berechnen der Werte" für eine Rolle? Warum teil er den aktuellen Wert / 1000 ?
Na was soll "Berechnen der Werte" wohl bedeuten? Natürlich das Berechnen von Werten. ;)

Wenn Du Dir die beiden Skripte für Strom und Gas im Ausgangsposting genau angesehen hättest, dann wäre Dir evtl. aufgefallen, dass nur beim Stromskript durch 1000 geteilt wird, weil dort die Wh des HM-Zählersensors in die kWh des Zählers umgewandelt werden. Beim Gasskript ist das nicht notwendig, weil da Zählersensor und Zähler dieselbe Größenordnung verwenden.

Macht es wirklich so viel Sinn, die Energieskripte auch für die Anzeige des Niederschlags zu verwenden?

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - wöchentliche Strom- und Gaszählerwerte, V1.4

Beitrag von dtp » 14.02.2017, 08:46

Es gibt eine überarbeitete Version 1.4 der Skripte, in denen insbesondere das Problem der fehlerhaften Ausgabe im Falle des Überlaufs beseitigt wurde.

Aber auch sonst hat sich einiges geändert.

Wer mag, kann hier gerne seine Erfahrungen schildern.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
Herbert_Testmann
Beiträge: 11062
Registriert: 17.01.2009, 11:30
Danksagung erhalten: 7 Mal

Re: Howto - wöchentliche Strom- und Gaszählerwerte, V1.4

Beitrag von Herbert_Testmann » 14.02.2017, 14:53

Hallo

danke, ich sehe mir das mal an.
Die Korrektur gibt es auch in dem Script von Jmaus.

Mich interessiert aber trotzdem, warum es in dem internen Script von eq-3 nicht geht. Leider ist der Test etwas Zeit aufwendig. Das schaffe ich diese Woche nicht mehr.

Ergebnis des Tests kommt dann hier und ich hoffe auf Hilfe beim Finden des Fehlers im Code.
---
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig

Antworten

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