[Modul] Energierechner

Ich mache das so

<?php
function reload($id)
{
	IPS_SetProperty($id, "Active", false);
	IPS_ApplyChanges($id);
	IPS_SetProperty($id, "Active", true);
	IPS_ApplyChanges($id);
}

$er_id=array(
				57354,
				18894,
				44160,
				22902,
				45025,
				19573,
				40729,
				16012,
				45752,
				10511,
				52772,
				56934,
				23037

);

foreach($er_id as $id)
{
	reload($id);
}

In dem Array stehen die ID’s der Energierechnerinstanzen. Das Skript wird um Mitternacht durch einen Ablaufplan aufgerufen.

2 „Gefällt mir“

Hi,
Hab noch nicht verstanden was Du da machst mit dem Durchschnittstromverbrauch?

Hört sich interessant an, aber was ist der Zweck dieses zu tun. Bin da noch nicht drauf gekommen dass man das braucht.

Danke und Gruss Seppm

Ist nur interessant wenn man einen dynamischen Stromtarif hat oder einen quasi dynamischen. Da mein Pulse von Tibber noch nicht funktioniert, zahle ich immer den Durschnittspreis aus dem jeweiligen Monat und den trage ich jeden Monat für den Energierechner ein, damit ich auch richtige Verbrauchspreise erhalte. Aber auch wenn der Pulse bei mir laufen würde, hätte ich am ende einen „Durchschnittspreis“ welchen ich hier eintragen würde um zumindest eine grobe Richtung zu erhalten.

1 „Gefällt mir“

Hm, ich denke das wirst du mit dem Pulse nicht mehr benötigen.
Die API und das Modul von Thomas liefern dir einen genauen Wert was du an dem aktuellen Tag verbraucht hast. Gleiches gilt für die Kosten. Somit hast du eigentlich Tagesaktuelle Werte im Archiv und kannst dieses auch auf den Monat betrachten.
Oder habe ich da jetzt einen Denkfehler?
Bei mir ist es übrigens anders herum, der Pulse läuft schon, Tarif fängt aber erst am 01.02. an :wink:
Grüße, Christian

1 „Gefällt mir“

Hab ich mir so im Detail noch gar nicht angeschaut. Das wäre natürlich cool, aber wie willst du diese genauen Informationen in den Energierechner bekommen ? Wäre cool wenn der Energierechner eine Schnittstelle zum Tibber Modul hätte :wink:

Was wäre denn der Vorteil, wenn du die Infos in den Energierechner bekommst?
Über das Archiv hast du doch Zugriff auf alle Werte und Preise.

Ich nutze zwar nicht Tibber dafür aWattar und ich trage mir zwei Durchschnittspreise (Tag und Nacht) und alle sämtlichen Zusatzdaten täglich nachdem die Daten geholt wurden in die Splitterinstanz vom Energierechner (Verbrauch) ein.
Hier der Auszug aus dem Skript:

    $periode=json_decode(json_decode(IPS_GetConfiguration($energierechnerid),true)["Periods"],true);
    array_push($periode,[
    	"StartDate"=>"{\"year\":".date("Y",time()+(24*60*60*$tag)).",\"month\":".date("n",time()+(24*60*60*$tag)).",\"day\":".date("j",time()+(24*60*60*$tag))."}",
    	"DayPrice"=>round($tagpreis,7),
    	"AdvancePayment"=>0,
		"DeductionsPerYear"=>11,
    	"BasePrice"=>$grundpreis,
    	"NightPrice"=>round($nachtpreis,7),
    	"NightTimeStart"=>"{\"hour\":".$nacht2start.",\"minute\":0,\"second\":0}",
    	"NightTimeEnd"=>"{\"hour\":".$nacht1ende.",\"minute\":0,\"second\":0}",
    	"ElectricitySuppliers"=>"Awattar",
    	"GasPriceCalculationActive"=>false,
    	"GasConversionFactor"=>0,
    	"GasZNumber"=>0,
    	"GasCalorificValue"=>0
    ]);
    IPS_SetProperty($energierechnerid,"Periods",json_encode($periode));
    IPS_ApplyChanges($energierechnerid);

Zuerst werden alle Einträge aus der Instanz in ein Array gelesen, dann eine zusätzliche Zeile mit den neuen Werten ins Array geschrieben (array_push). Dann das Property gesetzt (ips_setproperty) und letztendlich die Änderungen gespeichert (ips_applychanges).
Das funktioniert bei mir seit über einem Jahr problemlos und auch weitgehend richtig. Trotz der beiden Durchschnittspreise sind die Abweichungen marginal.
Eine Schnittstelle sehe ich nicht als zielführend, da es ja mehrere Anbieter gibt. Ich wäre eher für eine Funktion im Modul, mit der man die Werte eintragen kann ohne mit Array usw. hantieren zu müssen. Dann wäre man flexibel.

