in ,

Wärmepumpendaten Update

KI generiertes Bild

Ein kurzer Rückblick

Wir lesen, während der Heizsaison jeden Sonntag bzw. ganzjährig jeden Monatsersten, vom digitalen Stromzähler unsere Wärmepumpenwerte ab und speichern sie in unserem Excel und unserer MariaDB ab.

Da die Wärmepumpe 2 Wohnungen mit getrennten Heizkreisen versorgt, können wir am Ende der Heizsaison eine Abrechnung zur Kostenteilung machen.

In unserer Tabelle haben wir nur das Ablesedatum und die kWh, den Rest basteln wir uns mit Views zusammen.

Was wir damals alles gemacht haben, findet sich in den Blogs:

https://www.bi4you.org/artikel/waermepumpendaten-mit-superset/

https://www.bi4you.org/artikel/waermepumpendaten-mit-superset-fortsetzung/

Was ist jetzt passiert?

Seit 2021 gab es eigentlich bis auf 1-2 kurze Stromausfälle keine Auffälligkeiten und wir konnten unsere Werte problemlos ablesen, der Subzähler hat die Werte immer korrekt gespeichert.

Am 16.10.2025 gab es dann jedoch einen längeren Stromausfall von ca. 40 Minuten – ein Bagger hatte ein Kabel erwischt und teilweise ganze Gemeinden ausgeknipst.

Anfangs sah der Subzähler in Ordnung aus – es wurde ein Wert angezeigt und genauer haben wir an dem Tag nicht geschaut.

Am Folgetag (Freitag) ist uns aber aufgefallen, dass ~ 10.000kWh weniger angezeigt wurden und für uns somit Handlungsbedarf bestand.

Wie gehen wir jetzt damit um?

Als erstes haben wir uns den „neuen“ Subzähler Wert aufgeschrieben, damit wir dann anhand der Werte der 2 Tage (bis Sonntag) schätzen können, welchen Stromverbrauch wir ungefähr hatten – den „neuen“ Wert vom letzten Sonntag und die Differenz errechnen wir uns. Die Temperaturen dieser Woche waren relativ konstant, daher hoffen wir so einen nicht allzu großen Fehler einzuschleppen – mit ein paar kWh mehr oder weniger können wir gut leben.

Da es jetzt 1x passiert ist, kann es also auch in Zukunft wieder vorkommen, dass der Subzähler seine Werte verliert oder einen Wert von irgendwann anzeigt.

Daher legen wir uns als nächstes eine neue Tabelle an – der Name wird waermepumpe_subzfix sein und folgenden Aufbau haben:

Nachdem wir unseren Differenzwert errechnet haben, fügen wir diesen in unsere Tabelle ein mit Datum_Von=‘2025-10-19‘ und Datum_Bis=‘2999-12-31‘.

Der Datum_Bis Wert ‘2999-12-31‘ ist ein Platzhalter für „gilt bis zum nächsten längeren Stromausfall oder Subzähler reset“.

Wenn es wieder einen gibt, müssen wir das Datum_Bis entsprechend updaten und einen neuen errechneten Korrekturwert mit Datum_Von einfügen.

Als nächstes müssen wir unsere View anpassen, dass ab einem gewissen Ablesedatum (19.10.2025) diese 9575.13 kWh zum eingetragenen Wert addiert wird – unsere View liefert sonst falsche Ergebnisse:

Nachdem wir uns nach Jahren mal wieder mit unserer View beschäftigt haben, haben wir einen guten Einstiegspunkt für unseren Fix gefunden.
Wir verwenden immer das gleiche SQL für unsere Berechnungen (bzw. abgewandelt mit ROWNUM()+1):

select ROWNUM() as id,Ablesedatum,kwh
from waermepumpe
where date_format(Ablesedatum,’%d‘) in (’01‘)
order by Ablesedatum asc;

Ab 1.11.2025 bekommen wir unsere falschen Werte zurück:

Hier werden wir jetzt unsere subzfix Tabelle joinen und mit einem Case entsprechend den Korrekturwert addieren, wenn das Ablesedatum zwischen Datum_Von/Bis Werten liegt:

