From d7a7d25a1aab1bca8f2085eacbc8f1b60871c17f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Penas=20D=C3=ADaz?= Date: Thu, 15 Jan 2026 16:06:42 +0100 Subject: [PATCH 1/5] Create Changelog for restotracker-scd18 --- restotracker-scd18/CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 restotracker-scd18/CHANGELOG.md diff --git a/restotracker-scd18/CHANGELOG.md b/restotracker-scd18/CHANGELOG.md new file mode 100644 index 00000000..dda6ac59 --- /dev/null +++ b/restotracker-scd18/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## 1.0.0 - 2026-01-15 + +- First version of plugin \ No newline at end of file From 28abec1ae356c6871e6fc1f4b915c8dd077e97f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Penas=20D=C3=ADaz?= Date: Thu, 15 Jan 2026 16:06:43 +0100 Subject: [PATCH 2/5] Create LICENSE for restotracker-scd18 --- restotracker-scd18/LICENSE.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 restotracker-scd18/LICENSE.md diff --git a/restotracker-scd18/LICENSE.md b/restotracker-scd18/LICENSE.md new file mode 100644 index 00000000..bffeef34 --- /dev/null +++ b/restotracker-scd18/LICENSE.md @@ -0,0 +1,7 @@ +Copyright 2026 Thinger.io + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file From 33b5b7d529240ce39abec041e9d7f238b1ef2244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Penas=20D=C3=ADaz?= Date: Thu, 15 Jan 2026 16:06:45 +0100 Subject: [PATCH 3/5] Upload image restotracker-scd18 --- .../assets/restotracker-scd18.png | Bin 0 -> 64153 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 restotracker-scd18/assets/restotracker-scd18.png diff --git a/restotracker-scd18/assets/restotracker-scd18.png b/restotracker-scd18/assets/restotracker-scd18.png new file mode 100644 index 0000000000000000000000000000000000000000..1d47dad3488519dad398709d011841f56d7da4ef GIT binary patch literal 64153 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

)e0j8c6un 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 Date: Thu, 15 Jan 2026 16:07:06 +0100 Subject: [PATCH 4/5] Create README for restotracker-scd18 --- restotracker-scd18/README.md | 52 ++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 restotracker-scd18/README.md diff --git a/restotracker-scd18/README.md b/restotracker-scd18/README.md new file mode 100644 index 00000000..c0806d92 --- /dev/null +++ b/restotracker-scd18/README.md @@ -0,0 +1,52 @@ +Based on the device data provided, here is the README.md: + +# SCD18 - Tracker + +The SCD18 is an ultra-low power consumption LoRaWAN tracker designed for both indoor and outdoor asset tracking applications. It features multi-mode positioning capabilities including BLE, WiFi, and GPS technologies, enabling accurate location tracking across diverse environments while maintaining exceptional battery efficiency. + +## Thinger.io Integration + +## Requirements + +A LoRaWAN server is required to communicate the SCD18 Tracker with Thinger.io. Some options are: + +- [The Things Stack](https://www.thethingsindustries.com/stack/) +- [LORIOT](https://loriot.io/) +- [ChirpStack](https://www.chirpstack.io/) + +Alongside, the corresponding plugin for the selected LoRaWAN server needs to be installed in your Thinger.io instance. + +## Get Started + +### Installation + +Look for the plugin in the [Thinger.io Plugin Store](https://marketplace.thinger.io/) and install it in your Thinger.io instance. Once the plugin is installed a new Product will be created for this device. + +### Configuration + +The Product is already preconfigured. Check that the auto provision prefix matches the one selected in your LoRaWAN server plugin in Thinger.io, or change it to your preference. + +### Usage + +Start sending uplinks for autoprovisioning devices and buckets. + +This product also provides a predefined dashboard and downlinks. + +## Key Features + +- **Multi-mode Positioning**: GPS for outdoor tracking, BLE and WiFi for indoor positioning +- **Ultra-low Power Consumption**: Extended battery life for long-term deployments +- **LoRaWAN Connectivity**: Long-range wireless communication with low power requirements +- **Indoor & Outdoor Tracking**: Seamless transition between positioning modes + +## Typical Applications + +- Asset tracking and management +- Fleet and logistics monitoring +- Personnel tracking +- Supply chain visibility +- Equipment location monitoring + +## Additional Resources + +- [Thinger.io Documentation](https://docs.thinger.io) \ No newline at end of file From 8a2f3b1b4a3ea1ccd7330f5ec4abe960fc44435a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Penas=20D=C3=ADaz?= Date: Thu, 15 Jan 2026 16:09:39 +0100 Subject: [PATCH 5/5] Create plugin.json for restotracker-scd18 --- restotracker-scd18/plugin.json | 472 +++++++++++++++++++++++++++++++++ 1 file changed, 472 insertions(+) create mode 100644 restotracker-scd18/plugin.json diff --git a/restotracker-scd18/plugin.json b/restotracker-scd18/plugin.json new file mode 100644 index 00000000..d4e3ca07 --- /dev/null +++ b/restotracker-scd18/plugin.json @@ -0,0 +1,472 @@ +{ + "name": "restotracker_scd18", + "version": "1.0.0", + "description": "Ultra-low power consumption, indoor&outdoor (BLE&WIFI&GPS) LoRaWAN Tracker - SCD18 model", + "author": "Thinger.io", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/thinger-io/plugins.git", + "directory": "restotracker-scd18" + }, + "metadata": { + "name": "RestoTracker SCD18", + "description": "Ultra-low power consumption, indoor&outdoor (BLE&WIFI&GPS) LoRaWAN Tracker - SCD18 model", + "image": "assets/scd18.jpeg", + "category": "devices", + "vendor": "restotracker" + }, + "resources": { + "products": [ + { + "description": "Ultra-low power consumption, indoor&outdoor (BLE&WIFI&GPS) LoRaWAN Tracker - SCD18 model", + "enabled": true, + "name": "RestoTracker SCD18", + "product": "restotracker_scd18", + "profile": { + "api": { + "downlink": { + "enabled": true, + "handle_connectivity": false, + "request": { + "data": { + "path": "/downlink", + "payload": "{\n \"data\" : \"{{payload.data=\"\"}}\",\n \"port\" : {{payload.port=85}},\n \"priority\": {{payload.priority=3}},\n \"confirmed\" : {{payload.confirmed=false}},\n \"uplink\" : {{property.uplink}} \n}", + "payload_function": "", + "payload_type": "", + "plugin": "{{property.uplink.source}}", + "target": "plugin_endpoint" + } + } + }, + "uplink": { + "device_id_resolver": "getId", + "enabled": true, + "handle_connectivity": true, + "request": { + "data": { + "payload": "{{payload}}", + "payload_function": "", + "payload_type": "source_payload", + "resource_stream": "uplink", + "target": "resource_stream" + } + } + } + }, + "autoprovisions": { + "restotracker_scd18_autoprovision": { + "config": { + "mode": "pattern", + "pattern": "scd18-.*" + }, + "enabled": true + } + }, + "buckets": { + "restotracker_scd18_location_data": { + "backend": "mongodb", + "data": { + "payload": "{{payload}}", + "payload_function": "decodeThingerUplink", + "payload_type": "source_payload", + "resource": "uplink", + "source": "resource", + "update": "events" + }, + "enabled": true, + "retention": { + "period": 6, + "unit": "months" + }, + "tags": [] + } + }, + "code": { + "code": "function decodeThingerUplink(thingerData) {\n // 0. If data has already been decoded, we will return it\n if (thingerData.decodedPayload) return thingerData.decodedPayload;\n \n // 1. Extract and Validate Input\n // We need 'payload' (hex string) and 'fPort' (integer)\n const hexPayload = thingerData.payload || \"\";\n const port = thingerData.fPort || 1;\n\n // 2. Convert Hex String to Byte Array\n const bytes = [];\n for (let i = 0; i < hexPayload.length; i += 2) {\n bytes.push(parseInt(hexPayload.substr(i, 2), 16));\n }\n\n // 3. Dynamic Function Detection and Execution\n \n // CASE A: (The Things Stack v3)\n if (typeof decodeUplink === 'function') {\n try {\n const input = {\n bytes: bytes,\n fPort: port\n };\n var result = decodeUplink(input);\n \n if (result.data) return result.data;\n\n return result; \n } catch (e) {\n console.error(\"Error inside decodeUplink:\", e);\n throw e;\n }\n }\n\n // CASE B: Legacy TTN (v2)\n else if (typeof Decoder === 'function') {\n try {\n return Decoder(bytes, port);\n } catch (e) {\n console.error(\"Error inside Decoder:\", e);\n throw e;\n }\n }\n\n // CASE C: No decoder found\n else {\n throw new Error(\"No compatible TTN decoder function (decodeUplink or Decoder) found in scope.\");\n }\n}\n\n\n// TTN decoder\nvar packet_type = [\"heart\",\"fix_success\",\"fix_false\",\"sys_close_info\",\"shake_info\",\"idle_info\",\"demolish_alarm\",\"event\",\"battery_consume\",\"config\",\"store_data\",\"limit_gps_data\"];\nvar dev_mode = [\"standby mode\",\"period mode\",\"timing mode\",\"motion mode\"];\nvar dev_fix_type = [\"work_mode_fix\",\"down_request_fix\"];\nfunction substringBytes(bytes, start, len)\n{\n\tvar char = [];\n\tfor(var i = 0; i < len; i++)\n\t{\n\t\tchar.push(\"0x\"+ bytes[start+i].toString(16) < 0X10 ? (\"0\"+bytes[start+i].toString(16)) : bytes[start+i].toString(16) );\n\t}\n\treturn char.join(\"\");\n}\nfunction BytestoInt(bytes,start) {\n var value = ((bytes[start] << 24) | (bytes[start+1] << 16) | (bytes[start+2] << 8) | (bytes[start+3]));\n return value;\n}\nfunction Decoder(bytes, port)\n{\n\tvar dev_info = {};\n\tdev_info.pack_type = packet_type[port-1];\n\t//common frame head\n\tif(port<=10)\n\t{\n\t\tdev_info.work_mode = dev_mode[bytes[0]&0x03];\n\t\tdev_info.low_power_state = (bytes[0]>>2)&0x01;\n\t\tdev_info.demolish_state = (bytes[0]>>3)&0x01;\n\t\tdev_info.idle_state = (bytes[0]>>4)&0x01;\n\t\tdev_info.motion_state = (bytes[0]>>5)&0x01;\n\t\tif(port==2 || port ==3)\n\t\t{\n\t\t\tdev_info.fix_type = dev_fix_type[(bytes[0]>>6)&0x01];\n\t\t}\n\t\t\n\t\tif(bytes[1]>0x80)\n\t\t{\n\t\t\tdev_info.ic_temperature = bytes[1] - 0x100 + \"°C\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdev_info.ic_temperature = bytes[1] + \"°C\";\n\t\t}\n\n\t\tdev_info.lorawan_downlink_count = bytes[2]&0x0f;\n\t\tdev_info.battery_voltage = (22+((bytes[2]>>4)&0x0f))/10 + \"V\";\n\t}\n\tif(port == 1)\n\t{\n\t\tvar restart_reason = [\"power_restart\",\"ble_cmd_restart\",\"lorawan_cmd_restart\",\"switch_off_mode_restart\"];\n\t\tdev_info.last_restart_reason = restart_reason[bytes[3]];\n\n\t\t\n\t\tver_major = (bytes[4]>>6)&0x03;\n\t\tver_mijor = (bytes[4]>>4)&0x03;\n\t\tver_patch = bytes[4]&0x0f;\n\t\tdev_info.firmware_ver = \"V\" + ver_major+\".\"+ver_mijor+\".\"+ver_patch;\n\n\t\tdev_info.motion_count = BytestoInt(bytes,5);\n\t}\n\telse if(port == 2)\n\t{\n\t\tvar fix_tech = [\"wifi\",\"ble\",\"gps\"];\n\t\tvar parse_len = 3; // common head is 3 byte\n\t\tvar datas = [];\n\t\ttech = bytes[parse_len++];\n\t\tdev_info.fix_tech = fix_tech[tech];\n\n\t\tyear = bytes[parse_len]*256 + bytes[parse_len+1];\n\t\tparse_len += 2;\n\t\tmon = bytes[parse_len++];\n\t\tdays = bytes[parse_len++];\n\t\thour = bytes[parse_len++];\n\t\tminute = bytes[parse_len++];\n\t\tsec = bytes[parse_len++];\n\t\ttimezone = bytes[parse_len++];\n\n\t\tif(timezone>0x80)\n\t\t{\n\t\t\tdev_info.utc_time = year + \"-\" + mon + \"-\" + days + \" \" + hour + \":\" + minute + \":\" + sec + \" TZ:\" + (timezone-0x100);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdev_info.utc_time = year + \"-\" + mon + \"-\" + days + \" \" + hour + \":\" + minute + \":\" + sec + \" TZ:\" + timezone;\n\t\t}\n\t\tdatalen = bytes[parse_len++];\n\n\t\tif(tech==0 || tech ==1)\n\t\t{\n\t\t\tfor(var i=0 ; i<(datalen/7) ; i++)\n\t\t\t{\n\t\t\t var data = {};\n\t\t\t\tdata.mac = substringBytes(bytes, parse_len, 6);\n\t\t\t\tparse_len += 6;\n\t\t\t\tdata.rssi = bytes[parse_len++]-256 +\"dBm\";\n\t\t\t\tdatas.push(data);\n\t\t\t}\n\t\t\tdev_info.mac_data = datas;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlat =BytestoInt(bytes,parse_len);\n\t\t\tparse_len += 4;\n\t\t\tlon =BytestoInt(bytes,parse_len);\n\t\t\tparse_len += 4;\n\n\t\t\tif(lat>0x80000000)\n\t\t\t\tlat = lat-0x100000000;\n\t\t\tif(lon>0x80000000)\n\t\t\t\tlon = lon-0x100000000;\n\n\t\t\tdev_info.lat = lat/10000000;\n\t\t\tdev_info.lon = lon/10000000;\n\t\t\tdev_info.pdop = bytes[parse_len] /10;\n\t\t}\n\t}\n\telse if(port == 3)\n\t{\n\n\t\tvar fix_false_reason = [\"wifi_fix_time_timeout\",\"wifi_fix_tech_timeout\",\"wifi_module_nofind\",\"ble_fix_time_timeout\",\"ble_fix_tech_timeout\",\"ble_adv\",\"gps_no_budget\",\"gps_coarse_acc_timeout\",\"gps_fine_acc_timeout\",\"gps_fix_timeout\",\"gps_assistnow_timeout\",\"gps_cold_start_timeout\",\"down_request_fix_interrupt\",\"motion_start_fix_false_by_motion_end\",\"motion_end_fix_false_by_motion_start\"];\n\t\tvar parse_len = 3; \n\t\tvar datas = [];\n\t\treason = bytes[parse_len++];\n\t\tdev_info.fix_false_reason = fix_false_reason[reason];\n\t\tdatalen = bytes[parse_len++];\n\t\tif(reason<=5) //wifi and ble reason\n\t\t{\n\t\t if(datalen)\n\t\t {\n \t\t\tfor(var i=0 ; i<(datalen/7) ; i++)\n \t\t\t{\n \t\t\t var data = {};\n \t\t\t\tdata.mac = substringBytes(bytes, parse_len, 6);\n \t\t\t\tparse_len += 6;\n \t\t\t\tdata.rssi = bytes[parse_len++]-256 +\"dBm\";\n \t\t\t\tdatas.push(data);\n \t\t\t}\n \t\t\tdev_info.mac_data = datas;\n\t\t }\n\t\t}\n\t\telse if(reason<=11) //gps reason\n\t\t{\t\n\t\t\tpdop = bytes[parse_len++];\n\t\t\tif(pdop!=0xff)\n\t\t\t\tdev_info.pdop = pdop/10\n\t\t\telse\n\t\t\t\tdev_info.pdop = \"unknow\";\n\t\t\tdev_info.gps_satellite_cn = bytes[parse_len] +\"-\" + bytes[parse_len+1] +\"-\" + bytes[parse_len+2] +\"-\" + bytes[parse_len+3] ;\n\t\t}\n\t}\n\telse if(port == 4)\n\t{\n\t\tvar sys_close_reason = [\"ble_cmd_close\",\"lorawan_cmd_close\",\"reed_switch_close\"];\n\t\tdev_info.sys_close_reason = sys_close_reason[bytes[3]];\n\t}\n\telse if(port == 5)\n\t{\n\t\tdev_info.shake_num = bytes[3]*256+ bytes[4];\n\t}\n\telse if(port == 6)\n\t{\n\t\tdev_info.idle_time = bytes[3]*256+ bytes[4];\n\t}\n\telse if(port == 7)\n\t{\n\t\tvar parse_len = 3; // common head is 3 byte\n\t\tyear = bytes[parse_len]*256 + bytes[parse_len+1];\n\t\tparse_len += 2;\n\t\tmon = bytes[parse_len++];\n\t\tdays = bytes[parse_len++];\n\t\thour = bytes[parse_len++];\n\t\tminute = bytes[parse_len++];\n\t\tsec = bytes[parse_len++];\n\t\ttimezone = bytes[parse_len++];\n\n\t\tif(timezone>0x80)\n\t\t{\n\t\t\tdev_info.alarm_time = year + \"-\" + mon + \"-\" + days + \" \" + hour + \":\" + minute + \":\" + sec + \" TZ:\" + (timezone-0x100);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdev_info.alarm_time = year + \"-\" + mon + \"-\" + days + \" \" + hour + \":\" + minute + \":\" + sec + \" TZ:\" + timezone;\n\t\t}\n\t}\n\telse if(port == 8)\n\t{\n\t\tvar event = [\"motion start\",\"moving fix start\",\"motion end\",\"lorawan downlink trigger uplink\"];\n\t\tdev_info.event_info = event[bytes[3]];\n\t}\n\telse if(port == 9)\n\t{\n\t\tvar parse_len = 3;\n\t\tdev_info.gps_work_time = BytestoInt(bytes,parse_len);\n\t\tparse_len += 4;\n\t\tdev_info.wifi_work_time = BytestoInt(bytes,parse_len);\n\t\tparse_len += 4;\n\t\tdev_info.ble_scan_work_time = BytestoInt(bytes,parse_len);\n\t\tparse_len += 4;\n\t\tdev_info.ble_adv_work_time = BytestoInt(bytes,parse_len);\n\t\tparse_len += 4;\n\t\tdev_info.lorawan_work_time = BytestoInt(bytes,parse_len);\n\t\tparse_len += 4;\n\t}\n\telse if(port == 10)\n\t{\n\t\t//\n\t}\n\telse if(port == 11)\n\t{\n\t\t//\n\t}\n\telse if(port == 12)\n\t{\n\n\t\tdev_info.work_mode = dev_mode[bytes[0]&0x03];\n\t\tdev_info.low_power_state = bytes[0]&0x04;\n\t\tdev_info.demolish_state = bytes[0]&0x08;\n\t\tdev_info.idle_state = bytes[0]&0x10;\n\t\tdev_info.motion_state = bytes[0]&0x20;\n\t\tdev_info.fix_type = dev_fix_type[(bytes[0]>>6)&0x01];\n\n\t\tdev_info.lorawan_downlink_count = bytes[1]&0x0f;\n\t\tdev_info.battery_voltage = (22+((bytes[2]>>4)&0x0f))/10 + \"V\";\n\n\t\tvar parse_len = 2;\n\t\tlat =BytestoInt(bytes,parse_len);\n\t\tparse_len += 4;\n\t\tlon =BytestoInt(bytes,parse_len);\n\t\tparse_len += 4;\n\n\t\tif(lat>0x80000000)\n\t\t\tlat = lat-0x100000000;\n\t\tif(lon>0x80000000)\n\t\t\tlon = lon-0x100000000;\n\n\t\tdev_info.lat = lat/10000000 ;\n\t\tdev_info.lon = lon/10000000;\n\t\tdev_info.pdop = bytes[parse_len]/10;\n\t}\n\treturn dev_info;\n} \n", + "environment": "javascript", + "storage": "", + "version": "1.0" + }, + "properties": { + "restotracker_scd18_battery": { + "data": { + "payload": "{{payload}}", + "payload_function": "decodeThingerUplink", + "payload_type": "source_payload", + "resource": "uplink", + "source": "resource", + "update": "events" + }, + "default": { + "voltage": 0 + }, + "enabled": true + }, + "restotracker_scd18_last_location": { + "data": { + "payload": "{{payload}}", + "payload_function": "decodeThingerUplink", + "payload_type": "source_payload", + "resource": "uplink", + "source": "resource", + "update": "events" + }, + "default": { + "altitude": 0, + "latitude": 0, + "longitude": 0, + "mode": "unknown" + }, + "enabled": true + }, + "uplink": { + "data": { + "payload": "{{payload}}", + "payload_function": "", + "payload_type": "source_payload", + "resource": "uplink", + "source": "resource", + "update": "events" + }, + "default": { + "source": "value" + }, + "enabled": true + } + } + }, + "_resources": { + "properties": [ + { + "property": "dashboard", + "value": { + "tabs": [ + { + "name": "Tracker Overview", + "widgets": [ + { + "layout": { + "col": 0, + "row": 0, + "sizeX": 6, + "sizeY": 12 + }, + "panel": { + "color": "#1976D2", + "currentColor": "#1976D2", + "showOffline": { + "type": "last_sample" + }, + "title": "Device Location Map" + }, + "properties": { + "center": [ + 0, + 0 + ], + "mode": "geojson", + "zoom": 15 + }, + "sources": [ + { + "bucket": { + "backend": "mongodb", + "id": "restotracker_scd18_location_data", + "mapping": "location", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#2E93fA", + "name": "Current Position", + "source": "bucket", + "timespan": { + "mode": "latest" + } + } + ], + "type": "map" + }, + { + "layout": { + "col": 6, + "row": 0, + "sizeX": 3, + "sizeY": 6 + }, + "panel": { + "color": "#ffffff", + "currentColor": "#ffffff", + "showOffline": { + "type": "none" + }, + "title": "Battery Status" + }, + "properties": { + "color": "#4CAF50", + "max": 4.2, + "min": 2.8, + "unit": "V" + }, + "sources": [ + { + "bucket": { + "backend": "mongodb", + "id": "restotracker_scd18_location_data", + "mapping": "battery", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#4CAF50", + "name": "Battery", + "source": "bucket", + "timespan": { + "mode": "latest" + } + } + ], + "type": "donutchart" + }, + { + "layout": { + "col": 9, + "row": 0, + "sizeX": 3, + "sizeY": 6 + }, + "panel": { + "color": "#ffffff", + "currentColor": "#ffffff", + "showOffline": { + "type": "none" + }, + "title": "Positioning Mode" + }, + "properties": { + "source": "code", + "template": "

