Verbrauch HMIP-PSM

HMIP lokale Installation

Moderator: Co-Administratoren

TheCrusher
Beiträge: 75
Registriert: 28.05.2020, 10:21
System: CCU
Hat sich bedankt: 14 Mal

Re: Verbrauch HMIP-PSM

Beitrag von TheCrusher » 24.06.2022, 08:15

Hallo,

neuerdings tritt ein Phänomen auf, welches ich mir nicht erklären kann.
Sporadisch wird beim ein bzw ausschalten von kanal 3 oder 4, mal der Zählerstand nicht in die sv pumpe og/eg ein geschrieben bzw beim ausschalten nicht neu berechnet.
beides (kein schreiben bei ein bzw berechnen bei aus) passiert unabhängig voneinander und ich konnte es bis dato nicht reproduzieren.
jemand eine ansatz woran es liegen könnte? anbei das script zur berechnung.

system aktuelle raspberrymatic. ob das nach einem update dieser anfing, kann ich nicht ausschließen.

vielen dank

edit: das programm welches das script startet, wird aber immer ausgelöst. im log findet sich nix zum entsprechenden zeitpunkt

Code: Alles auswählen

!- Strom getrennt nach Kanal abrechnen / MN 27.06.2020
!- https://homematic-forum.de/forum/viewtopic.php?f=60&t=59546&p=590070#p590070
!- WENN Pumpe:3 Schaltzustand EIN bei Änderung auslösen
!- ODER Pumpe:3 Schaltzustand AUS bei Änderung auslösen
!- ODER Pumpe:4 Schaltzustand EIN bei Änderung auslösen
!- ODER Pumpe:4 Schaltzustand AUS bei Änderung auslösen
!- DANN dieses SKRIPT

!- Definitionen: Variablennamen zwischen den "" an eigene Gegebenheiten anpassen
string Zaehlername = "svEnergyCounter_1439_0001D3C99C9B5B:6";
string NameSV3_gesamt = "sv_PumpeOG";
string NameSV4_gesamt = "sv_PumpeEG";
string NameSV3_ein = "sv_PumpeOG_EIN";
string NameSV4_ein = "sv_PumpeEG_EIN";

!- hier nichts mehr anpassen
string kanal;
object oSrc;
real ZaehlerGesamt;
real ZaehlerAktuell;
real ZaehlerAlt3;
real ZaehlerAlt4;
real Diff3;
real Diff4;
real DiffTeilen;
real DiffRest;


!- welcher Kanal?
oSrc = dom.GetObject("$src$");

kanal = (dom.GetObject(oSrc.Channel())).ChnNumber();
  
  
!- aktueller Status 0 = aus / 1 = ein
string sVal = "$val$";

ZaehlerAktuell = dom.GetObject(Zaehlername).Value();
ZaehlerAktuell = ZaehlerAktuell/1000;
ZaehlerAlt3 = dom.GetObject(ID_SYSTEM_VARIABLES).Get(NameSV3_ein).State();
ZaehlerAlt4 = dom.GetObject(ID_SYSTEM_VARIABLES).Get(NameSV4_ein).State();

if ( kanal == "3" )
   {
   !- Kanal 3 betätigt

   if ( sVal == "0" )
      {
      !- ausgeschaltet

      ZaehlerGesamt = dom.GetObject(ID_SYSTEM_VARIABLES).Get(NameSV3_gesamt).State();
      Diff3 = ( ZaehlerAktuell -  ZaehlerAlt3 );
      if ( ZaehlerAlt4 > 0 )
         {
         !- Zaehler 4 läuft parallel, hälftig abrechnen
         Diff4 = ( ZaehlerAktuell -  ZaehlerAlt4 );
         DiffTeilen = Diff4.Min(Diff3);
         DiffRest = Diff3 - DiffTeilen;
         Diff3 = DiffRest + ( DiffTeilen / 2 );
         ZaehlerAlt4 = ZaehlerAlt4 + ( DiffTeilen / 2 );
         dom.GetObject(ID_SYSTEM_VARIABLES).Get(NameSV4_ein).State(ZaehlerAlt4);
         }
       !- hochzählen
       ZaehlerGesamt = ZaehlerGesamt + Diff3; 
       
       
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(NameSV3_gesamt).State(ZaehlerGesamt);
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(NameSV3_ein).State(0);
      } else {
      !- eingeschaltet, Zählerstand merken
      dom.GetObject("Protokolleintrag").State("xxxTest: Kanal 3 ein");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(NameSV3_ein).State(ZaehlerAktuell);
      }
   }

