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%
Danke
Klasse, vielen Dank!
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!
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
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?
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
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.
Moin,
Dankeschön. Funktioniert.
Beste Grüße aus Grimma
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
Klappt, hatte einen Fehler in der ReadingList.
Gruß Günter
Falls jemand noch eine Visualisierung braucht, hier melden.
Hallo Damian,
meld mich hiermit.
Beste Grüße
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")}
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
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.
Moin,
Dankeschön Damian. Es ist immer wieder Super, was Du so auf die Beine stellst!
Beste Grüße aus Grimma