+ Antworten
Seite 9 von 12 ErsteErste ... 7 8 9 10 11 ... LetzteLetzte
Ergebnis 81 bis 90 von 111
  1. #81
    Registriert seit
    Nov 2016
    Ort
    Österreich, OÖ, Schärding
    Beiträge
    847

    Zitat Zitat von stern Beitrag anzeigen
    Bei mir sieht das für Wasser so aus.

    ...

    Ich weiß nicht ob Du das gemeint hast.
    Ich denke schon, muss es aber erst testen.
    Es wird ja nur die Kostenvariable für das Trinkwasser und als Zähler der Wasserzählerstand (bei mir Arcus-eds für WW und KW) ausgetauscht, oder?

    DANKE schon mal vorab!
    KNX: IPS @ Raspberry Pi3 Unlimited
    IPSStudio - Collibrico - Sonos - Alexa - ekey - Synology NAS - Reolink - Vaillant LWP + KWL

  2. #82
    Registriert seit
    Sep 2008
    Ort
    Staufenberg nr KS
    Beiträge
    2,072

    das man das Logging aktivieren muss - im Skript wohlgemerkt!
    nein ! die Variable muss geloggt werden
    IP-Symcon Version: 5.5 ninja - unlim auf WIN7pro
    server:Shuttle XS35V4,HPSlate21,IPS-868,HM,HMip,FS20,piVCCU3,IPcams, FB 7590, TM-D710GE(GPS), Raspi3, Pioneer VSX, Libratone, MieleWCR870WPS, SamsungNZ64N7777

  3. #83
    Registriert seit
    Nov 2016
    Ort
    Österreich, OÖ, Schärding
    Beiträge
    847

    Zitat Zitat von Axel37 Beitrag anzeigen
    nein ! die Variable muss geloggt werden
    Für was steht dann das "Logging" im Skript?

    Und ich hab noch ein anderes Problem:
    Erster Tag wurde richtig im Diagramm angezeigt, dann sind alle Werte gegenüber den Angezeigten (linke Spalten) falsch?

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	2019-10-04 20_49_25-Greenshot.jpg 
Hits:	232 
Größe:	176.3 KB 
ID:	50666

    Was mache ich falsch?

    Archiv: Aktueller Tag / Aktuelle Kosten
    Im Diagramm wird dann Monat eingestellt und die obigen Variablen werden genommen.
    KNX: IPS @ Raspberry Pi3 Unlimited
    IPSStudio - Collibrico - Sonos - Alexa - ekey - Synology NAS - Reolink - Vaillant LWP + KWL

  4. #84
    Registriert seit
    Oct 2017
    Beiträge
    569

    Hallo,

    danke für die Tolle Arbeit! Habe den Script aus #45 ausprobiert an sich funktioniert er gut.
    Leider ist es nicht komplett das was bei mir funktionieren würde.

    Wie würdet ihr es lösen?

    Bei mir sieht es so aus:
    Hab 3 Werte, quasi 3 Zähler wegen PV Anlage. Da wäre es schön eingespeiste Kosten zu berechnen und Eigenverbrauch zu errechnen.

    Variable 1 bietet zugekaufter Strom (Zähler 1)
    Variable 2 Eingespeister Strom (Zähler 1)
    Variable 3 Produzierter Strom (Zähler 2)

    Nun Müsste aus Variable 2 und 3 PV Strom Eigenverbrauch errechnet und geloggt werden.

    Was sagt Ihr dazu? Schwer hin zu bekommen oder hat es vielleicht jemand schon mal gemacht?

    Gruß
    IPS Professional meist aktuellste stable. Auf einen Qnap / Docker.
    Tasmota, MQTT, Sonoff etc.

  5. #85
    Registriert seit
    Oct 2017
    Beiträge
    569

    Hallo,

    habe etwas an den Script gearbeitet. Naja eher herumprobiert,an sich läuft er.
    Hab da noch ne Frage zu der Berechnung. Ich bekomme jeden Tag oder eher alle 10 Sec einen Wert
    der immer größer wird.
    Also Stromverbrauch 80kw dann 81kw z.B. Er rechnet mir aber für den Tag mehr zusammen als für die Woche
    da passt was nicht mit den zusammenrechnen. Könnt Ihr mir nen Tipp geben wie man es richtig macht?

    Hier z.B.:

    PHP-Code:
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Täglich */strtotime("yesterday"), strtotime("today")-10); 
    SetValueFloat($einspDayIDCalcConsumption($data));
    SetValue($einspCostDayCostID,GetValue($einspDayID)*$verkauf); 
    Und wie kann ich aus 2 Variablen oder Werten eine Variable abziehen?

    EDIT:

    Für eigen Verbrauch hebe ich folgendes Script erstellt, hoffe war so in etwa Richtig:

    PHP-Code:
    <?

    ///////////////////  Eigenverbrauch ausrechnen  //////////////////////////////

    $pvproduktion GetValue(35916);
    $einspeisung GetValue(10419);
    $eigenverbrauch =(25472);

    $eigenverbrauch $pvproduktion $einspeisung;
    SetValueFloat(25472$eigenverbrauch);
    ?>
    Geändert von power dodge (01.11.19 um 17:18 Uhr)
    IPS Professional meist aktuellste stable. Auf einen Qnap / Docker.
    Tasmota, MQTT, Sonoff etc.

  6. #86
    Registriert seit
    Oct 2017
    Beiträge
    569

    Hallo,

    so leider habe ich es nicht hinbekommen das das Script die Zahlen richtig zusammen zählt.
    Vielleicht könnt Ihr mal auf die Sprünge helfen?

    Hier ist das Script: (Achtung noch nicht fertig)

    PHP-Code:
    <? 
    #include('globalfunction.ips.php');
    #########################################################################################################################################################################
    # Scriptbezeichnung: HM.Consumption.ips.php
    # Version: 1.2
    # Author: Heiko Wilknitz
    # Anpassung by Zerfasm & Drapple  
    #
    # Auswertung und Hochrechnung des Stromverbrauches
    # Nochamls vielen Dank an Pitti der den Ursprung für dieses Skript gelegt hat!

    // ----------------------------- KONFIGURATION --------------------------------------------------------------------------------------------------------------------------

    // Anzahl Nachkommastellen bei Ergebnissen
    $roundTo2   2//Anzahl Nachkommastellen bei Ergebnissen
    $roundTo3   3//Anzahl Nachkommastellen bei Ergebnissen
    $kosten        GetValue(44754); //Floatvariable mit dem Preis pro kWh
    $verkauf       GetValue(36848); // Floatvariable Verkaufspreis pro KWh

    //Logging einstellen
    $logDay        false//Logging für Tag einstellen
    $logWeek    false//Logging für Woche einstellen
    $logMonth    false//Logging für Monat einstellen
    $logYear    false//Logging für Jahr einstellen
    $logVisual    false//Anzeige der Variable in der Visualisierung im Webfront deaktiveren oder aktivieren

    //Auswahl ob Instanzen mit den Variablen unter einer Kategorie oder einer weiteren Instanz angeordnet werden sollen
    $category true;

    //Wenn das Skript die max. Zeit von 30 Sekunden beim ersten ausführen überschreitet, kann mit der nächsten Zeile die Fehlermeldung verhindert werden
    set_time_limit (60); //Hier kann die Zeit in Sekunden angegeben werden

    // ----------------------------------- ID´s -----------------------------------------------------------------------------------------------------------------------------
    $parentID     IPS_GetObject($_IPS['SELF']); 
    $parentID     $parentID['ParentID'];

    //ID des ArchiveHandler ermitteln 
    $instances     IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}'); 
    $archiveID     $instances[0]; 

    // Verbrauchszähler / Bezogener Strom
    //$valueID     = IPS_GetObjectIDByIdent("ENERGY_COUNTER_TOTAL", $parentID); //Wenn ObjektID verwendet werden soll
    $valueID     21927//Wenn VariablenID verwendet werden soll

    // PV Strom Erzeugt und Eingespeist
    $eurzeugtID   35916;
    $eingespeistID 10419;
    $eigenverbID 25472;


    // -------------------------- VARIABLENPROFIL ERSTELLEN -----------------------------------------------------------------------------------------------------------------
    // Profilname kWh    
    $vpname="kWh";
    if (!
    IPS_VariableProfileExists($vpname)) //Wenn das Provil noch nicht Exestiert dann lege es an:
    {
        
    IPS_CreateVariableProfile($vpname2); //Variabelprofil erstellen
        
    IPS_SetVariableProfileIcon($vpname,"Lightning"); //Variabelprofil Icon zuweisen
        
    IPS_SetVariableProfileText($vpname,""," kWh"); //Suffix setzen
        
    IPS_SetVariableProfileValues($vpname00,); //Der Befehl setzt den MinimalWert, MaximalWert und die Schrittweite eines Variablenprofils mit Namen ProfilName.
        
    IPS_SetVariableProfileDigits($vpname$roundTo2); //Anzahl Nachkommastellen, in diesem Fall 2
    }

    // Profilname"Euro"
    $vpname2="Euro";
    if (!
    IPS_VariableProfileExists($vpname2)) //Wenn das Provil noch nicht Exestiert dann lege es an:
    {
        
    IPS_CreateVariableProfile($vpname22); //Variabelprofil erstellen
        
    IPS_SetVariableProfileIcon($vpname2,"Euro"); //Variabelprofil Icon zuweisen
        
    IPS_SetVariableProfileText($vpname2,""," €"); //Suffix setzen
        
    IPS_SetVariableProfileValues($vpname200,); //Der Befehl setzt den MinimalWert, MaximalWert und die Schrittweite eines Variablenprofils mit Namen ProfilName.
        
    IPS_SetVariableProfileDigits($vpname2$roundTo2); //Anzahl Nachkommastellen, in diesem Fall 2


    // -------------------------- AUSWAHL OB KATEGORIEN ODER INSTANZEN ERSTELLEN --------------------------------------------------------------------------------------------

    If ($category == true)
    {
        
    $enerID GetorCreatecategory("Zugekaufter Strom",$parentID);
        
    $enerCostID GetorCreatecategory("Zugekaufter Strom kosten",$parentID);
        
    $einspKID GetorCreatecategory("Eingespeister Strom",$parentID);
        
    $einspCostKID GetorCreatecategory("Eingespeister Strom kosten",$parentID);
        
    $erzeugKID GetorCreatecategory("PV produzierter Strom",$parentID);
        
    $eigenKID GetorCreatecategory("Eigenverbrauchter Strom",$parentID);
    }
    else
    {
        
    $enerID GetorCreateInstanz("Zugekaufter Strom","dummy",$parentID);
        
    $enerCostID GetorCreateInstanz("Zugekaufter Strom kosten","dummy",$parentID);
        
    $einspKID GetorCreatecategory("Eingespeister Strom","dummy",$parentID);
        
    $einspKCostID GetorCreatecategory("Eingespeister Strom kosten","dummy",$parentID);
        
    $erzeugKID GetorCreatecategory("PV produzierter Strom","dummy",$parentID);
        
    $eigenKID GetorCreatecategory("Eigenverbrauchter Strom","dummy",$parentID);
    }

    // -------------------------- INSTANZEN ERSTELLEN -----------------------------------------------------------------------------------------------------------------------
    // Verbrauchsinstanzen anlegen
    $lastID GetOrCreateInstanz("Verbrauch Zuletzt","dummy",$enerID);
    $currID GetOrCreateInstanz("Verbrauch Aktuell","dummy",$enerID);
    $einspID GetOrCreateInstanz("Eingespeister Strom Zuletzt","dummy",$einspKID);
    $einspcurrID GetOrCreateInstanz("Eingespeister Strom Aktuell","dummy",$einspKID);
    $erzeugID GetOrCreateInstanz("PV produziert Zuletzt","dummy",$erzeugKID);
    $erzeugcurrID GetOrCreateInstanz("PV produziert Aktuell","dummy",$erzeugKID);
    $eigenID GetOrCreateInstanz("Eigenverbrauchter PV Strom Zuletzt","dummy",$eigenKID);
    $eigencurrID GetOrCreateInstanz("Eigenverbrauchter PV Strom Aktuell","dummy",$eigenKID);
    $consID GetOrCreateInstanz("Hochrechnung Verbrauch","dummy",$enerID); 

    // Kosteninstanzen anlegen
    $lastCostID GetOrCreateInstanz("Kosten Zuletzt","dummy",$enerCostID);
    $currCostID GetOrCreateInstanz("Kosten Aktuell","dummy",$enerCostID);
    $einspCostID GetOrCreateInstanz("Kosten verkaufter Strom Zuletzt","dummy",$einspCostKID);
    $einspcurrCostID GetOrCreateInstanz("Kosten verkaufter Strom Aktuell","dummy",$einspCostKID);
    $consCostID GetOrCreateInstanz("Hochrechnung Kosten","dummy",$enerCostID); 


    // -------------------------- VARIABLEN ERSTELLEN -----------------------------------------------------------------------------------------------------------------------

    // Verbrauchsvariablen anlegen bzw. auslesen: für Stromverbrauch
    $lastDayID     GetOrCreateVariable('Letzter Tag',2,"POWER_CONSUMPTION_LAST_DAY",$vpname,"",$logDay,$lastID,"1",$logVisual); 
    $lastWeekID GetOrCreateVariable('Letzte Woche',2,"POWER_CONSUMPTION_LAST_WEEK",$vpname,"",$logWeek,$lastID,"2",$logVisual); 
    $lastMonthID GetOrCreateVariable('Letzter Monat',2,"POWER_CONSUMPTION_LAST_MONTH",$vpname,"",$logMonth,$lastID,"3",$logVisual); 
    $lastYearID GetOrCreateVariable('Letztes Jahr',2,"POWER_CONSUMPTION_LAST_YEAR",$vpname,"",$logYear,$lastID,"4",$logVisual); 

    $currDayID     GetOrCreateVariable('Aktueller Tag',2,"POWER_CONSUMPTION_ACTUAL_DAY",$vpname,"",$logDay,$currID,"1",$logVisual);
    $currWeekID GetOrCreateVariable('Aktuelle Woche',2,"POWER_CONSUMPTION_ACTUAL_WEEK",$vpname,"",$logWeek,$currID,"2",$logVisual);
    $currMonthID GetOrCreateVariable('Aktueller Monat',2,"POWER_CONSUMPTION_ACTUAL_MONTH",$vpname,"",$logMonth,$currID,"3",$logVisual);
    $currYearID GetOrCreateVariable('Aktuelles Jahr',2,"POWER_CONSUMPTION_ACTUAL_YEAR",$vpname,"",$logYear,$currID,"4",$logVisual);

    $consDayID     GetOrCreateVariable('Tag',2,"POWER_CONSUMPTION_EXTRAPOLATION_DAY",$vpname,"",$logDay,$consID,"1",$logVisual);
    $consWeekID GetOrCreateVariable('Woche',2,"POWER_CONSUMPTION_EXTRAPOLATION_WEEK",$vpname,"",$logWeek,$consID,"2",$logVisual);
    $consMonthID GetOrCreateVariable('Monat',2,"POWER_CONSUMPTION_EXTRAPOLATION_MONTH",$vpname,"",$logMonth,$consID,"3",$logVisual);
    $consYearID GetOrCreateVariable('Jahr',2,"POWER_CONSUMPTION_EXTRAPOLATION_YEAR",$vpname,"",$logYear,$consID,"4",$logVisual);

    // Verbrauchsvariablen anlegen bzw. auslesen: für erzeugten Strom
    $erzeugDayID     GetOrCreateVariable('Letzter Tag',2,"POWER_CONSUMPTION_LAST_DAY",$vpname,"",$logDay,$erzeugID,"1",$logVisual); 
    $erzeugWeekID GetOrCreateVariable('Letzte Woche',2,"POWER_CONSUMPTION_LAST_WEEK",$vpname,"",$logWeek,$erzeugID,"2",$logVisual); 
    $erzeugMonthID GetOrCreateVariable('Letzter Monat',2,"POWER_CONSUMPTION_LAST_MONTH",$vpname,"",$logMonth,$erzeugID,"3",$logVisual); 
    $erzeugYearID GetOrCreateVariable('Letztes Jahr',2,"POWER_CONSUMPTION_LAST_YEAR",$vpname,"",$logYear,$erzeugID,"4",$logVisual); 

    $erzeugcurrDayID     GetOrCreateVariable('Aktueller Tag',2,"POWER_CONSUMPTION_ACTUAL_DAY",$vpname,"",$logDay,$erzeugcurrID,"1",$logVisual);
    $erzeugcurrWeekID GetOrCreateVariable('Aktuelle Woche',2,"POWER_CONSUMPTION_ACTUAL_WEEK",$vpname,"",$logWeek,$erzeugcurrID,"2",$logVisual);
    $erzeugcurrMonthID GetOrCreateVariable('Aktueller Monat',2,"POWER_CONSUMPTION_ACTUAL_MONTH",$vpname,"",$logMonth,$erzeugcurrID,"3",$logVisual);
    $erzeugcurrYearID GetOrCreateVariable('Aktuelles Jahr',2,"POWER_CONSUMPTION_ACTUAL_YEAR",$vpname,"",$logYear,$erzeugcurrID,"4",$logVisual);

    // Verbrauchsvariablen anlegen bzw. auslesen: für eingespeisten Strom
    $einspDayID     GetOrCreateVariable('Letzter Tag',2,"POWER_CONSUMPTION_LAST_DAY",$vpname,"",$logDay,$einspID,"1",$logVisual); 
    $einspWeekID GetOrCreateVariable('Letzte Woche',2,"POWER_CONSUMPTION_LAST_WEEK",$vpname,"",$logWeek,$einspID,"2",$logVisual); 
    $einspMonthID GetOrCreateVariable('Letzter Monat',2,"POWER_CONSUMPTION_LAST_MONTH",$vpname,"",$logMonth,$einspID,"3",$logVisual); 
    $einspYearID GetOrCreateVariable('Letztes Jahr',2,"POWER_CONSUMPTION_LAST_YEAR",$vpname,"",$logYear,$einspID,"4",$logVisual); 

    $einspcurrDayID     GetOrCreateVariable('Aktueller Tag',2,"POWER_CONSUMPTION_ACTUAL_DAY",$vpname,"",$logDay,$einspcurrID,"1",$logVisual);
    $einspcurrWeekID GetOrCreateVariable('Aktuelle Woche',2,"POWER_CONSUMPTION_ACTUAL_WEEK",$vpname,"",$logWeek,$einspcurrID,"2",$logVisual);
    $einspcurrMonthID GetOrCreateVariable('Aktueller Monat',2,"POWER_CONSUMPTION_ACTUAL_MONTH",$vpname,"",$logMonth,$einspcurrID,"3",$logVisual);
    $einspcurrYearID GetOrCreateVariable('Aktuelles Jahr',2,"POWER_CONSUMPTION_ACTUAL_YEAR",$vpname,"",$logYear,$einspcurrID,"4",$logVisual);

    // Verbrauchsvariablen anlegen bzw. auslesen / ausrechen: für PV verbrauchten Strom
    $eigenDayID     GetOrCreateVariable('Letzter Tag',2,"POWER_CONSUMPTION_LAST_DAY",$vpname,"",$logDay,$eigenID,"1",$logVisual); 
    $eigenWeekID GetOrCreateVariable('Letzte Woche',2,"POWER_CONSUMPTION_LAST_WEEK",$vpname,"",$logWeek,$eigenID,"2",$logVisual); 
    $eigenMonthID GetOrCreateVariable('Letzter Monat',2,"POWER_CONSUMPTION_LAST_MONTH",$vpname,"",$logMonth,$eigenID,"3",$logVisual); 
    $eigenYearID GetOrCreateVariable('Letztes Jahr',2,"POWER_CONSUMPTION_LAST_YEAR",$vpname,"",$logYear,$eigenID,"4",$logVisual); 

    $eigencurrDayID     GetOrCreateVariable('Aktueller Tag',2,"POWER_CONSUMPTION_ACTUAL_DAY",$vpname,"",$logDay,$eigencurrID,"1",$logVisual);
    $eigencurrWeekID GetOrCreateVariable('Aktuelle Woche',2,"POWER_CONSUMPTION_ACTUAL_WEEK",$vpname,"",$logWeek,$eigencurrID,"2",$logVisual);
    $eigencurrMonthID GetOrCreateVariable('Aktueller Monat',2,"POWER_CONSUMPTION_ACTUAL_MONTH",$vpname,"",$logMonth,$eigencurrID,"3",$logVisual);
    $eigencurrYearID GetOrCreateVariable('Aktuelles Jahr',2,"POWER_CONSUMPTION_ACTUAL_YEAR",$vpname,"",$logYear,$eigencurrID,"4",$logVisual);



    // Kostenvariablen anlegen bzw. auslesen für Strombezug
    $lastDayCostID     GetOrCreateVariable('Letzter Tag',2,"POWER_COST_LAST_DAY"$vpname2,"",$logDay,$lastCostID,"1",$logVisual);
    $lastWeekCostID GetOrCreateVariable('Letzte Woche',2,"POWER_COST_LAST_WEEK"$vpname2,"",$logWeek,$lastCostID,"2",$logVisual);
    $lastMonthCostID GetOrCreateVariable('Letzter Monat',2,"POWER_COST_LAST_MONTH"$vpname2,"",$logMonth,$lastCostID,"3",$logVisual);
    $lastYearCostID GetOrCreateVariable('Letztes Jahr',2,"POWER_COST_LAST_YEAR"$vpname2,"",$logYear,$lastCostID,"4",$logVisual);

    $currDayCostID     GetOrCreateVariable('Aktueller Tag',2,"POWER_COST_ACTUAL_DAY"$vpname2,"",$logDay$currCostID,"1",$logVisual);
    $currWeekCostID GetOrCreateVariable('Aktuelle Woche',2,"POWER_COST_ACTUAL_WEEK"$vpname2,"",$logWeek$currCostID,"2",$logVisual);
    $currMonthCostID GetOrCreateVariable('Aktueller Monat',2,"POWER_COST_ACTUAL_MONTH"$vpname2,"",$logMonth$currCostID,"3",$logVisual);
    $currYearCostID GetOrCreateVariable('Aktuelles Jahr',2,"POWER_COST_ACTUAL_YEAR",$vpname2,"",$logYear,$currCostID,"4",$logVisual);


    $consDayCostID     GetOrCreateVariable('Tag',2,"POWER_COST_EXTRAPOLATION_DAY",$vpname2,"",$logDay,$consCostID,"1",$logVisual);
    $consWeekCostID GetOrCreateVariable('Woche',2,"POWER_COST_EXTRAPOLATION_WEEK",$vpname2,"",$logWeek,$consCostID,"2",$logVisual);
    $consMonthCostID GetOrCreateVariable('Monat',2,"POWER_COST_EXTRAPOLATION_MONTH",$vpname2,"",$logMonth,$consCostID,"3",$logVisual);
    $consYearCostID GetOrCreateVariable('Jahr',2,"POWER_COST_EXTRAPOLATION_YEAR",$vpname2,"",$logYear,$consCostID,"4",$logVisual);

    // Kostenvariablen anlegen bzw. auslesen / errechnen für Einspeisung
    $einspCostDayCostID     GetOrCreateVariable('Letzter Tag',2,"POWER_COST_LAST_DAY"$vpname2,"",$logDay,$einspCostID,"1",$logVisual);
    $einspCostWeekCostID GetOrCreateVariable('Letzte Woche',2,"POWER_COST_LAST_WEEK"$vpname2,"",$logWeek,$einspCostID,"2",$logVisual);
    $einspCostMonthCostID GetOrCreateVariable('Letzter Monat',2,"POWER_COST_LAST_MONTH"$vpname2,"",$logMonth,$einspCostID,"3",$logVisual);
    $einspCostYearCostID GetOrCreateVariable('Letztes Jahr',2,"POWER_COST_LAST_YEAR"$vpname2,"",$logYear,$einspCostID,"4",$logVisual);

    $einspcurrDayCostID     GetOrCreateVariable('Aktueller Tag',2,"POWER_COST_ACTUAL_DAY"$vpname2,"",$logDay,$einspcurrCostID,"1",$logVisual);
    $einspcurrWeekCostID GetOrCreateVariable('Aktuelle Woche',2,"POWER_COST_ACTUAL_WEEK"$vpname2,"",$logWeek,$einspcurrCostID,"2",$logVisual);
    $einspcurrMonthCostID GetOrCreateVariable('Aktueller Monat',2,"POWER_COST_ACTUAL_MONTH"$vpname2,"",$logMonth,$einspcurrCostID,"3",$logVisual);
    $einspcurrYearCostID GetOrCreateVariable('Aktuelles Jahr',2,"POWER_COST_ACTUAL_YEAR",$vpname2,"",$logYear,$einspcurrCostID,"4",$logVisual);




    // Berechnung für $valueID
    // -------------------------- LETZTE WERTE ------------------------------------------------------------------------------------------------------------------------------
    // GESTERN
    $data AC_GetAggregatedValues($archiveID$valueID/* Täglich */strtotime("yesterday"), strtotime("today")-10); 
    SetValueFloat($lastDayIDCalcConsumption($data));
    SetValue($lastDayCostID,GetValue($lastDayID)*$kosten);

    // LEZTE WOCHE
    $data AC_GetAggregatedValues($archiveID$valueID/* Wöchentlich */strtotime("monday last week"), strtotime("monday this week")-10); 
    SetValueFloat($lastWeekIDCalcConsumption($data));
    SetValue($lastWeekCostID,GetValue($lastWeekID)*$kosten);

    // LETZTER MONAT
    $data AC_GetAggregatedValues($archiveID$valueID/* Monatlich */strtotime("first day of last month 00:00:00"), strtotime("last day of last month 23:59:59"), 0); 
    SetValueFloat($lastMonthIDCalcConsumption($data));
    SetValue($lastMonthCostID,GetValue($lastMonthID)*$kosten);

    // LETZTES JAHR
    $ly date('Y'strtotime('-1 year'));
    $data AC_GetAggregatedValues($archiveID$valueID/* Jährlich */mktime(00011$ly), mktime(2359591231$ly), 0); 
    SetValueFloat($lastYearIDCalcConsumption($data));
    SetValue($lastYearCostID,GetValue($lastYearID)*$kosten);


    // ------------------------- AKTUELLE WERTE -----------------------------------------------------------------------------------------------------------------------------
    // HEUTE
    $data AC_GetAggregatedValues($archiveID$valueID/* Stündlich */strtotime("today"), strtotime("now"), 0);
    $dataDay CalcConsumption($data);
    SetValueFloat($currDayID$dataDay);
    SetValue($currDayCostID,GetValue($currDayID)*$kosten);

    // WOCHE
    $data AC_GetAggregatedValues($archiveID$valueID/* Wöchentlich */strtotime('last monday'strtotime('tomorrow')), strtotime("now"), 0); 
    $dataWeek CalcConsumption($data);
    SetValueFloat($currWeekID$dataWeek);
    SetValue($currWeekCostID,GetValue($currWeekID)*$kosten);

    // MONAT
    $data AC_GetAggregatedValues($archiveID$valueID/* Monatlich */strtotime("first day of this month 00:00"), strtotime("now"), 0);
    $dataMonth CalcConsumption($data);
    SetValueFloat($currMonthID$dataMonth);
    SetValue($currMonthCostID,GetValue($currMonthID)*$kosten);

    // JAHR
    $data AC_GetAggregatedValues($archiveID$valueID/* Jährlich */strtotime("first day of January"), strtotime("now"), 0); 
    $dataYear CalcConsumption($data);
    SetValueFloat($currYearID$dataYear);
    SetValue($currYearCostID,GetValue($currYearID)*$kosten);



    // ------------------------- HOCHRECHNUNG -------------------------------------------------------------------------------------------------------------------------------
    // TAG
    $diff strtotime('now') - strtotime('today');
    $full 60*60*24// 24h
    $data round($dataDay*$full/$diff$roundTo2);
    SetValueFloat($consDayID$data);
    SetValue($consDayCostID,GetValue($consDayID)*$kosten);

    // WOCHE
    $diff strtotime('now') - strtotime('last monday'strtotime('tomorrow'));
    $full 60*60*24*7// 7 Tage
    $data round($dataWeek*$full/$diff$roundTo2);
    SetValueFloat($consWeekID$data);
    SetValue($consWeekCostID,GetValue($consWeekID)*$kosten);

    // MONAT
    $diff strtotime('now') - strtotime('first day of this month 00:00');
    $full 60*60*24*date('t'); // 1 Monat
    $data round($dataMonth*$full/$diff$roundTo2);
    SetValueFloat($consMonthID$data);
    SetValue($consMonthCostID,GetValue($consMonthID)*$kosten);

    // JAHR
    $diff strtotime('now') - strtotime('first day of January');
    $full 60*60*24*365// 1 Jahr
    $data round($dataYear*$full/$diff$roundTo2);
    SetValueFloat($consYearID$data);
    SetValue($consYearCostID,GetValue($consYearID)*$kosten);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // Berechnung für $eurzeugtID
    // -------------------------- LETZTE WERTE ------------------------------------------------------------------------------------------------------------------------------
    // GESTERN
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Täglich */strtotime("yesterday"), strtotime("today")-10); 
    SetValueFloat($erzeugDayIDCalcConsumption($data));

    // LEZTE WOCHE
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Wöchentlich */strtotime("monday last week"), strtotime("monday this week")-10); 
    SetValueFloat($erzeugWeekIDCalcConsumption($data));

    // LETZTER MONAT
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Monatlich */strtotime("first day of last month 00:00:00"), strtotime("last day of last month 23:59:59"), 0); 
    SetValueFloat($erzeugMonthIDCalcConsumption($data));

    // LETZTES JAHR
    $ly date('Y'strtotime('-1 year'));
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Jährlich */mktime(00011$ly), mktime(2359591231$ly), 0); 
    SetValueFloat($erzeugYearIDCalcConsumption($data));


    // ------------------------- AKTUELLE WERTE -----------------------------------------------------------------------------------------------------------------------------
    // HEUTE
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Stündlich */strtotime("today"), strtotime("now"), 0);
    $dataDay CalcConsumption($data);
    SetValueFloat($erzeugcurrDayID$dataDay);

    // WOCHE
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Wöchentlich */strtotime('last monday'strtotime('tomorrow')), strtotime("now"), 0); 
    $dataWeek CalcConsumption($data);
    SetValueFloat($erzeugcurrWeekID$dataWeek);

    // MONAT
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Monatlich */strtotime("first day of this month 00:00"), strtotime("now"), 0);
    $dataMonth CalcConsumption($data);
    SetValueFloat($erzeugMonthID$dataMonth);

    // JAHR
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Jährlich */strtotime("first day of January"), strtotime("now"), 0); 
    $dataYear CalcConsumption($data);
    SetValueFloat($erzeugcurrYearID$dataYear);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // Berechnung für $eingespeistID
    // -------------------------- LETZTE WERTE ------------------------------------------------------------------------------------------------------------------------------
    // GESTERN
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Täglich */strtotime("yesterday"), strtotime("today")-10); 
    SetValueFloat($einspDayIDCalcConsumption($data));
    SetValue($einspCostDayCostID,GetValue($einspDayID)*$verkauf);

    // LEZTE WOCHE
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Wöchentlich */strtotime("monday last week"), strtotime("monday this week")-10); 
    SetValueFloat($einspWeekIDCalcConsumption($data));
    SetValue($einspCostDayCostID,GetValue($einspWeekID)*$verkauf);

    // LETZTER MONAT
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Monatlich */strtotime("first day of last month 00:00:00"), strtotime("last day of last month 23:59:59"), 0); 
    SetValueFloat($einspMonthIDCalcConsumption($data));
    SetValue($einspCostMonthCostID,GetValue($einspMonthID)*$verkauf);

    // LETZTES JAHR
    $ly date('Y'strtotime('-1 year'));
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Jährlich */mktime(00011$ly), mktime(2359591231$ly), 0); 
    SetValueFloat($einspYearIDCalcConsumption($data));
    SetValue($einspCostYearCostID,GetValue($einspYearID)*$verkauf);


    // ------------------------- AKTUELLE WERTE -----------------------------------------------------------------------------------------------------------------------------
    // HEUTE
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Stündlich */strtotime("today"), strtotime("now"), 0);
    $dataDay CalcConsumption($data);
    SetValueFloat($einspcurrDayID$dataDay);
    SetValue($einspcurrDayCostID,GetValue($einspcurrDayID)*$verkauf);

    // WOCHE
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Wöchentlich */strtotime('last monday'strtotime('tomorrow')), strtotime("now"), 0); 
    $dataWeek CalcConsumption($data);
    SetValueFloat($einspcurrWeekID$dataWeek);
    SetValue($einspcurrWeekCostID,GetValue($einspcurrWeekID)*$verkauf);

    // MONAT
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Monatlich */strtotime("first day of this month 00:00"), strtotime("now"), 0);
    $dataMonth CalcConsumption($data);
    SetValueFloat($einspcurrMonthID$dataMonth);
    SetValue($einspcurrMonthCostID,GetValue($einspcurrMonthID)*$verkauf);

    // JAHR
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Jährlich */strtotime("first day of January"), strtotime("now"), 0); 
    $dataYear CalcConsumption($data);
    SetValueFloat($einspcurrYearID$dataYear);
    SetValue($einspcurrYearCostID,GetValue($einspcurrYearID)*$verkauf);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // Berechnung für $eigenverbID
    // -------------------------- LETZTE WERTE ------------------------------------------------------------------------------------------------------------------------------
    // GESTERN
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Täglich */strtotime("yesterday"), strtotime("today")-10); 
    SetValueFloat($eigenDayIDCalcConsumption($data));

    // LEZTE WOCHE
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Wöchentlich */strtotime("monday last week"), strtotime("monday this week")-10); 
    SetValueFloat($eigenWeekIDCalcConsumption($data));

    // LETZTER MONAT
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Monatlich */strtotime("first day of last month 00:00:00"), strtotime("last day of last month 23:59:59"), 0); 
    SetValueFloat($eigenMonthIDCalcConsumption($data));

    // LETZTES JAHR
    $ly date('Y'strtotime('-1 year'));
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Jährlich */mktime(00011$ly), mktime(2359591231$ly), 0); 
    SetValueFloat($eigenYearIDCalcConsumption($data));


    // ------------------------- AKTUELLE WERTE -----------------------------------------------------------------------------------------------------------------------------
    // HEUTE
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Stündlich */strtotime("today"), strtotime("now"), 0);
    $dataDay CalcConsumption($data);
    SetValueFloat($eigencurrDayID$dataDay);

    // WOCHE
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Wöchentlich */strtotime('last monday'strtotime('tomorrow')), strtotime("now"), 0); 
    $dataWeek CalcConsumption($data);
    SetValueFloat($eigencurrWeekID$dataWeek);

    // MONAT
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Monatlich */strtotime("first day of this month 00:00"), strtotime("now"), 0);
    $dataMonth CalcConsumption($data);
    SetValueFloat($eigencurrMonthID$dataMonth);

    // JAHR
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Jährlich */strtotime("first day of January"), strtotime("now"), 0); 
    $dataYear CalcConsumption($data);
    SetValueFloat($eigencurrYearID$dataYear);



    // ------------------------- TIMER ERSTELLEN ----------------------------------------------------------------------------------------------------------------------------
    SetTimerByName($_IPS['SELF'], "Täglich alle Stunde");


    // ------------------------- FUNKTIONEN ---------------------------------------------------------------------------------------------------------------------------------
    // Funktion zum addieren der Zählerwerte 
    function CalcConsumption($values
    {
        global 
    $roundTo2;
        
    $consumption 0;
        foreach(
    $values as $value
        {
                
    $consumption += $value['Avg'];
        }
        return 
    round($consumption$roundTo2);


    // Funktion zum abziehen der Zählerwerte 
    function CalcConsumption2($values
    {
        global 
    $roundTo2;
        
    $consumption 0;
        foreach(
    $values as $value
        {
                
    $consumption $value['Avg'];
        }
        return 
    round($consumption$roundTo2);
    }
        
    // Funktion um einen Timer zu erzeugen
    function SetTimerByName($parentID$name
    {
        Global ${
    $_IPS['SELF']};
        
    $eid = @IPS_GetEventIDByName($name$parentID);
        if(
    $eid === false
    {
        
    $eid IPS_CreateEvent(1);
        
    IPS_SetParent($eid$parentID);
        
    IPS_SetName($eid$name);
        
        
    IPS_SetEventCyclic($eid/* Täglich *//* Jeden Tag */00/* Stündlich *//* Alle Stunden */);
        
    IPS_SetEventCyclicTimeFrom($eid010); //Ab 00:01 stündlich starten
        
    IPS_SetEventActive($eidtrue);
    }
        return 
    $eid;



    // ------------------------- IPS GRUNDFUNKTIONEN -------------------------------------------------------------------------------------------------------------------------
    // Erstellt eine Variable, wenn diese noch nicht existiert
    function GetOrCreateVariable($name$vtyp$ident$profil$ascript$log$parentID$position$logVisual// erstellt eine Variable, wenn es noch nicht exestiert
    /* 
    Wert 1 = Name
    Wert 2 = Variablentyp
    Wert 3 = Variablen-Ident 
    Wert 4 = Variablenprofil 
    Wert 5 = ScriptID 
    Wert 6 = Logging der Daten (True/False)
    Wert 7 = Übergeordnete Instanz, wo die Variable angelegt werden soll 
    Wert 8 = Reihenfolge / Sortierung der Variablen
    Wert 9 = Anzeige der Variable in der Visualisierung im Webfront deaktiveren oder aktivieren
    */
    {
        
    $ObjId = @IPS_GetObjectIDByName($name$parentID);
        if (
    $ObjId === false)
        {
            
    $ObjId IPS_CreateVariable($vtyp);
            
    IPS_SetName($ObjId$name); //Namen vergeben
            
    IPS_SetIdent($ObjId$ident); //ObjectIdent vergeben
            
    IPS_SetParent($ObjId$parentID); //Variable unter die Instantz verschieben
            
    @IPS_SetVariableCustomProfile($ObjId$profil); //Variablen-Profil zuordnen
            
    @IPS_SetVariableCustomAction($ObjId$ascript); //Verknüpft das Script mit der Variable als Actionscript

            // Archive Control ID herrausfinden
            
    foreach(IPS_GetInstanceList ( ) as $m_id//Durchsucht alle Instanzen und gibt die InstanzID an $i_id weiter
            
    {
                
    $typ IPS_GetInstance($m_id)['ModuleInfo']['ModuleName']; //Fragt die Instanzen nach den Modulnamen ab
                
    if ($typ =="Archive Control"$modul_id $m_id//Wenn die Instanz den Modulnamen "Archive Control" hat, dann schreibe die ID in $modul_id
            
    }
            
            
    $logging AC_GetLoggingStatus($modul_id,$ObjId);
            if (
    $logging != 1)
            {
                
    AC_SetLoggingStatus($modul_id$ObjId$log);
                
    AC_SetGraphStatus($modul_id$ObjId$logVisual);
                
    IPS_ApplyChanges($modul_id);
            }
    // Ende Logging
            
            
    IPS_SetPosition($ObjId$position);
        }
        return 
    $ObjId;
    }

    // Erstellt eine Instanz, wenn diese noch nicht existiert
    function GetOrCreateInstanz($name$ityp$parentID//erstellt eine Variable, wenn diese noch nicht exestiert
    /*
    Wert 1 = Name
    Wert 2 = Instanztyp 
    Wert 3 = Übergeordnete Instanz, wo die Instanz angelegt werden soll
    */
    {
        
    $ObjId = @IPS_GetObjectIDByName($name$parentID);
        if (
    $ObjId === false)
        {
            if (
    $ityp == "dummy"$ityp='{485D0419-BE97-4548-AA9C-C083EB82E61E}';
            
    $ObjId IPS_CreateInstance($ityp);
            
    IPS_SetName($ObjId$name); // Namen vergeben
            
    IPS_SetParent($ObjId$parentID); // Variable unter die Instantz verschieben
        
    }
        return 
    $ObjId;
    }

    // Erstellt ein Script, wenn es noch nicht exestiert
    function GetOrCreateScript($name$parentID$data$hidden
    /*
    Wert 1 = Name
    Wert 2 = Übergeordnete Instanz, wo das Script angelegt werden soll
    Wert 3 = Ist das, was ins Script geschrieben wird
    Wert 4 = Ob das Script sichtbar sein soll (true, false)
    */
    {
        
    $ObjId = @IPS_GetObjectIDByName($name$parentID);
        if (
    $ObjId === false)
        {
             
    $ObjId IPS_CreateScript(0);
            
    IPS_SetName($ObjId$name);
            
    IPS_SetScriptContent($ObjId"$data"); // Der Text was ins Script geschrieben wird
            
    IPS_SetHidden($ObjId$hidden); // Setzt Script auf nicht sichtbar
            
    IPS_SetParent($ObjId$parentID); //  Script unter das Parent verschieben
         
    }
        return 
    $ObjId;
    }

    // Erstellt eine Kategorie, wenn diese noch nicht exestiert
    function GetorCreatecategory($name$parentID)
    #function GetorCreatcategory($name,$parent, $position, $hidden)
    {
    $LinkID = @IPS_GetObjectIDByName($name$parentID);
    if (
    $LinkID === false)
    {
        
    $LinkID IPS_CreateCategory(); // Link anlegen
        
    IPS_SetName($LinkID$name); // Link benennen
        
    IPS_SetParent($LinkID$parentID); // Link einsortieren unter dem Objekt mit der ID "12345 /*[Webfront\Tablet\EG\Energieberichte\Übersicht\Kosten\Hochrechnung\Hochrechnung Kosten pro Jahr\Waschmaschine]*/"
        #if ($hidden ===true) IPS_SetHidden($LinkID,true);
        #IPS_SetPosition($LinkID,$position); //Position festlegen
    }
        return 
    $LinkID;
    }
    ?>
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	IPS zaehler.png 
Hits:	114 
Größe:	174.3 KB 
ID:	51112

    Gruß
    IPS Professional meist aktuellste stable. Auf einen Qnap / Docker.
    Tasmota, MQTT, Sonoff etc.

  7. #87
    Registriert seit
    Oct 2017
    Beiträge
    569

    Niemand eine Idee?
    IPS Professional meist aktuellste stable. Auf einen Qnap / Docker.
    Tasmota, MQTT, Sonoff etc.

  8. #88
    Registriert seit
    Dec 2009
    Ort
    Berlin
    Beiträge
    1,106

    Hallo PowerDodge,

    hab das Script mal kopiert und mit meinem Stromzähler verquickt...

    Ich bekomme mit folgenden Anpassungen realistische Werte:


    Zuerst eine angepasste Funktion wie folgt im Script ergänzen.
    PHP-Code:
    // ------------------------- FUNKTIONEN ---------------------------------------------------------------------------------------------------------------------------------
    // Funktion zum addieren der Zählerwerte 

    // Die Funktion "CalcConsumptionDiff()" ergänzen (copy/paste)
    // lueralba 1.12.2019
    function CalcConsumptionDiff($values
    {
        global 
    $roundTo2;
        
    $consumption 0;
        foreach(
    $values as $value
        {
                
    $consumption $value['Max'] - $value['Min'];
        }
        return 
    round($consumption$roundTo2);


    //    ^
    //    |
    //    |
    //    |
    //      Einfach hier vor die bestehende Funktion CalcConsumption() ...

    function CalcConsumption($values
    {
        global 
    $roundTo2;
        
    $consumption 0;
        foreach(
    $values as $value
        {
                
    $consumption += $value['Avg'];
        }
        return 
    round($consumption$roundTo2);


    und ALLE Befehle "$data........ = CalcConsumption($data);" ändern
    in "$data........ = CalcConsumptionDiff($data);"

    Beispiel:
    PHP-Code:
    // ------------------------- AKTUELLE WERTE -----------------------------------------------------------------------------------------------------------------------------
    // HEUTE
    $data AC_GetAggregatedValues($archiveID$valueID1strtotime("today"), strtotime("now"), 0);
    //$dataDay = CalcConsumption($data);  ****Auskommentiert****
    $dataDay CalcConsumptionDiff($data);  ****Ersetzung****
    SetValueFloat($currDayID$dataDay);
    SetValue($currDayCostID,GetValue($currDayID)*$kosten); 

    Teste es mal damit.
    Ich habe keine PV Anlage und daher alle PV relevanten Dinge gelöscht.

    Gruß
    lueralba
    __________________
    IPS 5.5 RC1 auf Raspi3 ; IPSView ; Mobile5.x ; AEON Stick/Razberry Gen5 und Fibaro HC2 ; ca. 90 Z-Wave Geräte ; LOGO!8 ; CCU3 RaspberryMatic; Fritzbox 7590 ; Viessmann via EXSYS; Sensus HRI und Eltako DSZ12DM an PiiGAB M-Bus; Instar 4011; AXIS 207W; RG-11

  9. #89
    Registriert seit
    Oct 2017
    Beiträge
    569

    Hallo,

    super vielen Dank schon mal dafür!

    Werde ich etwas später ausprobieren.

    Gruß
    IPS Professional meist aktuellste stable. Auf einen Qnap / Docker.
    Tasmota, MQTT, Sonoff etc.

  10. #90
    Registriert seit
    Feb 2014
    Ort
    Egling an der Paar
    Beiträge
    12

    Hallo,

    ich hab mir das Skript auch mal geklaut.
    Spiel auch schon seit Tagen damit rum.

    Bei der letzten Verbesserung durch lueralba bekomme ich keine aktuellen Werte mehr für den Tag. Obwohl der Zähler schon weiter ist.

    Das Problem, das ich bei der alten Version schon hatte, das mir der eigen verbrauchte PV Strom nicht angezeigt wird.
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	strom.JPG 
Hits:	67 
Größe:	143.4 KB 
ID:	51558



    PHP-Code:
    <? 
    #include('globalfunction.ips.php');
    #########################################################################################################################################################################
    # Scriptbezeichnung: HM.Consumption.ips.php
    # Version: 1.2
    # Author: Heiko Wilknitz
    # Anpassung by Zerfasm & Drapple  
    #
    # Auswertung und Hochrechnung des Stromverbrauches
    # Nochamls vielen Dank an Pitti der den Ursprung für dieses Skript gelegt hat!

    // ----------------------------- KONFIGURATION --------------------------------------------------------------------------------------------------------------------------

    // Anzahl Nachkommastellen bei Ergebnissen
    $roundTo2   2//Anzahl Nachkommastellen bei Ergebnissen
    $roundTo3   3//Anzahl Nachkommastellen bei Ergebnissen
    $kosten        GetValue(29295 /*[Info\EHZ\Auwertung\Bezugspreis]*/); //Floatvariable mit dem Preis pro kWh
    $verkauf       GetValue(56546 /*[Info\EHZ\Auwertung\Einspeisevergütung]*/); // Floatvariable Verkaufspreis pro KWh

    //Logging einstellen
    $logDay        true//Logging für Tag einstellen
    $logWeek    true//Logging für Woche einstellen
    $logMonth    true//Logging für Monat einstellen
    $logYear    true//Logging für Jahr einstellen
    $logVisual    true//Anzeige der Variable in der Visualisierung im Webfront deaktiveren oder aktivieren

    //Auswahl ob Instanzen mit den Variablen unter einer Kategorie oder einer weiteren Instanz angeordnet werden sollen
    $category true;

    //Wenn das Skript die max. Zeit von 30 Sekunden beim ersten ausführen überschreitet, kann mit der nächsten Zeile die Fehlermeldung verhindert werden
    set_time_limit (60); //Hier kann die Zeit in Sekunden angegeben werden

    // ----------------------------------- ID´s -----------------------------------------------------------------------------------------------------------------------------
    $parentID     IPS_GetObject($_IPS['SELF']); 
    $parentID     $parentID['ParentID'];

    //ID des ArchiveHandler ermitteln 
    $instances     IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}'); 
    $archiveID     $instances[0]; 

    // Verbrauchszähler / Bezogener Strom
    //$valueID     = IPS_GetObjectIDByIdent("ENERGY_COUNTER_TOTAL", $parentID); //Wenn ObjektID verwendet werden soll
    $valueID     53658 /*[Info\EHZ\Haus\Haus EHZ Zähler 1029250\01 08 01 bez.]*///Wenn VariablenID verwendet werden soll

    // PV Strom Erzeugt und Eingespeist
    $eurzeugtID   11040 /*[Info\EHZ\PV\PV EHZ Zähler\02 08 01 ]*/;
    $eingespeistID 14820 /*[Info\EHZ\Haus\Haus EHZ Zähler 1029250\02 08 01 eins.]*/;
    $eigenverbID 35749 /*[Info\EHZ\PV\PV EHZ Zähler\Eigenverbrauch]*/;


    // -------------------------- VARIABLENPROFIL ERSTELLEN -----------------------------------------------------------------------------------------------------------------
    // Profilname kWh    
    $vpname="kWh";
    if (!
    IPS_VariableProfileExists($vpname)) //Wenn das Provil noch nicht Exestiert dann lege es an:
    {
        
    IPS_CreateVariableProfile($vpname2); //Variabelprofil erstellen
        
    IPS_SetVariableProfileIcon($vpname,"Lightning"); //Variabelprofil Icon zuweisen
        
    IPS_SetVariableProfileText($vpname,""," kWh"); //Suffix setzen
        
    IPS_SetVariableProfileValues($vpname00,); //Der Befehl setzt den MinimalWert, MaximalWert und die Schrittweite eines Variablenprofils mit Namen ProfilName.
        
    IPS_SetVariableProfileDigits($vpname$roundTo2); //Anzahl Nachkommastellen, in diesem Fall 2
    }

    // Profilname"Euro"
    $vpname2="Euro";
    if (!
    IPS_VariableProfileExists($vpname2)) //Wenn das Provil noch nicht Exestiert dann lege es an:
    {
        
    IPS_CreateVariableProfile($vpname22); //Variabelprofil erstellen
        
    IPS_SetVariableProfileIcon($vpname2,"Euro"); //Variabelprofil Icon zuweisen
        
    IPS_SetVariableProfileText($vpname2,""," €"); //Suffix setzen
        
    IPS_SetVariableProfileValues($vpname200,); //Der Befehl setzt den MinimalWert, MaximalWert und die Schrittweite eines Variablenprofils mit Namen ProfilName.
        
    IPS_SetVariableProfileDigits($vpname2$roundTo2); //Anzahl Nachkommastellen, in diesem Fall 2


    // -------------------------- AUSWAHL OB KATEGORIEN ODER INSTANZEN ERSTELLEN --------------------------------------------------------------------------------------------

    If ($category == true)
    {
        
    $enerID GetorCreatecategory("Bezug Strom",$parentID);
        
    $enerCostID GetorCreatecategory("Bezug Strom kosten",$parentID);
        
    $einspKID GetorCreatecategory("Eingespeister Strom",$parentID);
        
    $einspCostKID GetorCreatecategory("Eingespeister Strom Vergütung",$parentID);
        
    $erzeugKID GetorCreatecategory("PV produzierter Strom",$parentID);
        
    $eigenKID GetorCreatecategory("Eigenverbrauchter Strom",$parentID);
    }
    else
    {
        
    $enerID GetorCreateInstanz("Bezug Strom","dummy",$parentID);
        
    $enerCostID GetorCreateInstanz("Bezug Strom kosten","dummy",$parentID);
        
    $einspKID GetorCreatecategory("Eingespeister Strom","dummy",$parentID);
        
    $einspKCostID GetorCreatecategory("Eingespeister Strom Vergütung","dummy",$parentID);
        
    $erzeugKID GetorCreatecategory("PV produzierter Strom","dummy",$parentID);
        
    $eigenKID GetorCreatecategory("Eigenverbrauchter Strom","dummy",$parentID);
    }

    // -------------------------- INSTANZEN ERSTELLEN -----------------------------------------------------------------------------------------------------------------------
    // Verbrauchsinstanzen anlegen
    $lastID GetOrCreateInstanz("Verbrauch Zuletzt","dummy",$enerID);
    $currID GetOrCreateInstanz("Verbrauch Aktuell","dummy",$enerID);
    $einspID GetOrCreateInstanz("Eingespeister Strom Zuletzt","dummy",$einspKID);
    $einspcurrID GetOrCreateInstanz("Eingespeister Strom Aktuell","dummy",$einspKID);
    $erzeugID GetOrCreateInstanz("PV produziert Zuletzt","dummy",$erzeugKID);
    $erzeugcurrID GetOrCreateInstanz("PV produziert Aktuell","dummy",$erzeugKID);
    $eigenID GetOrCreateInstanz("Eigenverbrauchter PV Strom Zuletzt","dummy",$eigenKID);
    $eigencurrID GetOrCreateInstanz("Eigenverbrauchter PV Strom Aktuell","dummy",$eigenKID);
    $consID GetOrCreateInstanz("Hochrechnung Verbrauch","dummy",$enerID); 

    // Kosteninstanzen anlegen
    $lastCostID GetOrCreateInstanz("Kosten Zuletzt","dummy",$enerCostID);
    $currCostID GetOrCreateInstanz("Kosten Aktuell","dummy",$enerCostID);
    $einspCostID GetOrCreateInstanz("Kosten verkaufter Strom Zuletzt","dummy",$einspCostKID);
    $einspcurrCostID GetOrCreateInstanz("Betrag verkaufter Strom Aktuell","dummy",$einspCostKID);
    $consCostID GetOrCreateInstanz("Hochrechnung Kosten","dummy",$enerCostID); 


    // -------------------------- VARIABLEN ERSTELLEN -----------------------------------------------------------------------------------------------------------------------

    // Verbrauchsvariablen anlegen bzw. auslesen: für Stromverbrauch
    $lastDayID     GetOrCreateVariable('Letzter Tag',2,"POWER_CONSUMPTION_LAST_DAY",$vpname,"",$logDay,$lastID,"1",$logVisual); 
    $lastWeekID GetOrCreateVariable('Letzte Woche',2,"POWER_CONSUMPTION_LAST_WEEK",$vpname,"",$logWeek,$lastID,"2",$logVisual); 
    $lastMonthID GetOrCreateVariable('Letzter Monat',2,"POWER_CONSUMPTION_LAST_MONTH",$vpname,"",$logMonth,$lastID,"3",$logVisual); 
    $lastYearID GetOrCreateVariable('Letztes Jahr',2,"POWER_CONSUMPTION_LAST_YEAR",$vpname,"",$logYear,$lastID,"4",$logVisual); 

    $currDayID     GetOrCreateVariable('Aktueller Tag',2,"POWER_CONSUMPTION_ACTUAL_DAY",$vpname,"",$logDay,$currID,"1",$logVisual);
    $currWeekID GetOrCreateVariable('Aktuelle Woche',2,"POWER_CONSUMPTION_ACTUAL_WEEK",$vpname,"",$logWeek,$currID,"2",$logVisual);
    $currMonthID GetOrCreateVariable('Aktueller Monat',2,"POWER_CONSUMPTION_ACTUAL_MONTH",$vpname,"",$logMonth,$currID,"3",$logVisual);
    $currYearID GetOrCreateVariable('Aktuelles Jahr',2,"POWER_CONSUMPTION_ACTUAL_YEAR",$vpname,"",$logYear,$currID,"4",$logVisual);

    $consDayID     GetOrCreateVariable('Tag',2,"POWER_CONSUMPTION_EXTRAPOLATION_DAY",$vpname,"",$logDay,$consID,"1",$logVisual);
    $consWeekID GetOrCreateVariable('Woche',2,"POWER_CONSUMPTION_EXTRAPOLATION_WEEK",$vpname,"",$logWeek,$consID,"2",$logVisual);
    $consMonthID GetOrCreateVariable('Monat',2,"POWER_CONSUMPTION_EXTRAPOLATION_MONTH",$vpname,"",$logMonth,$consID,"3",$logVisual);
    $consYearID GetOrCreateVariable('Jahr',2,"POWER_CONSUMPTION_EXTRAPOLATION_YEAR",$vpname,"",$logYear,$consID,"4",$logVisual);

    // Verbrauchsvariablen anlegen bzw. auslesen: für erzeugten Strom
    $erzeugDayID     GetOrCreateVariable('Letzter Tag',2,"POWER_CONSUMPTION_LAST_DAY",$vpname,"",$logDay,$erzeugID,"1",$logVisual); 
    $erzeugWeekID GetOrCreateVariable('Letzte Woche',2,"POWER_CONSUMPTION_LAST_WEEK",$vpname,"",$logWeek,$erzeugID,"2",$logVisual); 
    $erzeugMonthID GetOrCreateVariable('Letzter Monat',2,"POWER_CONSUMPTION_LAST_MONTH",$vpname,"",$logMonth,$erzeugID,"3",$logVisual); 
    $erzeugYearID GetOrCreateVariable('Letztes Jahr',2,"POWER_CONSUMPTION_LAST_YEAR",$vpname,"",$logYear,$erzeugID,"4",$logVisual); 

    $erzeugcurrDayID     GetOrCreateVariable('Aktueller Tag',2,"POWER_CONSUMPTION_ACTUAL_DAY",$vpname,"",$logDay,$erzeugcurrID,"1",$logVisual);
    $erzeugcurrWeekID GetOrCreateVariable('Aktuelle Woche',2,"POWER_CONSUMPTION_ACTUAL_WEEK",$vpname,"",$logWeek,$erzeugcurrID,"2",$logVisual);
    $erzeugcurrMonthID GetOrCreateVariable('Aktueller Monat',2,"POWER_CONSUMPTION_ACTUAL_MONTH",$vpname,"",$logMonth,$erzeugcurrID,"3",$logVisual);
    $erzeugcurrYearID GetOrCreateVariable('Aktuelles Jahr',2,"POWER_CONSUMPTION_ACTUAL_YEAR",$vpname,"",$logYear,$erzeugcurrID,"4",$logVisual);

    // Verbrauchsvariablen anlegen bzw. auslesen: für eingespeisten Strom
    $einspDayID     GetOrCreateVariable('Letzter Tag',2,"POWER_CONSUMPTION_LAST_DAY",$vpname,"",$logDay,$einspID,"1",$logVisual); 
    $einspWeekID GetOrCreateVariable('Letzte Woche',2,"POWER_CONSUMPTION_LAST_WEEK",$vpname,"",$logWeek,$einspID,"2",$logVisual); 
    $einspMonthID GetOrCreateVariable('Letzter Monat',2,"POWER_CONSUMPTION_LAST_MONTH",$vpname,"",$logMonth,$einspID,"3",$logVisual); 
    $einspYearID GetOrCreateVariable('Letztes Jahr',2,"POWER_CONSUMPTION_LAST_YEAR",$vpname,"",$logYear,$einspID,"4",$logVisual); 

    $einspcurrDayID     GetOrCreateVariable('Aktueller Tag',2,"POWER_CONSUMPTION_ACTUAL_DAY",$vpname,"",$logDay,$einspcurrID,"1",$logVisual);
    $einspcurrWeekID GetOrCreateVariable('Aktuelle Woche',2,"POWER_CONSUMPTION_ACTUAL_WEEK",$vpname,"",$logWeek,$einspcurrID,"2",$logVisual);
    $einspcurrMonthID GetOrCreateVariable('Aktueller Monat',2,"POWER_CONSUMPTION_ACTUAL_MONTH",$vpname,"",$logMonth,$einspcurrID,"3",$logVisual);
    $einspcurrYearID GetOrCreateVariable('Aktuelles Jahr',2,"POWER_CONSUMPTION_ACTUAL_YEAR",$vpname,"",$logYear,$einspcurrID,"4",$logVisual);

    // Verbrauchsvariablen anlegen bzw. auslesen / ausrechen: für PV verbrauchten Strom
    $eigenDayID     GetOrCreateVariable('Letzter Tag',2,"POWER_CONSUMPTION_LAST_DAY",$vpname,"",$logDay,$eigenID,"1",$logVisual); 
    $eigenWeekID GetOrCreateVariable('Letzte Woche',2,"POWER_CONSUMPTION_LAST_WEEK",$vpname,"",$logWeek,$eigenID,"2",$logVisual); 
    $eigenMonthID GetOrCreateVariable('Letzter Monat',2,"POWER_CONSUMPTION_LAST_MONTH",$vpname,"",$logMonth,$eigenID,"3",$logVisual); 
    $eigenYearID GetOrCreateVariable('Letztes Jahr',2,"POWER_CONSUMPTION_LAST_YEAR",$vpname,"",$logYear,$eigenID,"4",$logVisual); 

    $eigencurrDayID     GetOrCreateVariable('Aktueller Tag',2,"POWER_CONSUMPTION_ACTUAL_DAY",$vpname,"",$logDay,$eigencurrID,"1",$logVisual);
    $eigencurrWeekID GetOrCreateVariable('Aktuelle Woche',2,"POWER_CONSUMPTION_ACTUAL_WEEK",$vpname,"",$logWeek,$eigencurrID,"2",$logVisual);
    $eigencurrMonthID GetOrCreateVariable('Aktueller Monat',2,"POWER_CONSUMPTION_ACTUAL_MONTH",$vpname,"",$logMonth,$eigencurrID,"3",$logVisual);
    $eigencurrYearID GetOrCreateVariable('Aktuelles Jahr',2,"POWER_CONSUMPTION_ACTUAL_YEAR",$vpname,"",$logYear,$eigencurrID,"4",$logVisual);



    // Kostenvariablen anlegen bzw. auslesen für Strombezug
    $lastDayCostID     GetOrCreateVariable('Letzter Tag',2,"POWER_COST_LAST_DAY"$vpname2,"",$logDay,$lastCostID,"1",$logVisual);
    $lastWeekCostID GetOrCreateVariable('Letzte Woche',2,"POWER_COST_LAST_WEEK"$vpname2,"",$logWeek,$lastCostID,"2",$logVisual);
    $lastMonthCostID GetOrCreateVariable('Letzter Monat',2,"POWER_COST_LAST_MONTH"$vpname2,"",$logMonth,$lastCostID,"3",$logVisual);
    $lastYearCostID GetOrCreateVariable('Letztes Jahr',2,"POWER_COST_LAST_YEAR"$vpname2,"",$logYear,$lastCostID,"4",$logVisual);

    $currDayCostID     GetOrCreateVariable('Aktueller Tag',2,"POWER_COST_ACTUAL_DAY"$vpname2,"",$logDay$currCostID,"1",$logVisual);
    $currWeekCostID GetOrCreateVariable('Aktuelle Woche',2,"POWER_COST_ACTUAL_WEEK"$vpname2,"",$logWeek$currCostID,"2",$logVisual);
    $currMonthCostID GetOrCreateVariable('Aktueller Monat',2,"POWER_COST_ACTUAL_MONTH"$vpname2,"",$logMonth$currCostID,"3",$logVisual);
    $currYearCostID GetOrCreateVariable('Aktuelles Jahr',2,"POWER_COST_ACTUAL_YEAR",$vpname2,"",$logYear,$currCostID,"4",$logVisual);


    $consDayCostID     GetOrCreateVariable('Tag',2,"POWER_COST_EXTRAPOLATION_DAY",$vpname2,"",$logDay,$consCostID,"1",$logVisual);
    $consWeekCostID GetOrCreateVariable('Woche',2,"POWER_COST_EXTRAPOLATION_WEEK",$vpname2,"",$logWeek,$consCostID,"2",$logVisual);
    $consMonthCostID GetOrCreateVariable('Monat',2,"POWER_COST_EXTRAPOLATION_MONTH",$vpname2,"",$logMonth,$consCostID,"3",$logVisual);
    $consYearCostID GetOrCreateVariable('Jahr',2,"POWER_COST_EXTRAPOLATION_YEAR",$vpname2,"",$logYear,$consCostID,"4",$logVisual);

    // Kostenvariablen anlegen bzw. auslesen / errechnen für Einspeisung
    $einspCostDayCostID     GetOrCreateVariable('Letzter Tag',2,"POWER_COST_LAST_DAY"$vpname2,"",$logDay,$einspCostID,"1",$logVisual);
    $einspCostWeekCostID GetOrCreateVariable('Letzte Woche',2,"POWER_COST_LAST_WEEK"$vpname2,"",$logWeek,$einspCostID,"2",$logVisual);
    $einspCostMonthCostID GetOrCreateVariable('Letzter Monat',2,"POWER_COST_LAST_MONTH"$vpname2,"",$logMonth,$einspCostID,"3",$logVisual);
    $einspCostYearCostID GetOrCreateVariable('Letztes Jahr',2,"POWER_COST_LAST_YEAR"$vpname2,"",$logYear,$einspCostID,"4",$logVisual);

    $einspcurrDayCostID     GetOrCreateVariable('Aktueller Tag',2,"POWER_COST_ACTUAL_DAY"$vpname2,"",$logDay,$einspcurrCostID,"1",$logVisual);
    $einspcurrWeekCostID GetOrCreateVariable('Aktuelle Woche',2,"POWER_COST_ACTUAL_WEEK"$vpname2,"",$logWeek,$einspcurrCostID,"2",$logVisual);
    $einspcurrMonthCostID GetOrCreateVariable('Aktueller Monat',2,"POWER_COST_ACTUAL_MONTH"$vpname2,"",$logMonth,$einspcurrCostID,"3",$logVisual);
    $einspcurrYearCostID GetOrCreateVariable('Aktuelles Jahr',2,"POWER_COST_ACTUAL_YEAR",$vpname2,"",$logYear,$einspcurrCostID,"4",$logVisual);




    // Berechnung für $valueID
    // -------------------------- LETZTE WERTE ------------------------------------------------------------------------------------------------------------------------------
    // GESTERN
    $data AC_GetAggregatedValues($archiveID$valueID/* Täglich */strtotime("yesterday"), strtotime("today")-10); 
    SetValueFloat($lastDayIDCalcConsumptionDiff($data));
    SetValue($lastDayCostID,GetValue($lastDayID)*$kosten);

    // LEZTE WOCHE
    $data AC_GetAggregatedValues($archiveID$valueID/* Wöchentlich */strtotime("monday last week"), strtotime("monday this week")-10); 
    SetValueFloat($lastWeekIDCalcConsumptionDiff($data));
    SetValue($lastWeekCostID,GetValue($lastWeekID)*$kosten);

    // LETZTER MONAT
    $data AC_GetAggregatedValues($archiveID$valueID/* Monatlich */strtotime("first day of last month 00:00:00"), strtotime("last day of last month 23:59:59"), 0); 
    SetValueFloat($lastMonthIDCalcConsumptionDiff($data));
    SetValue($lastMonthCostID,GetValue($lastMonthID)*$kosten);

    // LETZTES JAHR
    $ly date('Y'strtotime('-1 year'));
    $data AC_GetAggregatedValues($archiveID$valueID/* Jährlich */mktime(00011$ly), mktime(2359591231$ly), 0); 
    SetValueFloat($lastYearIDCalcConsumptionDiff($data));
    SetValue($lastYearCostID,GetValue($lastYearID)*$kosten);


    // ------------------------- AKTUELLE WERTE -----------------------------------------------------------------------------------------------------------------------------
    // HEUTE
    $data AC_GetAggregatedValues($archiveID$valueID/* Stündlich */strtotime("today"), strtotime("now"), 0);
    $dataDay CalcConsumptionDiff($data);
    SetValueFloat($currDayID$dataDay);
    SetValue($currDayCostID,GetValue($currDayID)*$kosten);

    // WOCHE
    $data AC_GetAggregatedValues($archiveID$valueID/* Wöchentlich */strtotime('last monday'strtotime('tomorrow')), strtotime("now"), 0); 
    $dataWeek CalcConsumptionDiff($data);
    SetValueFloat($currWeekID$dataWeek);
    SetValue($currWeekCostID,GetValue($currWeekID)*$kosten);

    // MONAT
    $data AC_GetAggregatedValues($archiveID$valueID/* Monatlich */strtotime("first day of this month 00:00"), strtotime("now"), 0);
    $dataMonth CalcConsumptionDiff($data);
    SetValueFloat($currMonthID$dataMonth);
    SetValue($currMonthCostID,GetValue($currMonthID)*$kosten);

    // JAHR
    $data AC_GetAggregatedValues($archiveID$valueID/* Jährlich */strtotime("first day of January"), strtotime("now"), 0); 
    $dataYear CalcConsumptionDiff($data);
    SetValueFloat($currYearID$dataYear);
    SetValue($currYearCostID,GetValue($currYearID)*$kosten);



    // ------------------------- HOCHRECHNUNG -------------------------------------------------------------------------------------------------------------------------------
    // TAG
    $diff strtotime('now') - strtotime('today');
    $full 60*60*24// 24h
    $data round($dataDay*$full/$diff$roundTo2);
    SetValueFloat($consDayID$data);
    SetValue($consDayCostID,GetValue($consDayID)*$kosten);

    // WOCHE
    $diff strtotime('now') - strtotime('last monday'strtotime('tomorrow'));
    $full 60*60*24*7// 7 Tage
    $data round($dataWeek*$full/$diff$roundTo2);
    SetValueFloat($consWeekID$data);
    SetValue($consWeekCostID,GetValue($consWeekID)*$kosten);

    // MONAT
    $diff strtotime('now') - strtotime('first day of this month 00:00');
    $full 60*60*24*date('t'); // 1 Monat
    $data round($dataMonth*$full/$diff$roundTo2);
    SetValueFloat($consMonthID$data);
    SetValue($consMonthCostID,GetValue($consMonthID)*$kosten);

    // JAHR
    $diff strtotime('now') - strtotime('first day of January');
    $full 60*60*24*365// 1 Jahr
    $data round($dataYear*$full/$diff$roundTo2);
    SetValueFloat($consYearID$data);
    SetValue($consYearCostID,GetValue($consYearID)*$kosten);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // Berechnung für $eurzeugtID
    // -------------------------- LETZTE WERTE ------------------------------------------------------------------------------------------------------------------------------
    // GESTERN
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Täglich */strtotime("yesterday"), strtotime("today")-10); 
    SetValueFloat($erzeugDayIDCalcConsumptionDiff($data));

    // LEZTE WOCHE
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Wöchentlich */strtotime("monday last week"), strtotime("monday this week")-10); 
    SetValueFloat($erzeugWeekIDCalcConsumptionDiff($data));

    // LETZTER MONAT
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Monatlich */strtotime("first day of last month 00:00:00"), strtotime("last day of last month 23:59:59"), 0); 
    SetValueFloat($erzeugMonthIDCalcConsumptionDiff($data));

    // LETZTES JAHR
    $ly date('Y'strtotime('-1 year'));
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Jährlich */mktime(00011$ly), mktime(2359591231$ly), 0); 
    SetValueFloat($erzeugYearIDCalcConsumptionDiff($data));


    // ------------------------- AKTUELLE WERTE -----------------------------------------------------------------------------------------------------------------------------
    // HEUTE
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Stündlich */strtotime("today"), strtotime("now"), 0);
    $dataDay CalcConsumptionDiff($data);
    SetValueFloat($erzeugcurrDayID$dataDay);

    // WOCHE
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Wöchentlich */strtotime('last monday'strtotime('tomorrow')), strtotime("now"), 0); 
    $dataWeek CalcConsumptionDiff($data);
    SetValueFloat($erzeugcurrWeekID$dataWeek);

    // MONAT
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Monatlich */strtotime("first day of this month 00:00"), strtotime("now"), 0);
    $dataMonth CalcConsumptionDiff($data);
    SetValueFloat($erzeugMonthID$dataMonth);

    // JAHR
    $data AC_GetAggregatedValues($archiveID$eurzeugtID/* Jährlich */strtotime("first day of January"), strtotime("now"), 0); 
    $dataYear CalcConsumptionDiff($data);
    SetValueFloat($erzeugcurrYearID$dataYear);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // Berechnung für $eingespeistID
    // -------------------------- LETZTE WERTE ------------------------------------------------------------------------------------------------------------------------------
    // GESTERN
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Täglich */strtotime("yesterday"), strtotime("today")-10); 
    SetValueFloat($einspDayIDCalcConsumptionDiff($data));
    SetValue($einspCostDayCostID,GetValue($einspDayID)*$verkauf);

    // LEZTE WOCHE
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Wöchentlich */strtotime("monday last week"), strtotime("monday this week")-10); 
    SetValueFloat($einspWeekIDCalcConsumptionDiff($data));
    SetValue($einspCostDayCostID,GetValue($einspWeekID)*$verkauf);

    // LETZTER MONAT
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Monatlich */strtotime("first day of last month 00:00:00"), strtotime("last day of last month 23:59:59"), 0); 
    SetValueFloat($einspMonthIDCalcConsumptionDiff($data));
    SetValue($einspCostMonthCostID,GetValue($einspMonthID)*$verkauf);

    // LETZTES JAHR
    $ly date('Y'strtotime('-1 year'));
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Jährlich */mktime(00011$ly), mktime(2359591231$ly), 0); 
    SetValueFloat($einspYearIDCalcConsumptionDiff($data));
    SetValue($einspCostYearCostID,GetValue($einspYearID)*$verkauf);


    // ------------------------- AKTUELLE WERTE -----------------------------------------------------------------------------------------------------------------------------
    // HEUTE
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Stündlich */strtotime("today"), strtotime("now"), 0);
    $dataDay CalcConsumptionDiff($data);
    SetValueFloat($einspcurrDayID$dataDay);
    SetValue($einspcurrDayCostID,GetValue($einspcurrDayID)*$verkauf);

    // WOCHE
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Wöchentlich */strtotime('last monday'strtotime('tomorrow')), strtotime("now"), 0); 
    $dataWeek CalcConsumptionDiff($data);
    SetValueFloat($einspcurrWeekID$dataWeek);
    SetValue($einspcurrWeekCostID,GetValue($einspcurrWeekID)*$verkauf);

    // MONAT
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Monatlich */strtotime("first day of this month 00:00"), strtotime("now"), 0);
    $dataMonth CalcConsumptionDiff($data);
    SetValueFloat($einspcurrMonthID$dataMonth);
    SetValue($einspcurrMonthCostID,GetValue($einspcurrMonthID)*$verkauf);

    // JAHR
    $data AC_GetAggregatedValues($archiveID$eingespeistID/* Jährlich */strtotime("first day of January"), strtotime("now"), 0); 
    $dataYear CalcConsumptionDiff($data);
    SetValueFloat($einspcurrYearID$dataYear);
    SetValue($einspcurrYearCostID,GetValue($einspcurrYearID)*$verkauf);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // Berechnung für $eigenverbID
    // -------------------------- LETZTE WERTE ------------------------------------------------------------------------------------------------------------------------------
    // GESTERN
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Täglich */strtotime("yesterday"), strtotime("today")-10); 
    SetValueFloat($eigenDayIDCalcConsumptionDiff($data));

    // LEZTE WOCHE
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Wöchentlich */strtotime("monday last week"), strtotime("monday this week")-10); 
    SetValueFloat($eigenWeekIDCalcConsumptionDiff($data));

    // LETZTER MONAT
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Monatlich */strtotime("first day of last month 00:00:00"), strtotime("last day of last month 23:59:59"), 0); 
    SetValueFloat($eigenMonthIDCalcConsumptionDiff($data));

    // LETZTES JAHR
    $ly date('Y'strtotime('-1 year'));
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Jährlich */mktime(00011$ly), mktime(2359591231$ly), 0); 
    SetValueFloat($eigenYearIDCalcConsumptionDiff($data));


    // ------------------------- AKTUELLE WERTE -----------------------------------------------------------------------------------------------------------------------------
    // HEUTE
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Stündlich */strtotime("today"), strtotime("now"), 0);
    $dataDay CalcConsumptionDiff($data);
    SetValueFloat($eigencurrDayID$dataDay);

    // WOCHE
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Wöchentlich */strtotime('last monday'strtotime('tomorrow')), strtotime("now"), 0); 
    $dataWeek CalcConsumptionDiff($data);
    SetValueFloat($eigencurrWeekID$dataWeek);

    // MONAT
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Monatlich */strtotime("first day of this month 00:00"), strtotime("now"), 0);
    $dataMonth CalcConsumptionDiff($data);
    SetValueFloat($eigencurrMonthID$dataMonth);

    // JAHR
    $data AC_GetAggregatedValues($archiveID$eigenverbID/* Jährlich */strtotime("first day of January"), strtotime("now"), 0); 
    $dataYear CalcConsumptionDiff($data);
    SetValueFloat($eigencurrYearID$dataYear);



    // ------------------------- TIMER ERSTELLEN ----------------------------------------------------------------------------------------------------------------------------
    SetTimerByName($_IPS['SELF'], "Täglich alle Stunde");


    // ------------------------- FUNKTIONEN ---------------------------------------------------------------------------------------------------------------------------------
    // Funktion zum addieren der Zählerwerte 
    function CalcConsumptionDiff($values
    {
        global 
    $roundTo2;
        
    $consumption 0;
        foreach(
    $values as $value
        {
                
    $consumption $value['Max'] - $value['Min'];
        }
        return 
    round($consumption$roundTo2);


    function 
    CalcConsumption($values
    {
        global 
    $roundTo2;
        
    $consumption 0;
        foreach(
    $values as $value
        {
                
    $consumption += $value['Avg'];
        }
        return 
    round($consumption$roundTo2);


    // Funktion zum abziehen der Zählerwerte 
    function CalcConsumption2($values
    {
        global 
    $roundTo2;
        
    $consumption 0;
        foreach(
    $values as $value
        {
                
    $consumption $value['Avg'];
        }
        return 
    round($consumption$roundTo2);
    }
        
    // Funktion um einen Timer zu erzeugen
    function SetTimerByName($parentID$name
    {
        Global ${
    $_IPS['SELF']};
        
    $eid = @IPS_GetEventIDByName($name$parentID);
        if(
    $eid === false
    {
        
    $eid IPS_CreateEvent(1);
        
    IPS_SetParent($eid$parentID);
        
    IPS_SetName($eid$name);
        
        
    IPS_SetEventCyclic($eid/* Täglich *//* Jeden Tag */00/* Stündlich *//* Alle Stunden */);
        
    IPS_SetEventCyclicTimeFrom($eid010); //Ab 00:01 stündlich starten
        
    IPS_SetEventActive($eidtrue);
    }
        return 
    $eid;



    // ------------------------- IPS GRUNDFUNKTIONEN -------------------------------------------------------------------------------------------------------------------------
    // Erstellt eine Variable, wenn diese noch nicht existiert
    function GetOrCreateVariable($name$vtyp$ident$profil$ascript$log$parentID$position$logVisual// erstellt eine Variable, wenn es noch nicht exestiert
    /* 
    Wert 1 = Name
    Wert 2 = Variablentyp
    Wert 3 = Variablen-Ident 
    Wert 4 = Variablenprofil 
    Wert 5 = ScriptID 
    Wert 6 = Logging der Daten (True/False)
    Wert 7 = Übergeordnete Instanz, wo die Variable angelegt werden soll 
    Wert 8 = Reihenfolge / Sortierung der Variablen
    Wert 9 = Anzeige der Variable in der Visualisierung im Webfront deaktiveren oder aktivieren
    */
    {
        
    $ObjId = @IPS_GetObjectIDByName($name$parentID);
        if (
    $ObjId === false)
        {
            
    $ObjId IPS_CreateVariable($vtyp);
            
    IPS_SetName($ObjId$name); //Namen vergeben
            
    IPS_SetIdent($ObjId$ident); //ObjectIdent vergeben
            
    IPS_SetParent($ObjId$parentID); //Variable unter die Instantz verschieben
            
    @IPS_SetVariableCustomProfile($ObjId$profil); //Variablen-Profil zuordnen
            
    @IPS_SetVariableCustomAction($ObjId$ascript); //Verknüpft das Script mit der Variable als Actionscript

            // Archive Control ID herrausfinden
            
    foreach(IPS_GetInstanceList ( ) as $m_id//Durchsucht alle Instanzen und gibt die InstanzID an $i_id weiter
            
    {
                
    $typ IPS_GetInstance($m_id)['ModuleInfo']['ModuleName']; //Fragt die Instanzen nach den Modulnamen ab
                
    if ($typ =="Archive Control"$modul_id $m_id//Wenn die Instanz den Modulnamen "Archive Control" hat, dann schreibe die ID in $modul_id
            
    }
            
            
    $logging AC_GetLoggingStatus($modul_id,$ObjId);
            if (
    $logging != 1)
            {
                
    AC_SetLoggingStatus($modul_id$ObjId$log);
                
    AC_SetGraphStatus($modul_id$ObjId$logVisual);
                
    IPS_ApplyChanges($modul_id);
            }
    // Ende Logging
            
            
    IPS_SetPosition($ObjId$position);
        }
        return 
    $ObjId;
    }

    // Erstellt eine Instanz, wenn diese noch nicht existiert
    function GetOrCreateInstanz($name$ityp$parentID//erstellt eine Variable, wenn diese noch nicht exestiert
    /*
    Wert 1 = Name
    Wert 2 = Instanztyp 
    Wert 3 = Übergeordnete Instanz, wo die Instanz angelegt werden soll
    */
    {
        
    $ObjId = @IPS_GetObjectIDByName($name$parentID);
        if (
    $ObjId === false)
        {
            if (
    $ityp == "dummy"$ityp='{485D0419-BE97-4548-AA9C-C083EB82E61E}';
            
    $ObjId IPS_CreateInstance($ityp);
            
    IPS_SetName($ObjId$name); // Namen vergeben
            
    IPS_SetParent($ObjId$parentID); // Variable unter die Instantz verschieben
        
    }
        return 
    $ObjId;
    }

    // Erstellt ein Script, wenn es noch nicht exestiert
    function GetOrCreateScript($name$parentID$data$hidden
    /*
    Wert 1 = Name
    Wert 2 = Übergeordnete Instanz, wo das Script angelegt werden soll
    Wert 3 = Ist das, was ins Script geschrieben wird
    Wert 4 = Ob das Script sichtbar sein soll (true, false)
    */
    {
        
    $ObjId = @IPS_GetObjectIDByName($name$parentID);
        if (
    $ObjId === false)
        {
             
    $ObjId IPS_CreateScript(0);
            
    IPS_SetName($ObjId$name);
            
    IPS_SetScriptContent($ObjId"$data"); // Der Text was ins Script geschrieben wird
            
    IPS_SetHidden($ObjId$hidden); // Setzt Script auf nicht sichtbar
            
    IPS_SetParent($ObjId$parentID); //  Script unter das Parent verschieben
         
    }
        return 
    $ObjId;
    }

    // Erstellt eine Kategorie, wenn diese noch nicht exestiert
    function GetorCreatecategory($name$parentID)
    #function GetorCreatcategory($name,$parent, $position, $hidden)
    {
    $LinkID = @IPS_GetObjectIDByName($name$parentID);
    if (
    $LinkID === false)
    {
        
    $LinkID IPS_CreateCategory(); // Link anlegen
        
    IPS_SetName($LinkID$name); // Link benennen
        
    IPS_SetParent($LinkID$parentID); // Link einsortieren unter dem Objekt mit der ID "12345"
        #if ($hidden ===true) IPS_SetHidden($LinkID,true);
        #IPS_SetPosition($LinkID,$position); //Position festlegen
    }
        return 
    $LinkID;
    }
    ?>
    IPS 5.3 auf Cenovo Mini PC.
    Siemens S7 1200 für kpl.Haussteuerung; Siemens Logo 7 für Garten und Bewässerung
    Siemens Logo 8 für Poolsteuerung; 3 EHz optik auf Seriell 1x optik für Viessmann Heizung
    Logitech Harmony Elite