Hallo erstmal,
ich habe ein Problem mit nicht vorhandenen Einträgen in meiner MYSQL-Datenbank.
Aufgrund der aktuellen Corona-Situation möchte ich gern im FTUI2 per Chart Widget die letzten 5 "7-Tage-Inzidenzen" für ausgewählte 6 Land-/Regionalkreise grafisch darstellen.
Die Daten hole ich per JsonMod von einer RKI-Seite, die täglich 1mal aktualisiert wird.
Hier das entsprechende Listing:
Internals:
API_LAST_RES 1619457480.2035
API__LAST_MSG 200
DEF https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=1%3D1&outFields=death_rate,cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID&returnGeometry=false&outSR=4326&f=json
FUUID 607c7466-f33f-4a34-1ca1-2b879d6e66d190c2
NAME coronaSpreadCounties
NEXT 2021-04-26 19:19:00
NR 83
SOURCE https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=1%3D1&outFields=death_rate,cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID&returnGeometry=false&outSR=4326&f=json (200)
STATE ???
SVN 22987 2020-10-18 13:26:05 UTC
TYPE JsonMod
CONFIG:
IN_REQUEST 0
SOURCE https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=1%3D1&outFields=death_rate,cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID&returnGeometry=false&outSR=4326&f=json
SECRET:
Helper:
DBLOG:
state:
logdb:
TIME 1619453787.68267
VALUE reread
READINGS:
2021-04-26 19:18:01 230_cases 5.755
2021-04-26 19:18:01 230_cases7_per_100k 132
2021-04-26 19:18:01 230_deaths 172
2021-04-26 19:18:01 230_name LK Ebersberg
2021-04-26 19:18:01 64_cases 22.151
2021-04-26 19:18:01 64_cases7_per_100k 161
2021-04-26 19:18:01 64_deaths 357
2021-04-26 19:18:01 64_name SK Düsseldorf
2021-04-26 19:18:01 66_cases 23.325
2021-04-26 19:18:01 66_cases7_per_100k 177
2021-04-26 19:18:01 66_deaths 540
2021-04-26 19:18:01 66_name SK Essen
2021-04-26 19:18:01 76_cases 15.627
2021-04-26 19:18:01 76_cases7_per_100k 147
2021-04-26 19:18:01 76_deaths 308
2021-04-26 19:18:01 76_name LK Rhein-Kreis Neuss
2021-04-26 19:18:01 80_cases 46.732
2021-04-26 19:18:01 80_cases7_per_100k 246
2021-04-26 19:18:01 80_deaths 626
2021-04-26 19:18:01 80_name SK Köln
2021-04-26 19:18:01 95_cases 28.637
2021-04-26 19:18:01 95_cases7_per_100k 191
2021-04-26 19:18:01 95_deaths 802
2021-04-26 19:18:01 95_name LK Recklinghausen
2021-04-19 21:28:40 siebentage 117.0
Attributes:
DbLogInclude .*
event-on-change-reading .*
interval * */1 * * *
oldreadings .*_cases7_per_100k
readingList multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['76', '64', '80', '66', '95', '230'])]"), concat(property('attributes.OBJECTID'),'_name'), property('attributes.county'));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['76', '64', '80', '66', '95', '230'])]"), concat(property('attributes.OBJECTID'),'_cases'), wandler(property('attributes.cases')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['76', '64', '80', '66', '95', '230'])]"), concat(property('attributes.OBJECTID'),'_deaths'), property('attributes.deaths'));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['76', '64', '80', '66', '95', '230'])]"), concat(property('attributes.OBJECTID'),'_cases7_per_100k'), sprintf('%.0f', property('attributes.cases7_per_100k')))
room Corona-Status
update-on-start 1
Der Vollständigkeit halber hier das Listing meines DBLog:
Internals:
COLUMNS field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION ./db.conf
DEF ./db.conf .*:.*
FUUID 5c46c6c5-f33f-4a34-2b02-c7cc25ccc9b29a0c
FVERSION 93_DbLog.pm:v4.12.1-s24180/2021-04-07
MODE synchronous
MODEL MYSQL
NAME logdb
NR 31
NTFY_ORDER 50-logdb
PID 540
REGEXP .*:.*
STATE connected
TYPE DbLog
UTF8 0
dbconn mysql:database=fhem;host=localhost;port=3306
dbuser lobo60
HELPER:
COLSET 1
DEVICECOL 64
EVENTCOL 512
OLDSTATE connected
PACKAGE main
READINGCOL 64
TC current
TH history
TYPECOL 64
UNITCOL 32
VALUECOL 128
VERSION 4.12.1
READINGS:
2021-04-26 14:47:20 CacheOverflowLastNum 0
2021-04-12 13:12:36 CacheOverflowLastState normal
2017-11-16 20:17:44 countCurrent 1188
2017-11-16 20:17:44 countHistory 416113
2021-04-26 19:17:40 state connected
Attributes:
DbLogSelectionMode Include
DbLogType Current/History
room Allgemein
Hier der etwas schlappe Inhalt meiner MySQL-Datenbank bzgl. des Abrufs der bisher dort gespeicherten Werte:
mysql> select * from history where DEVICE='coronaSpreadCounties';
+---------------------+----------------------+---------+--------+---------+--------+------+
| TIMESTAMP | DEVICE | TYPE | EVENT | READING | VALUE | UNIT |
+---------------------+----------------------+---------+--------+---------+--------+------+
| 2021-04-26 18:16:27 | coronaSpreadCounties | JSONMOD | reread | state | reread | |
+---------------------+----------------------+---------+--------+---------+--------+------+
Es wäre toll, wenn mir bitte jemand erklären würde, was ich falsch gemacht habe bzw. was noch fehlt, um die Device-Readings in der Datenbank zu speichern?
Habe vor ca. 1 Stunde nochmal in meine Datenbank geschaut:
Kaum zu glauben, aber wahr: die Readings wurden heute Nacht (!?) in mein logdb geschrieben. Uhrzeit war 04:27:01 !
Keine Ahnung, was da los war. Ein Blick in die System-Ereignisse meiner FritzBox zeigten mir nur, dass mir gegen 03:19:00 Uhr eine neue IP zugewiesen wurde.
Ich weiß zwar nicht, woran es lag - jedenfalls läuft's jetzt wie gewünscht.
Problem gelöst :D.
Für die Interessierten:
Habe die Attribute noch etwas bereinigt:
1. Das dblog auf die benötigten Werte reduziert:
attr coronaSpreadCounties DbLogInclude .*(64_cases7_per_100k|66_cases7_per_100k|76_cases7_per_100k|80_cases7_per_100k|95_cases7_per_100k|230_cases7_per_100k).*
2. Habe das 'event-on-change-reading .*' eliminiert
3. Das Interval habe ich auf 1:00 Uhr nachts gesetzt:
attr coronaSpreadCounties interval 0 1 * * *
Das war's.
Jetzt wird das Chart fürs FTUI2 zusammengeschraubt.
Bis bald und vielen Dank fürs Lesen 8)
ich vermute mal das die Datenquelle um 4:27 neue Daten geliefert hat..
mach vielleicht 5:00 morgens aus dem cron. Oder "alle 6 Stunden, 5 Minuten nach voll": 5 0/6 * * *
@herrmannj,
gute Vermutung - das wird's sein!
Und: guter Hinweis von Dir, den cron später zu setzen. Ich nehme wohl 7:00 Uhr (vorher gucke ich nicht auf's Tablet mit dem FTUI2 :)
Nur 1 Wert pro Tag kommt mir eigentlich ganz gut zupass, da ich im Chart auf jeden Tag jeder Wertereihe gern die Tageswerte als Zahlen setzen möchte.
Allerdings: ich meine mich aus grauer Vorzeit zu erinnern, dass ich im Chart-Widget bestimmen kann, welcher Tick einen Wert zeigen soll...
Wenn das geht, nehme ich auf jedenfall Deinen 2. cron-Vorschlag.
P.S.: möchte an der Stelle mal loslassen, dass ich FHEM und speziell dieses Forum richtig klasse finde. Ohne die Hilfe hier ging und geht für mich diesbzgl. gar nix.
Das FHEM-System empfinde ich als äußerst stabil. Habe jetzt mehr als 2 Jahre nichts mehr am System "rumprogrammiert" (ähem: STRG-C, STRG-V), nur immer Updates gefahren. Habe nur das Info-System genutzt, das ich mir damals zusammengebastelt hatte. Ich steuere damit nichts, bekomme aber Super-Infos auf meinem FHEM-Tablet dargestellt. Angefangen von Wetterdaten (netatmo-indoor und -outdoor), Wetter-Vorhersagen (proplanta), Sonnen-/Mond-Aufgangs- und -Untergangs-Daten, Benzinpreise von 3 Tankstellen in der Nähe inkl. grafische Darstellungen (schön, mal die Preisentwicklung für 3 Jahre zu sehen!), Müllabfur-Infos (das Modulchen mit den 4 Mülltonnen), DWD-Regenradar, 3 raspi-cam-Ansichten (mit Bewegungserkennung u. Speicherung der motion-Sequenzen), ISS-Tracker (Weltbild), Anruf-Monitor (letzten 11 Anrufe von der FritzBox), Corona-Tagesdaten der für mich wichtigsten 9 Länder.
Und jetzt werden noch die 7-Tages-Inzidenzen ausgewählter Landkreise als Chart(s) hinzukommen.
Ein recht herzliches Dankeschön an alle !