Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

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

Moderator: Co-Administratoren

MichHan
Beiträge: 33
Registriert: 25.12.2020, 10:05
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 2 Mal
Danksagung erhalten: 19 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von MichHan » 06.03.2021, 13:27

Schalterrei hat geschrieben:
06.03.2021, 07:13
Hat jemand vielleicht einen Tipp zu meinem o.g. Problem, ich konnte leider auch nach nochmaligen durchsehen der Variablen und dem Script keine Abweichungen finden. Dennoch wird mir kein Tagesverbrauch ausgegeben.

Dankeschön!
Hallo,

kannst Du nochmal einen Screenshot der Werte machen. Bitte auch mal einen Screenshot der gesetzten Variablen posten.

Danke und Gruß

Michael

MichHan
Beiträge: 33
Registriert: 25.12.2020, 10:05
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 2 Mal
Danksagung erhalten: 19 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von MichHan » 06.03.2021, 13:35

R.Thümer hat geschrieben:
14.02.2021, 12:57
Hallo, ich habe vor kurzem einen neuen smarten Zähler bekommen. Mit diesem nutze ich jetzt den ICE-Sensor. Ich würde gern wissen ob und wie ich die Werte mit diesm Script vom alten Zähler ( letzter Zählerstand ist bekannt ) übernehmen kann oder muss jetzt von Null beginnen? Ich nutze momentan das Script von Jena Maus.

MfG R.Thümer
Hallo,

Du kannst Dir die einzelnen Werte aufschreiben dann das Skript zum setzen der Variablen nutzen. Der Wochenwert ist ja nach einer Woche gesetzt. Der Monatswert (und andere, die im Skript zum setzen nicht enthalten sind, kannst Du in Homematic setzen, wenn Du eine Variable bearbeitest).

Bitte lies aber nochmal den Eingangsbeitrag, in dem ich auch die Unterschiede der beiden Skripte beschreibe. Einige Anwender beschrieben ja, dass der beste Weg ist, das alte Skript und die alten Variablen zu löschen (Werte vorher aufschreiben) und dann neu aufzusetzen.

Gruß

Michael

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

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von Xel66 » 06.03.2021, 13:59

Liegt woh vielleicht auch ganz simpel daran, dass eben manche Geräte in Wh zählen und die Scripte ebenso rechnen und manche Zähler in kWh ihre Daten übermitteln. Dazwischen liegt nur der recht unwichtige Faktor von 1000. Kommt eben immer drauf an, ob man das Script ggf. für einen Schaltaktor mit Messfunktion benutzt oder eben für einen Impulszähler oder ein Smartmeter. Ich wurde auf Smartmeter umgestellt und weiß nicht mehr, in welcher Einheit ich ursprünglich gerechnet habe.

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

Hütte
Beiträge: 746
Registriert: 08.02.2017, 11:08
Hat sich bedankt: 32 Mal
Danksagung erhalten: 75 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von Hütte » 20.03.2021, 14:11

MichHan hat geschrieben:
06.03.2021, 13:23
Schalterrei hat geschrieben:
12.02.2021, 12:42
Hm, irgendwas mach ich wohl falsch.
Der "aktueller Zählerstand" wird nicht aktualisiert und der "Verbrauch heute" ist auch bei null.

Bild

Ich hab die Variablen und das Programm nochmal überprüft und konnte keinen Fehler finden. Was kann ich übersehen haben?

Hallo,

am Screenshot sieht man folgendes:

- das Script läuft. Das erkennt man am Zeitstempel der Aktualisierung
- der interne Log-Wert wird fortgeschrieben und erhöht sich. Folglich läuft die Inkrementberechnung
- im zweiten Screenshot ist der Zählerstand um 0,01 kWh größer geworden

