JsonMod wie notify auf ready?

Begonnen von sn0000py, 02 Januar 2023, 15:24:49

Vorheriges Thema - Nächstes Thema

sn0000py

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.

TomLee

#1
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.

sn0000py

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.

TomLee

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 ?

sn0000py

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

erwin

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
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

sn0000py


yersinia

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.

viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl