[Beta Modul] Sankey

Sankey Diagramme gehen meines Wissen nach nur in eine Richtung.
Dann musst du eine Hilfsvariable bauen, die die Werte in den positiven Bereich bringen.

Oder ich baue eine Möglichkeit ein, die das Vorzeichen ignorieren kann. :smiley:

@tomgr wollte sowas auch schon haben. :smiley:

Grüße,
Kai

Ok. Das habe ich schon gemacht. Das ist ja auch in Ordnung. Ich wollte nur wissen, ob ich da einen Denkfehler habe.

Gute Idee, dann müsste der Stream aber die Seite wechseln, daher vom Energie-Lieferanten zum Verbraucher werden… Ansonsten ist die Hilfsvariable eine gute Lösung…

Nein er soll das Vorzeichen dann umdrehen.
Sankey ist nur für positive Werte gedacht.

Ich mache das später mal fertig.

Grüße,
Kai

Klar, das müsste natürlich intern gedreht werden. Sonst hast du ja zB die Batterie immer auf der Versorgerseite, egal ob sie gerad lädt oder entlädt…

Du hast recht, den Speicher habe ich nicht bedacht.
Ich schaue mir das mal an, wir können uns ja gerne absprechen. :slight_smile:

Grüße,
Kai

Sehr cool, vielen Dank.
Kann man hier auch eine Auswahl vom Zeitbereich einbauen?

Man könnte eine Funktion einbauen, die immer auf Archivwerte zurückgeht.

Coole Idee, baue ich mal ein.

Grüße,
Kai

Hab ich mir gestern selber gebaut :wink:

Für jede Variable im Diagramm hab ich eine eigene angelegt.

<?php
$archiv_id=46307;
$server_id=17619;
$waschtrockner_id=51712;
$waschmaschine_id=52719;
$kuehlschrank_stueberl_id=12590;
$gefrierschrank_keller_id=14093;
$kuehlschrank_kueche_id=53664;
$geschirrspueler_id=47291;
$pelletofen_id=21530;
$fernseher_wohnzimmer_id=10977;
$drucker_id=12017;
$buero_id=41718;
$pool_id=54913;
$whirlpool_id=29352;
$kaffeemaschine_id=14631;
$ladenetzteil_id=22578;
$infrarotpaneel_id=36436;
$wallbox_id=47234;
$rest_id=56563;
$bezug_id=20948;
$pv_verbraucht_id=44514;
$datum_von_id=45888;
$datum_bis_id=26976;

function summe_ermitteln($var_id,$von,$bis)
{
    $archiv_id=46307;
    $start = new DateTime();
    $start->setTimestamp($von);
    $start->setTime(0, 0, 0);

    $ende = new DateTime();
    $ende->setTimestamp($bis);
    $ende->setTime(0, 0, 0);

    // Enddatum inklusiv machen
    $ende->modify('+1 day');

    $periode = new DatePeriod(
        $start,
        new DateInterval('P1D'),
        $ende
    );
    $kwh=0;
    foreach ($periode as $tag) {

        $tagBeginn = clone $tag;
        $tagBeginn->setTime(0, 0, 0);

        $tagEnde = clone $tag;
        $tagEnde->setTime(23, 59, 59);
        $werte = AC_GetAggregatedValues($archiv_id,$var_id, 1, $tagBeginn->getTimestamp(), $tagEnde->getTimestamp(), 0);
        if (!empty($werte) && isset($werte[0]["Avg"])) $kwh = $kwh + $werte[0]["Avg"];
    }
    return $kwh;
}
$von=GetValue($datum_von_id);
$bis=GetValue($datum_bis_id);

//Bezug
setvalue($bezug_id,summe_ermitteln(50740, $von, $bis));

//PV Verbraucht
setvalue($pv_verbraucht_id,summe_ermitteln(28779, $von, $bis));

//Server
setvalue($server_id,summe_ermitteln(12653, $von, $bis));

//Waschtrockner
setvalue($waschtrockner_id,summe_ermitteln(52137, $von, $bis));

//Waschmaschine
setvalue($waschmaschine_id,summe_ermitteln(20351, $von, $bis));

//Kühlschrank Stüberl
setvalue($kuehlschrank_stueberl_id,summe_ermitteln(17287, $von, $bis));

