FHEM Forum

FHEM => Automatisierung => Thema gestartet von: majorshark am 02 August 2022, 07:52:06

Titel: Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: majorshark am 02 August 2022, 07:52:06
Hallo Forum,

hier mal ein Beispiel für das JodsonMod um den Füllstand der Gasspeicher in Deutschland abzufragen. Die Daten stehen unter https://agsi.gie.eu (https://agsi.gie.eu) zur Verfügung. Nach einer kostenlosen Anmeldung können diese Daten auch mittels API abgerufen werden und mit JsonMod aufbereitet werden.

Wer es braucht ;-)

Grüße Frank


defmod GasInStorageDE JsonMod https://agsi.gie.eu/api?country=de&date=now
attr GasInStorageDE DbLogInclude gasInStorage,injection,trend,full
attr GasInStorageDE comment Status: \
E - Estimated - Geschätzt\
C - Confirm - Bestätigt
attr GasInStorageDE event-on-change-reading gas_Day
attr GasInStorageDE httpHeader x-key: 08154711
attr GasInStorageDE icon gasmeter2
attr GasInStorageDE interval 0 6 * * *
attr GasInStorageDE readingList single(jsonPath('$.gas_day'), 'gas_Day', 'N/A');;\
single(jsonPath('$.data.0.gasInStorage'), 'gasInStorage', 'N/A');;\
single(jsonPath('$.data.0.consumption'), 'consumption', 'N/A');;\
single(jsonPath('$.data.0.consumptionFull'), 'consumptionFull', 'N/A');;\
single(jsonPath('$.data.0.injection'), 'injection', 'N/A');;\
single(jsonPath('$.data.0.withdrawal'), 'withdrawal', 'N/A');;\
single(jsonPath('$.data.0.workingGasVolume'), 'workingGasVolume', 'N/A');;\
single(jsonPath('$.data.0.injectionCapacity'), 'injectionCapacity', 'N/A');;\
single(jsonPath('$.data.0.withdrawalCapacity'), 'withdrawalCapacity', 'N/A');;\
single(jsonPath('$.data.0.status'), 'status', 'N/A');;\
single(jsonPath('$.data.0.trend'), 'trend', 'N/A');;\
single(jsonPath('$.data.0.full'), 'full', 'N/A');;
attr GasInStorageDE room 8.1_Info
attr GasInStorageDE stateFormat Füllstand: full%
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: sash.sc am 02 August 2022, 21:34:06
Danke
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: mi.ke am 02 August 2022, 23:46:51
Klasse, vielen Dank!
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: jkriegl am 11 August 2022, 16:43:40
Anbei eine Visialisierung.
Man beachte, dass Haidach ausschließlich ein bayerischer Speicher ist und noch nicht an AT angeschlossen ist. Dieser ist in der Quelle AT zugeordnet und müsste eigentlich DE zugeordnet werden - also eine Verfälschung der DE Befüllung von ca. 2%.
Rheden und Wolfersberg haben die gesetzliche Sollvorgabe von 65% (1. Aug) verfehlt, Haidach ist in AT. Haidach hat derzeit einen trend von 0,31% wird also (bei keiner Verbesserung) das Okt.-Ziel (80%) klar verfehlen!
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: no_Legend am 25 Oktober 2022, 12:54:53
Zitat von: majorshark am 02 August 2022, 07:52:06
Hallo Forum,

hier mal ein Beispiel für das JodsonMod um den Füllstand der Gasspeicher in Deutschland abzufragen. Die Daten stehen unter https://agsi.gie.eu (https://agsi.gie.eu) zur Verfügung. Nach einer kostenlosen Anmeldung können diese Daten auch mittels API abgerufen werden und mit JsonMod aufbereitet werden.

Wer es braucht ;-)

Grüße Frank


defmod GasInStorageDE JsonMod https://agsi.gie.eu/api?country=de&date=now
attr GasInStorageDE DbLogInclude gasInStorage,injection,trend,full
attr GasInStorageDE comment Status: \
E - Estimated - Geschätzt\
C - Confirm - Bestätigt
attr GasInStorageDE event-on-change-reading gas_Day
attr GasInStorageDE httpHeader x-key: 08154711
attr GasInStorageDE icon gasmeter2
attr GasInStorageDE interval 0 6 * * *
attr GasInStorageDE readingList single(jsonPath('$.gas_day'), 'gas_Day', 'N/A');;\
single(jsonPath('$.data.0.gasInStorage'), 'gasInStorage', 'N/A');;\
single(jsonPath('$.data.0.consumption'), 'consumption', 'N/A');;\
single(jsonPath('$.data.0.consumptionFull'), 'consumptionFull', 'N/A');;\
single(jsonPath('$.data.0.injection'), 'injection', 'N/A');;\
single(jsonPath('$.data.0.withdrawal'), 'withdrawal', 'N/A');;\
single(jsonPath('$.data.0.workingGasVolume'), 'workingGasVolume', 'N/A');;\
single(jsonPath('$.data.0.injectionCapacity'), 'injectionCapacity', 'N/A');;\
single(jsonPath('$.data.0.withdrawalCapacity'), 'withdrawalCapacity', 'N/A');;\
single(jsonPath('$.data.0.status'), 'status', 'N/A');;\
single(jsonPath('$.data.0.trend'), 'trend', 'N/A');;\
single(jsonPath('$.data.0.full'), 'full', 'N/A');;
attr GasInStorageDE room 8.1_Info
attr GasInStorageDE stateFormat Füllstand: full%


