+ Antworten
Seite 8 von 8 ErsteErste ... 6 7 8
Ergebnis 71 bis 76 von 76
  1. #71
    Registriert seit
    Oct 2018
    Ort
    München
    Beiträge
    35

    Liebe Community,
    ich komme mit meinem Problem leider immer noch nicht weiter. Wie gesagt würde ich das Script gerne so ändern, dass der Jahreszeitraum = meiner Abrechnungsperiode entspricht. Wenn ich das aber so eingebe:

    $data = AC_GetAggregatedValues($archiveID, $valueID, 4 /* Jährlich */, strtotime("sixth day of last December"), strtotime("now"), 0);

    dann werden alle Werte vom 01.01.2018 bis heute zusammengerechnet. Ich möchte aber, dass nur vom 6.12.2018 bis heute addiert wird, ohne aber die Jahreszahl exakt festzulegen, denn sonst stimmt es ja im nächsten Jahr wieder nicht. Kann mir hier jemand weiterhelfen?

  2. #72
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    21,252

    Du musst dann leider auf die Tagesaggregation gehen und die relevanten Tage zusammenaddieren.

    paresy

  3. #73
    Registriert seit
    Apr 2005
    Ort
    67147 Forst
    Beiträge
    924

    Hi Paresy
    Habe das gleiche Problemchen.
    Ich möchte auch vom 1.8.1918 bis heute in einer Variablen anzeigen.
    Jeweils am 1. 8. aber mit Startwert 0 anfangen.

    Schönen Gruß
    Egon
    Eib-KNX, Homematic, FS20

  4. #74
    Registriert seit
    Oct 2018
    Ort
    München
    Beiträge
    35

    Hallo Egon,

    ich habe das für mich jetzt so gelöst, indem ich drei zusätzliche Variablen angelegt habe in die die Jahreszahlen geschrieben werden. Das sieht dann bei mir so aus:

    PHP-Code:
    $date1 "Variable 1"   $date2 "Variable 2"  $dayCounter "Variable 3"

    // LETZTES JAHR
    $data AC_GetAggregatedValues($archiveID$valueID/* Täglich */mktime(000126$date2), mktime(235959125$date1), 0);   
    SetValueFloat($lastYearIDCalcConsumption($data)); 

    // AKTUELLES JAHR 
    $data AC_GetAggregatedValues($archiveID$valueID/* Täglich */mktime(000126$date1), strtotime("now"), 0);   
    $dataYear CalcConsumption($data); 
    SetValueFloat($currYearID$dataYear); 

    // Hochrechnung JAHR 
    $diff 60*60*24*$dayCounter//1 Jahr 
    $full 60*60*24*$tage// 1 Jahr 
    $data round($dataYear*$full/$diff2); 
    SetValueFloat($consYearID$data); 
    PHP-Code:
    $date1 
    ist das Jahr, in dem die aktuelle Periode startet, hier z.B. 2018.
    PHP-Code:
    $date2 
    ist dann immer das Vorjahr, hier also 2017. Diese beiden Variablen müssen dann um 0:00 Uhr am Startdatum der Periode mit "1" addiert werden, damit sich der Berechnungszeitraum um ein Jahr verschiebt. Wichtig ist auch, wie Parsey das schon geschrieben hat, dass die "Tägliche Aggregation" eingestellt ist.

    Für die Hochrechnung habe ich mir einen einen Tageszähler
    PHP-Code:
    $dayCounter 
    angelegt, der die Tage der aktuellen Periode hochzählt und sich natürlich zum Start der neuen Periode wieder resettet.

    PHP-Code:
    $tage 
    diese Variable berücksichtigt noch, ob die aktuelle Periode in einem Schaltjahr liegt, also 366 Tage hat, oder nicht.

    Wahrscheinlich ist das alles sehr umständlich, wie ich das mache, aber es funktioniert super. So wird dir immer genau der Zeitraum angezeigt, den man haben möchte.

  5. #75
    Registriert seit
    Apr 2005
    Ort
    67147 Forst
    Beiträge
    924

    Hi Seebter

    Danke für das Script.
    Dass das so komplizert ist hätte ich nicht gedacht....
    Modul wäre halt einfacher-für mich

    Schönen Gruß
    Egon
    Eib-KNX, Homematic, FS20

  6. #76
    Registriert seit
    Apr 2005
    Ort
    67147 Forst
    Beiträge
    924

    Hallo
    So hab ichs jetzt gemacht:
    Problem : Fortlaufender Zähler ich will aber immer am 1. 8. jedes Jahr bei 0 beginnen.
    Den Abrechnungszeitraum sehen...
    PHP-Code:
    <?php

    // Ich habe einen Wärmezähler der nur fortlaufend die Daten liefert.
    //Ich möchte aber immer am 1.8 bei 0 beginnen.................

    $aktuelljahr GetValue(58602 /*[00 Wärmezähler\Gesamt kW erzeugt\Gesamt kWh Integer in Float umgerechnet]*/);

    // Könnte ich auch mit einem Ereignis machen das am 1.8. jedes Jahr den "alten" Zählerstand speichert

    //Hier noch alter (Vorjahr) von Hand gesetzt:
    $vorjahr=11323;
    $aktuell=$aktuelljahr-$vorjahr;

    SetValueFloat(23936 /*[00 Wärmezähler\Zähler mit Startdatum\neuer Zähler fängt bei 0 an\Aktuelles Jahr]*/,$aktuell);
    Was zu verbessern?

    Schönen Gruß
    Egon
    Geändert von egonkernien (21.06.19 um 11:43 Uhr) Grund: Scriptfehler verbessert
    Eib-KNX, Homematic, FS20