[Gelöst] Readings meines JsonMod werden nicht in der Datenbank gespeichert

Begonnen von ulobo60, 26 April 2021, 19:40:48

Vorheriges Thema - Nächstes Thema

ulobo60

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?
3x raspi + cam-Modul mit mmal-motion - 2x raspi mit KODI - 1x raspi mit FHEM + FTUI

ulobo60

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)
3x raspi + cam-Modul mit mmal-motion - 2x raspi mit KODI - 1x raspi mit FHEM + FTUI

herrmannj

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 * * *

ulobo60

@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 !
3x raspi + cam-Modul mit mmal-motion - 2x raspi mit KODI - 1x raspi mit FHEM + FTUI