HM-ES-PMSw1-DR zeigt falsche Einheit an (Kommastelle falsch)

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Benutzeravatar
Baxxy
Beiträge: 10789
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2208 Mal

Re: HM-ES-PMSw1-DR zeigt falsche Einheit an (Kommastelle falsch)

Beitrag von Baxxy » 21.01.2023, 11:38

Gerät und SysVar...
Visu hat geschrieben:
06.01.2023, 21:46
am 01.01. stromlos gemacht und die RM werte zurückgesetzt
Und jetzt hat das Gerät ~ 4,5kWh und die SysVar ~ 156 kWh?

Wie soll das zusammenpassen? Es geht doch nicht um den Preis sondern um die falsche Zählung.

Die Frage ist also wo dieses augenscheinliche Umrechnungsproblem herkommt.

Dazu brauchen wir mal ein paar Rohdaten:
Folgendes im "Script testen" ausführen, vorher in Zeile 1 den korrekten Kanalnamen eintragen.
Ausgabe posten.

Code: Alles auswählen

!- Energy-Counter internal SysVar Check

string kanal_name = "HM-ES-PMSw1-Pl LEQ0529290:2"; !- Namen eintragen wie in der WebUI vergeben

object kanal_dev = channels.Get (kanal_name);
 if (!kanal_dev) { quit; }
     WriteLine("Zähler Gerät: "# channels.Get (kanal_dev).DPByHssDP ("ENERGY_COUNTER").Value());
object kanal_sv_counter = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("svEnergyCounter_" # kanal_dev.ID() # "_" # kanal_dev.Address());
 if (!kanal_sv_counter) { quit; }
     real sv_counter_value = kanal_sv_counter.Value();
     string unit = "Wh";
     WriteLine("Zähler SysVar_intern: "# sv_counter_value # " "# unit);
      if ( sv_counter_value > 999.0 ) { unit = "kWh"; sv_counter_value = sv_counter_value /1000.0;}
           WriteLine("Sollausgabe: Zähler SysVar_WebUI: "# sv_counter_value.ToString(2) # " "# unit);
object kanal_sv_counter_oldval = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("svEnergyCounterOldVal_" # kanal_dev.ID());
 if (!kanal_sv_counter_oldval) { quit; }
     WriteLine("Zähler SysVar_old: "# kanal_sv_counter_oldval.Value());

Benutzeravatar
jmaus
Beiträge: 9848
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: HM-ES-PMSw1-DR zeigt falsche Einheit an (Kommastelle falsch)

Beitrag von jmaus » 21.01.2023, 11:40

Ich sehe schon, hier ist viel Verwirrung im Spiel. Vielleicht sollte der Autor dieses Beitrag nochmal versuchen seine Gedankengänge etwas detaillierter mit entsprechenden Beispielen und Screenshots darzulegen. Sonst wird das hier eine unendliche Rumraterei.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

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

Re: HM-ES-PMSw1-DR zeigt falsche Einheit an (Kommastelle falsch)

Beitrag von MichaelN » 21.01.2023, 11:43

Das würde aber bedeuten, das 156 kWh in 20 Tagen verbraucht wurden. Das sind über 300W dauerhaft.
Wenn die Angaben des TO plausibel sind, dann müsste nach 999Wh eben 1,0kWh kommen.

Um das zu überprüfen wäre es sinnvoll beide Energiezähler mit CCU-Historian zu protokollieren.
Wobei da immer noch die Frage ist, ist nur die umgerechnete Anziege falsch oder die Rohdaten

Baxxy war schneller...
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 +++

Benutzeravatar
Baxxy
Beiträge: 10789
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2208 Mal

Re: HM-ES-PMSw1-DR zeigt falsche Einheit an (Kommastelle falsch)

Beitrag von Baxxy » 21.01.2023, 11:48

Spekulation Anfang:

Werden Gerätezähler und SysVar genullt sollten sie synchron zählen bis einer der Werte wieder genullt/verändert wird.
Kann natürlich sein das das Gerät zwischendurch genullt wurde.
Dann müsste aber das angeschlossene Gerät täglich etwa 7,4 kWh gezogen haben was sich irgendwie mit den angezeigten 7,3W Leistung beißt.

Aber gut, genug spekuliert. :mrgreen:

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

Re: HM-ES-PMSw1-DR zeigt falsche Einheit an (Kommastelle falsch)

Beitrag von MichaelN » 21.01.2023, 11:53

Und vielleicht mal das systeminterne Skript zu diesem Gerät hier posten, vielleicht wurde da ja was "optimiert"...
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 +++

Benutzeravatar
Baxxy
Beiträge: 10789
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2208 Mal

Re: HM-ES-PMSw1-DR zeigt falsche Einheit an (Kommastelle falsch)

Beitrag von Baxxy » 21.01.2023, 11:55

Ich kann mich noch vage dran erinnern das es irgendwann mal Probleme mit den Scripten gab, die hatten irgendwie nach jedem Reboot die Werte verdoppelt.
Sollte aber Geschichte sein.

Visu
Beiträge: 507
Registriert: 04.12.2016, 23:30
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: HM-ES-PMSw1-DR zeigt falsche Einheit an (Kommastelle falsch)

Beitrag von Visu » 21.01.2023, 12:48

ok, ich versuche es mal zu beschreiben:
Linkes Bild:
zeigt die Zählung am 06.01.23 (glaube ich) beide Werte wurden genullt, RM durch den Button, Gerät durch stromlos machen. Beide Werte identisch, nur bei der RM Zählung entweder Kommastelle (Punkt) falsch, oder falsche Einheit, kWh müsste eigentlich Wh sein.
Rechtes Bild:
Hier wurde nur die RM Werte genullt (über den Reset Button), daher die unterschiedlichen Zahlen. Direkt nach dem Reset wurde als Einheit Wh angezeigt, dachte ich zumin. Gerade nochmal den Button gedrückt (2. Bild). Jetzt wird die Einheit in Wh angezeigt. Daher meine Vermutung, nach 999Wh wird auf kWh umgestellt und dabei aber die Kommastelle (Punkt) nicht richtig gesetzt.

HM3.jpg
Dateianhänge
HM4.jpg
HM4.jpg (21.98 KiB) 151 mal betrachtet

Benutzeravatar
Baxxy
Beiträge: 10789
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2208 Mal

Re: HM-ES-PMSw1-DR zeigt falsche Einheit an (Kommastelle falsch)

Beitrag von Baxxy » 21.01.2023, 13:02

Ok, aber ohne die Rohdaten (mein Script ausführen, siehe weiter oben) und das interne Script (systeminterne Programme anzeigen, das für den Aktor anhand der SN suchen und das Script rauskopieren) kommen wir nicht weiter.

Entweder das interne Script rechnet falsch, oder die Funktion in der WebUI (Ändern der Anzeige von Wh auf kWh) spinnt.

Benutzeravatar
robbi77
Beiträge: 13847
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 181 Mal
Danksagung erhalten: 738 Mal

Re: HM-ES-PMSw1-DR zeigt falsche Einheit an (Kommastelle falsch)

Beitrag von robbi77 » 21.01.2023, 13:04

Beide Werte identisch, nur bei der RM Zählung entweder Kommastelle (Punkt) falsch, oder falsche Einheit, kWh müsste eigentlich Wh sein.
721,98 und 757,70 sind für mich nicht identisch …

Visu
Beiträge: 507
Registriert: 04.12.2016, 23:30
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: HM-ES-PMSw1-DR zeigt falsche Einheit an (Kommastelle falsch)

Beitrag von Visu » 21.01.2023, 13:07

dein Skript:
Zähler Gerät: 4676.299995
Zähler SysVar_intern: 25.199997 Wh
Sollausgabe: Zähler SysVar_WebUI: 25.20 Wh
Zähler SysVar_old: 4676.299995

Internes Programm:
Name: prgEnergyCounter_22386_QEQ0798456:2

Code: Alles auswählen

object chn = dom.GetObject('22386');
object oBoot = chn.DPByControl('POWERMETER.BOOT');
object oEnergyCounter = chn.DPByControl('POWERMETER.ENERGY_COUNTER');
object oSysVarEnergyCounter = dom.GetObject('svEnergyCounter_22386_QEQ0798456:2');
object oSysVarEnergyCounterOldVal = dom.GetObject('svEnergyCounterOldVal_22386');
boolean bootFlag = oBoot.Value();
real devVal = oEnergyCounter.Value();
real devValMax = oEnergyCounter.ValueMax();
real oldDevVal = oSysVarEnergyCounterOldVal.Value();
real diffVal = 0.0;
real sysVarVal = oSysVarEnergyCounter.Value();
integer tmp_devVal = (devVal.ToString().ToFloat() * 100000).ToInteger();
integer tmp_oldDevVal = (oldDevVal.ToString().ToFloat() * 100000).ToInteger();
if (oldDevVal <= 0) {
oSysVarEnergyCounterOldVal.State(devVal);
oSysVarEnergyCounter.State(devVal);
} else {
if ( ( bootFlag == true ) && ( tmp_devVal < tmp_oldDevVal ) ) {
diffVal = devVal;
} else {
if (tmp_devVal >= tmp_oldDevVal) {
diffVal = devVal - oldDevVal;
}
if ((tmp_devVal > 0) && (tmp_devVal < tmp_oldDevVal)) {
diffVal = (devVal + devValMax) - oldDevVal;
}
}
if (devVal > 0) {
oSysVarEnergyCounterOldVal.State(devVal);
}
oSysVarEnergyCounter.State(sysVarVal + diffVal);
}

Zuletzt geändert von Visu am 21.01.2023, 13:10, insgesamt 1-mal geändert.

Antworten

Zurück zu „RaspberryMatic“