select ROWNUM() as id, w.Ablesedatum,
case
when fix.kwh is not NULL then w.kwh+fix.kwh
else w.kwh
end as kwh
from
waermepumpe w
left outer join waermepumpe_subzfix fix on w.Ablesedatum between fix.Datum_von and fix.Datum_Bis
where date_format(w.Ablesedatum,’%d‘) in (’01‘)
order by Ablesedatum asc

Als Ergebnis sehen wir jetzt am 1.11.2025 unsere korrigierten Werte:

Das heißt, wir können unseren Fix auch in unsere View einbauen und bekommen ab jetzt wieder richtige Werte – als wäre nichts passiert:

Unsere View sieht jetzt folgendermaßen aus:

create or replace view waermepumpe_view as
(
select hzs.*,
hzs.kwh_monat-hzs2.kwh_monat as ‚Diff_Vorjahr‘,
round((hzs.kwh_monat/hzs2.kwh_monat-1)*100,2) as ‚Diff_Vorjahr_Prozent‘
from
(
select ROWNUM() as id,all1.Ablesedatum,all1.kwh,
date_format(DATE_SUB(all1.Ablesedatum, interval 1 day),’%M‘,’de_AT‘) as ‚Monat‘,
date_format(DATE_SUB(all1.Ablesedatum, interval 1 day),’%Y‘,’de_AT‘) as ‚Jahr‘,
all1.kwh-all2.kwh as kwh_monat
from
(
select ROWNUM() as id, w.Ablesedatum,
case
when fix.kwh is not NULL then w.kwh+fix.kwh
else w.kwh
end as kwh
from
waermepumpe w
left outer join waermepumpe_subzfix fix on w.Ablesedatum between fix.Datum_von and fix.Datum_Bis
where date_format(w.Ablesedatum,’%d‘) in (’01‘)
order by Ablesedatum asc
) as all1
left outer join
(
select ROWNUM()+1 as id, w.Ablesedatum,
case
when fix.kwh is not NULL then w.kwh+fix.kwh
else w.kwh
end as kwh
from
waermepumpe w
left outer join waermepumpe_subzfix fix on w.Ablesedatum between fix.Datum_von and fix.Datum_Bis
where date_format(w.Ablesedatum,’%d‘) in (’01‘)
order by Ablesedatum asc
) as all2
on all1.id=all2.id
) hzs
left outer join
(
select ROWNUM()+12 as id,all1.Ablesedatum,all1.kwh,all1.kwh-all2.kwh as kwh_monat
from
(
select ROWNUM() as id, w.Ablesedatum,
case
when fix.kwh is not NULL then w.kwh+fix.kwh
else w.kwh
end as kwh
from
waermepumpe w
left outer join waermepumpe_subzfix fix on w.Ablesedatum between fix.Datum_von and fix.Datum_Bis
where date_format(w.Ablesedatum,’%d‘) in (’01‘)
order by Ablesedatum asc
) as all1
left outer join
(
select ROWNUM()+1 as id, w.Ablesedatum,
case
when fix.kwh is not NULL then w.kwh+fix.kwh
else w.kwh
end as kwh
from
waermepumpe w
left outer join waermepumpe_subzfix fix on w.Ablesedatum between fix.Datum_von and fix.Datum_Bis
where date_format(w.Ablesedatum,’%d‘) in (’01‘)
order by Ablesedatum asc
) as all2
on all1.id=all2.id
order by all1.Ablesedatum asc
) hzs2
on hzs.id=hzs2.id
);

Fazit

Immer wieder haben wir überlegt, ob das Aufschreiben der Subzählerwerte am Sonntag überhaupt Sinn macht – schließlich würden uns die Werte am Monatsersten reichen.

Im Nachhinein war es jedoch gut, dass wir öfter ablesen – sonst hätten wir zum Schluss die Werte für fast 3 Wochen schätzen müssen.

Unsere Korrektur war so gesehen auch recht einfach – wir mussten das Ganze nur etwas gründlicher Durchdenken, haben zum Glück einen guten Fix gefunden und sind auf den nächsten Ausfall vorbereitet.

Zukünftig werden wir nach Stromausfällen (sofern wir sie mitbekommen) sicherheitshalber kontrollieren und das Ablesen am Sonntag lieber beibehalten.

Welche KI-Systeme gibt es aktuell – und wofür werden sie verwendet?