Das könnte darauf hindeuten, dass innerhalb des Skriptes ggf. ein Umrechnungsfaktor unbemerkt verändert wurde oder ggf. ein Kommazeichen fehlt (im Skript gibt es z.B. 1000.0; der .0 ist wichtig, damit die Zahl als 'real und float' erkannt wird.

Beste Grüße

Michael
Welchen Sensor setzt du ein?

Wenn es ein ES-IEC ist, dann werden die Werte direkt in kWh ausgelesen.
Ist es dagegen ES-FER oder ES-LED dann werden die Impulse gezählt. In diesem Fall muss auch in den Geräteeinstellungen des Zählers hinterlegt werden, wieviele Impulse einer kWh entsprechen. In diesem Fall entsprechen die Messwerte des Zählers W und nicht kW
Da ich die Originalversion von Jens benutze, musste ich bei mir, da ich einen ES-IEC einsetze, an einer Stelle die Umrechnung von W in kW im Script deaktivieren.
Ich weiß daher nicht, an welcher Stelle hier im Scrpt eventuel eine Umrechnung angepasst werden muss. Aber ich vermute, dass dort die Ursache liegen könnte.

Benutzeravatar
NilsG
Beiträge: 1692
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 383 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von NilsG » 02.04.2021, 17:34

Hallo zusammen!

Ich habe auch irgendwie noch einen Knoten drin :cry:
Nachdem ich nun mein Außenwasser wieder angeschlossen habe, musste ich feststellen, dass da irgendwas nicht hinhaut.
Die "Aktualisierung" bleibt mit ??? stehen, obwohl Wasser floß.
Der Hauptwasserzähler hat das auch "mitbekommen" um 17:13:21
Und warum meldet der GartenWasser-Zähler eine aktualisierung um 17:21:14?

Bildschirmfoto 2021-04-02 um 17.26.54.png
Bildschirmfoto 2021-04-02 um 17.27.26.png
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

Hütte
Beiträge: 746
Registriert: 08.02.2017, 11:08
Hat sich bedankt: 32 Mal
Danksagung erhalten: 75 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von Hütte » 02.04.2021, 19:28

Prüfe mal die Variable "GartenWasser Aktualisierung", ob sich da im Namen beim Anlegen irgendwo ein Leerzeichen zuviel eingeschlichen hat. Das geht häufig in den Anzeigen unter, denn auf den ersten Blick sieht sie korrekt aus. Also über das Bearbeiten der SV. Und der Typ ist auch korrekt?

Was mir aber merkwürdig erscheint, ist die Tatsache, dass dein Gartenwasserzähler für heute einen Verbrauch von 3,73 m3 anzeigt und dein Hauptzähler dagegen nur 270 l. Normalwerweise liegt doch der Gartenzähler hinter dem Hauptzähler. Zumindest kenne ich das so. Also müsste der Tagesverbrauch des Gartenzählers immer kleiner (oder maximal gleich) sein im Vergleich zum Tagesverbrauch des Hauptzählers. Das sieht mir irgendwie danach aus, als ob die Geräteeinstellungen für den Kanal noch nicht korrekt sind - also welche Menge an verbrauchten Wasser ein Zählimpuls des Sensors entspricht.

Und dass dein Gartenwasser-Zähler später aktualisiert wird als der Hauptzähler liegt an dem Übertragungsintervall, wann Daten gesendet werden - vermutlich abhängig von der Anzahl der Impule, die durch den Sensor empfangen wurden.

Dass also die SV "GartenWasser Aktualisierung" nicht aktualisiert wurde, liegt wahrscheinlich wohl am Namen. Dadurch kann das Script die Variable nicht finden. Gibt es eventuell Fehlermeldungen im Log?

Benutzeravatar
NilsG
Beiträge: 1692
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 383 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von NilsG » 03.04.2021, 10:06

Hallo Hütte!

Danke für die Support.
Da habe ich auch schon gesucht. Ich gucke nochmal genau hin :wink:
Die 3,73 m3 haben mich auch schon irritiert. Denke auch, dass da irgendwie noch "Daten-Schrott" ankommt.

Ich checke mal.
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

Benutzeravatar
NilsG
Beiträge: 1692
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 383 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von NilsG » 03.04.2021, 10:12

Die Systemvariable(n) passen :|

Bildschirmfoto 2021-04-03 um 10.12.34.png

Der Zählername auch

Bildschirmfoto 2021-04-03 um 10.11.13.png

Das Programm lief auch durch und hat um 00:01 aktualisiert:

Bildschirmfoto 2021-04-03 um 10.14.17.png
Und wenn ich nun Gartewasser aufdrehe, wird der HM-TX auch aktualisiert mit der neuen Uhrzeit, nur eben die Variable nicht :roll:
Hab die auch grad schon mal gelöscht und neu angelegt; ohne Erfolg.
Vielleicht nochmal mit einem komplett anderen Namen?

Hier das komplette Script, angepaßt auf meine Variablen und meine Zähler:

Code: Alles auswählen

! Universelle Zaehlerstandberechnung fuer HM-ES-TX-WM
!
! Copyright (c) 2016-2018 Jens Maus <mail@jens-maus.de>
! Adaptiert Michael Hansen, 01/2021, V1.0; neue Kommentare sind mit ! * gekennzeichnet
! * V1.1 - Abfrage eingefügt, ob sich das Inkrement geändert hat. Nur dann wird gerechnet
! * Fehler in der Berechnung des aktuellen Verbrauchs beseitigt
! * V1.2 - Änderung, dass in den CCU internen Energiezähler der Verbrauch seit der letzten
! * Ablesung geschrieben wird (wie beim Originalskript von Jens)#
! * V1.3 - Zurücksetzen des täglichen Wasserverbrauchs in l ist ergänzt

! Version 1.4 (01.01.2018)

! Nun schauen wir wer uns aufgerufen hat (Device-Channel oder Timer) und welches Device
! es genau war (Nutzung der $src$ Variable) und danach entscheiden wir was wir
! zu tun haben.
object counter = dom.GetObject("$src$");
if(counter)
{
  object sysvar = dom.GetObject(ID_SYSTEM_VARIABLES);

  ! Wenn TypeName vom Typ HSSDP ist dann wurde das Program durch ein Event
  ! eines Devices erzeugt, ansonsten durch ein CALENDARDP welches der
  ! Ausfuehrung durch das Zeitmodul entspricht
  if(counter.TypeName() == "HSSDP")
  {
    ! Nun holen wir unmittelbar am anfang alle counter relevanten Daten ab
    ! und speichern sie fuer spaeter zwischen und berechnen auch gleich
    ! noch differenzwerte
    integer diffTime = counter.Timestamp().ToInteger() - counter.LastTimestamp().ToInteger();
    real curValue = counter.Value();
    real lastValue = counter.LastValue();
    real vVeraenderung_Zaehlerstand = ( curValue - lastValue );

    ! * Wir prüfen, ob es überhaupt einen Energieverbrauch gegeben hat und nur dann geht es in die
    ! * Berechnungen
    if (vVeraenderung_Zaehlerstand <> 0)
    {
      ! Nun extrahieren wir den Zaehlertyp (Gas, Wasser, Strom) -> hier muss Garten erweitert werden
      ! aus dem Namen des Channel. Ein Device muss also immer mit "XXXXX-Gas"
      ! bzw. "XXXXXX-Wasser", etc. enden.
      object channel = dom.GetObject(counter.Channel());
      string type = channel.Name().StrValueByIndex("-",1);

      ! Nun holen wir alle notwendigen Systemvariablen zum Lesen und Speichern
      ! unserer verschiedenen Zaehlerwerte
      object oAktueller_Zaehlerstand = sysvar.Get(type # " aktueller Zaehlerstand");
      ! * oZaehlerstand_Messgeraet_Log benötigt man nur für die Inkrementberechnung mit
      ! * interner Variable
      object oZaehlerstand_Messgeraet_Log = sysvar.Get(type # " Zaehlerstand Messgeraet Log");
      object oVerbrauch_Aktuell = sysvar.Get(type # " Verbrauch aktuell");
      object oVerbrauch_Ablesung = sysvar.Get(type # " Verbrauch Ablesung");
      object oLetzte_Ablesung = sysvar.Get(type # " Zaehlerstand letzte Ablesung");
      object oZaehlerstand_gestern = sysvar.Get(type # " Zaehlerstand gestern");
      object oVerbrauch_heute = sysvar.Get(type # " Verbrauch heute");
      object oZaehlerstand_letzte_Woche = sysvar.Get(type # " Zaehlerstand letzte Woche");
      object oVerbrauch_Woche = sysvar.Get(type # " Verbrauch Woche");
      object oZaehlerstand_letzter_Monat = sysvar.Get(type # " Zaehlerstand letzter Monat");
      object oVerbrauch_Monat = sysvar.Get(type # " Verbrauch Monat");
      object oZaehlerstand_letztes_Jahr = sysvar.Get(type # " Zaehlerstand letztes Jahr");
      object oVerbrauch_Jahr = sysvar.Get(type # " Verbrauch Jahr");
      ! * vUmrechnungsfaktor wird später nur geändert, wenn es der Stromzähler war (Wh vs. kWh)
      real vUmrechnungsfaktor = 1.0;
      ! * vFaktor_l Für die Umrechnung von m3 in l für den Tagesverbrauch Wasser.
      ! * Falls Gas oder Strom, dann wird der Wert auf 1 gesetzt
      real vFaktor_l = 1000.0;

      ! * Wenn der Gassensor aufgerufen hat, dann müssen wir die die Variable "Gas Verbrauch Jahr kWh"
      ! * für Gas laden
      if ( type == ( "Gas" ) )
      {
        object oVerbrauch_Jahr_kWh = sysvar.Get(type # " Verbrauch Jahr kWh");
        ! * Damit wir die kWh berechnen können, werden die Faktoren für die Umrechnung bei Gas
        ! * m3 -> kWh benötigt
        real vZustandszahl = 1;
        real vFaktor = 1;
      }

      ! * Wenn der Wasser- oder Gartensensor aufgerufen hat, dann müssen wir die entsprechende
      ! * Variable für "XXX Verbrauch heute l" laden
      if ( (type == "Wasser") || (type == "GartenWasser"))
      {
        object oVerbrauch_heute_l = sysvar.Get(type # " Verbrauch heute l");
      }

      ! Jetzt machen wir die Inkrementberechnung
      ! * Wenn die Variable "XXX Zaehlerstand Messgeraet Log" noch nicht gesetzt wurde (= 0), dann
      ! * wird der letzte Zaehlerstand des Messgerätes verwendet

      if ( oZaehlerstand_Messgeraet_Log.Value() == 0 )
      {
        oZaehlerstand_Messgeraet_Log.State(lastValue);
      }
       real vInkrement_Geraetezaehler = ( curValue - oZaehlerstand_Messgeraet_Log.Value() );

      ! * Der Faktor wird für den aktuellen Verbrauch benötigt, da der bei Wasser nur als Angabe in
      ! * l Sinn macht
      if ( (type == "Wasser") || (type == "GartenWasser"))
      {
        vFaktor_l = 1000.0;
      }
      else
      {
        vFaktor_l = 1.0;
      }

      ! Jetzt wird das Inkrement zum letzten Zaehlerstand berechnet
      ! * Dabei muss der Umrechnungsfaktor für die Wasserzaehlung identifiziert und gesetzt werden
      ! * Strom und Gas benötigen keine Umrechnung (Wasser = l; Strom = kWh; Gas = m3).
      ! * vUmrechnungsfaktor wird für den Fall des Batteriewechsels bzw. Zählerüberlaufs benötigt
      ! * (auch noch später)
      if ( type == "Strom_neu"  )
      {
        vUmrechnungsfaktor = 1000.0;
        vInkrement_Geraetezaehler = vInkrement_Geraetezaehler / vUmrechnungsfaktor;
      }

      ! Aktuellen Verbrauch berechnen
      if(diffTime > 0)
      {
        oVerbrauch_Aktuell.State(3600.0 * vFaktor_l * vInkrement_Geraetezaehler * vUmrechnungsfaktor / diffTime);
      }

      ! Aktuellen Zaehlerstand berechnen
      if (vInkrement_Geraetezaehler < 0)
      {
        ! * Wenn Batteriewechsel, dann direkt den Zaehlerstand des Gerätes addieren
        oAktueller_Zaehlerstand.State( (oAktueller_Zaehlerstand.Value() + curValue / vUmrechnungsfaktor));
      }
      else
      {
        ! * Wenn kein Batteriewechsel stattgefunden hat, dann das Inkrement addieren
       oAktueller_Zaehlerstand.State( (oAktueller_Zaehlerstand.Value() + vInkrement_Geraetezaehler ));
      }

      ! Nun alle Systemvariablen die fuer die Berechnung/Darstellung
      ! des Verbrauches da sind neu berechnen.
      oVerbrauch_heute.State( ( oAktueller_Zaehlerstand.Value() - oZaehlerstand_gestern.Value()) );
      oVerbrauch_Woche.State( ( oAktueller_Zaehlerstand.Value() - oZaehlerstand_letzte_Woche.Value()) );
      oVerbrauch_Monat.State( ( oAktueller_Zaehlerstand.Value() - oZaehlerstand_letzter_Monat.Value()) );
      oVerbrauch_Jahr.State( ( oAktueller_Zaehlerstand.Value() - oZaehlerstand_letztes_Jahr.Value()) );
      oVerbrauch_Ablesung.State( ( oAktueller_Zaehlerstand.Value() - oLetzte_Ablesung.Value()) );

      ! * Wenn es der Wasser- oder Gartewasserzähler ist, dann berechnen wir noch den Tagesverbrauch
      ! * in l
      if (( type == "Wasser") || ( type == "GartenWasser"))
      {
        oVerbrauch_heute_l.State(oVerbrauch_heute.Value() * vFaktor_l);
      }

      ! * Wenn es der Gaszähler ist, dann berechnen wir den Jahresverbrauch für Gas in kWh
      if (type == "Gas" )
      {
        oVerbrauch_Jahr_kWh.State( (oVerbrauch_Jahr.Value() * vZustandszahl * vFaktor) );
      }

      ! * Jetzt schreiben wir den aktuellen Zaehlerstand des Sensors in unsere Log Variable
      oZaehlerstand_Messgeraet_Log.State(curValue);


      ! Wir aktualisieren auch noch den CCU internen Energiezaehler mit
      ! dem Wert der letzten Ablesung
      if(counter.HssType() != "GAS_ENERGY_COUNTER")
      {
        object oSysVarEnergyCounter = sysvar.Get("svEnergyCounter_" # channel.ID() # "_" # channel.Address());
        if(oSysVarEnergyCounter)
        {
          ! * Aktueller Zaehlerstand ist kWh. Die Variable erwartet Wh und rechnet dies dann ggf. in der Anzeige
          ! * selbst in kWh um
          oSysVarEnergyCounter.State(oVerbrauch_Ablesung.Value() * 1000 );
        }
      }
      else
      {
        object oSysVarEnergyCounter = sysvar.Get("svEnergyCounterGas_" # channel.ID() # "_" # channel.Address());
        if(oSysVarEnergyCounter)
        {
          oSysVarEnergyCounter.State(oVerbrauch_Ablesung.Value() );
        }
      }


      ! Die aktuelle Zeit in eine separate Systemvariable schreiben
      ! damit man direkt sehen kann wann die Zaehelrstaende das letzte
      ! mal aktualisiert wurden.
      sysvar.Get(type # " Aktualisierung").State(system.Date("%F %X"));
    }
  }
  else
  {
    ! Tageszaehleraktualisierung fuer alle Hausanschluss-Zaehler
    ! Hier wird mittels eines Timers der taeglich immer genau um 00:01
    ! dieses Programm ausfuehrt die Systemvariablen aktualisiert die
    ! die Tages/Wochen/Monat/Jahreswerte beinhalten.

    ! Nur weitermachen wenn es wirklich Mitternacht ist
    if(system.Date("%H:%M") == "00:01")
    {
      string a="Gas,Strom_neu,Wasser,GartenWasser";
      string b;
      object oAktueller_Zaehlerstand;
      object oZaehlerstand_letzte_Woche;
      object oVerbrauch_Woche;
      object oVerbrauch_letzte_Woche;
      object oZaehlerstand_letzter_Monat;
      object oVerbrauch_Monat;
      object oVerbrauch_letzter_Monat;
      object oZaehlerstand_letztes_Jahr;
      object oVerbrauch_Jahr;
      object oVerbrauch_letztes_Jahr;
      object oZaehlerstand_gestern;
      object oVerbrauch_heute;
      object oVerbrauch_gestern;

      ! Nun ueber alle Hauszaehler iterieren
      foreach(b, a.Split(","))
      {
        ! momentaner Zaehlerstand
        oAktueller_Zaehlerstand = sysvar.Get(b # " aktueller Zaehlerstand");
        if(oAktueller_Zaehlerstand)
        {
          ! Nach Wochenanfang pruefen
          if(system.Date("%a") == "Mon")
          {
            oZaehlerstand_letzte_Woche = sysvar.Get(b # " Zaehlerstand letzte Woche");
            oVerbrauch_Woche = sysvar.Get(b # " Verbrauch Woche");
            oVerbrauch_letzte_Woche = sysvar.Get(b # " Verbrauch letzte Woche");

            ! Verbrauch der letzten Woche speichern
            oVerbrauch_letzte_Woche.State( oVerbrauch_Woche.Value() );

            ! Referenzwert der Woche speichern
            oZaehlerstand_letzte_Woche.State( oAktueller_Zaehlerstand.Value() );

            ! Wochenverbrauch auf 0 setzen
            oVerbrauch_Woche.State(0);
          }

          ! Nach Monatsanfang pruefen
          if(system.Date("%d") == "01")
          {
            oZaehlerstand_letzter_Monat = sysvar.Get(b # " Zaehlerstand letzter Monat");
            oVerbrauch_Monat = sysvar.Get(b # " Verbrauch Monat");
            oVerbrauch_letzter_Monat = sysvar.Get(b # " Verbrauch letzter Monat");

            ! Verbrauch des letzten Monats speichern
            oVerbrauch_letzter_Monat.State( oVerbrauch_Monat.Value() );

            ! Referenzwert des Monats speichern
            oZaehlerstand_letzter_Monat.State( oAktueller_Zaehlerstand.Value() );

            ! Monatsverbrauch auf 0 setzen
            oVerbrauch_Monat.State(0);

            ! Nach Jahresanfang pruefen
            if(system.Date("%m") == "01")
            {
              oZaehlerstand_letztes_Jahr = sysvar.Get(b # " Zaehlerstand letztes Jahr");
              oVerbrauch_Jahr = sysvar.Get(b # " Verbrauch Jahr");
              oVerbrauch_letztes_Jahr = sysvar.Get(b # " Verbrauch letztes Jahr");

              ! Verbrauch des letzten Kalenderjahr speichern
              oVerbrauch_letztes_Jahr.State( oVerbrauch_Jahr.Value() );

              ! Referenzwert des Kalenderjahr speichern
              oZaehlerstand_letztes_Jahr.State( oAktueller_Zaehlerstand.Value() );

              ! Jahresverbrauch auf 0 setzen
              oVerbrauch_Jahr.State(0);
            }
          }

          ! aktueller Tagesverbrauch speichern
          oZaehlerstand_gestern = sysvar.Get(b # " Zaehlerstand gestern");
          oVerbrauch_heute = sysvar.Get(b # " Verbrauch heute");
          oVerbrauch_gestern = sysvar.Get(b # " Verbrauch gestern");
          oVerbrauch_heute_l = sysvar.Get(b # " Verbrauch heute l");


          ! Verbrauch gestern speichern
          oVerbrauch_gestern.State(oVerbrauch_heute.Value());

          ! Referenzwert des Tages speichern
          oZaehlerstand_gestern.State(oAktueller_Zaehlerstand.Value());

          ! Tagesverbrauch auf 0 setzen
          oVerbrauch_heute.State(0);

          if (( b == "Wasser") || ( b == "GartenWasser"))
          {
            oVerbrauch_heute_l.State(0);
          }

        }
      }
    }
  }
}
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

MichHan
Beiträge: 33
Registriert: 25.12.2020, 10:05
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 2 Mal
Danksagung erhalten: 19 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von MichHan » 04.04.2021, 15:04

Hallo Nils,

für mich ergibt sich aus Deiner Beschreibung und Screenshots folgendes Bild:

1) Beim normalen Wasserverbrauch am Gartenwasserzähler wird das Script nicht ausgelöst (daher kein Datum beim Aktualisieren)
2) Um 00:01 Uhr wird die Tagesaktualisierung ausgelöst. Daher sieht Du den Zeitstempel um 00:01 Uhr. Da aber im normal Verbrauch das Script für den Gartenwasserzähler nicht ausgeführt wird (siehe 1), können um 00:01 Uhr auch keine Werte geschrieben werden. Sind ja keine da.

Bitte prüfen:

a) die Auslösebedingung für das Script bei normalem Wasserverbrauch
b) die richtige Benennung des Zählers für den Kanal 1 (!). Auf dem Screenshot sieht es so aus, dass der Kanal 0 "Zähler-GartenWasser" und der Kanal 1 "Zähler-GartenWasser 1" heißen. Da auf Kanal 1 gezählt wird scheint mir die Benennung hier falsch zu sein.

Gruß

Michael

Hütte
Beiträge: 746
Registriert: 08.02.2017, 11:08
Hat sich bedankt: 32 Mal
Danksagung erhalten: 75 Mal

Re: Zählersensor HM-ES-TX-WM - Zählerstandberechnung - Batteriewechsel berücksichtigt

Beitrag von Hütte » 04.04.2021, 15:50

Hallo Michael,

eventuell solltes du deinem ursprünglichen Beitrag um einen weiteren Screenshot erweitern. Denn mit der aktuellen Version wird nun standardmäßig auch der Kanal 0 mit angezeigt, wenn man auf das Plus in den Geräteeinstellungen klickt. Dann kann man es besser erkennen. Zumal du bei dir den Kanal 2, der nur beim Einsatz eines ES-IEC-Sensors eine Funktion hat, auf nicht sichtbar gesetzt hast. Also ein Screenshot, auf dem alle 3 Kanäle sichtbar sind, damit deutlicher wird, welcher Kanal den richtigen Namen haben muss.

Ich habe bei deshalb auch das Gerät selbst etwas anders benannt als den Kanal, damit man wirklich erkennt, dass beim Triggern bzw. Auslesen auf den Kanal zugegriffen wird und nicht auf das Gerät.

Antworten

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