FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: 300P am 01 September 2025, 20:15:48

Titel: Automatischer Upload von Verbrauchsdaten auf waermepumpen-verbrauchsdatenbank.de
Beitrag von: 300P am 01 September 2025, 20:15:48
Auf der Seite waermepumpen-verbrauchsdatenbank (https://www.waermepumpen-verbrauchsdatenbank.de) kann an einer Sammlung von Wärmepumpenverbrauchs- und Erzeugungswerten inkl. JAZ-Bildung und einem dadurch möglichen Vergleich zu anderen Wärmepumpen in einer Datenbank händisch hinterlegt werden.

Näheres dazu bitte dieser Webseite entnehmen.

PS:
Ich bin weder Admin, Eigentümer noch Betreiber dieser Datenbank / des Servers)


Jetzt zurück zum Thema:

Im August bin ich zufällig durch einen Beitrag in einem anderen Forum auf die Seite gestoßen und hab mich kurzentschlossen dort angemeldet.

Neben den Allgemeindaten der Anlage etc. (siehe Webseite) muss man monatlich folgende Daten der WP (Wärmepumpe) kennen / ab- oder auslesen / messen können.

Dies sind

Die ersten Daten habe ich per Hand eingetippelt.
Aber dann habe ich erfahren, dass man auch die Daten "übergeben" kann wenn man den Admin anschreibt und um eine persönlichen Key bittet.
Da ich schon WP-Werte per BBQKees-ESP-Modul (https://bbqkees-electronics.nl/?lang=de) auslese und ein Energiemeter im WP-Verteilerkasten habe war der Gedanke dies zu automatisieren schnell da.

Kurzum - hier meine Lösung um die Daten automatisch zu übermitteln - natürlich funktioniert das nur wenn man einen speziellen persönlichen Key vom Admin nach einer Mailanfrage erhalten hat und eine Anlage angelegt hat.

Zur Nutzung des automatischen Importes in die Datenbank hier meine Codesscnipsel:
Es werden täglich nach Mitternacht die aktuellsten Monats- und (evtl. schon bekannten) Vormonatswerte übermittelt.
 (=>>hab keinen Monatswechsel berücksichtigt  :o )

################################
Integration in ein FHEM-System
################################

A. AT-Device im raw-modus hinzufügen:

Diese 6 Reading für die Variablen (lfd. Monat / letzter Monat)

- $strom(last) ->> Energieverbrauch WP        -- in kWh   z.B 123.05
- $WMZ(last)   ->> WMZ (Ertrag)     WP        -- in kWh   z.B 333.08
- $bs(last)    ->> Kompressor Betriebsstunden -- in kWh   z.B 132.05

müssen natürlich schon irgendwo in einem FHEM-Device ermittelt worden sein / bereitstehen und so angepasst werden, damit die "richtigen" Werte an das Skript übergeben werden können.

defmod at_WP_Daten_UPLOAD at *00:45:00 {\
my $strom = ReadingsNum('Dum.Energy','WPGridConsumptionMonth','0');;;;\
my $wmz = ReadingsNum('di_counter_25_03','MQTT_EMSwp.boiler_data_nrgtotal.month','0');;;; \
my $bs = ReadingsNum('di_counter_25_03','MQTT_EMSwp.user_boiler_data_uptimecontrol.month','0');;;; \
{system("/opt/fhem/uploadWP_month.sh",$strom,$wmz,$bs)};;;; \
my $stromlast = ReadingsNum('Dum.Energy','WPGridConsumptionPMonth','0');;;; \
my $wmzlast = ReadingsNum('di_counter_25_03','MQTT_EMSwp.boiler_data_nrgtotal.last_month','0');;;;  \
my $bslast = ReadingsNum('di_counter_25_03','MQTT_EMSwp.user_boiler_data_uptimecontrol.last_month','0');;;;  \
{system("/opt/fhem/uploadWP_lastmonth.sh",$stromlast,$wmzlast,$bslast)};;;;  \
}\

attr at_WP_Daten_UPLOAD comment per Linux händisch so mal testen und nachsehen ob die Daten im aktuellen Monat eingetragen werden\
"bash /opt/fhem/WP_month.sh 206.8 613.10 121.50"\

attr at_WP_Daten_UPLOAD room EnergieWP
attr at_WP_Daten_UPLOAD verbose 2

B. 2 Script-Dateien im Verzeichnis ... anlegen:
Unbedingt dort diese notwendigen Daten mit den persönlichen bzw. aktuellen Monatswerten ersetzen.

- "anlage=9999"
- "importkey=1111111112222222222222"
- "personenjahr=9"

Diese Daten im Code so lassen :

- "&strom=$1&wmz=$2&bs=$3&monat=aktuell"

/opt/fhem/uploadWP_lastmonth.sh
Inhalt der Script-Datei:
wget --quiet - "https://www.waermepumpen-verbrauchsdatenbank.de/import/import.php?anlage=9999&importkey=1111111112222222222222&personenjahr=9&strom=$1&wmz=$2&bs=$3"


/opt/fhem/uploadWP_month.sh
Inhalt der Script-Datei:
wget --quiet - "https://www.waermepumpen-verbrauchsdatenbank.de/import/import.php?anlage=9999&importkey=1111111112222222222222&personenjahr=9&strom=$1&wmz=$2&bs=$3&monat=aktuell"


Damit sollte es dann eigentlich klappen 😉🤓

Sollte jemand einen anderen / kürzeren / einfacheren Weg kennen - gern raus damit.

Titel: Aw: Automatischer Upload von Verbrauchsdaten auf waermepumpen-verbrauchsdatenbank.de
Beitrag von: betateilchen am 01 September 2025, 21:54:44

Aber das ist nur meine persönliche Meinung.
Titel: Aw: Automatischer Upload von Verbrauchsdaten auf waermepumpen-verbrauchsdatenbank.de
Beitrag von: 300P am 02 September 2025, 08:52:30
Danke dir für den Schubser in die richtige Richtung. ;D

Hatte wohl wegen der Vorgabe aus der Mail von dem Seitenbetreuer mit 'Bitte mit "wget ....." oder "curl ....." übertragen' nicht großartig nachgedacht und mich somit in die falsche Ecke gebracht.

Ein simples manuelles:
{  GetFileFromURL('https://www.waermepumpen-verbrauchsdatenbank.de/import/import.php?anlage=9999&importkey=11111111111111222222222&personenjahr=99&strom=1230.4&wmz=4560.7&bs=998.9&monat=aktuell') }

(natürlich mit den "richtigen Daten  ;) "
wird fehlerfrei ausgeführt. ;D
Import User: XXXXXXYYYYY <br />Jahr Monat: 2025 09 <br />Jahr Vormonat: 2025 09 (sep) <br />Datensatz Anlage 9999 aus dem Jahr 2025 vorhanden -> Update <br />Daten: seps 1230.4 sepw 4560.7 sepbs 998.9 <br /><br />Import Ende

Jetzt noch die passenden Werte aus den anderen Devices per Variable übergeben und fertig ist die Angelegenheit ohne die o.g. Script-Nutzung. O:-)

DANKESCHÖN !!

PS:
sollte ich es vielleicht noch in den Anfängerfragen verschieben (lassen) oder hier bei den Heizungsanwendungen lassen ???
Titel: Aw: Automatischer Upload von Verbrauchsdaten auf waermepumpen-verbrauchsdatenbank.de
Beitrag von: 300P am 02 September 2025, 17:04:09
Hier nun meine jetzt bei mir laufende Lösung:

defmod at.Verbrauchsdatenupload_Waermepumpe.Tag at *23:55:00 {\
\
## aktueller Monat am jeweiligen Abend senden\
my $strom = ReadingsNum('di_counter_25_03','SMA_Elgris_EM2.Bezug_Wirkleistung_Zaehler.month','0');;;;\
my $wmz = ReadingsNum('di_counter_25_03','MQTT_EMSwp.boiler_data_nrgtotal.month','0');;;; \
my $bs = ReadingsNum('di_counter_25_03','MQTT_EMSwp.user_boiler_data_uptimecontrol.month','0');;;; \
GetFileFromURL("https://www.waermepumpen-verbrauchsdatenbank.de/import/import.php?anlage=9999&importkey=11111111111111222222222&personenjahr=99&strom=$strom&wmz=$wmz&bs=$bs&monat=aktuell");;;;\
\
## letzter Monat - nur am 1. des Monats noch die letzten 5 Minuten vom letzten Tag aktualisieren\
if($mday < 2)\
   {\
    my $stromlast = ReadingsNum('di_counter_25_03','SMA_Elgris_EM2.Bezug_Wirkleistung_Zaehler.last_month','0');;;; \
    my $wmzlast = ReadingsNum('di_counter_25_03','MQTT_EMSwp.boiler_data_nrgtotal.last_month','0');;;;  \
    my $bslast = ReadingsNum('di_counter_25_03','MQTT_EMSwp.user_boiler_data_uptimecontrol.last_month','0');;;;  \
    GetFileFromURL("https://www.waermepumpen-verbrauchsdatenbank.de/import/import.php?anlage=9999&importkey=11111111111111222222222&personenjahr=99&strom=$stromlast&wmz=$wmzlast&bs=$bslast&monat");;;;\
   }\
}\

Titel: Aw: Automatischer Upload von Verbrauchsdaten auf waermepumpen-verbrauchsdatenbank.de
Beitrag von: betateilchen am 02 September 2025, 17:22:32
Was sollen eigentlich die eckigen Klammern um das GetFileFromUrl()? Die gehören da m.E. nicht hin.

Zitat von: 300P am 02 September 2025, 08:52:30PS:
sollte ich es vielleicht noch in den Anfängerfragen verschieben (lassen) oder hier bei den Heizungsanwendungen lassen ???

In den Anfängerfragen wäre das noch falscher als hier.
Verschiebe das am Besten in den Bereich "Codeschnipsel", den Button zum Verschieben findest Du unten links auf dieser Seite.
Titel: Aw: Automatischer Upload von Verbrauchsdaten auf waermepumpen-verbrauchsdatenbank.de
Beitrag von: 300P am 02 September 2025, 20:36:04
Zitat von: betateilchen am 02 September 2025, 17:22:32Was sollen eigentlich die eckigen Klammern um das GetFileFromUrl()? Die gehören da m.E. nicht hin.

Zitat von: 300P am 02 September 2025, 08:52:30Sorry - die haben sich irgendwie beim "Userdatenunkenntlichmachen" und dem Kopieren eingeschlichen - hat ja nix mit einem Array zu tun



EDIT:
Verschoben von Heizungssteuerung/Raumklima ->>> nach Codeschnipsel