" + }, + "sources": [ + { + "device_property": { + "device": "{{device}}", + "property": "restotracker_scd18_last_location" + }, + "name": "Mode", + "source": "device_property", + "timespan": { + "mode": "latest" + } + } + ], + "type": "text" + }, + { + "layout": { + "col": 6, + "row": 6, + "sizeX": 6, + "sizeY": 12 + }, + "panel": { + "color": "#ffffff", + "currentColor": "#ffffff", + "showOffline": { + "type": "none" + }, + "title": "Location History" + }, + "properties": { + "source": "code", + "template": "
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
TimestampLatitudeLongitudeAltitudeModeBattery
{{ entry.ts | date:'medium' }}{{ entry.latitude || entry.lat || '—' }}{{ entry.longitude || entry.lon || '—' }}{{ entry.altitude || entry.alt || '—' }} m\r\n GPS\r\n BLE\r\n WIFI\r\n \r\n {{ entry.battery || entry.bat || '—' }} V
\r\n
" + }, + "sources": [ + { + "aggregation": {}, + "bucket": { + "backend": "mongodb", + "id": "restotracker_scd18_location_data", + "mapping": "ts", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#1abc9c", + "name": "timestamp", + "source": "bucket", + "timespan": { + "magnitude": "day", + "mode": "relative", + "period": "latest", + "value": 7 + } + }, + { + "aggregation": {}, + "bucket": { + "backend": "mongodb", + "id": "restotracker_scd18_location_data", + "mapping": "latitude", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#2E93fA", + "name": "latitude", + "source": "bucket", + "timespan": { + "magnitude": "day", + "mode": "relative", + "period": "latest", + "value": 7 + } + }, + { + "aggregation": {}, + "bucket": { + "backend": "mongodb", + "id": "restotracker_scd18_location_data", + "mapping": "longitude", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#66DA26", + "name": "longitude", + "source": "bucket", + "timespan": { + "magnitude": "day", + "mode": "relative", + "period": "latest", + "value": 7 + } + }, + { + "aggregation": {}, + "bucket": { + "backend": "mongodb", + "id": "restotracker_scd18_location_data", + "mapping": "altitude", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#ff8800", + "name": "altitude", + "source": "bucket", + "timespan": { + "magnitude": "day", + "mode": "relative", + "period": "latest", + "value": 7 + } + }, + { + "aggregation": {}, + "bucket": { + "backend": "mongodb", + "id": "restotracker_scd18_location_data", + "mapping": "mode", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#9b59b6", + "name": "mode", + "source": "bucket", + "timespan": { + "magnitude": "day", + "mode": "relative", + "period": "latest", + "value": 7 + } + }, + { + "aggregation": {}, + "bucket": { + "backend": "mongodb", + "id": "restotracker_scd18_location_data", + "mapping": "battery", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#4CAF50", + "name": "battery", + "source": "bucket", + "timespan": { + "magnitude": "day", + "mode": "relative", + "period": "latest", + "value": 7 + } + } + ], + "type": "html_time" + }, + { + "layout": { + "col": 0, + "row": 12, + "sizeX": 6, + "sizeY": 6 + }, + "panel": { + "color": "#ffffff", + "currentColor": "#ffffff", + "showOffline": { + "type": "none" + }, + "title": "Battery Voltage History" + }, + "properties": { + "axis": true, + "fill": false, + "legend": true, + "multiple_axes": false + }, + "sources": [ + { + "bucket": { + "backend": "mongodb", + "id": "restotracker_scd18_location_data", + "mapping": "battery", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#4CAF50", + "name": "Battery Voltage", + "source": "bucket", + "timespan": { + "magnitude": "day", + "mode": "relative", + "period": "latest", + "value": 7 + } + } + ], + "type": "chart" + } + ] + } + ] + } + } + ] + } + } + ] + } +} \ No newline at end of file