Dragino parser
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2023-12-15 11:44:35 +01:00
parent 084f9fbf31
commit 7ee7d4df89
7 changed files with 263 additions and 30 deletions

View File

@ -0,0 +1,59 @@
package draginoLmds200
import (
"fmt"
"encoding/json"
"udi/database"
)
/*
"decoded_payload": {
"Bat": 3.082,
"DALARM_count": 0,
"Distance_alarm": 0,
"Interrupt_alarm": 0,
"dis1": 105,
"dis2": 201
},
*/
type message struct {
Bat float32 `json:"Bat"`
DALARM_count int `json:"DALARM_count"`
Distance_alarm int `json:"Distance_alarm"`
Interrupt_alarm int `json:"Interrupt_alarm"`
Dis1 int `json:"dis1"`
Dis2 int `json:"dis2"`
}
func Parse(fPort int, decodedPayload []byte, variables *map[string]database.VariableType) error {
if fPort != 2 {
return fmt.Errorf("Unexpected fPort %d", fPort)
}
var message message
err := json.Unmarshal(decodedPayload, &message)
if err != nil {
return fmt.Errorf("Unable to parse payload, fPort %d, error %s", fPort, err)
}
(*variables)["Battery"] = database.VariableType {
Label: "Battery",
Variable: "Voltage",
Unit: "V",
Value: message.Bat,
}
(*variables)["Distance1"] = database.VariableType {
Label: "Distance1",
Variable: "Level",
Unit: "mm",
Value: (message.Dis1 * 10),
}
(*variables)["Distance2"] = database.VariableType {
Label: "Distance2",
Variable: "Level",
Unit: "mm",
Value: (message.Dis2 * 10),
}
return nil
}

View File

@ -0,0 +1,84 @@
{
"end_device_ids": {
"device_id": "eui-a840419641867eb5",
"application_ids": {
"application_id": "de-hottis-level-monitoring"
},
"dev_eui": "A840419641867EB5",
"join_eui": "A840410000000101",
"dev_addr": "260B91F9"
},
"correlation_ids": [
"gs:uplink:01HH1R112BNDQQ52N9FVV0TKPW"
],
"received_at": "2023-12-07T08:59:05.369293395Z",
"uplink_message": {
"session_key_id": "AYa9JUhNJp00t+hKqkQUog==",
"f_port": 2,
"f_cnt": 25665,
"frm_payload": "DAoAaQDJAA==",
"decoded_payload": {
"Bat": 3.082,
"DALARM_count": 0,
"Distance_alarm": 0,
"Interrupt_alarm": 0,
"dis1": 105,
"dis2": 201
},
"rx_metadata": [
{
"gateway_ids": {
"gateway_id": "eui-00005813d35e3021",
"eui": "00005813D35E3021"
},
"timestamp": 1141271036,
"rssi": -100,
"channel_rssi": -100,
"snr": 7.3,
"location": {
"latitude": 52.17065267448476,
"longitude": 7.629437184774199,
"source": "SOURCE_REGISTRY"
},
"uplink_token": "CiIKIAoUZXVpLTAwMDA1ODEzZDM1ZTMwMjESCAAAWBPTXjAhEPzTmaAEGgsI2ZLGqwYQnfLnTSDggLjIm5IF",
"channel_index": 6,
"received_at": "2023-12-07T08:59:05.163182877Z"
}
],
"settings": {
"data_rate": {
"lora": {
"bandwidth": 125000,
"spreading_factor": 7,
"coding_rate": "4/5"
}
},
"frequency": "868300000",
"timestamp": 1141271036
},
"received_at": "2023-12-07T08:59:05.163964824Z",
"consumed_airtime": "0.056576s",
"locations": {
"user": {
"latitude": 52.1707216912195,
"longitude": 7.63066603211241,
"altitude": 39,
"source": "SOURCE_REGISTRY"
}
},
"version_ids": {
"brand_id": "dragino",
"model_id": "lmds200",
"hardware_version": "_unknown_hw_version_",
"firmware_version": "1.0",
"band_id": "EU_863_870"
},
"network_ids": {
"net_id": "000013",
"ns_id": "EC656E0000000181",
"tenant_id": "ttn",
"cluster_id": "eu1",
"cluster_address": "eu1.cloud.thethings.network"
}
}
}