if ( kanal == "4" )
   {
   !- Kanal 4 betätigt

   if ( sVal == "0" )
      {
      !- ausgeschaltet

      ZaehlerGesamt = dom.GetObject(ID_SYSTEM_VARIABLES).Get(NameSV4_gesamt).State();
      Diff4 = ( ZaehlerAktuell -  ZaehlerAlt4 );
      if ( ZaehlerAlt3 > 0 )
         {
         !- Zaehler 3 läuft parallel, hälftig abrechnen
         Diff3 = ( ZaehlerAktuell -  ZaehlerAlt3 );
         DiffTeilen = Diff3.Min(Diff4);
         DiffRest = Diff4 - DiffTeilen;
         Diff4 = DiffRest + ( DiffTeilen / 2 );
         ZaehlerAlt3 = ZaehlerAlt3 + ( DiffTeilen / 2 );
         dom.GetObject(ID_SYSTEM_VARIABLES).Get(NameSV3_ein).State(ZaehlerAlt3);
         }
       !- hochzählen
       ZaehlerGesamt = ZaehlerGesamt + Diff4;

      dom.GetObject(ID_SYSTEM_VARIABLES).Get(NameSV4_gesamt).State(ZaehlerGesamt);
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(NameSV4_ein).State(0);
      } else {
      !- eingeschaltet, Zählerstand merken
      dom.GetObject("Protokolleintrag").State("xxxTest: Kanal 4 ein");
      dom.GetObject(ID_SYSTEM_VARIABLES).Get(NameSV4_ein).State(ZaehlerAktuell);
      }
   }
  

MichaelN
Beiträge: 9649
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Verbrauch HMIP-PSM

Beitrag von MichaelN » 24.06.2022, 09:00

TheCrusher hat geschrieben:
24.06.2022, 08:15
as programm welches das script startet, wird aber immer ausgelöst
Das machst Du woran fest?
Weil, wenn das Programm startet, dann muss auch das Skript starten. Es kann dann nur sein, daß es auf einen Fehler läuft.

Du kannst in die erste und letzte Zeile des Skript diese Zeilen einfügen:

Code: Alles auswählen

string stdout;string stderr;
system.Exec("logger -t script -p user.debug [Script Start]", &stdout, &stderr); 
Bzw.

Code: Alles auswählen

system.Exec("logger -t script -p user.debug [Script Ende]", &stdout, &stderr); 
Und dann kannst du im Fehlerprotokoll (Einstellungen/Systemsteuerung/Zentralen-Wartung/Logdatei) sehen ob das Skript durchgelaufen ist.

Bzw: hast Du nun eine funktionierende Systemvariable" Protokoleintrag"? Denn ich habe gesehen, daß Du meinen Debuggingzeilen imme rnoch drin hast....
Siehe auch viewtopic.php?f=60&t=59546#p590311
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

TheCrusher
Beiträge: 75
Registriert: 28.05.2020, 10:21
System: CCU
Hat sich bedankt: 14 Mal

Re: Verbrauch HMIP-PSM

Beitrag von TheCrusher » 24.06.2022, 09:13

das mach ich an folgendem fest 🙈

wenn: pumpe 3 oder 4 an bzw. aus (bei auslösung)

dann: 3sek verzögert das script
30sek verzögert ne telegram nachricht (diese bekomme ich)


aber die zeilen werde ich mal einfügen und schauen was er beim nächsten mal, wenn der fehler auftritt, rauswirft


als bsp nur mal der heutige tag

pumpe 3 insgesamt 9x an und 9x aus

beim 5ten ein, nicht in sv pumpe og ein geschrieben (händisch nachgetragen)

beim 7ten aus, keine berechnung durchgeführt und sv pumpe og ein nicht auf 0 gesetzt
Zuletzt geändert von TheCrusher am 24.06.2022, 10:26, insgesamt 1-mal geändert.

TheCrusher
Beiträge: 75
Registriert: 28.05.2020, 10:21
System: CCU
Hat sich bedankt: 14 Mal

Re: Verbrauch HMIP-PSM

Beitrag von TheCrusher » 24.06.2022, 09:43

Bzw: hast Du nun eine funktionierende Systemvariable" Protokoleintrag"? Denn ich habe gesehen, daß Du meinen Debuggingzeilen imme rnoch drin hast....
Siehe auch viewtopic.php?f=60&t=59546#p590311
an der sv wurde nix geändert…aber werde die mal trotzdem löschen und neu erstellen, wer weiß

die 2 zeilen im script mit der sv protokolleintrag sind aber soweit korrekt? oder sollen/müssen diese raus?

aber die 2 ansätze werde ich nachher umsetzen und weitersehen 👍

MichaelN
Beiträge: 9649
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Verbrauch HMIP-PSM