Kann man das noch so 1zu1 übernehmen?`
Bei mir kommen alle Readings nur N/A

Mach ich was falsch?

Danke und Grüße Robert
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: FHEM-User22 am 26 Oktober 2022, 07:08:31
Moin,

Dankeschön. Funzt!

@no_Legend: Hast Du Dich angemeldet? Und das Attribut httpHeader gesetzt?

Beste Grüße

PS: Hallo Frank, wo waren wir denn beim Stammtisch?
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: FHEM-User22 am 26 Oktober 2022, 07:10:55
Moin,

Zitat von: jkriegl am 11 August 2022, 16:43:40
Anbei eine Visialisierung.

sieht gut aus. Könnte man eventuell die Codeschnipsel bekommen?

Beste Grüße
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: jkriegl am 01 November 2022, 18:51:11
Gerne {package ui_Table;
$TC{0..3} = "align='left'";
sub sub_farbe {
    my($redgreen)=@_;
    return (int($redgreen)); }
}

card([GasInStDE:trend:col2w],"Trend DE", "",-1,1,15,110,"",undef,2,"90,1,1,,,1,200")
cylinder("DE",0,100,"%",80,70,undef,1,[GasInStDE:full],sub_farbe([GasInStDE:full]),"")
An der Farbe kann man sicher noch etwas verbessern.
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: FHEM-User22 am 02 November 2022, 07:27:12
Moin,
Dankeschön. Funktioniert.

Beste Grüße aus Grimma
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: Gueco315 am 09 November 2022, 11:47:50
Hallo Frank,

ich habe mich angemeldet und den key eingetragen. Leider verwende ich dblog nicht sondern nur Log Files. Und ich bekomme keine Daten.
Wie würde es mit einem Logfile funktionieren?

Gruß Günter
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: Gueco315 am 10 November 2022, 08:55:39
Klappt, hatte einen Fehler in der ReadingList.

Gruß Günter
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: Damian am 05 Februar 2023, 22:33:43
Falls jemand noch eine Visualisierung braucht, hier melden.

Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: FHEM-User22 am 06 Februar 2023, 08:47:00
Hallo Damian,
meld mich hiermit.

Beste Grüße
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: Damian am 06 Februar 2023, 14:15:56
Zuerst brauchst du die aktuelle DOIF-Version.

Ein DOIF zum Sammeln der Daten:

defmod di_gasinStorage DOIF {}
attr di_gasinStorage DOIF_Readings full:[GasInStorageDE:full:bar1month]


und Aufbereitung der Daten über devStateIcon:

attr GasInStorageDE devStateIcon {ui_Table::card(ReadingsVal("di_gasinStorage","full",""),undef,"",0,100,0,120,"full in %",undef,"1",",fixedscaling,,,,halfring")}

Falls du die bisherigen Daten nicht geloggt hast und du nicht einen Monat lang auf neue Daten warten willst, kannst du von der Homepage per csv den letzten Monat herunterladen und importieren. Das habe ich gestern auch getan und die Daten des letzten Monats importiert mit:

{DOIF_set_card_data ("di_gasinStorage","GasInStorageDE","full","bar1month",0,"2023.02.04 77.32,2023.02.03 77.6,2023.02.02 77.85,2023.02.01 78.26,2023.01.31 78.6,2023.01.30 79.2,2023.01.29 79.79,2023.01.28 80.36,2023.01.27 81.08,2023.01.26 82.1,2023.01.25 82.81,2023.01.24 83.79,2023.01.23 84.86,2023.01.22 85.84,2023.01.21 86.52,2023.01.20 87.15,2023.01.19 87.95,2023.01.18 88.7,2023.01.17 89.32,2023.01.16 89.87,2023.01.15 90.38,2023.01.14 90.47,2023.01.13 90.53,2023.01.12 90.64,2023.01.11 90.73,2023.01.10 91.01,2023.01.09 91.11,2023.01.08 91.2,2023.01.07 91.09,2023.01.06 90.97,2023.01.05 90.81")}
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: jkriegl am 06 Februar 2023, 17:42:38
Danke! Es funktioniert auch mit ganz anderen Daten.
Anm: min. Wert - Nachkommastellen (? neg. Temperatur?); doppelte Linie bei plus u. minus Werten; mit \&temp_hue habe ich es nicht hinbekommen..

Edit: die Ursprungstemperatur ist nur eine Stelle nach dem Komma
temperature_avg_day     -0.8
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: Damian am 06 Februar 2023, 18:12:11
Zitat von: jkriegl am 06 Februar 2023, 17:42:38
Danke! Es funktioniert auch mit ganz anderen Daten.
Anm: min. Wert - Nachkommastellen (? neg. Temperatur?); doppelte Linie bei plus u. minus Werten; mit \&temp_hue habe ich es nicht hinbekommen..

Edit: die Ursprungstemperatur ist nur eine Stelle nach dem Komma
temperature_avg_day     -0.8

Die Anzahl der angezeigten Stellen wird angegeben (siehe Doku zu card). Die eine Linie ist der Nullpunkt (x-Achse) die andere Linie ist der Durchschnitt.
Titel: Antw:Anwendungsbeispiel JsonMod / Gasspeicherfüllstand in DE/EUR
Beitrag von: FHEM-User22 am 08 Februar 2023, 07:42:59
Moin,
Dankeschön Damian. Es ist immer wieder Super, was Du so auf die Beine stellst!

Beste Grüße aus Grimma