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.
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.
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.
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 ?
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
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
Ah super danke. ;D
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.