SenseCAP T1000 support

Arnaud13 days ago

Hi all and sorry for reviving this subject.

My T1000 is working fine, it sends messages to my Sensecap LoRa Gateway, which is sending to MQTT Broker and I've also managed to get the Sensecap Integration for home assistant. I can see the device and its properties just fine.

Now I'd like to have the device as a device-tracker in HA so I could easily send it to Traccar but I don't know how to do that.

And In the end, I'd like to have Wifi-SSID tracking in addition to GPS which seems to be the goal of the code above if I understood correctly.

Can someone guide me more precisely on where I should put this code in Traccar ?

Any guidance would be much appreciated.

Thanks

Arnaud12 days ago

Hi,

I decied to give this a try so I added Nodered to my HA instance. I copied the first Nodered flow and tried to adapt it to my system but I don't now what I'm supposed to do then, especially, how to troubleshoot.

My setup is different from yours as I'm not using SenseCAP portal, I'm using my LoRa Gateway as a Application Server (chirpstack), which seems to completely support mqtt as my HA and Traccar are perfectly receiving messages, locations, etc.....

Please help me, I'm not a dev guy.

Thanks

Arnaud8 days ago

Hi all,

I managed to get both flow (approximately) working.

When I test using your ingest nodes, I can see the flow going on, it even pass the data to the second flow.

I still have 2 issues : if I don't use ingest nodes, nothing happens (despite the fact I can see some data arriving from my input), and I can't upload data to traccar yet.

On the second flow, If I put a debug node just before the last sep, I can see this :
{"timestamp":1742752239000,"id":"2CF7F1C064900884","lon":2.1133012,"lat":48.8911265,"hdop":1000,"altitude":28.89839172363281}

But if I put a debug node at the end, I can see an empty string[0].

