HM-ES-TX-WM - wieso 2 Zähler?
Moderatoren: jmaus, Co-Administratoren
-
- Beiträge: 972
- Registriert: 03.02.2014, 18:04
- Wohnort: Münsterland
- Hat sich bedankt: 27 Mal
- Danksagung erhalten: 8 Mal
HM-ES-TX-WM - wieso 2 Zähler?
Hallo zusammen,
ich schlage mich seit Monaten mit dem o.g. Gerät auseinandern; nun möchte ich es aber endlich mal nutzen können.
Ich habe das Gefühl, dass nicht richtig gezählt wird; daher meine erste Frage: Wieso hat das Gerät 2 Energiezähler?
* Energie-Zähler RaspMatic (welcher sich bei mir nicht updated; steht auf 4795.453 kWh)
* Energie-Zähler Gerät (steht aktuell auf 293440.00 Wh und wird regelmäßig höher)
Kann mir jemand sagen, wieso es zwei Zähler gibt?
Viele Grüße,
Christian
ich schlage mich seit Monaten mit dem o.g. Gerät auseinandern; nun möchte ich es aber endlich mal nutzen können.
Ich habe das Gefühl, dass nicht richtig gezählt wird; daher meine erste Frage: Wieso hat das Gerät 2 Energiezähler?
* Energie-Zähler RaspMatic (welcher sich bei mir nicht updated; steht auf 4795.453 kWh)
* Energie-Zähler Gerät (steht aktuell auf 293440.00 Wh und wird regelmäßig höher)
Kann mir jemand sagen, wieso es zwei Zähler gibt?
Viele Grüße,
Christian
Re: HM-ES-TX-WM - wieso 2 Zähler?
Der geratezähler ist im Sensor selbst. Er wird bei einem Batteriewechsel zurückgestellt. Der andere wird auf der Zentrale verwaltet und erhöht (über ein Programm, das beim anlernen erstellt wird)
-
- 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: HM-ES-TX-WM - wieso 2 Zähler?
Genauer über ein als systemintern gekennzeichnetes Programm, welches ein Script ausführt und die Zählerstände bei Übermittlung der Daten durch den Sensor schreibt. Dieses Programm wird beim Anlernen des Sensors automatisch erstellt.DrTob hat geschrieben:(über ein Programm, das beim anlernen erstellt wird)
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
-
- Beiträge: 3729
- Registriert: 23.09.2017, 12:04
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 119 Mal
Re: HM-ES-TX-WM - wieso 2 Zähler?
Guten Abend
Du kannst das o.g. automatisch erstellte "systeminterne" Programm gefahrlos auf "nicht systemintern" umstellen. Dann siehst Du es auch in Status / Bedienung Programme und dort den Zeitstempel, wann das Programm getriggert wird. So kannst Du fest stellen, ob das darin enthaltene Script überhaupt los läuft, wenn Daten vom Sensor gemeldet werden.
Falls es nicht funktioniert kann man den fehler suchen, oder das Gerät ablernen - Programm wird gelöscht und neu anlernen - Programm wird neu erstellt.
Du kannst das o.g. automatisch erstellte "systeminterne" Programm gefahrlos auf "nicht systemintern" umstellen. Dann siehst Du es auch in Status / Bedienung Programme und dort den Zeitstempel, wann das Programm getriggert wird. So kannst Du fest stellen, ob das darin enthaltene Script überhaupt los läuft, wenn Daten vom Sensor gemeldet werden.
Falls es nicht funktioniert kann man den fehler suchen, oder das Gerät ablernen - Programm wird gelöscht und neu anlernen - Programm wird neu erstellt.
-
- Beiträge: 972
- Registriert: 03.02.2014, 18:04
- Wohnort: Münsterland
- Hat sich bedankt: 27 Mal
- Danksagung erhalten: 8 Mal
Re: HM-ES-TX-WM - wieso 2 Zähler?
Ich habe mir die Werte anschaut, aber der Energie-Zähler RaspMatic ändert sich nicht mehr, während Energie-Zähler Gerät immer weiter zählt.DrTob hat geschrieben:Der geratezähler ist im Sensor selbst. Er wird bei einem Batteriewechsel zurückgestellt. Der andere wird auf der Zentrale verwaltet und erhöht (über ein Programm, das beim anlernen erstellt wird)
Die Programm werden ausgeführt (zumindest lt. Zeitstempel), aber offentsichtlich passiert nix; der Zähler bleibt ja stehen.NickHM hat geschrieben:Guten Abend
Du kannst das o.g. automatisch erstellte "systeminterne" Programm gefahrlos auf "nicht systemintern" umstellen. Dann siehst Du es auch in Status / Bedienung Programme und dort den Zeitstempel, wann das Programm getriggert wird. So kannst Du fest stellen, ob das darin enthaltene Script überhaupt los läuft, wenn Daten vom Sensor gemeldet werden.
Falls es nicht funktioniert kann man den fehler suchen, oder das Gerät ablernen - Programm wird gelöscht und neu anlernen - Programm wird neu erstellt.
Hat jemand eine Idee, was ich nun tun könnte? Hat jemand das systemintern Script, welches funktioniert? Dann könnte ich die Programm mal ergleichen. Die ist meins:
Danke und Gruß,
Christian
Code: Alles auswählen
object chn = dom.GetObject('3105');
object oBoot = chn.DPByControl('POWERMETER_IGL.BOOT');
object oEnergyCounter = chn.DPByControl('POWERMETER_IGL.ENERGY_COUNTER');
object oSysVarEnergyCounter = dom.GetObject('svEnergyCounter_3105_NEQ0861263:1');
object oSysVarEnergyCounterOldVal = dom.GetObject('svEnergyCounterOldVal_3105');
object oSysVarEnergyCounterResetPressed = dom.GetObject('svEnergyCounter_3105_NEQ0861263:1_RESET');
object oSysVarEnergyCounterTmpOldVal = dom.GetObject('svEnergyCounter_3105_NEQ0861263:1_TMP_OLDVAL');
object oSysVarEnergyCounterDeviceReset = dom.GetObject('svEnergyCounter_3105_NEQ0861263:1_DEVICE_RESET');
boolean bootFlag = oBoot.Value();
real devVal = oEnergyCounter.Value();
real devValMax = oEnergyCounter.ValueMax();
real oldDevVal = oSysVarEnergyCounterOldVal.Value();
real tmpOldDevVal = oSysVarEnergyCounterTmpOldVal.Value();
integer ioldDevVal = (tmpOldDevVal.ToString().ToFloat() * 100000).ToInteger();
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 ( oBoot.Value() == true ) {
oSysVarEnergyCounterDeviceReset.State(true);
if (ioldDevVal <= 0) {
oSysVarEnergyCounter.State(0);
}
} else {
boolean resetPressed = oSysVarEnergyCounterResetPressed.Value();
! boolean devReset = oSysVarEnergyCounterDeviceReset.Value();
if ( (resetPressed == true) && (oSysVarEnergyCounterDeviceReset.Value() == true) ) {
oSysVarEnergyCounterTmpOldVal.State(0);
tmpOldDevVal = 0;
}
!Normales Hochzaehlen. Geraetwert > vorheriger Wert
if ((tmp_devVal >= tmp_oldDevVal) && (oSysVarEnergyCounterDeviceReset.Value() == false)) {
if (resetPressed == false) {
diffVal = oEnergyCounter.Value() - oldDevVal;
} else {
!Reset pressed
diffVal = oEnergyCounter.Value() - tmpOldDevVal;
if ((diffVal.ToString().ToFloat() * 100000).ToInteger() < 0 ) {
diffVal = oEnergyCounter.Value();
}
oSysVarEnergyCounterResetPressed.State(0);
}
} else {
!Geraetewert ist kleiner vorheriger Wert
!Entweder Ueberlauf, oder Batterietausch
if (oSysVarEnergyCounterDeviceReset.Value() == false) {
!Normaler Geraeteueberlauf
if(tmp_devVal > 0) {
diffVal = (oEnergyCounter.Value() + devValMax) - oldDevVal;
}
} else {
!Zaehle Geraetewert zum CCU-Zaehler
diffVal = oEnergyCounter.Value();
if ((diffVal.ToString().ToFloat() * 100000).ToInteger() == 0) {
oSysVarEnergyCounterDeviceReset.State(true);
} else {
oSysVarEnergyCounterDeviceReset.State(false);
}
}
}
!Erhoehe den CCU-Zaehler
oSysVarEnergyCounter.State(sysVarVal + diffVal);
oSysVarEnergyCounterOldVal.State(oEnergyCounter.Value());
oSysVarEnergyCounterTmpOldVal.State(oEnergyCounter.Value());
}
-
- Beiträge: 972
- Registriert: 03.02.2014, 18:04
- Wohnort: Münsterland
- Hat sich bedankt: 27 Mal
- Danksagung erhalten: 8 Mal
Re: HM-ES-TX-WM - wieso 2 Zähler?
Ist das ein Bug in RaspMatic?Ich habe mir die Werte anschaut, aber der Energie-Zähler RaspMatic ändert sich nicht mehr, während Energie-Zähler Gerät immer weiter zählt.
- 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: HM-ES-TX-WM - wieso 2 Zähler?
das ist ein dummer effekt... ich hatte den vor ner weile auch. obwohl das programm schlüssig war tats das nicht.
der grund war übel versteckt in der funktion des energiezählers, ich habe mir in IOBroker die Datenpunkte mal angesehen und festgestellt, das aus irgendeinem Grund POWERMETER_IGL.BOOT auf true stand. und dann wird das programm schön und vrav getriggert,
mit
wird aber nix gezählt.
Ich habe die Bedingung getillt, nun tuts alles.
Black
der grund war übel versteckt in der funktion des energiezählers, ich habe mir in IOBroker die Datenpunkte mal angesehen und festgestellt, das aus irgendeinem Grund POWERMETER_IGL.BOOT auf true stand. und dann wird das programm schön und vrav getriggert,
mit
Code: Alles auswählen
if ( oBoot.Value() == true ) {
oSysVarEnergyCounterDeviceReset.State(true);
if (ioldDevVal <= 0) {
oSysVarEnergyCounter.State(0);
}
} else {
Ich habe die Bedingung getillt, nun tuts alles.
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
-
- Beiträge: 972
- Registriert: 03.02.2014, 18:04
- Wohnort: Münsterland
- Hat sich bedankt: 27 Mal
- Danksagung erhalten: 8 Mal
Re: HM-ES-TX-WM - wieso 2 Zähler?
Hallo Black,
erstmal vielen vielen Dank für deine Antwort. Da schöpfe ich ja wieder Hoffnung, doch noch alle laufen zu bekommen.
Nachdem ich den Code geändert habe auf:
wird zumindest etwas gezähtl.
Aber in der Zeit, in welcher der "Energie-Zähler Gerät" um 6 kWh gestiegen ist, ist der "Energie-Zähler Gerät" nur um gut kWh gestiegen.
Sind deine Werte konsistent?
erstmal vielen vielen Dank für deine Antwort. Da schöpfe ich ja wieder Hoffnung, doch noch alle laufen zu bekommen.
Nachdem ich den Code geändert habe auf:
Code: Alles auswählen
! fischmir; 28.05.2018
!if ( oBoot.Value() == true ) {
if ( false == true ) {
oSysVarEnergyCounterDeviceReset.State(true);
if (ioldDevVal <= 0) {
oSysVarEnergyCounter.State(0);
}
} else {
Aber in der Zeit, in welcher der "Energie-Zähler Gerät" um 6 kWh gestiegen ist, ist der "Energie-Zähler Gerät" nur um gut kWh gestiegen.
Sind deine Werte konsistent?
-
- Beiträge: 972
- Registriert: 03.02.2014, 18:04
- Wohnort: Münsterland
- Hat sich bedankt: 27 Mal
- Danksagung erhalten: 8 Mal
Re: HM-ES-TX-WM - wieso 2 Zähler?
Hmm...ich habe jetzt mal das Script auseinandergenommen und folgende Zeilen hinzugefügt, um die im Kopf definerten Variablen wieder auszugeben:
Meine Ausgabe sieht wie folgt aus:
Wie man sehen kann, haben die folgenden Variablen einen Wert, welcher nicht korrekt ist (https://de.wikipedia.org/wiki/2147483647):
Schauen wir es uns nochmal genauer an:
devVal ist 509200.000000 und als real abgespeichert. Bei der Umwandlung nach integer tmp_devVal scheint etwas schief zu gehen (siehe obrige Zeile), denn der entsprechende int-Wert ist anschließend 2147483647.
Also muss doch hier irgendwo ein Bug drin sein?
Code: Alles auswählen
!Ausgabe aller Werte
WriteLine("bootFlag:" # bootFlag);
WriteLine("devVal:" # devVal);
WriteLine("devValMax:" # devValMax);
WriteLine("oldDevVal:" # oldDevVal);
WriteLine("tmpOldDevVal:" # tmpOldDevVal);
WriteLine("ioldDevVal:" # ioldDevVal);
WriteLine("diffVal:" # diffVal);
WriteLine("sysVarVal:" # sysVarVal);
WriteLine("tmp_devVal:" # tmp_devVal);
WriteLine("tmp_oldDevVal:" # tmp_oldDevVal);
Code: Alles auswählen
bootFlag:false
devVal:509200.000000
devValMax:838860.699219
oldDevVal:509200.000000
tmpOldDevVal:509200.000000
ioldDevVal:2147483647
diffVal:0.000000
sysVarVal:4795266.700195
tmp_devVal:2147483647
tmp_oldDevVal:2147483647
Code: Alles auswählen
ioldDevVal
tmp_devVal
tmp_oldDevVal
Code: Alles auswählen
integer tmp_devVal = (devVal.ToString().ToFloat() * 100000).ToInteger();
Also muss doch hier irgendwo ein Bug drin sein?