//Gefrierschrank Keller
setvalue($gefrierschrank_keller_id,summe_ermitteln(40570, $von, $bis));

//Kühlschrank Küche
setvalue($kuehlschrank_kueche_id,summe_ermitteln(14761, $von, $bis));

//Geschirrspüler
setvalue($geschirrspueler_id,summe_ermitteln(30510, $von, $bis));

//Pelletofen
setvalue($pelletofen_id,summe_ermitteln(10675, $von, $bis));

//Fernseher Wohnzimmer
setvalue($fernseher_wohnzimmer_id,summe_ermitteln(41146, $von, $bis));

//Drucker
setvalue($drucker_id,summe_ermitteln(28762, $von, $bis));

//Büro
setvalue($buero_id,summe_ermitteln(45910, $von, $bis));

//Pool
setvalue($pool_id,summe_ermitteln(26809, $von, $bis));

//Whirlpool
setvalue($whirlpool_id,summe_ermitteln(54501, $von, $bis));

//Kaffeemaschine
setvalue($kaffeemaschine_id,summe_ermitteln(17921, $von, $bis));

//Ladenetzteil
setvalue($ladenetzteil_id,summe_ermitteln(33246, $von, $bis));

//Infrarotpaneel
setvalue($infrarotpaneel_id,summe_ermitteln(25229, $von, $bis));

//Wallbox
setvalue($wallbox_id,summe_ermitteln(52211, $von, $bis));

//Rest berechnen
SetValue($rest_id,
    getvalue($bezug_id)+getvalue($pv_verbraucht_id)-
    getvalue($server_id)-
    getvalue($waschtrockner_id)-
    getvalue($waschmaschine_id)-
    getvalue($kuehlschrank_stueberl_id)-
    getvalue($gefrierschrank_keller_id)-
    getvalue($kuehlschrank_kueche_id)-
    getvalue($geschirrspueler_id)-
    getvalue($pelletofen_id)-
    getvalue($fernseher_wohnzimmer_id)-
    getvalue($drucker_id)-
    getvalue($buero_id)-
    getvalue($pool_id)-
    getvalue($whirlpool_id)-
    getvalue($kaffeemaschine_id)-
    getvalue($ladenetzteil_id)-
    getvalue($infrarotpaneel_id)-
    getvalue($wallbox_id)
    );
    

Ich habe es aber auf Tageswerte beschränkt. Feiner bringt meiner Meinung nach nichts.

Datum von/bis sind Variablen, die ich in der Visu wählen kann. Das Skript wird bei Änderung vom Datum aufgerufen.

Ich würde in der Kachel eine Auswahl für einen Zeitraum bereitstellen.

Grüße,
Kai

2 „Gefällt mir“

Wobei das dann bei mir nicht mehr funktionieren würde. Ich habe, wie geschrieben, für jeden Wert eine Variable angelegt, die von meinem Skript mit Werten belegt wird. Ich müsste die dann alle austauschen. Aber auch ok.

Ja, aber dann brauchst du keine Hilfsscript mehr.

Grüße,
Kai

Könnte man so etwas realisieren?

Ich habe drei PV Quellen und natürlich eine Netz Quelle. Könnte ich das blaue PV irgendwie in das Gesamt bringen? Oder geht das nur mit Zwischenvariable?

Einfach Ziel Gesamt angeben.

Grüße,
Kai

Ja, so mache ich es jetzt. Trennen geht nicht. Ich meine dass die ganzen PV in PV (wo man die Gesamtsumme für PV am Balken sieht) und dann weiter von PV in Gesamt.

Quasi als ein “Fluss” in Gesamt.

Achso, dann Hilfsvariable wo alles von PV drin landet.

Grüße,
Kai

Hm. Das ist nicht so wie ich gedacht habe.

Links alles in eine Hilfsvariable…
Also eine Gesamtvariable PV.

Grüße,
Kai

Wenn ich es so mache

Bekomme ich das Obige. Alle PV gehen in eine Variable PV Gesamt und in die Gruppe PV als Ziel. Dann eine Zeile mit der PV Gesamt von PV nach Gesamt.

Der dicke Balken PV ist halt iwie nicht passend an der Stelle.

Sieht so aus, als ob kaum Bezug da ist, obwohl dem so ist.

PV gesamt dürfte man nicht erstellen? Das müsste eine eigene Variable sein anstatt zwei.

Grüße,
Kai