+ Antworten
Seite 2 von 2 ErsteErste 1 2
Ergebnis 11 bis 19 von 19
  1. #11
    Registriert seit
    Sep 2008
    Ort
    nr KS
    Beiträge
    1,926

    So die Fehlermeldungen in den Zeilen die bei mir "angemeckert" wurden habe ich weg bekommen.
    erzähl doch mal wie !
    IP-Symcon Version: 5.3 unlim auf WIN7pro
    Shuttle XS35V4,HPSlate21,IPS-868,HM,HMip,FS20,piVCCU3,Silex4000,IPcams, FB 7850, TM-D710GE(GPS), Raspi3, Libratone
    Software für VDE / Gebäude Doku

  2. #12
    Registriert seit
    Jul 2005
    Ort
    Schwanewede/Niedersachsen
    Beiträge
    1,838

    Ich habe, Beispielhaft, vor
    PHP-Code:
    $StatisticValues[$key-1
    ein
    PHP-Code:
    (int) 
    gesetzt.

    die ganze Zeile sieht jetzt so aus:
    PHP-Code:
        $StatisticValues[$key]['Verbrauch_cum']                        = sprintf("%.1f"round($Values['Avg'] * SCALEFACTOR + (int)$StatisticValues[$key-1]['Verbrauch_cum'], 2)); 
    Das an all den Zeilen die mir angezeigt wurden.

    Wie geschrieben sind die Fehlermeldungen jetzt weg, läuft aber immer noch nicht richtig.
    Gruss
    Horst

    IP-Symcon 5.0 IPS-868, FS20, HM, HUE, Plugwise

  3. #13
    Registriert seit
    May 2013
    Beiträge
    57

    Hallo zusammen,

    also bei mir funktioniert es jetzt wieder einigermaßen. Ich habe dieses Skript laufen lassen: RS EF Kostenmanager. Dabei gibt es eine Menge Fehlermeldungen. Insbesondere kommen immer wieder neue hinzu, wenn man alte Fehler behoben hat. In den fehlerhaften Zeilen habe ich jeweils wie oben beschrieben (float) hinzugefügt. Insgesamt musste ich in folgenden Zeilen Änderungen machen (70, 86, 88, 90, 92, 96, 210, 222, 249, 274, 275, 276, 278, 301, 307, 312, 313, 314, 315).

    Außerdem musste in folgendem Skript noch ein (Float) - Zeile 572 - hinzugefügt werden: RS EF Cora Functions.

    Anmerkung: Ich hatte auch erst überall (int) hinzgefügt, jedoch hat das Skript dann nicht mehr die Forecast Werte angezeigt. Erst als ich im letzten Skript (int) in (float) geändert habe, hat es funktioniert. Leider werden die Verbrauchswerte in Euro nur noch gerundet angegeben und nicht mehr 56,45 Euro zum Beispiel. Aber das ist für mich ok...

    Hoffe bei Euch klappt das auch so.

    Viele Grüße,
    Kai

  4. #14
    Registriert seit
    Jul 2005
    Ort
    Schwanewede/Niedersachsen
    Beiträge
    1,838

    Hallo Kai,

    kannst Du mir mal die Scripte senden, damit ich sie Zeilenweise vergleichen kann.
    Gruss
    Horst

    IP-Symcon 5.0 IPS-868, FS20, HM, HUE, Plugwise

  5. #15
    Registriert seit
    May 2013
    Beiträge
    57

    Hi,

    klar kann ich machen... Das ist das RS Energy Forecast: Core Functions Skript:

    PHP-Code:
    <?
     
    ##### Project Exporter Comment: Script Version Stand 27.04.2014 17:25 #####


    /* +++++++++++++++++++++++++ RS Energy Forecast: Core Functions ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        * beinhaltet die wichtigsten, projektinternen Deklarationen (ausser userspezifische Deklarationen)
        * saugt Rohdaten aus der IPS-DB und führt eine Vorverdichtung der Rohdaten durch
        * stellt alle Basisdaten-Arrays für nachfolgende Scripte bereit
        * included das User-Config Script
        * wird benötigt vom Script "Kostenmanager", "RS Energy Forecast DataReader" und "Jahresforecast cum"
       +++++++++++++++++++++++++ RS Energy Forecast: Core Functions ++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

    // Chart-Deklarationen
        
    $HC_Credits_text                                               'RS Energy Forecast';
       
    $HC_Credits_href                                               'http://www.raketenschnecke.net/rs-projekte/rs-ips-energy-forecast/';

    // include User-Config Script
        
    include '24469 /*[RS Energy Forecast (Gas)\Config\User-Config V1.5]*/.ips.php';

    // Plausicheck Startdatum, nur Prüfung auf Anzahl Zeichen im String!
        
    if(strlen($thisStartTime) != 6)
        {
           
    IPS_LogMessage("RS Energy Forecast""Startdatum in Config-Script hat falsches Format (aktueller Wert: $thisStartTime, korrekte Syntax: '00.00.')");
           exit; 
    // => Scriptabbruch mit Fehler-Markierung
        
    }

    // Deklarationen
        
    $HTML_Variable_ID                                                          50962 /*[RS Energy Forecast (Gas)\Ergebnisse\Vertragskosten]*/ ;
        
    $Forecast_Var_ID                                                              40518 /*[RS Energy Forecast (Gas)\Ergebnisse\ForeCast Werte\Forecast heute]*/ ;
        
    $Abweichung_Var_ID                                                           26525 /*[RS Energy Forecast (Gas)\Ergebnisse\ForeCast Werte\Forecast heute (% vom Ø)]*/ ;
        
    $thisWeek_ID                                                                10899 /*[RS Energy Forecast (Gas)\Ergebnisse\Kalenderjahr\akt. Woche]*/;
        
    $thisMonth_ID                                                               25579 /*[RS Energy Forecast (Gas)\Ergebnisse\Kalenderjahr\akt. Monat]*/;
        
    $thisYear_ID                                                                36461 /*[RS Energy Forecast (Gas)\Ergebnisse\Kalenderjahr\akt. Periode]*/;
        
    $HTML_Box_ID                                                                10498 /*[RS Energy Forecast (Gas)\Ergebnisse\Statistik HTML-Box]*/ ;

        
    define("ersterAberechnungsmonat"$thisStartTime);
        
    define("letzterAberechnungsmonat"$thisEndTime);
        
    define("Grundpreis"$Grundpreis);
        
    define("AC_HANDLER_ID"IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0]);
        
    define("UNIT"$Unit);
        
    define("SCALEFACTOR"$ScaleFactor);

    // Style-Einstellungen
        
    if($Design == "Web")
        {
           
    // IPS-Web Design
            
    $yesterdayAvg                                                          '#777777';
            
    $HourAvg                                                               '#555555';
            
    $yet                                                                   '#FF7B00';
            
    $FC_today                                                              '#E5AC00';
            
    $CSS                                                                   'rs_net.js';                // Angabe, welche HighChart CSS-Konfig genommen werden soll(rs_net.js oder ips.js)
            
    $colFrame                                                              0;
            
    $borderWidth                                                           0;
            
    $LabelColor                                                            '#333333';
        }
        elseif(
    $Design == "WFE")
        {
           
    // IPS WFE-Design
           
    $yesterdayAvg                                                          'rgba(255,123,0, 0.6)';     // Farbe für Graphen mit Daten aus der Vergangenheit (gestern, Vorperiode)
           
    $DayAvg_last                                                           'rgba(255,123,0, 0.6)';
            
    $HourAvg                                                               'rgba(50,50,50, 0.7)';
            
    $DayAvg_act                                                            'rgba(255,255,255, 1)';
            
    $yet                                                                   'rgba(255,255,255, 0.7)';
            
    $FC_today                                                              'rgba(120,120,120, 0.9)';
            
    $CSS                                                                   'ips.js';                   // Angabe, welche HighChart CSS-Konfig genommen werden soll(rs_net.js oder ips.js)
            
    $colFrame                                                              1;
            
    $borderWidth                                                           1;                          // Rahmenbreite für Columns in HighCharts
            
    $LabelColor                                                            '#ABABAB';
        }

    // ++++++++++ Vorberechnungen ++++++++++++++++++++++++++++++++++++++++++++++++++


    // Start- und Endzeitpunkt der bertrachteten Periode berechnen
        
    $Start_Tag                                                                   = (int)substr(ersterAberechnungsmonat02);
        
    $Start_Monat                                                                 = (int)substr(ersterAberechnungsmonat32);
        
    $Start_Jahr                                                                  date("Y"time());
        
    $End_Tag                                                                       = (int)substr(letzterAberechnungsmonat02);
        
    $End_Monat                                                                     = (int)substr(letzterAberechnungsmonat32);
        
    $End_Jahr                                                                      date("Y"time());

    // Start- und EndJahr aus Info holen
        
    $Info_StartEnd                                                 IPS_GetObject(26493 /*[RS Energy Forecast (Gas)\Core\RS EF Core Functions]*/ )['ObjectInfo'];

        if(
    $Info_StartEnd == "")
        {
           
    // Start- und EndJahr Info nicht vorhanden
            
    if(mktime(0,0,0,$Start_Monat,$Start_Tag) > mktime(0,0,0,date("m"),date("d")))
            {
               
    // Startjahr = aktuelles Jahr - 1
               
    $Start_Jahr                                                           $Start_Jahr 1;
            }

            
    // End-Jahr ermitteln
            
    if(mktime(0,0,0,$Start_Monat,$Start_Tag) <= mktime(0,0,0,date("m"),date("d")))
            {
                if(
    mktime(0,0,0,$End_Monat,$End_Tag) > mktime(0,0,0,date("m"),date("d")))
                {
                   
    // 1. Fall: Laufzeit <= 1 Jahr / 01.01. - 31.12
                   
    $End_Jahr                                                           date("Y"mktime(0,0,0,$End_Monat,$End_Tag$Start_Jahr));
                }
                else
                {
                   
    // 2. Fall: Laufzeit > 1 Jahr (StarttagMonat < jetzt)
                    
    $End_Jahr                                                           date("Y"time()) + 1;
                }
            }
            else
            {
               
    // 3. Fall: Laufzeit > 1 Jahr (StartTagMonat > jetzt, EndTagMonat < jetzt)
               
    $End_Jahr                                                               date("Y"mktime(0,0,0,$End_Monat,$End_Tagdate("Y"time())));
            }
            
    //echo "if: StartJahr: $Start_Jahr, EndJahr: $End_Jahr\n";

           // Start- und Endjahr des Vertrages setzen
           
    IPS_SetInfo(26493 /*[RS Energy Forecast (Gas)\Core\RS EF Core Functions]*/"Start:".$Start_Jahr."-Ende:".$End_Jahr);
        }
        else
        {
           
    // Start- und EndJahr Info vorhanden
           
    $Start_Jahr                                                 explode(":"explode("-"$Info_StartEnd)[0])[1];
           
    $End_Jahr                                                                   explode(":"explode("-"$Info_StartEnd)[1])[1];

           
    //echo "else 1: StartJahr: $Start_Tag.$Start_Monat.$Start_Jahr, EndJahr: $End_Tag.$End_Monat.$End_Jahr\n";

           // Prüfung, ob Start- und EndJahr Info gelöscht werden muss
           
    if (time() > mktime(23,59,59,$End_Monat,$End_Tag,$End_Jahr))
           {
              
    //echo "else 2: lösche Info\n";
              // Start- und EndJahr Info löschen
              
    IPS_SetInfo(26493 /*[RS Energy Forecast (Gas)\Core\RS EF Core Functions]*/"");

              
    // Start- und EndJahr Info neu definieren
                
    if(mktime(0,0,0,$Start_Monat,$Start_Tag) > mktime(0,0,0,date("m"),date("d")))
                {
                   
    // Startjahr = aktuelles Jahr - 1
                   
    $Start_Jahr                                                           $Start_Jahr 1;
                }

                
    // End-Jahr ermitteln
                
    if(mktime(0,0,0,$Start_Monat,$Start_Tag) <= mktime(0,0,0,date("m"),date("d")))
                {
                    if(
    mktime(0,0,0,$End_Monat,$End_Tag) > mktime(0,0,0,date("m"),date("d")))
                    {
                       
    // 1. Fall: Laufzeit <= 1 Jahr / 01.01. - 31.12
                       
    $End_Jahr                                                           date("Y"mktime(0,0,0,$End_Monat,$End_Tag$Start_Jahr));
                    }
                    else
                    {
                       
    // 2. Fall: Laufzeit > 1 Jahr (StarttagMonat < jetzt)
                        
    $End_Jahr                                                           date("Y"time()) + 1;
                    }
                }
                else
                {
                   
    // 3. Fall: Laufzeit > 1 Jahr (StartTagMonat > jetzt, EndTagMonat < jetzt)
                   
    $End_Jahr                                                               date("Y"mktime(0,0,0,$End_Monat,$End_Tagdate("Y"time())));
                }
              
    //echo "else 2: StartJahr: $Start_Jahr, EndJahr: $End_Jahr\n";
           
    }
        }


    // Vertragsstart- und Ende dglobal verfügbar machen
       
    $StatisticValues                                                           = array();
       
    $StartDatum                                                                  mktime(0,0,0,$Start_Monat$Start_Tag$Start_Jahr);
        
    $EndDatum                                                                  mktime(23,59,59,$End_Monat$End_Tag$End_Jahr);
        
    define("VertragsStartDatum"$StartDatum);
        
    define("VertragsEndeDatum"$EndDatum);
        
    // Debug
        //    echo "Start:".date("d.m.Y", VertragsStartDatum).", Ende:".date("d.m.Y", VertragsEndeDatum)."\n";

    // Betrachtungszeitraum ermitteln
       
    $StartTime                              explode('.'$thisStartTime);
        if(((int)
    $StartTime[0] == 1) && ((int)$StartTime[1] == 1))
        {
           
    // Kalenderjahr
           
    define("PERIODENTYP"'Kalenderjahr');
           
    IPS_SetName(27966 /*[RS Energy Forecast (Gas)\WFE\Links\Forecast\Kalenderjahr]*/ PERIODENTYP);
           
    IPS_SetName(47096 /*[RS Energy Forecast (Gas)\Ergebnisse\Kalenderjahr]*/ PERIODENTYP);
           
    IPS_SetName(19544 /*[RS Energy Forecast (Gas)\Ergebnisse\Kalenderjahr (kumuliert)]*/  PERIODENTYP." (kumuliert)");
           
    IPS_SetName(22812 /*[RS Energy Forecast (Gas)\Ergebnisse\Kalenderjahr (monatlich)]*/  PERIODENTYP." (monatlich)");
           
    IPS_SetName(52149 /*[RS Energy Forecast (Gas)\WFE\Links\Ist (bis jetzt)\akt. Kalenderjahr]*/  'akt. '.PERIODENTYP);
        }
        else
        {
           
    define("PERIODENTYP"'Abrechnungsperiode');
           
    IPS_SetName(27966 /*[RS Energy Forecast (Gas)\WFE\Links\Forecast\Kalenderjahr]*/ PERIODENTYP);
           
    IPS_SetName(47096 /*[RS Energy Forecast (Gas)\Ergebnisse\Kalenderjahr]*/ PERIODENTYP);
           
    IPS_SetName(19544 /*[RS Energy Forecast (Gas)\Ergebnisse\Kalenderjahr (kumuliert)]*/  PERIODENTYP." (kumuliert)");
           
    IPS_SetName(22812 /*[RS Energy Forecast (Gas)\Ergebnisse\Kalenderjahr (monatlich)]*/  PERIODENTYP." (monatlich)");
           
    IPS_SetName(52149 /*[RS Energy Forecast (Gas)\WFE\Links\Ist (bis jetzt)\akt. Kalenderjahr]*/  'akt. '.PERIODENTYP);
        }

    // Ist-Tageswerte für Vorperiode aus DB holen
        
    $ts                                                                  mktime(0,0,0,$Start_Monat$Start_Tag$Start_Jahr 1);
        
    $te                                                                  mktime(23,59,59,$End_Monat$End_Tag$End_Jahr 1);
        
    $Vorperiode_Daily                                                           AC_GetAggregatedValues(AC_HANDLER_ID$EV_Zentral1$ts$te2000);


    // Weiterverarbeitung Daten Vorperiode (nur dann, wenn min. 120 Tageswerte vorhanden sind)
       
    $VP_Data_Month                                                             = array();
       
    $RS_Cnt                                                              count($Vorperiode_Daily);
       
    $VP_Daily_Avg                                                                 0;                             // arithmet. Tagesdurchschnitt Vorperiode
       
    $VP_Stabw_Raw                                                        = Array();

        if(
    count($Vorperiode_Daily) > 120)
        {
            
    // Ist-Tageswerte Vorperiode auf Monatswerte verdichten
           
    foreach($Vorperiode_Daily as $key=>$rs)
           {
              
    $Ist_m_key                                                       date("n",$rs['TimeStamp']);
              
    $Ist_Y_key                                                       date("Y",$rs['TimeStamp']);
              
    $VP_key                                                     $Ist_Y_key.$Ist_m_key;
              if(!isset(
    $VP_Data_Month[$VP_key]['Value']))
              {
                 
    $Month_Day_Cnt                                                1;
                  
    $VP_Data_Month[$VP_key]['Value']                                 = $rs['Avg'];
                  
    $VP_Data_Month[$VP_key]['TimeStamp']                            = mktime(0,0,0,$Ist_m_key,1,$Ist_Y_key 1);
                  
    $VP_Data_Month[$VP_key]['human_TS']                            = date("H:i:s, d.m.Y"$VP_Data_Month[$VP_key]['TimeStamp']);
                }
              else
              {
                 
    $Month_Day_Cnt++;
                  
    $VP_Data_Month[$VP_key]['Value']                                 += $rs['Avg'];
              }
              
    $VP_Data_Month[$VP_key]['Avg']                                         = $VP_Data_Month[$VP_key]['Value']/$Month_Day_Cnt;
                
    // Summe für Tagesdurchschnitt gesamt
                
    $VP_Daily_Avg                                               $VP_Daily_Avg $rs['Avg'];
                
    // Rohdatenarray für Standardabeichung
                
    $VP_Stabw_Raw[]                                             = $rs['Avg'];
           }
           unset(
    $Month_Day_Cnt);
           
    $VP_Monthly                                                          array_reverse($VP_Data_Month);

           
    // arithmet. Tagesdurchschnitt Vorperiode
           
    $VP_Daily_Avg                                                        $VP_Daily_Avg $RS_Cnt;
           
    $VP_Stabw                                                            stabw($VP_Stabw_Raw);
        }
        else
        {
           
    IPS_LogMessage("RS Energy Forecast""Datenverarbeitung Vorperiode abgebrochen: zu kleiner Datenbestand (nur ".count($Vorperiode_Daily)." Tage gefunden, erforderlich sind >120 Tage)");
        }

    // Ist-Tageswerte für aktuelle Periode bis gestern aus DB holen
        
    $EndDatum                                                                       mktime(23,59,59,date("m"), date("d") - 1date("Y"));
        
    $Raw_Gesamt_Tageswerte                                                       AC_GetAggregatedValues(AC_HANDLER_ID$EV_Zentral1VertragsStartDatum$EndDatum1000);
       
    $Gesamt_Tageswerte                                                           array_reverse($Raw_Gesamt_Tageswerte);

       foreach(
    $Gesamt_Tageswerte as $key=>$rs)
        {
           
    $Gesamt_Tageswerte[$key]['humanDate']                       = date("d.m.Y H:i:s"$Gesamt_Tageswerte[$key]['TimeStamp']);
        }

    // Tages-Istwerte auf Montatswerte verdichten
       
    $EnergyValues                                                                 = array();
       
    $RS_Cnt                                                              count($Gesamt_Tageswerte);
       
    $actP_Daily_Avg                                                             0;                             // arithmet. Tagesdurchschnitt akt. Periode
       
    $actP_Stabw_Raw                                                      = Array();

       foreach(
    $Gesamt_Tageswerte as $key=>$rs)
       {
          
    $Ist_m_key                                                       date("n",$rs['TimeStamp']);
          
    $Ist_Y_key                                                       date("Y",$rs['TimeStamp']);
          
    $Ist_Ym_key                                                       $Ist_Y_key.$Ist_m_key;
          if(!isset(
    $EnergyValues[$Ist_Ym_key]['Avg']))
          {
             
    $Month_Day_Cnt                                                1;
              
    $EnergyValues[$Ist_Ym_key]['Avg']                                 = $rs['Avg'];
              
    $EnergyValues[$Ist_Ym_key]['TimeStamp']                        = mktime(0,0,0,$Ist_m_key,1,$Ist_Y_key);
              
    $EnergyValues[$Ist_Ym_key]['human_TS']                        = date("H:i:s, d.m.Y"$EnergyValues[$Ist_Ym_key]['TimeStamp']);
          }
          else
          {
             
    $Month_Day_Cnt++;
              
    $EnergyValues[$Ist_Ym_key]['Avg']                                 += $rs['Avg'];
          }
          
    $EnergyValues[$Ist_Ym_key]['Daily_Avg']                             = $EnergyValues[$Ist_Ym_key]['Avg'] / $Month_Day_Cnt;

       }
        
    $StatisticValues                                                                array_slice($EnergyValues0);
        
    //print_r($StatisticValues);


    // Berechnung des Medians pro Wochentag +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    // Median-Rohdaten aus DB holen
       
    $Median_StartDatum                                                            mktime(0,0,0date("m"), date("d") - ($Weeks 7), date("Y"));
        
    $Median_EndDatum                                                                mktime(0,0,0date("m"), date("d") - 1date("Y"));
        
    $Median_RawData                                                                AC_GetAggregatedValues(AC_HANDLER_ID$EV_Zentral1$Median_StartDatum$Median_EndDatum, ($Weeks 7) + 1);

        
    // Prüfung Datenmenge 1h Durchschnittswerte der verg. n (default: 7) Wochen
        
    if(count($Median_RawData) < $Weeks*7)
        {
           
    IPS_LogMessage("RS Energy Forecast""Script #26493 /*[RS Energy Forecast (Gas)\Core\RS EF Core Functions]*/: Abbruch, nicht genügend Daten für Medianbildung (nur ".count($Median_RawData) ." Tage gefunden, benötigt werden "$Weeks*" Tage)");
           goto 
    Scriptabbruch;
        }

        
    // Rohdaten für 7 Kalenderwochentage (1/Mo-7/So) zuweisen
        
    $WeekdayRawData                                                           = array();
        foreach(
    $Median_RawData  as $key=>$Values)
        {
           
    // Berechnungen erst ab Median-Startdatum
           
    if(($Values['TimeStamp'] >= $Median_StartDatum) && ($Values['TimeStamp'] <= $Median_EndDatum))
           {
             
    $WeekdayRawData[date("N"$Values['TimeStamp'])][]            = $Values['Avg'];
           }
        }
        
    ksort($WeekdayRawData);

        
    // Median für Kalenderwochentage (1/Mo-7/So) bilden
        
    $WeekdayMedian                                                               = array();
        foreach(
    $WeekdayRawData  as $key=>$Values)
        {
          
    $WeekdayMedian[$key]                                                        = median($Values);
        }

    // Forecast Tagesbasis, Heute bis Ende Betrachtungsperiode
        
    $Day_Cnt                                                                   date_diff(date_create(date("y-m-d",time())), date_create(date("Y-m-d",VertragsEndeDatum)));
        
    $FC_Day_Cnt                                                                        $Day_Cnt->format('%a') +1;
        
    $FC_StartDate                                                              mktime(0,0,0,date("m"),date("d"),date("Y"));
        
    $FC_Data_daily                                                             = array();
        for(
    $i=0;$i<$FC_Day_Cnt;$i++)
        {
           
    $FC_Data_daily[$i]['TimeStamp']                                        = mktime(0,0,0,date("m"),date("d") + $i,date("Y"));
           
    $FC_Data_daily[$i]['Value']                                          = $WeekdayMedian[(int)date("N"$FC_Data_daily[$i]['TimeStamp'])];
           
    $FC_Data_daily[$i]['human_TS']                                        = date("H:i:s, d.m.Y"$FC_Data_daily[$i]['TimeStamp']);
        }

    // Forecast Monatsbasis, Heute bis Ende Betrachtungsperiode
       
    $StartDate                                                                         = new DateTime(date("Y-m-d",VertragsEndeDatum));
       
    $EndDate                                                                         = new DateTime(date("Y-m-d",mktime(0,0,0,date("m"),date("d"),date("Y"))));
       
    $DateDiff                                                                         $StartDate->diff($EndDate);
       
    $FC_Month_Cnt                                                                    $DateDiff->format('%m') + 1;
       
    $FC_Data_Month                                                             = array();

       for(
    $i=0;$i<$FC_Day_Cnt;$i++)
       {
          
    $m_key                                                            date("n",$FC_Data_daily[$i]['TimeStamp']);
          
    $Y_key                                                            date("Y",$FC_Data_daily[$i]['TimeStamp']);
          
    $Ym_key                                                     $Y_key.$m_key;
          if(!isset(
    $FC_Data_Month[$Ym_key]['Value']))
          {
              
    $FC_Data_Month[$Ym_key]['Value']                                 = $FC_Data_daily[$i]['Value'];
              
    $FC_Data_Month[$Ym_key]['TimeStamp']                            = mktime(0,0,0,$m_key,1,$Y_key);
          }
          else
          {
              
    $FC_Data_Month[$Ym_key]['Value']                                 += $FC_Data_daily[$i]['Value'];
          }
          
    $FC_Data_Month[$Ym_key]['human_TS']                                = date("H:i:s, d.m.Y"$FC_Data_Month[$Ym_key]['TimeStamp']);
       }

    // Forecast nextYear, Tagesbasis, Heute bis Ende Betrachtungsperiode

        
    $nY_StartDate                                                              mktime(0,0,0,$End_Monat,$End_Tag 1,$End_Jahr);
        
    $nY_EndDate                                                                  mktime(23,59,59,$End_Monat 12,$End_Tag,$End_Jahr);
        
    $nY_Day_Cnt                                                               date_diff(date_create(date("Y-m-d"$nY_StartDate)), date_create(date("Y-m-d"$nY_EndDate)));
        
    $nY_Day_Cnt                                                                        $nY_Day_Cnt->format('%a') +1;
        
    $nY_Data_daily                                                             = array();

        for(
    $i=0;$i<$nY_Day_Cnt;$i++)
        {
           
    $nY_Data_daily[$i]['TimeStamp']                                        = mktime(0,0,0,$Start_Monat,$Start_Tag $i,$End_Jahr);
           
    $nY_Data_daily[$i]['Value']                                          = $WeekdayMedian[(int)date("N"$nY_Data_daily[$i]['TimeStamp'])];
           
    $nY_Data_daily[$i]['human_TS']                                        = date("H:i:s, d.m.Y"$nY_Data_daily[$i]['TimeStamp']);
        }

    // Forecast nextYear, Monatsbasis, Heute bis Ende Betrachtungsperiode
       
    $nY_Data_Month                                                             = array();

       for(
    $i=0;$i<$nY_Day_Cnt;$i++)
       {
          
    $m_key                                                            date("n",$nY_Data_daily[$i]['TimeStamp']);
          
    $Y_key                                                            date("Y",$nY_Data_daily[$i]['TimeStamp']);
          if(!isset(
    $nY_Data_Month[$m_key]['Value']))
          {
              
    $nY_Data_Month[$m_key]['Value']                                 = $nY_Data_daily[$i]['Value'];
              
    $nY_Data_Month[$m_key]['TimeStamp']                            = mktime(0,0,0,$m_key,1,$Y_key);
              
    $nY_Data_Month[$m_key]['human_TS']                                = date("H:i:s, d.m.Y"$nY_Data_Month[$m_key]['TimeStamp']);
          }
          else
          {
              
    $nY_Data_Month[$m_key]['Value']                                 += $nY_Data_daily[$i]['Value'];
          }
       }

    // Summen für nextYear bilden
        
    $nY_Consumption                                                      0;
        
    $nY_Cost                                                                  0;
        
    $nY_Month_Cnt                                                        0;
        foreach(
    $nY_Data_Month as $key=>$rs)
        {
           
    $nY_Consumption                                                   $nY_Consumption $rs['Value'];
           
    $nY_Cost                                                          $nY_Cost $Grundpreis;
           
    $nY_Month_Cnt++;
        }
        
    $nY_Consumption                                                       $nY_Consumption SCALEFACTOR;
       
    $nY_Cost                                                             $nY_Cost + ($nY_Consumption * ($Verbrauchspreis/100));

    ############ Durchschnittswerte für jeden Wochentag bilden #################################
        // Rohdaten für 7 Kalenderwochentage (1/Mo-7/So) zuweisen
        
    $WochentagsStatistikRawData                                                 = array();
        foreach(
    $Median_RawData  as $key=>$Values)
        {
           
    // Berechnungen erst ab Median-Startdatum
           
    if(($Values['TimeStamp'] >= $Median_StartDatum) && ($Values['TimeStamp'] <= $Median_EndDatum))
           {
             
    $WochentagsStatistikRawData [date("N"$Values['TimeStamp'])][]  = $Values['Avg'];
           }
        }
        
    ksort($WochentagsStatistikRawData);
        
    $Stat_Data                                                                        Wochentags_Durchschnittswerte($WochentagsStatistikRawData);

    ########################### FEHLERBEHANDLUNG ###############################################
    // Scriptabbruch und Fehlermeldung
        
    Scriptabbruch:
            
    // do nothing

    /* ++++++++++++++++++++++++++++ F U N K T I O N E N +++++++++++++++++++++++++++++++++++++++*/

    ############## Funktion Medianberechung ##################################################

    function median($array = array())
    {
        
    $count count($array);
        if(
    $count <= 0)
        {
           return 
    false;
        }
        
    sort($arraySORT_NUMERIC);

        if(
    $count == 0)
        {
           return (
    $array[floor($count/2)-1] + $array[floor($count/2)]) / 2;
        }
        else
        {
           return 
    $array[$count/2];
        }
    }

    ######################## Funktion für Durchschnittsermittlung pro Wochentag ##################################################
    function Wochentags_Durchschnittswerte($Array)
    {
        
    // Funktion erwartet 2stufiges Array mit Werten pro Wochentag und gibt Statistikwerte aus allen Werten pro Wochentag zurück
        // die Timestamps entsprechen immer den Wochentagen der aktuellen Kalenderwoche (1 = Montag, 7= Sonntag)
        // Keys der obersten Hierarchieebene entsprechen den Wochentagen, 1=Montag, 7 = Sonntag

       
    $Rueckgabe                                                     = array();
       
    $firstWeekday                                                  strtotime("last monday");
       if(
    date("N") == 1)    $firstWeekday                             strtotime("monday");

        foreach(
    $Array as $d=>$rs)
        {
           
    // Mittelwert
           
    $Mittelwert                                                 0;
           
    $Anzahl                                                     count($rs);
           foreach(
    $rs as $i=>$value)
           {
              
    $Mittelwert                                              $Mittelwert $value;
           }
           
    $Mittelwert                                                  $Mittelwert $Anzahl;
           
    $Rueckgabe[$d]['Avg']                                       = $Mittelwert;

           
    // kleinster und größter Wert pro Wochentag
           
    $Min                                                        9999999;
           
    $Max                                                        0;
           foreach(
    $rs as $i=>$value)
           {
              if(
    $value $Min)
                 
    $Min                                                  $value;
             if(
    $value $Max)
                 
    $Max                                                  $value;
           }
           
    $Rueckgabe[$d]['Max']                                       = $Max;
           
    $Rueckgabe[$d]['Min']                                       = $Min;

           
    // durchschnittl. Minimum und Maximum pro Wochentag
           
    $AvgMax                                                     0;
           
    $CntAvgMax                                                  0;
           
    $AvgMin                                                     0;
           
    $CntAvgMin                                                  0;

           foreach(
    $rs as $i=>$value)
           {
             if(
    $value >= $Rueckgabe[$d]['Avg'])
             {
                 
    $AvgMax                                               $AvgMax $value;
                 
    $CntAvgMax++;
              }
              if(
    $value <= $Rueckgabe[$d]['Avg'])
              {
                 
    $AvgMin                                               $AvgMin $value;
                 
    $CntAvgMin++;
                }
           }
           
    $Rueckgabe[$d]['AvgMax']                                    = $AvgMax $CntAvgMax;
           
    $Rueckgabe[$d]['AvgMin']                                    = $AvgMin $CntAvgMin;
           
    $Rueckgabe[$d]['Delta_Min_AvgMin']                          = $Rueckgabe[$d]['AvgMin'] - $Rueckgabe[$d]['Min'];
           
    $Rueckgabe[$d]['Delta_AvgMin_Avg']                          = $Rueckgabe[$d]['Avg'] - $Rueckgabe[$d]['AvgMin'];
           
    $Rueckgabe[$d]['Delta_Avg_AvgMax']                             = $Rueckgabe[$d]['AvgMax'] - $Rueckgabe[$d]['Avg'];
           
    $Rueckgabe[$d]['Delta_AvgMax_Max']                             = $Rueckgabe[$d]['Max'] - $Rueckgabe[$d]['AvgMax'];
        }
        
    // Timestamps einfügen

        
    for($i=1;$i<=7;$i++)
        {
           
    $Rueckgabe[$i]['TimeStamp']                                 = mktime(0,0,0date("m"$firstWeekday),date("d"$firstWeekday) - $idate("Y"$firstWeekday));
           
    $Rueckgabe[$i]['humanDate']                                 = date("d.m.Y H:i:s"$Rueckgabe[$i]['TimeStamp'] );
        }

        return(
    $Rueckgabe);
    }


    //Hilfsfunktion, die die Funktionsweise von IP-Symcon 2.x nachbildet
    function AC_GetLoggedValuesCompatibility($instanceID$variableID$startTime$endTime$limit)
    {
        
    $values AC_GetLoggedValues($instanceID$variableID$startTime$endTime$limit );
        if((
    sizeof($values) == 0) || (end($values)['TimeStamp'] > $startTime))
        {
           
    $previousRow                                     AC_GetLoggedValues($instanceID$variableID0$startTime 1);
           
    $values                                             array_merge($values$previousRow);
        }
        return 
    $values;
    }

    // PHP Standardabweichung
    function stabw($valueArray)
    {
        
    $sum                                                     array_sum($valueArray);
        
    $count                                                 count($valueArray);
        
    $mean                                                 =    $sum $count;
        
    $result                                                 0;
        foreach (
    $valueArray as $value)
        {
            
    $result                                             += pow($value $mean2);
         }
        unset(
    $value);
        
    $count                                                 = ($count == 1) ? $count $count 1;

        return 
    sqrt($result $count);
    }


    // Function write_content, schreibt das fertige HC als ID.hc.php auf die Platte
    function write_content($Path$Filename$Content)
    {
        
    $Path       IPS_GetKernelDir()."webfront/".$Path;

        
    // Ordner anlegen, wenn nicht vorhanden
        
    if (!is_dir($Path))
            
    mkdir ($Path  0777true);

        
    // File schreiben
        
    $handle fopen($Path.$Filename,"w");
        
    fwrite($handleutf8_encode($Content));
        
    fclose($handle);
    }



    // Function IPS_Array_to_HCData, wandelt ein Datenarray in Array mit Wertepaaren [Timestamp, Value] um
    function IPS_Array_to_HCData($RoundValue$Array)
    {
        
    $result        = array();
        foreach(
    $Array as $key=>$rs)
        {

           
    $result[$key][]   = $rs['TimeStamp']*1000;                                 // Timestamp für JS (*1000)
           
    if(isset($rs['Value']))
                
    $result[$key][]   = round((float)$rs['Value']*SCALEFACTOR$RoundValue);
            if(isset(
    $rs['Avg']))
               
    $result[$key][]   = round($rs['Avg']*SCALEFACTOR$RoundValue);
        }
        
    $result1    array_values($result);
        return 
    $result1;
    }

    // Function HTML_Content, erzeugt aus Eingabedaten einen vollständigen HTML/PHP-String für HC-File
    function HTML_Content($js_Scripts$HC_Content$HC_Option)
    {

        
    // 1. Teil
        
    $s '<html>
        <head>
        <title>RS Energy Forecast</title>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <!-- 2. Add the JavaScript to initialize the chart on document ready -->'
    ;

        
    //  js-Scripte
        
    foreach($js_Scripts as $key=>$rs)
        {
          
    $s $s.'
            <script type="text/javascript" src="'
    .$rs.'"></script>';
        }

        
    // 2. Teil
        
    $s $s.'
            <script type="text/javascript">

                $(document).ready(function() {
                   '
    .$HC_Option.'
                    '
    .$HC_Content.'
                });
            </script>
        </head>
        <body>
            <div id="container"></div>
        </body>
    </html>'
    ;

    return 
    $s;
    }

    ############## Versionscheck ##################################################
    function checkVersion($V='1.5'$P='rs_energy_fc')
    {

       
    $result                      '';
       
    $VInfo                       '';
       
    $lastCheck                 0;
       
    $ScrID                    24469 /*[RS Energy Forecast (Gas)\Config\User-Config V1.5]*/ ;
       
    $self                          filectime(IPS_GetKernelDir().'scripts\\'.$_IPS['SELF'].'.ips.php');
       
    $ObjInfo                  explode("\r\n",IPS_GetObject($ScrID)['ObjectInfo']);


        if(isset(
    $ObjInfo[0][1]))
            
    $lastCheck             date("d"strtotime(explode(': '$ObjInfo[0])[1]));

        
    // Versionscheck nur 1x pro Tag
        
    if($lastCheck  != date("d",time()))
        {
            
    $ips_versions         Sys_GetURLContent('http://www.raketenschnecke.net/ips_projects/rs_ips_projects.txt?V='.$V.'&&P='.$P.'&&self='.$self);

            if(
    strpos($ips_versions$P) !== false)
            {
                
    $tmp                 explode("\r\n"$ips_versions);
                
    $Cnt              count($tmp);
                
    $lineCnt          0;
                for(
    $i=0;$i<$Cnt;$i++)
                {
                   
    // Zeile extrahieren (Überschrift überspringen)
                   
    $buffer          explode(','trim($tmp[$i]));
                    if(
    $lineCnt 0)
                    {
                       if((
    $buffer[0] == $P) && ($buffer[1] > $V))
                       {
                          
    $result  '<span style="color: #C00000;">RS Energy Forecast: neue Version verfügbar (V'.$buffer[1].' vom '.date("d.m.Y", (int)$buffer[2]).')</span>';
                          
    $VInfo   "Neue Version verfügbar: V".$buffer[1].' vom '.date("d.m.Y", (int)$buffer[2]);
                       }
                    }
                  
    $lineCnt++;
                }
                
    IPS_SetInfo($ScrID"letzter Versionscheck: ".date("d.m.Y H:i:s"time())."\r\n".$VInfo);
            }
        }
        elseif(@
    $ObjInfo[1] != '')
        {
           
    $result                  '<span style="color: #CD0000;">'.$ObjInfo[1].'</span>';
           
    $VInfo                   $ObjInfo[1];
        }
        return 
    $result;
    }
    ?>
    und das das Kostenmanager Skript:

    PHP-Code:
    <?
     
    ##### Project Exporter Comment: Script Version Stand 27.04.2014 17:25 #####

    /* +++++++++++++++++++++++++ RS Energy Forecast: Energy Forecast Kostenmanager ++++++++++++++++++++++++++++++++++++++++
        * liest alle benötigten Stromverbrauchsdaten aus der IPS-DB und bereitet diese auf
        * berechnet die aufgelaufenen Istkosten und die noch auflaufenden Kosten für die zu betrachtende Periode
        * stellt die monatlichen Verbräuche, Istkosten + Forecast und monatlichen Zahlungen an den Energieversorger in HTML-Tabelle gegenüber
        * erzeugt die für das Jahres-Forecast HighChart die erforderlichen Datenarrays
        * included das Core Functions Script
       +++++++++++++++++++++++++ RS Energy Forecast: Energy Forecast DataReader ++++++++++++++++++++++++++++++++++++++++++*/

    // Include Core Functions-Script
        
    include                                                                         "16414 /*[RS Energy Forecast (Wasser-Hauptzähler)\Core\RS EF Core Functions]*/.ips.php";


    // Plausicheck Startdatum, nur Prüfung auf Anzahl Zeichen im String!
        
    if(strlen($thisStartTime) != 6)
        {
           
    IPS_LogMessage("RS Energy Forecast""Startdatum in Config-Script hat falsches Format (aktueller Wert: $thisStartTime, korrekte Syntax: '00.00.')");
           exit; 
    // => Scriptabbruch mit Fehler-Markierung
        
    }
        elseif(!isset(
    $FC_Data_Month))
        {
           
    // wenn $FC_Data_Month nicht existiert:
            
    IPS_LogMessage("RS Energy Forecast""Script #52489 /*[RS Energy Forecast (Wasser-Hauptzähler)\Core\RS EF Kostenmanager]*/: Abbruch, keine Forecastdaten vorhanden");
           goto 
    Scriptabbruch;
        }

    // Forecastwerte (Monatswerte) an Istwert-Array anfügen
        
    $Count_StatisticValues                                                     count($StatisticValues);
        foreach(
    $FC_Data_Month as $key=>$Value)
        {

            if(
    date("n"$Value['TimeStamp']) == date("n", @$StatisticValues[$Count_StatisticValues1]['TimeStamp']))
            {
                
    $StatisticValues[$Count_StatisticValues 1]['Avg']      = $StatisticValues[$Count_StatisticValues 1]['Avg'] + $FC_Data_Month[$key]['Value'];
            }
            else
            {

               
    $StatisticValues[$Count_StatisticValues]['Avg']              = $FC_Data_Month[$key]['Value'];
               
    $StatisticValues[$Count_StatisticValues]['TimeStamp']    = $FC_Data_Month[$key]['TimeStamp'];
               
    $StatisticValues[$Count_StatisticValues]['human_TS']        = date("H:i:s, d.m.Y"$StatisticValues[$Count_StatisticValues]['TimeStamp']);
               
    $Count_StatisticValues++;
            }
        }

    // Arraywerte um Statistikwerte ergänzen
        
    foreach($StatisticValues as $key=>$Values)
        {
           
    $StatisticValues[$key]['MonatJahr']                                    = date("m/Y"$Values['TimeStamp']);

            
    // Verbrauch
            
    $StatisticValues[$key]['Verbrauch']                                    = sprintf("%.1f"round($Values['Avg'] * SCALEFACTOR1));
            
    // Kosten (Ist)
           
    $StatisticValues[$key]['IstKosten']                             = sprintf("%.2f"round(($Grundpreis + ($Values['Avg'] * SCALEFACTOR $Verbrauchspreis/100)) * -12));
           
    // manuelle Buchungen
           
    $StatisticValues[$key]['manuelle_Buchung']                        = 0;

           foreach(
    $manuelleBuchungen as $keyB=>$Buchung)
           {
              if(
    date("Ym"$StatisticValues[$key]['TimeStamp']) == date("Ym"strtotime($keyB)))
              {
                 
    $StatisticValues[$key]['manuelle_Buchung']                = $Buchung;
              }
           }
            
    // Kosten (gezahlt)
           
    $StatisticValues[$key]['Kosten_gebucht']                            = sprintf("%.2f"round($MonatsPauschale2));
           
    // Kosten Delta
           
    $StatisticValues[$key]['Kosten_Delta']                            = sprintf("%.2f"round((float)$StatisticValues[$key]['IstKosten'] + (float)$StatisticValues[$key]['Kosten_gebucht'] + (float)$StatisticValues[$key]['manuelle_Buchung'], 2));

            if(
    $key == 0)
            {
               
    // Verbrauch (kumuliert)
               
    $StatisticValues[$key]['Verbrauch_cum']                        = sprintf("%.1f"round($Values['Avg'] * SCALEFACTOR2));
               
    // Kosten (Ist, kumuliert)
               
    $StatisticValues[$key]['IstKosten_cum']                        = sprintf("%.2f"round(($Grundpreis + ($Values['Avg'] * SCALEFACTOR $Verbrauchspreis/100)) * -12));
               
    // Kosten (gezahlt, kumuliert)
               
    $StatisticValues[$key]['Kosten_gebucht_cum']                    = sprintf("%.2f"round($MonatsPauschale2));
               
    // manuelle Buchungen (gezahlt, kumuliert)
               
    $StatisticValues[$key]['manuelle_Buchung_cum']                = sprintf("%.2f"round($StatisticValues[$key]['manuelle_Buchung'], 2));
           }
           else
           {
              
    // Verbrauch (kumuliert)
               
    $StatisticValues[$key]['Verbrauch_cum']                        = sprintf("%.1f"round($Values['Avg'] * SCALEFACTOR + (float)$StatisticValues[$key-1]['Verbrauch_cum'], 2));
               
    // Kosten (Ist, kumuliert)
               
    $StatisticValues[$key]['IstKosten_cum']                        = sprintf("%.2f"round((($Grundpreis + ($Values['Avg'] * SCALEFACTOR $Verbrauchspreis/100)) * - 1) + (float)$StatisticValues[$key-1]['IstKosten_cum'], 2));
               
    // Kosten (gezahlt, kumuliert)
               
    $StatisticValues[$key]['Kosten_gebucht_cum']                    = sprintf("%.2f"round($MonatsPauschale + (float)$StatisticValues[$key-1]['Kosten_gebucht_cum'], 2));
               
    // manuelle Buchungen (gezahlt, kumuliert)
               
    $StatisticValues[$key]['manuelle_Buchung_cum']                = sprintf("%.2f"round((float)$StatisticValues[$key-1]['manuelle_Buchung_cum']  + (float)$StatisticValues[$key]['manuelle_Buchung'], 2));
           }

           
    // Kosten Delta (kumuliert)
           
    $StatisticValues[$key]['Kosten_Delta_cum']                        = sprintf("%.2f"round((float)$StatisticValues[$key]['Kosten_gebucht_cum'] + (float)$StatisticValues[$key]['IstKosten_cum'] + (float)$StatisticValues[$key]['manuelle_Buchung_cum'], 2));
        }
        

    // HC-Array für Gesamt (Ist+Forecast) akt. Periode (Anzeige nur im Tooltip)
       
    $act_Gesamt_Month                                              = array();
       
       foreach(
    $StatisticValues as $key=>$rs)
        {
           
    $act_Gesamt_Month[$key]['Value']                            = $rs['Verbrauch'];
           
    $act_Gesamt_Month[$key]['TimeStamp']                        = $rs['TimeStamp'];
        }

    // Werte in HTML-Variable schreiben
        
    setValue($HTML_Variable_IDHTML_MonatsStatistik($StatisticValues));

    // HC: Plotline Jahresdurchschnitt Plotline akt. Periode
       
    $actP_Day_Cnt                                                               date_diff(date_create(date("y-m-d",VertragsStartDatum)), date_create(date("Y-m-d",VertragsEndeDatum)));
        
    $actP_Day_Cnt                                                                    $actP_Day_Cnt->format('%a') +1;
        
    $day_value                                                                         0;
        
    $Avg_act_Year                                                             0;

        foreach(
    $StatisticValues as $key=>$rs)
        {
           
    $day_value                                                                $day_value $rs['Avg'];
        }
        
    $Avg_day_value                                                                $day_value $actP_Day_Cnt;
        
    $Avg_act_Year                                                                  round($Avg_day_value SCALEFACTOR1);

    // HC: Plotline Jahresdurchschnitt Plotline vorangegangene Periode
        
    $ts                                                                        mktime(0,0,0$Start_Monat$Start_Tag$Start_Jahr 1);
        
    $te                                                                        mktime(23,59,59$End_Monat$End_Tag1$End_Jahr);
       
    $Day_raw                                                                       = array();
        
    $Day_raw                                                                       AC_GetAggregatedValues(AC_HANDLER_ID$EV_Zentral1$ts$te400);
        
    $cnt                                                                                count($Day_raw);
        
    $day_value                                                                         0;
        
    $Avg_last_Year                                                             0;
        
        if( 
    $cnt 0)
        {
            for(
    $d=0;$d<$cnt;$d++)
            {
               
    $day_value                                                            $day_value $Day_raw[$d]['Avg'];
            }
            
    $Avg_day_value                                                            $day_value $cnt;
            
    $Avg_last_Year                                                              round($Avg_day_value SCALEFACTOR1);
        }


    // Scriptabbruch
    Scriptabbruch:
     
    // do nothing
     
     
    ############## Funktion HTML-Tabelle Verbrauchsstatistik #################################
    function HTML_MonatsStatistik($Statistic)
    {

        
    $ts                                  date("d.m.Y H:i"time());
        
    $FSize                               '80%';
        
    $s                                   '';
        
    $HeaderColor                       'rgba(0,0,0, 0.5)';
        
    $CellColor                         'rgba(0,0,0, 0.3)';
        
    $aktMonat                          date("Y").sprintf("%02d",date("m"));
        global                          
    $Weeks;
        global                                   
    $nY_Consumption;
        global                                   
    $nY_Cost;
        global                                   
    $nY_Month_Cnt;
        global                          
    $nY_StartDate;
        global                          
    $nY_EndDate;
        global                          
    $Bonus;

        
    $nY_Abschlag                  round($nY_Cost/$nY_Month_Cnt0);
        
    $nY_Cost                      $nY_Cost * -1;
        
    $BonusText                    '';
        
    $BonusTT_Text                 '';

        if(
    $Bonus 0)
        {
            
    $BonusText                 '<br><small>(incl. Bonus)</small>';
            
    $BonusTT_Text              ', incl. Bonus '.$Bonus.' €';
        }
            
        
    // Tabellenkopf
        
    $s       .= "
    <!-- Ausgabetabelle Verbrauch + Kosten -->

    <table id=\"RS_EFc_Kostentabelle\" style=\"width:100%; border:1;\">
    <thead>
    "
    ;
        
    // HTML-Zellen aufbauen (Spaltenüberschriften)
        
    $s       .= "\t\t".'<tr>'."\r\n";
       
    $s       .= "\t\t".'<tr>'."\r\n";
       
    $s       .= "\t\t".'</tr>'."\r\n";
        
    $s       .= "\t\t\t".'<th title="Zeitraum" width="70px" style="padding-left: 3px; vertical-align: top; text-align:left; background-color: '.$HeaderColor.'; cursor:help;">Monat</td>'."\r\n";
       
    $s       .= "\t\t\t".'<th title="monatlicher Verbrauch (Ist/Forecast)" width="90px" style="padding-right: 3px; vertical-align: top; text-align:center; background-color: '.$HeaderColor.'; cursor:help;">Verbrauch'."<br><small>".'(Ist + Forecast)</small></td>'."\r\n";
       
    $s       .= "\t\t\t".'<th title="monatl. Kosten  (Ist/Forecast)" width="100px" style="padding-right: 3px;  vertical-align: top; text-align:center; background-color: '.$HeaderColor.'; cursor:help;">Kosten'."<br><small>".'(Ist + Forecast)</small></td>'."\r\n";
       
    $s       .= "\t\t\t".'<th title="monatl. Abschlagszahlung an Versorger" width="100px" style="padding-right: 3px;  vertical-align: top; text-align:center; background-color: '.$HeaderColor.'; cursor:help;">Abschlag</td>'."\r\n";
       
    $s       .= "\t\t\t".'<th title="eigene Buchungen (Überweisungen, Korrekturbuchungen, etc. etc.)" width="80px" style="padding-right: 3px;  vertical-align: top; text-align:center; background-color: '.$HeaderColor.'; cursor:help;">man. Buchung</td>'."\r\n";
       
    $s       .= "\t\t\t".'<th title="Delta aus monatl. Kosten, Abschlag und man. Buchungen (Guthaben/Forderung ggü. Versorger)" width="80px" style="padding-right: 3px;  vertical-align: top; text-align:center; background-color: '.$HeaderColor.'; cursor:help;">Delta</td>'."\r\n";
       
    $s       .= "\t\t".'</tr>'."\r\n";
       
    $s       .= "</thead>\r\n";

        
    $Month_Cnt                      count($Statistic);
        for(
    $i=0;$i<$Month_Cnt;$i++)
        {
           
    // Zellen-Hintergrundfarbe in Abhängigkeit Monat <> akt. Monat definieren
           
    $aktCellColor                 'rgba(0,0,0, 0.3)';
           
    $Delta                        'Guthaben '.$Statistic[$i]['Kosten_Delta'].'€';
            if(
    $Statistic[$i]['Kosten_Delta'] < 0)
               
    $Delta                    'Forderung '.$Statistic[$i]['Kosten_Delta'].'€';

           
    // Tooltip-Texte
           
    $TTMonat                     'Monat liegt in der Vergangenheit => alle Werte sind Istwerte';
           
    $TTIstKosten                   'monatl. Grundpreis -'.Grundpreis.' € + Verbrauch '. ((float)$Statistic[$i]['IstKosten'] + Grundpreis) .' € (Ist)';
           
    $TTAbbuchung                 'vertragl. vereinbarte Monatspauschale für den Energieversorger';
           
    $TTmanBuchung                    'monatliche Summe der manuell erfassten Buchungen';
           
    $TTDelta                            'Delta = Kosten + Abbuchung + man. Buchung, '.$Delta;
           
    $TTVerbrauch                 'Tagesdurchschnitt: '.@round($Statistic[$i]['Daily_Avg'], 1).' '.UNIT.' (Ist)';

           
    // Tooltip-Texte für akt. Monat
           
    if(date("Ym"$Statistic[$i]['TimeStamp']) == $aktMonat)
           {
               
    $aktCellColor             'rgba(125,125,125, 0.1)';
               
    $TTMonat                  'aktueller Monat => Monatswerte werden aus Ist- und Forecastwerten gebildet';
               
    $TTVerbrauch              'Tagesdurchschnitt: '.round($Statistic[$i]['Daily_Avg'], 1).' '.UNIT.' (Ist + Forecast)';
               
    $TTIstKosten              'monatl. Grundpreis -'.Grundpreis.' € + Verbrauch '. ((float)$Statistic[$i]['IstKosten'] + Grundpreis) .' € (Ist)';
            }

            
    // Zeilen mit Monatswerten
            // Texfarbe in Abhängigkeit vom Zell-Wert (neg. Werte = Rot)
            
    $TextColor_Monat               'rgba(255,255,255, 0.6)';
            
    $TextColor_Verbrauch       'rgba(255,255,255, 0.6)';
            
    $TextColor_IstKosten       'rgba(255,255,255, 0.6)';
            
    $TextColor_Abbuchung       'rgba(255,255,255, 0.6)';
            
    $TextColor_manBuchung      'rgba(255,255,255, 0.6)';
            
    $TextColor_Delta              'rgba(255,255,255, 0.6)';

            if(
    $Statistic[$i]['IstKosten'] < 0)
               
    $TextColor_IstKosten      'rgba(255,0,0, 0.8)';
            if(
    $Statistic[$i]['Kosten_gebucht'] < 0)
               
    $TextColor_Abbuchung      'rgba(255,0,0, 0.8)';
           if(
    $Statistic[$i]['manuelle_Buchung'] < 0)
               
    $TextColor_manBuchung     'rgba(255,0,0, 0.8)';
            if(
    $Statistic[$i]['Kosten_Delta'] < 0)
               
    $TextColor_Delta          'rgba(255,0,0, 0.8)';

              
    // Tooltip-Texte für kommende Monate
           
    if(date("Ym"$Statistic[$i]['TimeStamp']) > $aktMonat)
           {
               
    $aktCellColor             'rgba(125,125,125, 0.3)';
               
    $TTMonat                  'Monat liegt in der Zunkunft => Monatswerte werden aus dem Median der verg. '.$Weeks.' Wochen gebildet';
               
    $TTVerbrauch              'Tagesdurchschnitt:  - '.UNIT.' (Ist)';
               
    $TTIstKosten              'monatl. Grundpreis -'.Grundpreis.' € + Verbrauch '. ((float)$Statistic[$i]['IstKosten'] + Grundpreis) .' € (Forecast)';

                
    // Zeilen mit Monatswerten
                // Texfarbe in Abhängigkeit vom Zell-Wert (neg. Werte = Rot)
                
    $TextColor_Monat           'rgba(255,255,255, 0.3)';
                
    $TextColor_Verbrauch    'rgba(255,255,255, 0.3)';
                
    $TextColor_IstKosten    'rgba(255,255,255, 0.5)';
                
    $TextColor_Abbuchung    'rgba(255,255,255, 0.3)';
                
    $TextColor_manBuchung   'rgba(255,255,255, 0.3)';
                
    $TextColor_Delta         'rgba(255,255,255, 0.3)';

                if(
    $Statistic[$i]['IstKosten'] < 0)
                   
    $TextColor_IstKosten 'rgba(255,0,0, 0.5)';
                if(
    $Statistic[$i]['Kosten_gebucht'] < 0)
                   
    $TextColor_Abbuchung 'rgba(255,0,0, 0.3)';
               if(
    $Statistic[$i]['manuelle_Buchung'] < 0)
                   
    $TextColor_manBuchung 'rgba(255,0,0, 0.3)';
                if(
    $Statistic[$i]['Kosten_Delta'] < 0)
                   
    $TextColor_Delta     'rgba(255,0,0, 0.3)';
           }


            
    // HTML-Zellen aufbauen (Tabellenkörper)
           
    $s       .= "\t\t".'<tr>'."\r\n";
           
    $s       .= "\t\t\t".'<td title="'.$TTMonat.'" style="padding-left: 3px;  background-color: '.$aktCellColor.';text-align: left;color: '.$TextColor_Monat.'; cursor:help; ">'.$Statistic[$i]['MonatJahr'].'</td>'."\r\n";
           
    $s       .= "\t\t\t".'<td title="'.$TTVerbrauch.'" style="padding-right: 3px;   text-align:right; background-color: '.$aktCellColor.'; color: '.$TextColor_Verbrauch.'; cursor:help; ">'.number_format((float)$Statistic[$i]['Verbrauch'], 1',''.').' '.UNIT.'</td>'."\r\n";
            
    $s       .= "\t\t\t".'<td title="'.$TTIstKosten.'" style="padding-right: 3px;  text-align:right; background-color: '.$aktCellColor.'; color: '.$TextColor_IstKosten.'; cursor:help; ">'.number_format((float)$Statistic[$i]['IstKosten'], 2',''.').' €</td>'."\r\n";
            
    $s       .= "\t\t\t".'<td title="'.$TTAbbuchung.'" style="padding-right: 3px;  text-align:right; background-color: '.$aktCellColor.'; color: '.$TextColor_Abbuchung.'; cursor:help; ">'.number_format((float)$Statistic[$i]['Kosten_gebucht'], 2',''.').' €</td>'."\r\n";
            
    $s       .= "\t\t\t".'<td title="'.$TTmanBuchung.'" style="padding-right: 3px;  text-align:right; background-color: '.$aktCellColor.'; color: '.$TextColor_manBuchung.'; cursor:help; ">'.number_format($Statistic[$i]['manuelle_Buchung'], 2',''.').' €</td>'."\r\n";
            
    $s       .= "\t\t\t".'<td title="'.$TTDelta.'" style="padding-right: 3px;   text-align:right; background-color: '.$aktCellColor.'; color: '.$TextColor_Delta.'; cursor:help; ">'.number_format((float)$Statistic[$i]['Kosten_Delta'], 2',''.').' €</td>'."\r\n";
           
    $s       .= "\t\t".'</tr>'."\r\n";
        }

        
    // Summenzeile
        
    $TextColor_Monat                   'rgba(255,255,255, 0.8)';
        
    $TextColor_Verbrauch           'rgba(255,255,255, 0.8)';
        
    $TextColor_IstKosten           'rgba(255,255,255, 0.8)';
        
    $TextColor_Abbuchung           'rgba(255,255,255, 0.8)';
        
    $TextColor_manBuchung          'rgba(255,255,255, 0.8)';
        
    $TextColor_Delta                  'rgba(255,255,255, 0.8)';

        
    $SummenZeile   array_pop($Statistic);
        if(
    $SummenZeile['IstKosten_cum'] < 0)
           
    $TextColor_IstKosten       'rgba(255,0,0, 0.8)';
        if(
    $SummenZeile['Kosten_gebucht_cum'] < 0)
           
    $TextColor_Abbuchung       'rgba(255,0,0, 0.8)';
        if(
    $SummenZeile['manuelle_Buchung_cum'] < 0)
           
    $TextColor_manBuchung      'rgba(255,0,0, 0.8)';
        if(
    $SummenZeile['Kosten_Delta_cum'] < 0)
           
    $TextColor_Delta              'rgba(255,0,0, 0.8)';

        
    $DeltaSumme_Text              '(Guthaben'.$BonusTT_Text.')';
        
    $SummenZeile['Kosten_Delta_cum'] = (float)$SummenZeile['Kosten_Delta_cum'] + $Bonus;
        
        if (
    $SummenZeile['Kosten_Delta_cum'] < 0)
            
    $DeltaSumme_Text           '(Forderung'.$BonusTT_Text.')';

        
    // Forecast gesamt in Variable schreiben
        
    SetValue(44603 /*[RS Energy Forecast (Wasser-Hauptzähler)\Ergebnisse\ForeCast Werte\Forecast Gesamt]*/ , (float)$SummenZeile['Verbrauch_cum']*1);
        
       
    // HTML-Zellen aufbauen (Summenzeile)
       
    $s       .= "\t\t".'<tr>'."\r\n";
       
    $s       .= "\t\t\t".'<td valign="top" style="padding-left: 3px; background-color: '.$CellColor.'; text-align: left; color: '.$TextColor_Monat.';"><b><u>Gesamt</u></b></td>'."\r\n";
       
    $s       .= "\t\t\t".'<td title="Energieverbrauch für gesamtes Vertragsjahr" valign="top" style="padding-right: 3px; text-align:right; background-color: '.$CellColor.';  color: '.$TextColor_Verbrauch.'; cursor:help; "><b><u>'.number_format((float)$SummenZeile['Verbrauch_cum'], 1',''.').' '.UNIT.'</u></b></td>'."\r\n";
        
    $s       .= "\t\t\t".'<td title="Verbrauchskosten für gesamtes Vertragsjahr" valign="top" style="padding-right: 3px; text-align:right; background-color: '.$CellColor.'; color: '.$TextColor_IstKosten.'; cursor:help; "><b><u>'.number_format((float)$SummenZeile['IstKosten_cum'], 2',''.').' €</u></b></td>'."\r\n";
        
    $s       .= "\t\t\t".'<td title="Zahlungen an Energieversorger für gesamtes Vertragsjahr" valign="top" style="padding-right: 3px; text-align:right; background-color: '.$CellColor.'; color: '.$TextColor_Abbuchung.'; cursor:help; "><b><u>'.number_format((float)$SummenZeile['Kosten_gebucht_cum'], 2',''.').' €</u></b></td>'."\r\n";
        
    $s       .= "\t\t\t".'<td title="manuelle Buchungen im gesamten Vertragsjahr" valign="top" style="padding-right: 3px; text-align:right; background-color: '.$CellColor.'; color: '.$TextColor_manBuchung.'; cursor:help; ;"><b><u>'.number_format((float)$SummenZeile['manuelle_Buchung_cum'], 2',''.').' €</u></b></td>'."\r\n";
        
    $s       .= "\t\t\t".'<td title="Delta für gesamtes Vertragsjahr '.$DeltaSumme_Text.'" valign="top" style="padding-right: 3px; text-align:right; background-color: '.$CellColor.'; color: '.$TextColor_Delta.'; cursor:help; "><b><u>'.number_format($SummenZeile['Kosten_Delta_cum'], 2',''.').' €</u></b>'.$BonusText.'</td>'."\r\n";
       
    $s       .= "\t\t".'</tr>'."\r\n";
        
    $s       .= "\t\t".'<tr>'."\r\n";
       
    $s       .= "\t\t\t".'<td colspan="6" style="padding-top: 5px; color: rgba(255,255,255, 0.3); text-align:right; font-size: 75%">RS Energy Forecast ('.PERIODENTYP.', Start: '.date("d.m.Y"VertragsStartDatum).', Ende: '.date("d.m.Y"VertragsEndeDatum).', Stand: '.$ts.' Uhr)</td>'."\r\n";
       
    $s       .= "\t\t".'</tr>'."\r\n";
        
    $s       .= "\t\t".'<tr>'."\r\n";
       
    $s       .= "\t\t".'<td colspan="6" style="padding-top: 10px; color: rgba(255,255,255, 0.8); text-align:left;">Prognose für nachfolgende 12 Monate</td>'."\r\n";
       
    $s       .= "\t\t".'</tr>'."\r\n";
        
    $s       .= "\t\t".'<tr>'."\r\n";
       
    $s       .= "\t\t\t".'<td style="padding-left: 3px; background-color: '.$CellColor.'; text-align: left; color: rgba(255,255,255, 0.6);">Gesamt</u></td>'."\r\n";
       
    $s       .= "\t\t\t".'<td title="vorauss. Energieverbrauch für nachfolgende Periode. Basis: Ø der letzten '.$Weeks.' Wochen" style="padding-right: 3px; text-align:right; background-color: '.$CellColor.';  color: rgba(255,255,255, 0.6); cursor:help; ">ca. '.number_format(round($nY_Consumption0), 0',''.').' '.UNIT.'</u></td>'."\r\n";
        
    $s       .= "\t\t\t".'<td title="vorauss. Kosten für nachfolgende Periode. Basis: Ø der letzten '.$Weeks.' Wochen" style="padding-right: 3px; text-align:right; background-color: '.$CellColor.'; color: '.$TextColor_IstKosten.'; cursor:help; ">ca. '.number_format(round($nY_Cost0), 0',''.').' €</u></td>'."\r\n";
        
    $s       .= "\t\t\t".'<td title="vorauss. monatl. Abschlag an Energieversorger. Basis: Ø der letzten '.$Weeks.' Wochen" style="padding-right: 3px; text-align:right; background-color: '.$CellColor.'; color: rgba(255,255,255, 0.6); cursor:help; ">ca. '.number_format($nY_Abschlag0',''.').' €</u></td>'."\r\n";
        
    $s       .= "\t\t\t".'<td title="" style="padding-right: 3px; text-align:right; background-color: '.$CellColor.'; color: rgba(255,255,255, 0.6); cursor:help; ;">'.''.' </u></td>'."\r\n";
        
    $s       .= "\t\t\t".'<td title="" style="padding-right: 3px; text-align:right; background-color: '.$CellColor.'; color: rgba(255,255,255, 0.6); cursor:help; ">'.''.' </u></td>'."\r\n";
       
    $s       .= "\t\t".'</tr>'."\r\n";
        
    $s       .= "\t\t".'<tr>'."\r\n";
       
    $s       .= "\t\t\t".'<td colspan="6" style="padding-top: 5px; color: rgba(255,255,255, 0.3); text-align:right; font-size: 75%">RS Energy Forecast ('.PERIODENTYP.', Start: '.date("d.m.Y"$nY_StartDate).', Ende: '.date("d.m.Y"$nY_EndDate).', Stand: '.$ts.' Uhr)</td>'."\r\n";
       
    $s       .= "\t\t".'</tr>'."\r\n";
        
    $s       .= "</table>\r\n";

        return 
    $s;
    }
    ?>
    Viel Erfolg beim Vergleichen,

    Kai

  6. #16
    Registriert seit
    Jul 2005
    Ort
    Schwanewede/Niedersachsen
    Beiträge
    1,838

    Danke Kai,

    das hat mir geholfen.
    Gruss
    Horst

    IP-Symcon 5.0 IPS-868, FS20, HM, HUE, Plugwise

  7. #17
    Registriert seit
    Jul 2005
    Ort
    Schwanewede/Niedersachsen
    Beiträge
    1,838

    Standard Zeiraum geht nicht mehr

    Hallo,

    hat noch jemand das Problem das der vorgegebene Zeitraum nicht mehr geht?
    Gruss
    Horst

    IP-Symcon 5.0 IPS-868, FS20, HM, HUE, Plugwise

  8. #18
    Registriert seit
    Jul 2005
    Ort
    Schwanewede/Niedersachsen
    Beiträge
    1,838

    Hallo,

    hat keiner das Problem?
    Ich kann nur noch vom 01.01. bis 31.12. einstellen, vom z.B. 05.04(18) bis 04.04.(19) geht nicht mehr.
    Gruss
    Horst

    IP-Symcon 5.0 IPS-868, FS20, HM, HUE, Plugwise

  9. #19
    Registriert seit
    Jun 2015
    Beiträge
    223

    Ich wärme das hier nochmal auf. Habe seit dem Umzug von 4.1 auf 5.1 das problem das RS Forecast den aktuellen Verbrauch eines Zählers nicht mehr anzeigt. Es kommen nur noch Schätzungen die dann Stunde für Stunde geringer werden bis ich um 24 Uhr wieder bei 0KW Verbrauch lande. Hat jemand ne Ahnung wo ich ansetzen kann?

    Grüße
    Bruno
    IPS 5.1 - LCN - Sonos - Philps Hue - Osram

Ähnliche Themen

  1. IPS Energy Forecast
    Von TheOnlyOne im Forum Skripte, PHP, SQL
    Antworten: 2
    Letzter Beitrag: 01.07.17, 11:38
  2. Problem mit RS Energy Forecast
    Von Tetrapack im Forum Skripte, PHP, SQL
    Antworten: 23
    Letzter Beitrag: 13.12.16, 19:33
  3. Energy Forecast
    Von KingKahn im Forum Skripte, PHP, SQL
    Antworten: 1
    Letzter Beitrag: 13.10.16, 15:50
  4. EKM Energy Forecast Datenloch
    Von kds8 im Forum Skripte, PHP, SQL
    Antworten: 1
    Letzter Beitrag: 30.03.16, 21:59
  5. neue Version IPS Energy Forecast von Raketenschnecke! Stromkosten Berechnung
    Von Fraunhofer im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 0
    Letzter Beitrag: 19.02.14, 12:01