Script aktualisiert nicht alle Werte

Wir haben für die Zählerauswertung ein einheitliches Script. dieses wird immer vom aufrufenden Script initialisiert. Es kommt jedoch vor das manchmal die Werte nicht aktualisiert werden. Wird dann das Script von Hand aufgerufen … klappt es wieder.
Gibt es irgend einen Trick wie ich ein Script dazu bewegen kann immer alle Werte zu aktualisieren?

Liegt an Zeile 15 in deinem Script.

Spaß beiseite, häng´s doch mal mit an, so ist es nur Raten.

  1. Script: wird bei Variablenänderung 33934 ausgeführt
    *noch einmal… wenn ich das Script von Hand aufrufe werden alle Variablen aktualisiert. Bein der Ausführung via Triger werden nur einige aktualisiert.

<?
$counter_old_ID = 38967/*[Zaehlerschrank_01_Building_03\DS2438\UV2\counter_alt]*/ ;
$counter_diff_ID = 33691 /*[Zaehlerschrank_01_Building_03\Counter 3-4\Envia\counter_diff]*/ ;
$counter_ID = 33934 /*[Zaehlerschrank_01_Building_03\Counter 3-4\Envia]*/;
$zaehler_tagesleistung_ID = 55378 /*[Zaehlerschrank_01_Building_03\Counter 3-4\Envia\Zähler Tagesleistung]*/;
$zaehler_monatsleistung_ID = 25885 /*[Zaehlerschrank_01_Building_03\Counter 3-4\Envia\Zähler Monatsleistung]*/;
$aktueller_verbrauch_kW_ID = 36958 /*[Zaehlerschrank_01_Building_03\Counter 3-4\Envia\Aktueller Verbrauch kW]*/;
$tagesverbrauch_kwh = 55252 /*[Zaehlerschrank_01_Building_03\Counter 3-4\Envia\Tagesverbrauch kW/h]*/;
$monatsverbrauch_kwh = 18557 /*[Zaehlerschrank_01_Building_03\Counter 3-4\Envia\Monatsverbrauch kW/h]*/;

$Zaehlerfaktor = 0.02; //Digitaler Stomzähler 1000 Impulse = 1KW *5 , kleinste Einheit = 5W

includeScript(56748 /*[sonstiges\Auswertung Stromzähler]*/);

function includeScript($scriptID)
{ $s = IPS_GetScript($scriptID);
 include($s['ScriptFile']);
}
?>

…und hier das Include Script


<?
//Stromverbrauch
//Digitaler Stomzähler 1000 Impulse = 1KW
//$Zaehlerfaktor = 0.00125 ;  //Digitaler Stomzähler 800 Impulse = 1KW, kleinste Einheit = 1,25W
//$Zaehlerfaktor = 0.001;			//Digitaler Stomzähler 1000 Impulse = 1KW, kleinste Einheit = 1W
//$Zaehlerfaktor = 0.001;			//Digitaler Stomzähler 1000 Impulse = 1KW *5 , kleinste Einheit = 5W
$Auslesefaktor = 60;       	// 1min = 60, 2min = 30, 5min = 12, 10min = 6

//define global variables
global $counter_old_ID;
global $counter_diff_ID;
global $counter_ID;
global $zaehler_tagesleistung_ID;
global $zaehler_monatsleistung_ID;
global $aktueller_verbrauch_kW_ID;
global $tagesverbrauch_kwh;
global $monatsverbrauch_kwh;
global $Zaehlerfaktor;

//Aktuelle Leistung
//**********************************************************************
$counter_neu = GetValueInteger($counter_ID);			// aktueller Zaehlerstand (Zähler 1) einlesen
$counter_alt = GetValueInteger($counter_old_ID);  	//alten Zählerwert auslesen
$delta = $counter_neu - $counter_alt;     			//alter Wert von neuen Wert abziehen
SetValueInteger($counter_old_ID , $counter_neu );  //aktueller Zählerwert ablegen
SetValueInteger($counter_diff_ID, $delta );        //Ausgabe Differenz zwischen alt und aktuell

//Berechung Verbrauch
//**********************************************************************
$deltaKWh = ($delta * $Zaehlerfaktor) * $Auslesefaktor  ;     // Verbrauch Impulse = 1KW * Faktor der Auslesung
if ($deltaKWh < 1000) //Wenn die aktuelle Leistung kleiner als 5KW, dann Ausgabe Freigabe für Anzeige
   {
  $round_deltaKWh = round ($deltaKWh, 3);   // auf 2 Stellen runden
  SetValueFloat($aktueller_verbrauch_kW_ID/*[Zaehlerschrank_01_Building_03\DS2438\UV1\Aktueller Verbrauch kW]*/ , $round_deltaKWh);   // Ausgabe Stromeinspeisung pro Std.
 }
//Tagesleistung
//**********************************************************************
//Aufaddieren Summe Tag, Integer
//****************************************************************
  $Solar_Tagesleistung = GetValueInteger($zaehler_tagesleistung_ID  );  //Solar Tagesleistung Summe einlesen
  $Solar_Tagesleistung_neu = $Solar_Tagesleistung + $delta;  //neue Tagesleistung berechnen
  SetValueInteger($zaehler_tagesleistung_ID  , $Solar_Tagesleistung_neu);
//Monatsleistung
//**********************************************************************
//Aufaddieren Summe Monat, Integer
//****************************************************************
  $Solarstrom_Mon_Summe = GetValueInteger($zaehler_monatsleistung_ID   );
  $Solarstrom_Mon_Summe_neu = $Solarstrom_Mon_Summe + $delta ;
  SetValueInteger($zaehler_monatsleistung_ID   , $Solarstrom_Mon_Summe_neu);  //

if ($deltaKWh < 8.0) //Wenn die aktuelle Leistung kleiner als 35KW, Werte zur Tages- und Monatsleistung dazu zählen
   {
  //Anzeige Tagesleistung
  //*************************************************************
  $Solar_Tagesleistung_KW = $Solar_Tagesleistung_neu * $Zaehlerfaktor;  
  $Round_Solar_Tagesleistung = round ($Solar_Tagesleistung_KW, 2);     // auf 2 Stellen runden
  SetValueFloat ($tagesverbrauch_kwh   , $Round_Solar_Tagesleistung);

  //Anzeige Monatswerte
  //*************************************************************
  $Solarstrom_Mon_Summe_neu_1 = $Solarstrom_Mon_Summe_neu * $Zaehlerfaktor;
  $Round_Solarstrom_Mon_Summe_neu_1 = round ($Solarstrom_Mon_Summe_neu_1, 2);     // auf 2 Stellen runden
   SetValueFloat ( $monatsverbrauch_kwh  , $Round_Solarstrom_Mon_Summe_neu_1);
 }
else
 {
 }
?>

Als Ref: War ein kleiner Fehler im Skript und kein IP-Symcon Bug :loveips:

paresy