Beitrag von MichaelN » 24.06.2022, 10:57

Wenn Du eine Textvariable hast, die Protokolleintrag heisst und auf protokolliert steht, dann siehst Du die Ausgaben ja auch im Systemprotokoll.

Du musst jetzt analysieren:
1) Läauft das Programm? => hast Du ja über das Telegram schon evaluiert
2) Läuft das Skript?
3) Läuft das Skript auf einen Fehler => offensichtlich nicht generell, sonst würde es nie gehen
4) läuft das Skript unter bestimmten Bedingungen auf einen Fehler?
5) Oder gibt es einen Logikfehler der unte rbestimmten Bedingungen Eintritt?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

TheCrusher
Beiträge: 75
Registriert: 28.05.2020, 10:21
System: CCU
Hat sich bedankt: 14 Mal

Re: Verbrauch HMIP-PSM

Beitrag von TheCrusher » 24.06.2022, 18:31

hab es mal mit Kanal 3 getestet...aus- und eingeschaltet.
vorher noch die sv Protokolleintrag neu erstellt.
Jun 24 18:18:48 ccu3-webui user.debug script: [Script Start]
Jun 24 18:18:48 ccu3-webui user.debug script: [Script Ende]
Jun 24 18:18:51 ccu3-webui user.debug script: [Script Start]
Jun 24 18:18:51 ccu3-webui user.debug script: [Script Ende] einschalten geht

Jun 24 18:19:39 ccu3-webui user.debug script: [Script Start]
Jun 24 18:19:39 ccu3-webui user.debug script: [Script Ende]
Jun 24 18:19:43 ccu3-webui user.debug script: [Script Start]
Jun 24 18:19:43 ccu3-webui user.debug script: [Script Ende] ausschalten geht

Jun 24 18:21:10 ccu3-webui user.debug script: [Script Start] einschalten, kein schreiben in OG Pumpe EIN
Jun 24 18:21:10 ccu3-webui user.debug script: [Script Ende]

Jun 24 18:22:01 ccu3-webui user.debug script: [Script Start]
Jun 24 18:22:01 ccu3-webui user.debug script: [Script Ende]
Jun 24 18:22:05 ccu3-webui user.debug script: [Script Start]
Jun 24 18:22:05 ccu3-webui user.debug script: [Script Ende] ausschalten geht

Jun 24 18:22:43 ccu3-webui user.debug script: [Script Start]
Jun 24 18:22:43 ccu3-webui user.debug script: [Script Ende]
Jun 24 18:22:47 ccu3-webui user.debug script: [Script Start]
Jun 24 18:22:47 ccu3-webui user.debug script: [Script Ende] einschalten geht

Jun 24 18:23:00 ccu3-webui user.debug script: [Script Start]
Jun 24 18:23:00 ccu3-webui user.debug script: [Script Ende]
Jun 24 18:23:04 ccu3-webui user.debug script: [Script Start]
Jun 24 18:23:04 ccu3-webui user.debug script: [Script Ende] ausschalten geht
heisst doch eigentlich, das das script, wenn es denn alles richtig macht immer doppelt läuft. warum? läuft es einfach dann passiert nix

MichaelN
Beiträge: 9649
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Verbrauch HMIP-PSM

Beitrag von MichaelN » 24.06.2022, 18:59

Zeig mal dein aufrufendes Programm
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

TheCrusher
Beiträge: 75
Registriert: 28.05.2020, 10:21
System: CCU
Hat sich bedankt: 14 Mal

Re: Verbrauch HMIP-PSM

Beitrag von TheCrusher » 24.06.2022, 19:07

Bildschirmfoto 2022-06-24 um 19.03.28.png

MichaelN
Beiträge: 9649
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Verbrauch HMIP-PSM

Beitrag von MichaelN » 24.06.2022, 19:21

Es hat sich mittlerweile rausgestellt, das nahezu zeitgleiche Trigger manchmal zur Nichtfunktion des Programms führen. Ähnlich wie es bei Dir ausschaut. Stelle den jeweils komplementären Trigger auf "nur prüfen"

also
4 ein bei Änderung
4 aus nur prüfen
3 ein bei Änderung
3 aus nur prüfen
Zuletzt geändert von MichaelN am 24.06.2022, 19:26, insgesamt 1-mal geändert.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

MichaelN
Beiträge: 9649
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Verbrauch HMIP-PSM

Beitrag von MichaelN » 24.06.2022, 19:25

Und ich sehe gerade du hast in deinem Programm den Haken für Regtriggern nicht rausgenommen. Siehe nochmal meine Beitrag von damals genau an:
viewtopic.php?f=60&t=59546#p590136
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „HomeMatic IP mit CCU“