Before you ask, yes I setup everything as you said : googleToken (REDACTED), host (http://192.168.4.8) ans portOsmand (5055).

Can you please help me troubleshoot ?

Arnaud8 days ago

Hi,

Finally, I managed to get both flow working fine with your ingests nodes. Traccar receives the updated coordinates no problem.

My issue now is I need to adapt your input node as I don't connect to SenseCAP Portal but to my own Gateway. I believe the message I receive from my gateway is not formatted properly as per your node expectations which cause the flow to fail.

Can you please help me adapt your flows to my use case ? Find below the message I receive from my Gateway :

{"deduplicationId":"aa88bfac-281e-4a41-a527-4b7686133bd0","time":"2025-03-24T07:56:13.032311115+00:00","deviceInfo":{"tenantId":"52f14cd4-c6f1-4fbd-8f87-4025e1d49242","tenantName":"SenseCAP","applicationId":"053edc9b-4c47-4a2f-b0e8-414dacbada7a","applicationName":"Home Assistant","deviceProfileId":"3c6aa0b4-11cd-4a2d-abaa-6b3eb3e7edbf","deviceProfileName":"Tracker","deviceName":"Tracker Anaïs","devEui":"2cf7f1c064900884","tags":{}},"devAddr":"01235505","adr":true,"dr":5,"fCnt":230,"fPort":5,"confirmed":true,"data":"BwAAAABn4RAcniVKLbJQ0Gg/fckIQMGYJUotslDN1PgpsyswqAD8ABNV","object":{"err":0,"messages":[[{"measurementId":"4200","timestamp":1742802972000,"type":"Event Status","measurementValue":[],"motionId":0},{"measurementId":"5001","motionId":0,"timestamp":1742802972000,"measurementValue":[{"mac":"9E:25:4A:2D:B2:50","rssi":-48},{"rssi":-63,"mac":"68:3F:7D:C9:08:40"},{"rssi":-51,"mac":"98:25:4A:2D:B2:50"},{"rssi":-88,"mac":"D4:F8:29:B3:2B:30"}],"type":"Wi-Fi Scan"},{"motionId":0,"timestamp":1742802972000,"measurementValue":25.2,"type":"Air Temperature","measurementId":"4097"},{"type":"Light","measurementId":"4199","motionId":0,"measurementValue":19,"timestamp":1742802972000},{"measurementValue":85,"timestamp":1742802972000,"motionId":0,"type":"Battery","measurementId":"3000"}]],"payload":"070000000067e1101c9e254a2db250d0683f7dc90840c198254a2db250cdd4f829b32b30a800fc001355","valid":true},"rxInfo":[{"gatewayId":"2cf7f110626000a2","uplinkId":3814072001,"rssi":-34,"snr":15.5,"channel":7,"location":{"latitude":48.89110415553951,"longitude":2.113258838653565},"context":"v9jCHQ==","metadata":{"region_config_id":"EU_863_870_TTN","region_common_name":"EU868"},"crcStatus":"CRC_OK"}],"txInfo":{"frequency":867900000,"modulation":{"lora":{"bandwidth":125000,"spreadingFactor":7,"codeRate":"CR_4_5"}}}}
Arnaud8 days ago

Apparently you get the "MeasurementID" in the topic of your message and I don't, so I tried to adapt the code froml the following nodes, I managed to get it "working" until "Set data, considerIp and URL" and then it fails, it can't build the JSON to send to Google API................

Arnaud6 days ago

Hi,

For those who will be looking for this in the future, please find below a copy of axelIT's post I adapted to be used with a local SenseCAP M2 Gateway.

[
    {
        "id": "590bedf68e85d2d7",
        "type": "tab",
        "label": "SenseCAP Template",
        "disabled": false,
        "info": ""
    },
    {
        "id": "e82bae9cbb5c22d3",
        "type": "mqtt in",
        "z": "590bedf68e85d2d7",
        "name": "SenseCAP M2 Gateway",
        "topic": "application/YOUR_CHRIPSTACK_APPLICATION_ID/device/#",
        "qos": "2",
        "datatype": "auto-detect",
        "broker": "270bf66dda334b51",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 150,
        "y": 200,
        "wires": [
            [
                "c164f739d2660d91",
                "b57017d2022f033c",
                "9a8bb73acdb2589c"
            ]
        ]
    },
    {
        "id": "e3f25e740ee5d751",
        "type": "switch",
        "z": "590bedf68e85d2d7",
        "name": "Lon - Lat - WiFi",
        "property": "payload.measureId",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "4197",
                "vt": "num"
            },
            {
                "t": "eq",
                "v": "4198",
                "vt": "num"
            },
            {
                "t": "eq",
                "v": "5001",
                "vt": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 3,
        "x": 960,
        "y": 160,
        "wires": [
            [
                "0ad1bd90272e1e4e"
            ],
            [
                "ed8ea08363877a9c"
            ],
            [
                "9672eb4d6458c89f"
            ]
        ]
    },
    {
        "id": "0ad1bd90272e1e4e",
        "type": "change",
        "z": "590bedf68e85d2d7",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "parts.index",
                "pt": "msg",
                "to": "0",
                "tot": "num"
            },
            {
                "t": "set",
                "p": "parts.count",
                "pt": "msg",
                "to": "2",
                "tot": "num"
            },
            {
                "t": "set",
                "p": "parts.id",
                "pt": "msg",
                "to": "msg.payload.deviceId & msg.payload.timestamp",
                "tot": "jsonata"
            },
            {
                "t": "move",
                "p": "payload.battery",
                "pt": "msg",
                "to": "data.battery",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.deviceId",
                "pt": "msg",
                "to": "data.id",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.timestamp",
                "pt": "msg",
                "to": "data.timestamp",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1300,
        "y": 60,
        "wires": [
            [
                "ac0bc64b755e5980"
            ]
        ]
    },
    {
        "id": "ed8ea08363877a9c",
        "type": "change",
        "z": "590bedf68e85d2d7",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "parts.index",
                "pt": "msg",
                "to": "1",
                "tot": "num"
            },
            {
                "t": "set",
                "p": "parts.count",
                "pt": "msg",
                "to": "2",
                "tot": "num"
            },
            {
                "t": "set",
                "p": "parts.id",
                "pt": "msg",
                "to": "msg.payload.deviceId & msg.payload.timestamp",
                "tot": "jsonata"
            },
            {
                "t": "move",
                "p": "payload.battery",
                "pt": "msg",
                "to": "data.battery",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.deviceId",
                "pt": "msg",
                "to": "data.id",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.timestamp",
                "pt": "msg",
                "to": "data.timestamp",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1300,
        "y": 160,
        "wires": [
            [
                "ac0bc64b755e5980"
            ]
        ]
    },
    {
        "id": "ac0bc64b755e5980",
        "type": "join",
        "z": "590bedf68e85d2d7",
        "name": "",
        "mode": "auto",
        "build": "object",
        "property": "payload",
        "propertyType": "msg",
        "key": "topic",
        "joiner": "\\n",
        "joinerType": "str",
        "useparts": true,
        "accumulate": true,
        "timeout": "",
        "count": "",
        "reduceRight": false,
        "reduceExp": "",
        "reduceInit": "",
        "reduceInitType": "",
        "reduceFixup": "",
        "x": 1530,
        "y": 160,
        "wires": [
            [
                "162d60fed6c3c219"
            ]
        ]
    },
    {
        "id": "c722e31e2b6e91ed",
        "type": "mqtt out",
        "z": "590bedf68e85d2d7",
        "name": "",
        "topic": "/tracking/add",
        "qos": "",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "35fd3a139e459f2a",
        "x": 3410,
        "y": 80,
        "wires": []
    },
    {
        "id": "7e26671f8bfec835",
        "type": "http request",
        "z": "590bedf68e85d2d7",
        "name": "Get location from WiFi",
        "method": "POST",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 2020,
        "y": 320,
        "wires": [
            [
                "621eb5641b04ac3e"
            ]
        ]
    },
    {
        "id": "39ab0ee97a8c3eb5",
        "type": "change",
        "z": "590bedf68e85d2d7",
        "name": "Replace property names",
        "rules": [
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "mac",
                "fromt": "str",
                "to": "macAddress",
                "tot": "str"
            },
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "rssi",
                "fromt": "str",
                "to": "signalStrength",
                "tot": "str"
            },
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "value",
                "fromt": "str",
                "to": "wifiAccessPoints",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1250,
        "y": 320,
        "wires": [
            [
                "f9124bca24c8cd17"
            ]
        ]
    },
    {
        "id": "9672eb4d6458c89f",
        "type": "json",
        "z": "590bedf68e85d2d7",
        "name": "Convert to string",
        "property": "payload",
        "action": "str",
        "pretty": false,
        "x": 1020,
        "y": 320,
        "wires": [
            [
                "39ab0ee97a8c3eb5"
            ]
        ]
    },
    {
        "id": "f9124bca24c8cd17",
        "type": "json",
        "z": "590bedf68e85d2d7",
        "name": "Convert to object",
        "property": "payload",
        "action": "obj",
        "pretty": false,
        "x": 1490,
        "y": 320,
        "wires": [
            [
                "f0041917b7e38ded"
            ]
        ]
    },
    {
        "id": "f0041917b7e38ded",
        "type": "change",
        "z": "590bedf68e85d2d7",
        "name": "Set data, considerIp and URL",
        "rules": [
            {
                "t": "move",
                "p": "payload.timestamp",
                "pt": "msg",
                "to": "data.timestamp",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.deviceId",
                "pt": "msg",
                "to": "data.id",
                "tot": "msg"
            },
            {
                "t": "set",
                "p": "payload.considerIp",
                "pt": "msg",
                "to": "false",
                "tot": "bool"
            },
            {
                "t": "set",
                "p": "url",
                "pt": "msg",
                "to": "\"https://www.googleapis.com/geolocation/v1/geolocate?key=\" & $env('googleToken')\t",
                "tot": "jsonata"
            },
            {
                "t": "move",
                "p": "payload.battery",
                "pt": "msg",
                "to": "data.battery",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1750,
        "y": 320,
        "wires": [
            [
                "7e26671f8bfec835"
            ]
        ]
    },
    {
        "id": "621eb5641b04ac3e",
        "type": "switch",
        "z": "590bedf68e85d2d7",
        "name": "Check accuracy",
        "property": "payload.accuracy",
        "propertyType": "msg",
        "rules": [
            {
                "t": "lt",
                "v": "50",
                "vt": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 2240,
        "y": 320,
        "wires": [
            [
                "ee28519bdbd4403a"
            ]
        ]
    },
    {
        "id": "daeee2f62f340b6f",
        "type": "change",
        "z": "590bedf68e85d2d7",
        "name": "Set URL",
        "rules": [
            {
                "t": "set",
                "p": "url",
                "pt": "msg",
                "to": "\"https://maps.googleapis.com/maps/api/elevation/json?locations=\" & msg.data.lat & \",\" & msg.data.lon & \"&key=\" & $env('googleToken')\t",
                "tot": "jsonata"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 2480,
        "y": 160,
        "wires": [
            [
                "4a15a361fc420285"
            ]
        ]
    },
    {
        "id": "4a15a361fc420285",
        "type": "http request",
        "z": "590bedf68e85d2d7",
        "name": "Get elevation",
        "method": "GET",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 2650,
        "y": 160,
        "wires": [
            [
                "14f0e6eae09949c9"
            ]
        ]
    },
    {
        "id": "162d60fed6c3c219",
        "type": "change",
        "z": "590bedf68e85d2d7",
        "name": "Prepare MQTT GPS data",
        "rules": [
            {
                "t": "move",
                "p": "payload[0].messages[0][0].measurementValue",
                "pt": "msg",
                "to": "data.lon",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload[0].messages[0][1].measurementValue",
                "pt": "msg",
                "to": "data.lat",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1790,
        "y": 160,
        "wires": [
            [
                "daeee2f62f340b6f"
            ]
        ]
    },
    {
        "id": "ee28519bdbd4403a",
        "type": "change",
        "z": "590bedf68e85d2d7",
        "name": "Prepare MQTT WiFI data",
        "rules": [
            {
                "t": "move",
                "p": "payload.location.lng",
                "pt": "msg",
                "to": "data.lon",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.location.lat",
                "pt": "msg",
                "to": "data.lat",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 2470,
        "y": 260,
        "wires": [
            [
                "daeee2f62f340b6f"
            ]
        ]
    },
    {
        "id": "14f0e6eae09949c9",
        "type": "switch",
        "z": "590bedf68e85d2d7",
        "name": "",
        "property": "statusCode",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "200",
                "vt": "num"
            },
            {
                "t": "else"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 2820,
        "y": 160,
        "wires": [
            [
                "d24a8ff0a731d781"
            ],
            [
                "4e8c3e00494450b3"
            ]
        ]
    },
    {
        "id": "d24a8ff0a731d781",
        "type": "change",
        "z": "590bedf68e85d2d7",
        "name": "Set altitude",
        "rules": [
            {
                "t": "set",
                "p": "data.altitude",
                "pt": "msg",
                "to": "payload.results[0].elevation",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 2970,
        "y": 100,
        "wires": [
            [
                "4e8c3e00494450b3"
            ]
        ]
    },
    {
        "id": "4e8c3e00494450b3",
        "type": "change",
        "z": "590bedf68e85d2d7",
        "name": "Move data to payload",
        "rules": [
            {
                "t": "move",
                "p": "payload[0].battery",
                "pt": "msg",
                "to": "payload.battery",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "data",
                "pt": "msg",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 3180,
        "y": 180,
        "wires": [
            [
                "c722e31e2b6e91ed",
                "c71dcf46b84dbb9f"
            ]
        ]
    },
    {
        "id": "a5ef6402f71ae122",
        "type": "inject",
        "z": "590bedf68e85d2d7",
        "name": "Sample data wifi",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "json",
        "x": 180,
        "y": 380,
        "wires": [
            [
                "9a8bb73acdb2589c"
            ]
        ]
    },
    {
        "id": "ceb1f0b867c48aaf",
        "type": "inject",
        "z": "590bedf68e85d2d7",
        "name": "Sample data GPS",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "json",
        "x": 190,
        "y": 60,
        "wires": [
            [
                "c164f739d2660d91",
                "b57017d2022f033c"
            ]
        ]
    },
    {
        "id": "9a8bb73acdb2589c",
        "type": "change",
        "z": "590bedf68e85d2d7",
        "name": "Relevant bits Wifi",
        "rules": [
            {
                "t": "delete",
                "p": "payload.type",
                "pt": "msg"
            },
            {
                "t": "delete",
                "p": "payload.motionId",
                "pt": "msg"
            },
            {
                "t": "move",
                "p": "payload.object.messages[0][4].measurementValue",
                "pt": "msg",
                "to": "payload.battery",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.object.messages[0][1].measurementValue",
                "pt": "msg",
                "to": "payload.wifiAccessPoints",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.deviceInfo.devEui",
                "pt": "msg",
                "to": "payload.deviceId",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.object.messages[0][1].measurementId",
                "pt": "msg",
                "to": "payload.measureId",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.object.messages[0][1].timestamp",
                "pt": "msg",
                "to": "payload.timestamp",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 530,
        "y": 280,
        "wires": [
            [
                "e3f25e740ee5d751"
            ]
        ]
    },
    {
        "id": "c164f739d2660d91",
        "type": "change",
        "z": "590bedf68e85d2d7",
        "name": "Relevant bits Longitude",
        "rules": [
            {
                "t": "move",
                "p": "payload.object.messages[0][0].timestamp",
                "pt": "msg",
                "to": "payload.object.timestamp",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.deviceInfo.devEui",
                "pt": "msg",
                "to": "payload.object.deviceId",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.object.messages[0][1].measurementId",
                "pt": "msg",
                "to": "payload.object.measureId",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.object.messages[0][5].measurementValue",
                "pt": "msg",
                "to": "payload.object.battery",
                "tot": "msg"
            },
            {
                "t": "delete",
                "p": "payload.object.messages[0][0]",
                "pt": "msg"
            },
            {
                "t": "delete",
                "p": "payload.object.messages[0][3]",
                "pt": "msg"
            },
            {
                "t": "delete",
                "p": "payload.object.messages[0][4]",
                "pt": "msg"
            },
            {
                "t": "delete",
                "p": "payload.object.messages[0][5]",
                "pt": "msg"
            },
            {
                "t": "move",
                "p": "payload.object",
                "pt": "msg",
                "to": "payload",
                "tot": "msg"
            },
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "/device_sensor_data/1111/YOUR_DEVICE_EUI/1/+/4197",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 530,
        "y": 120,
        "wires": [
            [
                "e3f25e740ee5d751",
                "74e62939f01d36c9"
            ]
        ]
    },
    {
        "id": "b57017d2022f033c",
        "type": "change",
        "z": "590bedf68e85d2d7",
        "name": "Relevant bits Latitude",
        "rules": [
            {
                "t": "move",
                "p": "payload.object.messages[0][2].timestamp",
                "pt": "msg",
                "to": "payload.object.timestamp",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.deviceInfo.devEui",
                "pt": "msg",
                "to": "payload.object.deviceId",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.object.messages[0][2].measurementId",
                "pt": "msg",
                "to": "payload.object.measureId",
                "tot": "msg"
            },
            {
                "t": "move",
                "p": "payload.object.messages[0][5].measurementValue",
                "pt": "msg",
                "to": "payload.object.battery",
                "tot": "msg"
            },
            {
                "t": "delete",
                "p": "payload.object.messages[0][0]",
                "pt": "msg"
            },
            {
                "t": "delete",
                "p": "payload.object.messages[0][3]",
                "pt": "msg"
            },
            {
                "t": "delete",
                "p": "payload.object.messages[0][4]",
                "pt": "msg"
            },
            {
                "t": "delete",
                "p": "payload.object.messages[0][5]",
                "pt": "msg"
            },
            {
                "t": "move",
                "p": "payload.object",
                "pt": "msg",
                "to": "payload",
                "tot": "msg"
            },
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "/device_sensor_data/1111/YOUR_DEVICE_EUI/1/+/4198",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 520,
        "y": 160,
        "wires": [
            [
                "e3f25e740ee5d751",
                "74e62939f01d36c9"
            ]
        ]
    },
    {
        "id": "c71dcf46b84dbb9f",
        "type": "debug",
        "z": "590bedf68e85d2d7",
        "name": "debug push Traccar",
        "active": true,
        "tosidebar": true,
        "console": true,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 3140,
        "y": 400,
        "wires": []
    },
    {
        "id": "74e62939f01d36c9",
        "type": "debug",
        "z": "590bedf68e85d2d7",
        "name": "debug GPS",
        "active": true,
        "tosidebar": true,
        "console": true,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 960,
        "y": 60,
        "wires": []
    },
    {
        "id": "6fed0179732d5e47",
        "type": "tab",
        "label": "Traccar Template",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "1c75cd808b6845f6",
        "type": "http request",
        "z": "6fed0179732d5e47",
        "name": "Create postion in Traccar",
        "method": "GET",
        "ret": "txt",
        "paytoqs": "query",
        "url": "",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 630,
        "y": 140,
        "wires": [
            []
        ]
    },
    {
        "id": "de2e3edcc00a72b7",
        "type": "mqtt in",
        "z": "6fed0179732d5e47",
        "name": "",
        "topic": "/tracking/add",
        "qos": "2",
        "datatype": "auto-detect",
        "broker": "35fd3a139e459f2a",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 190,
        "y": 140,
        "wires": [
            [
                "f4572398ce40c8a1"
            ]
        ]
    },
    {
        "id": "f4572398ce40c8a1",
        "type": "function",
        "z": "6fed0179732d5e47",
        "name": "Set URL",
        "func": "msg.url=env.get(\"host\")+\":\"+env.get(\"portOsmand\")+\"/?id=\"+msg.payload.id+\"&lat=\"+msg.payload.lat+\"&lon=\"+msg.payload.lon+\"&timestamp=\"+msg.payload.timestamp\n\nif (msg.payload.speed != null)\n{\n    msg.url = msg.url + \"&speed=\" + msg.payload.speed\n}\n\nif (msg.payload.altitude != null)\n{\n    msg.url = msg.url + \"&altitude=\" + msg.payload.altitude\n}\n\nif (msg.payload.battery != null)\n{\n    msg.url = msg.url + \"&batt=\" + msg.payload.battery\n}\n\nreturn msg;",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 360,
        "y": 140,
        "wires": [
            [
                "1c75cd808b6845f6",
                "e1c2666f23995c21"
            ]
        ]
    },
    {
        "id": "e1c2666f23995c21",
        "type": "debug",
        "z": "6fed0179732d5e47",
        "name": "debug Update Traccar",
        "active": true,
        "tosidebar": true,
        "console": true,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 710,
        "y": 320,
        "wires": []
    },
    {
        "id": "270bf66dda334b51",
        "type": "mqtt-broker",
        "name": "SenseCAP",
        "broker": "192.168.4.8",
        "port": "1883",
        "clientid": "2CF7F1C064900884",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "autoUnsubscribe": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthRetain": "false",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closeRetain": "false",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willRetain": "false",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    },
    {
        "id": "35fd3a139e459f2a",
        "type": "mqtt-broker",
        "name": "HA - MQTT",
        "broker": "192.168.4.8",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "autoUnsubscribe": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    }
]

SenseCAP Gateway Flow

Niels Tibena day ago

Hi all,

I'm new to this forum but I'd like to share an open source connector that can be used to connect the Sensecap T1000 to traccar:
https://github.com/nielstiben/ttn-traccer-connector

It's a program that listens for callback messages from TTN and forwards them to Traccar using the OsmAnd protocol.