FHEM Forum

FHEM => Automatisierung => Thema gestartet von: sn0000py am 02 Januar 2023, 15:24:49

Titel: JsonMod wie notify auf ready?
Beitrag von: sn0000py am 02 Januar 2023, 15:24:49
Eine Frage, ich möchte gerne Daten per JsonMod abholen, und dann diese Daten verarbeiten.
Wie kann ich da ein notify definieren das genau einmal getriggert wird, nachdem alle properties gesetzt wurden machen?

define test JsonMod https:...
attr test readingList multi(jsonPath('$.data[*]'), strftime("%Y-%m-%d %H:%M", localtime(property('start_timestamp')/1000)), property('value')/10);;\
single(jsonPath('$.data[0].start_timestamp'), 'period','');;
#   API_LAST_MSG 200
#   API_LAST_RES 1672668752.06255
#   CFGFN     
#   DEF        https://....
#   FUUID      63b00071-f33f-1e88-6177-c2382ea2c36d2058
#   NAME       test
#   NEXT       2023-01-02 16:00:00
#   NR         22451
#   SOURCE     https://.... (200)
#   STATE      ???
#   SVN        24783 2021-07-21 22:37:12 UTC
#   TYPE       JsonMod
#   eventCount 78
#   CONFIG:
#     IN_REQUEST 0
#     SOURCE     https://.....
#     SECRET:
#   OLDREADINGS:
#   READINGS:
#     2023-01-02 15:12:32   2023-01-02_1500 15.534
#     2023-01-02 15:12:32   2023-01-02_1600 16.3
...
#     2023-01-02 15:12:32   period          1672668000000
#
setstate test 2023-01-02 15:12:32 .computedReadings 2023-01-02_1800,2023-01-03_0800,2023-01-03_1700,2023-01-03_1500,2023-01-03_2200,2023-01-03_1100,2023-01-02_2200,2023-01-03_0700,2023-01-03_0500,2023-01-03_0100,2023-01-02_1700,2023-01-02_1500,2023-01-03_1800,2023-01-03_1000,2023-01-03_0300,period,2023-01-03_0000,2023-01-03_1300,2023-01-03_0400,2023-01-03_1600,2023-01-02_2100,2023-01-03_0200,2023-01-03_0600,2023-01-03_1200,2023-01-03_2100,2023-01-02_1600,2023-01-03_1400,2023-01-02_2000,2023-01-03_2300,2023-01-02_1900,2023-01-03_0900,2023-01-03_1900,2023-01-02_2300,2023-01-03_2000
....
setstate test 2023-01-02 15:12:32 2023-01-03_2200 11.944
setstate test 2023-01-02 15:12:32 2023-01-03_2300 10.397
setstate test 2023-01-02 15:12:32 period 1672668000000



das reading mit dem single, habe ich gemacht da ich dachte das wird dann nach dem multi ausgeführt, aber im eventMonitor sehe ich das es zwischendurch ausgeführt wird.
Titel: Antw:JsonMod wie notify auf ready?
Beitrag von: TomLee am 02 Januar 2023, 15:38:04
ZitatWie kann ich da ein notify definieren das genau einmal getriggert wird..

Im Ausführungsteil des notify am Ende einfach ein set <notifyname> inactive ?

Oder gehts darum wie das Suchmuster des notify zu definieren wäre? Da komm ich nicht mit wie das mit dem "ready" und "nachdem alle properties gesetzt wurden" genau gemeint ist.
Titel: Antw:JsonMod wie notify auf ready?
Beitrag von: sn0000py am 02 Januar 2023, 15:46:34
Aber wie kann ich sicherstellen das ich zum richtigen Zeitpunkt das notify erhalte?

2023-01-02 15:12:32.084 JsonMod test 2023-01-03_1800: 16.902
2023-01-02 15:12:32.084 JsonMod test 2023-01-03_1000: 16.857
2023-01-02 15:12:32.084 JsonMod test 2023-01-03_0300: 11.5
2023-01-02 15:12:32.084 JsonMod test period: 1672668000000
2023-01-02 15:12:32.084 JsonMod test 2023-01-03_0000: 13.001
2023-01-02 15:12:32.084 JsonMod test 2023-01-03_1300: 16.091
2023-01-02 15:12:32.084 JsonMod test 2023-01-03_0400: 11.363
2023-01-02 15:12:32.084 JsonMod test 2023-01-03_1600: 17.499


das single reading (period) kommt ja irgendwo dazwischen, ich bräuchte ja ein notify das ausgeführt wird, wenn schon alle werte korrekt geschrieben wurden.
Titel: Antw:JsonMod wie notify auf ready?
Beitrag von: TomLee am 02 Januar 2023, 16:00:27
Hast schonmal ausprobiert was genau passiert wenn auf alle Readings .* triggerst ?
Wenn das nicht geht, vorne im Ausführungsteil einfach zur Sicherheit nochmal kurze Zeit warten ?
Titel: Antw:JsonMod wie notify auf ready?
Beitrag von: sn0000py am 02 Januar 2023, 16:13:57
hmmm ja aber das sind dann alles so irgendwie sachen.
Bei meinem ersten JsonMod, habe ich dann einfach einen timer aktiviert, der dann in einer Sekunde die Bearbeitung macht, dann hat der JsonMod sicher schon alles verarbeitet.

Nur wollte ich es nun halt "richtig" machen, also das ich nur einen notify habe (performance) und es dann genau an der richtigen Stelle habe
Titel: Antw:JsonMod wie notify auf ready?
Beitrag von: erwin am 02 Januar 2023, 17:27:45
Hi,
nachdem das JsonMod modul alle readings in einem "rutsch" updated (readingsBulkupdate) , (darum ist auch der Timestamp bei allen readings exakt gleich!),
sind immer alle readings zum gleichen Zeitpunkt aktuell - dazwischen kann kein notify,... auslösen.
Ausname: Falls ein reading nicht im http resonse matched....
Es würde also reichen, das notify auf EIN beliebiges reading zu triggern.
l.g. erwin
Titel: Antw:JsonMod wie notify auf ready?
Beitrag von: sn0000py am 02 Januar 2023, 17:39:42
Ah super danke.  ;D
Titel: Antw:JsonMod wie notify auf ready?
Beitrag von: yersinia am 24 Januar 2023, 09:13:23
Ja, der Thread ist alt, aber anstelle von
Zitat von: erwin am 02 Januar 2023, 17:27:45Es würde also reichen, das notify auf EIN beliebiges reading zu triggern.
kann man auf dem reading .computedReadings triggern, welches afaik nach erfolgreicher Anlage von readings immer generiert wird.