Homematic Gaszähler HM-ES-TX-WM

Hallo,

danke für die Info. Da hat sich beim Ändern der Variablen doch glatt ein Fehler eingeschlichen, sorry. Es fehlte eine ELSE Anweisung, Zeile 20-23.

<? 

$Wertzuletzt = GetValue(21728 /*Variable für den letzten Zählerstand*/); 
$Wertaktuell= GetValue(21797 /*HM-Gaszähler*/); 
$Zaehlerstand = GetValue(44229 /*Variable für den Gesamtzählerstand*/); 
$letzteAktualisierung = GetValue(14663 /*Variable für den Zeitpunkt der letzten Aktualisierung*/); 


if($Wertaktuell < $Wertzuletzt) /* Wenn der aktuelle Zählerstand kleiner als der letzte ist */ 
{ 
 if($Wertzuletzt > 8388600) /* Wenn der Zählerstand grösser als 8388600 ist, wurde der maximale Zählerwert überschritten */ 
 { 
  $Delta = $Wertheute+8388608-$Wertzuletzt; /* den Zählerstand nach dem Überschreiten des Maximalwertes berechnen */ 
 } 
 else 
 { 
  $Dealta = $Wertheute; /* Wenn der aktuelle Zählerstand kleiner als der letzte ist und das zurücksetzen vor 8388600 war, wurde der Zähler z.B. durch einen Batterietausch zurückgesetzt */ 
 } 
} 
else
{
$Delta = $Wertaktuell-$Wertzuletzt;
}

$Zaehlerstand=$Zaehlerstand+$Delta; 

/* Berechnung der Zeit zwischen den letzten beiden Aktualisierungen */ 
$Variable=IPS_GetVariable(21797 /*HM-Gaszähler*/); 
$Aktualisierung=$Variable["VariableUpdated"]; 
$DeltaTime=$Aktualisierung-$letzteAktualisierung; 

/* aktuellen Verbauch berechnen */ 
$Verbrauch=3600*$Delta/$DeltaTime; 

/* Werte in die Variablen schreiben */ 
SetValue(44229 /*Variable für den Gesamtzählerstand*/,$Zaehlerstand); 
SetValue(21728 /*Variable für den letzten Zählerstand*/,$Wertheute); 
SetValue(14663 /*Variable für den Zeitpunkt der letzten Aktualisierung*/,$Aktualisierung); 
SetValue(28672 /*Variable für den aktuellen Verbrauch*/,$Verbrauch); 
?>

lg, Andy

Vielen Dank für deine Antwort, der Fehler mit der Undefinierten Variable „Delta“ ist jetzt weg. Doch wird mir immer noch der Fehler ausgespuckt das Variable „Wertheute“ undefiniert sei. Auch ist des derzeit so das der komplette Energie_Counter Wert auf den Gesamtzähler addiert wird. Die Variable Zählerstand wird jedesmal auf Null gesetzt. Auch kommt beim aktuellen Verbrauch ein falscher Wert zustande!
Ich häng mal 2 Screenshots an wo man erkennen kann das der Gesamtzählerstand mit dem Energy-Counter addiert wird.



Irgendetwas scheint noch nicht richtig zu sein und meine PHP Kenntnisse reichen nicht aus um den Fehler selbstständig zu finden.

Dann nimm doch lieber das PHP-Modul. Ist vielleicht einfacher:
[Modul] Homematic Extended (Systemvariablen, Programme, Powermeter, u.v.m.)
Michael

Das würde ich sofort machen nur macht der Energie Zähler der CCU2 nicht das was er soll, ich bisher 3 mal die Batterien Tauschen müssen am Sender (weil leer), und 2 mal ist es vorgekommen das der Zähler der CCU2 nicht weiter gezählt hat. Erst gestern als ich die Batterien wieder getauscht hatte, Zählte er weiter. Auch stört es mich hier das ich hier nicht den Aktuellen realen Wert des Stromzählers setzten kann, auf den dann hochgerechnet werden kann.

Das Script hier wäre schon eine coole Lösung!

Hallo,

so ich hoffe, diesmal hab ich beim Anpassen der Variablen nichts übersehen (mal sollte das halt auch nicht schnell so neben der Arbeit machen :wink: )

<?  

$Wertzuletzt = GetValue(21728 /*Variable für den letzten Zählerstand*/);  
$Wertaktuell = GetValue(21797 /*HM-Gaszähler*/);  
$Zaehlerstand = GetValue(44229 /*Variable für den Gesamtzählerstand*/);  
$letzteAktualisierung = GetValue(14663 /*Variable für den Zeitpunkt der letzten Aktualisierung*/);  


if($Wertaktuell < $Wertzuletzt) /* Wenn der aktuelle Zählerstand kleiner als der letzte ist */  
{  
 if($Wertzuletzt > 8388600) /* Wenn der Zählerstand grösser als 8388600 ist, wurde der maximale Zählerwert überschritten */  
 {  
  $Delta = $Wertaktuell+8388608-$Wertzuletzt; /* den Zählerstand nach dem Überschreiten des Maximalwertes berechnen */  
 }  
 else  
 {  
  $Dealta = $Wertaktuell; /* Wenn der aktuelle Zählerstand kleiner als der letzte ist und das zurücksetzen vor 8388600 war, wurde der Zähler z.B. durch einen Batterietausch zurückgesetzt */  
 }  
}  
else 
{ 
$Delta = $Wertaktuell-$Wertzuletzt; 
} 

$Zaehlerstand=$Zaehlerstand+$Delta;  

/* Berechnung der Zeit zwischen den letzten beiden Aktualisierungen */  
$Variable=IPS_GetVariable(21797 /*HM-Gaszähler*/);  
$Aktualisierung=$Variable["VariableUpdated"];  
$DeltaTime=$Aktualisierung-$letzteAktualisierung;  

/* aktuellen Verbauch berechnen */  
$Verbrauch=3600*$Delta/$DeltaTime;  

/* Werte in die Variablen schreiben */  
SetValue(44229 /*Variable für den Gesamtzählerstand*/,$Zaehlerstand);  
SetValue(21728 /*Variable für den letzten Zählerstand*/,$Wertaktuell);  
SetValue(14663 /*Variable für den Zeitpunkt der letzten Aktualisierung*/,$Aktualisierung);  
SetValue(28672 /*Variable für den aktuellen Verbrauch*/,$Verbrauch);  
?>

lg, Andy

Auf die schnelle geguckt: wo definierst Du „$Wertheute“?
Evtl. läuft auch die erste IF-Abfrage ins Leere - dann wird $Delta nicht erzeugt. Vielleicht am Anfang $Delta = 0 hinzufügen. Dann gibt es die Variable zumindest. Wenn $Delta dann 0 bleibt, greift die erste If-Abfrage nicht - die hat keinen „else“-Teil.

Gruß,

Uwe

Hallo,

$Wertheute sollte eigentlich $Wertaktuell heissen, hatte nur ein altes Script in der Fa. und beim Ersetzen hab ich scheinbar ein paar Variablen übersehen.

lg, Andy

PS: das mit if stimmt, aber in der aktuellen Version ist ein else drinnen die das Abfängt.

Hallo zusammen, könnte ich evtl.als unerfahrener USer eine exakte Schritt für Schritt anleitung bekommen, um den Gaszähler vernünfitig anzeigen zu lassen? Eigentlich möchte ich ja nur den bisherigen Wert des Verbrauchs dem ab jetzt gezählen Wert zu addieren. Quasi, Wert XXXXX + dem ab jetzt gezählten, steigenden Wert

VG
Heuser