1 „Gefällt mir“

Nein, da muss bei dir irgendwas anderes passiert sein.

Grüße,
Kai

Das ist ein Debug, das sollte im Log gar nicht auftauchen.
@paresy, gibt es dafür einen Spezialschalter?

Grüße,
Kai

Ich habe das Modul ganz normal installiert. Was könnte/müsste ich machen um das zu beheben?

Was für ein Profil hat deine Variable für den Verbrauch?

Grüße,
Kai

1 „Gefällt mir“

Der Energie Rechner braucht anscheinend kW Werte, bei W Werten, passt es nicht.
Nachdem ich das geändert habe, passt es jetzt.

Moin Kai,

mir ist da noch mal was aufgefallen, ob das so sein soll?

Jedes mal wenn IPS neu gestartet wird (bei mir die Symbox),
werden in den „Kosten Variablen“ 0 Werte eingetragen. Wenn der Zähler dann wieder ein neuen Verbrauchswert sendet, werden die Kosten (scheinbar) neu berechnet und der Wert passt wieder.

Die 0 Werte sehen aber im Diagram (gelogte Werte) natürlich doof aus.

Gestern kurz vor 20 Uhr IPS neu gestartet und heute Vormittag erneut.

Hingegen bei der „eigentlichen Zählervariable“ ist kein Einbruch zu erkennen.

Gruß
Thomas

@KaiS
Kann es sein, wenn man einen neuen Tarif eingibt und dann auf „Änderungen übernehmen“ klickt, dass dann alle Instanzen, die mit dieser Instanz verbunden sind, neu berechnet werden?
Wenn ja, könnte man das irgendwie unterbinden?

Ja, sobald sich etwas ändert bekommt der Energierechner das mit und berechnet neu.
Warum willst du das unterbinden?

Grüße,
Kai

Dann lag ich mit meiner Vermutung richtig :smiley:
Deswegen: Verzögerungen bei hoher CPU Last
Ich hab neun Instanzen, die mit dieser Splitterinstanz verbunden sind. Für diverse Gerätschaften. Und bei meinen täglichen Preisen rechnet das Teil schon eine Weile und bringt die CPU ins Schwitzen. Wobei mir das noch egal wäre, aber das hat leider auch Auswirkungen auf die TileVisu. Ich bin da erst durch probieren draufgekommen, dass die neue Visualisierung ein Problem hat, wenn der IPS Rechner sehr sehr gut ausgelastet ist.
Wobei das streng genommen ja nicht dein Problem bzw. das Problem deines Moduls ist. Und du hast mir das Bestätigt, was ich vermutet habe.
Eines ist bei mir auch noch „blöd“. Da ich doch viele Instanzen habe, wird verschieden aktualisiert. Die Instanzen, die wichtig sind, rechnen alle 10 Minuten. Die anderen - unwichtigen - nur einmal die Stunde. Das ganze passiert in einem eigenen Skript. Die Aktualisierung in den Instanzen steht auf 0.
Und um 14:15 kann es sein, dass die Instanzen der unwichtigen Werte noch nicht fertig berechnet sind. Die laufen dann noch. Und dann kommen noch die Updates aufgrund des neuen Eintrags dazu. Das ist dann zu viel.

Das wird auch einfach an den vielen Einträgen in den Tarife Instanzen liegen, weil er ein mal dort alles durch ackert und danach noch das Archiv.
Der Energierechner ist für so viel auch nicht gedacht gewesen. Du missbrauchst das ja auch etwas für aWattar. :smiley:

Ich will gerade ungerne noch mehr Ausnahmen in dem Energierechner einbauen.

Grüße,
Kai

Das stimmt allerdings :smiley:
Aber dafür, rechnet das Modul wirklich brav. Dass es länger dauert ist mir klar und das nehme ich gerne in Kauf. Kompliment dafür, das Teil ist echt robust.

Verstehe ich. Dachte es gibt eine versteckte Möglichkeit die ich missbrauchen könnte :wink:

Wobei das echt ne Kleinigkeit ist, ich bau dir das ein.

Grüße,
Kai

1 „Gefällt mir“

@hfichtinger, kannst du mal die aktuelle Beta Version testen?
Dort sollte es unter Experteneinstellungen eine CheckBox „Durch Parameteränderung aktualisieren“ geben.

Grüße,
Kai