NEWS
[gelöst] Payload Daten in Objekte schreiben
-
-
@gregors sagte in Payload Daten in Objekte schreiben:
%(#ff0000)[%(#ff0000)
sowas hier:
%(#ff0000)[%(#ff0000)
darf nicht im Payload enthalten sein und es ist mir ein Rätsel, wie das da rein kommt. Schau dir nochmal deinen Payload Formatter im TTN an. Da muss ein Fehler drin sein.
Am besten den von hier nehmen:
https://github.com/dragino/dragino-end-node-decoder/tree/main/LT22222-L
Ggf. auch eine ältere Version.
-
@marc-berg das ist wohl fett kursiv in rot
-
@homoran sagte in Payload Daten in Objekte schreiben:
das ist wohl fett kursiv in rot
Okay.... Das hat aber im TTN Payload mal so gar nichts verloren!
-
Habe jetzt mal den Payload-Formater aus dem Github bearbeitet.
{"end_device_ids":{"device_id":"eui-a840414601871305","application_ids":{"application_id":"gs-mg-dragino-01"},"dev_eui":"A840414601871305","join_eui":"A840410000000101","dev_addr":"260BE9CF"},"correlation_ids":["as:up:01H5Z2SA3QYET8CA17EXT5JBTW","gs:conn:01H5CGRTDQJ3EW5BPQ15D9SVP8","gs:up:host:01H5CGRTDY5KEGKQ0AQZ22XD9M","gs:uplink:01H5Z2S9XAF07SYS81675AYS9E","ns:uplink:01H5Z2S9XA7M8VZFX5JQQYWM6H","rpc:/ttn.lorawan.v3.GsNs/HandleUplink:01H5Z2S9XAH04P0Z8XWMYHP6RC","rpc:/ttn.lorawan.v3.NsAs/HandleUplink:01H5Z2SA3P57YV40D8MQMJFC70"],"received_at":"2023-07-22T15:16:43.254682567Z","uplink_message":{"session_key_id":"AYlu5XV3aMaeiMVAq8yISw==","f_port":2,"f_cnt":4272,"frm_payload":"NhUAAAAAAAA0/0E=","decoded_payload":{"ACI1_mA":"0.000", "ACI2_mA":"0.000", "AVI1_V":"13.845", "AVI2_V":"0.000", "Acount_times":null, "Count1_times":null, "Count2_times":null, "DI1_status":"L", "DI2_status":"H", "DI3_status":null, "DO1_status":"H", "DO2_status":"H", "DO3_status":null, "First_status":null, "Hardware_mode":"LT22222", "RO1_status":"OFF", "RO2_status":"OFF", "Work_mode":"2ACI+2AVI"},"rx_metadata":[{"gateway_ids":{"gateway_id":"eui-503139534e7d4750","eui":"503139534E7D4750"},"time":"2023-07-22T15:16:35.538289Z","timestamp":1683586436,"rssi":-104,"channel_rssi":-104,"snr":-15.5,"uplink_token":"CiIKIAoUZXVpLTUwMzEzOTUzNGU3ZDQ3NTASCFAxOVNOfUdQEIT75aIGGgsI2+XvpQYQyq/mFyCgl8ns//2NAQ==","channel_index":4,"received_at":"2023-07-22T15:16:43.049911754Z"}],"settings":{"data_rate":{"lora":{"bandwidth":125000, "spreading_factor":12, "coding_rate":"4/5"}}, "frequency":"867300000", "timestamp":1683586436, "time":"2023-07-22T15:16:35.538289Z"},"received_at":"2023-07-22T15:16:43.050935418Z","consumed_airtime":"1.482752s","version_ids":{"brand_id":"dragino", "model_id":"lt22222-l", "hardware_version":"_unknown_hw_version_", "firmware_version":"1.5.6", "band_id":"EU_863_870"},"network_ids":{"net_id":"000013","tenant_id":"ttn","cluster_id":"eu1","cluster_address":"eu1.cloud.thethings.network"}}}
Konnte jetzt keine Asterix erkennen.
Aber schreiben will er immer noch nicht -
@gregors sagte: schreiben will er immer noch nicht
Dann bau mal Log-Ausgaben ein.
on('mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up', function (dp) { log(dp.state.val); let payload = JSON.parse(dp.state.val).uplink_message.decoded_paylod; log(payload);
-
Habe ich gemacht.
Wo finde ich das Log? -
@gregors sagte: Wo finde ich das Log?
Im Fenster unterhalb des Skript-Editors und im Tab "Protokolle".
Das Skript ist aktiviert und hoffentlich nicht unter der Gruppe "global" erstellt? -
@paul53
Das Script läuft und ist nicht unter "Global".
Im Log steht nichts drin. Komplett leer.Mir scheint, als ob es nicht getriggert wird
-
@gregors sagte: Mir scheint, als ob es nicht getriggert wird
Die Datenpunkt-ID des Triggers stimmt? Der Wert (JSON) des Datenpunktes ändert sich?
-
@gregors sagte in Payload Daten in Objekte schreiben:
Mir scheint, als ob es nicht getriggert wird
der Datenpunkt heisst auch genau so:
mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up
? -
@homoran
Bin auf Objekt-ID gegangen, und er hat mir zur Auswahl das Objekt angeboten.
Der Datenpunkt wird alle 2 Minuten neu eingelsen (Zeitstempel). Der Wert von AVI1_V ändert sich immer maginal. -
@gregors sagte: Der Wert von AVI1_V ändert sich immer maginal.
Das genügt zum Triggern.
Was ergibt außerhalb des Triggers?log(getState('mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up').val);
-
Nichts.
Gähnende Leere im Log//'mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up'/*v3/gs-mg-dragino-01@ttn/devices/eui-a840414601871305/up*/ on('mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up', function (dp) { log(dp.state.val); let payload = JSON.parse(dp.state.val).uplink_message.decoded_paylod; log(payload); log(getState('mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up').val); if(payload && payload.AVI1_V != undefined) {
-
@gregors sagte: Gähnende Leere im Log
Das Log mit getState() außerhalb des Triggers ausführen!!
-
@paul53
Kann ich das getState() unterhalb des Scripts einfügen, oder muss ich ein Neues Script erstellen? -
@gregors sagte: Kann ich das getState() unterhalb des Scripts einfügen
Ja, unterhalb oder oberhalb des Triggers.
-
//'mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up'/*v3/gs-mg-dragino-01@ttn/devices/eui-a840414601871305/up*/ on('mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up', function (dp) { log(dp.state.val); let payload = JSON.parse(dp.state.val).uplink_message.decoded_paylod; log(payload); if(payload && payload.AVI1_V != undefined) { setState("0_userdata.0.LoRaWAN.eui-a840414601871305.ACI1_mA", Math.round(payload.ACI1_mA * 100) / 100, true); setState("0_userdata.0.LoRaWAN.eui-a840414601871305.ACI2_mA", Math.round(payload.ACI2_mA * 100) / 100, true); setState("0_userdata.0.LoRaWAN.eui-a840414601871305.AVI1_V", Math.round(payload.AVI1_V * 100) / 100, true); setState("0_userdata.0.LoRaWAN.eui-a840414601871305.AVI2_V", Math.round(payload.AVI2_V * 100) / 100, true); } }); log(getState('mqtt.2.v3.gs-mg-dragino-01@ttn.devices.eui-a840414601871305.up').val);
-
@gregors
Gut, und das JSON ist in der Log-Ausgabe zu sehen? Sie muss beim Skriptstart erzeugt werden. -
Nein, gar nichts