From 9ca8bd926f2725dab3fafecb298001b95cd4d8b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Penas=20D=C3=ADaz?= Date: Thu, 16 Apr 2026 10:42:15 +0200 Subject: [PATCH 1/5] Create Changelog for milesight-iot-em300-mld --- milesight-iot-em300-mld/CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 milesight-iot-em300-mld/CHANGELOG.md diff --git a/milesight-iot-em300-mld/CHANGELOG.md b/milesight-iot-em300-mld/CHANGELOG.md new file mode 100644 index 000000000..57140b7b5 --- /dev/null +++ b/milesight-iot-em300-mld/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## 1.0.0 - 2026-04-16 + +- First version of plugin \ No newline at end of file From 2f49a4b34e016c66c608e86f78c21603188ab9ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Penas=20D=C3=ADaz?= Date: Thu, 16 Apr 2026 10:42:15 +0200 Subject: [PATCH 2/5] Create LICENSE for milesight-iot-em300-mld --- milesight-iot-em300-mld/LICENSE.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 milesight-iot-em300-mld/LICENSE.md diff --git a/milesight-iot-em300-mld/LICENSE.md b/milesight-iot-em300-mld/LICENSE.md new file mode 100644 index 000000000..bffeef341 --- /dev/null +++ b/milesight-iot-em300-mld/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 1f95d9083954cd76f453ea07e7e3629ded75e2a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Penas=20D=C3=ADaz?= Date: Thu, 16 Apr 2026 10:42:17 +0200 Subject: [PATCH 3/5] Upload image milesight-iot-em300-mld --- milesight-iot-em300-mld/assets/em300-mld.png | Bin 0 -> 55627 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 milesight-iot-em300-mld/assets/em300-mld.png diff --git a/milesight-iot-em300-mld/assets/em300-mld.png b/milesight-iot-em300-mld/assets/em300-mld.png new file mode 100644 index 0000000000000000000000000000000000000000..e1651e519e923d75ed6cd570165f6da4070ec984 GIT binary patch literal 55627 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 literal 0 HcmV?d00001 From e051d2fcb77da539b199102abe2039ff5097f613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Penas=20D=C3=ADaz?= Date: Thu, 16 Apr 2026 10:43:46 +0200 Subject: [PATCH 4/5] Create README for milesight-iot-em300-mld --- milesight-iot-em300-mld/README.md | 76 +++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 milesight-iot-em300-mld/README.md diff --git a/milesight-iot-em300-mld/README.md b/milesight-iot-em300-mld/README.md new file mode 100644 index 000000000..69524f0ba --- /dev/null +++ b/milesight-iot-em300-mld/README.md @@ -0,0 +1,76 @@ +# EM300-MLD - Leak Sensor + +The EM300-MLD is an innovative LoRaWAN leak sensor that incorporates a flexible printed membrane for reliable water leakage detection. Featuring a 400 × 400 mm detection membrane, this sensor provides comprehensive monitoring of water leaks, spillage, or floor wetness in both residential and commercial applications. The device detects conductive liquids including water, weak acids, and weak bases, triggering an alarm when soaking liquid length exceeds 1.5 cm. + +## Features + +- **Wide Detection Area**: 400 × 400 mm printed leakage-detecting film (customizable size) +- **LoRaWAN Connectivity**: Standard LoRaWAN protocol with support for multiple frequency bands (CN470/IN865/RU864/EU868/US915/AU915/KR920/AS923-1&2&3&4) +- **Long Battery Life**: Up to 10 years battery life with 4000 mAh ER18505 Li-SOCL2 battery (8000 mAh version optional) +- **Data Storage**: Stores up to 1,000 historical records with retransmission support to prevent data loss +- **Milesight D2D Protocol**: Enables ultra-low latency and direct control without gateways +- **NFC Configuration**: Easy setup via mobile app +- **IP67 Protection**: Suitable for harsh environments with operating temperature range of -30°C to 70°C +- **Class A Device**: OTAA/ABP activation modes + +## Thinger.io Integration + +The EM300-MLD integrates seamlessly with Thinger.io through LoRaWAN network servers, enabling real-time monitoring of water leakage events, battery status, and sensor configuration management. + +## Requirements + +A LoRaWAN server is required to communicate the EM300-MLD into 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 desire. + +### Usage + +Start sending uplinks for autoprovisioning devices and buckets. This product also provides a predefined dashboard and downlinks. + +## Technical Specifications + +- **Wireless Technology**: LoRaWAN, Milesight D2D +- **Antenna**: Internal +- **Tx Power**: 16dBm (868 MHz) / 20dBm (915 MHz) / 19dBm (470 MHz) +- **Sensitivity**: -137dBm @300bps +- **Liquid Detection**: Conductive liquids (water, weak acid, weak base, etc.) +- **Detection Film**: 400 × 400 × 0.25 mm printed membrane +- **Trigger Condition**: Soaking liquid length > 1.5 cm +- **Power Supply**: 1 × 4000 mAh ER18505 Li-SOCL2 Battery (8000 mAh optional) +- **Battery Life**: Around 10 years (SF7, EU868 & US915) +- **Operating Temperature**: -30°C to 70°C +- **Humidity**: 0% to 95% (non-condensing) +- **Ingress Protection**: IP67 +- **Dimensions**: 105.6 × 85.3 × 27 mm +- **Weight**: 142g (with 1 battery) +- **Cable Length**: 1000 mm (customizable) + +## Use Cases + +- Water leak detection in server rooms and data centers +- Floor wetness monitoring in residential and commercial buildings +- Spillage detection in industrial facilities +- Basement and storage area water monitoring +- HVAC system leak detection + +## Additional Resources + +Milesight resources can be found at: + +- [Product Page](https://www.milesight.com/iot/product/lorawan-sensor/em300-mld) +- [Datasheet](https://resource.milesight.com/milesight/iot/document/em300-mld-datasheet-en.pdf) +- [Thinger docs](https://docs.thinger.io) \ No newline at end of file From ac9d93faa4832c01e9d02ea6915e2700719fe7dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Penas=20D=C3=ADaz?= Date: Thu, 16 Apr 2026 10:45:34 +0200 Subject: [PATCH 5/5] Create plugin.json for milesight-iot-em300-mld --- milesight-iot-em300-mld/plugin.json | 425 ++++++++++++++++++++++++++++ 1 file changed, 425 insertions(+) create mode 100644 milesight-iot-em300-mld/plugin.json diff --git a/milesight-iot-em300-mld/plugin.json b/milesight-iot-em300-mld/plugin.json new file mode 100644 index 000000000..9b6a85eb0 --- /dev/null +++ b/milesight-iot-em300-mld/plugin.json @@ -0,0 +1,425 @@ +{ + "name": "milesight_iot_em300_mld", + "version": "1.0.0", + "description": "The EM300-MLD is an innovative LoRaWAN leak sensor that incorporates a flexible printed membrane", + "author": "Thinger.io", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/thinger-io/plugins.git", + "directory": "milesight-iot-em300-mld" + }, + "metadata": { + "name": "Milesight-Iot EM300-MLD", + "description": "The EM300-MLD is an innovative LoRaWAN leak sensor that incorporates a flexible printed membrane", + "image": "assets/em300-mld.png", + "category": "devices", + "vendor": "milesight-iot" + }, + "resources": { + "products": [ + { + "description": "The EM300-MLD is an innovative LoRaWAN leak sensor that incorporates a flexible printed membrane", + "enabled": true, + "name": "Milesight-Iot EM300-MLD", + "product": "milesight_iot_em300_mld", + "profile": { + "api": { + "downlink": { + "enabled": true, + "handle_connectivity": false, + "request": { + "data": { + "path": "/downlink", + "payload": "{\r\n \"data\" : \"{{payload.data=\"\"}}\",\r\n \"port\" : {{payload.port=2}},\r\n \"priority\": {{payload.priority=3}},\r\n \"confirmed\" : {{payload.confirmed=false}},\r\n \"uplink\" : {{property.uplink}} \r\n}", + "payload_function": "", + "payload_type": "", + "plugin": "{{property.uplink.source}}", + "target": "plugin_endpoint" + } + } + }, + "uplink": { + "enabled": true, + "handle_connectivity": true, + "request": { + "data": { + "payload": "{{payload}}", + "payload_function": "", + "payload_type": "source_payload", + "resource_stream": "uplink", + "target": "resource_stream" + } + } + } + }, + "autoprovisions": { + "device_autoprovisioning": { + "config": { + "mode": "pattern", + "pattern": "em300_mld_.*" + }, + "enabled": true + } + }, + "buckets": { + "milesight_em300_mld_data": { + "backend": "mongodb", + "data": { + "payload": "{{payload}}", + "payload_function": "", + "payload_type": "source_payload", + "resource_stream": "uplink_decoded", + "target": "resource_stream" + }, + "enabled": true, + "retention": { + "period": 3, + "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\nfunction decodeUplink(input) {\n var res = Decoder(input.bytes, input.fPort);\n if (res.error) {\n return {\n errors: [res.error],\n };\n }\n return {\n data: res,\n };\n}\n\n/**\n * Payload Decoder for The Things Network\n *\n * Copyright 2023 Milesight IoT\n *\n * @product EM300-MLD\n */\nfunction Decoder(bytes, port) {\n return milesight(bytes);\n}\n\nfunction milesight(bytes) {\n var decoded = {};\n\n for (var i = 0; i < bytes.length;) {\n var channel_id = bytes[i++];\n var channel_type = bytes[i++];\n // BATTERY\n if (channel_id === 0x01 && channel_type === 0x75) {\n decoded.battery = bytes[i];\n i += 1;\n }\n // LEAKAGE STATUS\n else if (channel_id === 0x05 && channel_type === 0x00) {\n decoded.leakage_status = bytes[i] === 0 ? \"normal\" : \"leak\";\n i += 1;\n }\n // TEMPERATURE, HUMIDITY & LEAKAGE STATUS HISTROY\n else if (channel_id === 0x20 && channel_type === 0xce) {\n var point = {};\n point.timestamp = readUInt32LE(bytes.slice(i, i + 4));\n point.leakage_status = bytes[i + 7] === 0 ? \"normal\" : \"leak\";\n\n decoded.history = decoded.history || [];\n decoded.history.push(point);\n i += 8;\n } else {\n break;\n }\n }\n\n return decoded;\n}\n\n/* ******************************************\n * bytes to number\n ********************************************/\nfunction readUInt16LE(bytes) {\n var value = (bytes[1] << 8) + bytes[0];\n return value & 0xffff;\n}\n\nfunction readInt16LE(bytes) {\n var ref = readUInt16LE(bytes);\n return ref > 0x7fff ? ref - 0x10000 : ref;\n}\n\nfunction readUInt32LE(bytes) {\n var value = (bytes[3] << 24) + (bytes[2] << 16) + (bytes[1] << 8) + bytes[0];\n return (value & 0xffffffff) >>> 0;\n}\n", + "environment": "javascript", + "storage": "", + "version": "1.0" + }, + "flows": { + "milesight_em300_mld_decoder": { + "data": { + "payload": "{{payload}}", + "payload_function": "decodeThingerUplink", + "payload_type": "source_payload", + "resource": "uplink", + "source": "resource", + "update": "events" + }, + "enabled": true, + "sink": { + "payload": "{{payload}}", + "payload_function": "", + "payload_type": "source_payload", + "resource_stream": "uplink_decoded", + "target": "resource_stream" + }, + "split_data": false + } + }, + "properties": { + "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": "EM300-MLD Overview", + "widgets": [ + { + "layout": { + "col": 0, + "row": 0, + "sizeX": 2, + "sizeY": 5 + }, + "panel": { + "color": "#ffffff", + "currentColor": "#ffffff", + "showOffline": { + "type": "none" + }, + "title": "Leakage Status" + }, + "properties": { + "decimalPlaces": 2, + "enableExtraTextColor": false, + "enableIconColor": false, + "enableIconSize": false, + "extraText": "", + "extraTextColor": "#1E313E", + "extraTextColorConditions": [], + "extraTextConditions": [], + "extraTextPosition": "above-value", + "extraTextSize": "20px", + "extraTextWeight": "font-light", + "icon": "", + "iconColor": "#1E313E", + "iconColorConditions": [], + "iconConditions": [], + "iconGap": "8px", + "iconPosition": "before-value", + "iconSize": "75px", + "iconVerticalOffset": "0px", + "link": "", + "textAlign": "center", + "textColor": "#1E313E", + "textColorConditions": [ + { + "color": "#e74c3c", + "id": "leak", + "max": "", + "min": "", + "text": "leak" + }, + { + "color": "#2ecc71", + "id": "normal", + "max": "", + "min": "", + "text": "normal" + } + ], + "textSize": "65px", + "textWeight": "font-light", + "unit": "", + "unitSize": "20px" + }, + "sources": [ + { + "bucket": { + "backend": "mongodb", + "id": "milesight_em300_mld_data", + "mapping": "leakage_status", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#1abc9c", + "name": "Leakage Status", + "source": "bucket", + "timespan": { + "mode": "latest" + } + } + ], + "type": "text" + }, + { + "layout": { + "col": 0, + "row": 5, + "sizeX": 2, + "sizeY": 5 + }, + "panel": { + "color": "#ffffff", + "currentColor": "#ffffff", + "showOffline": { + "type": "none" + }, + "title": "Battery" + }, + "properties": { + "color": "#2ebd59", + "gradient": false, + "max": 100, + "min": 0, + "unit": "%" + }, + "sources": [ + { + "bucket": { + "backend": "mongodb", + "id": "milesight_em300_mld_data", + "mapping": "battery", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#2ebd59", + "name": "Battery", + "source": "bucket", + "timespan": { + "mode": "latest" + } + } + ], + "type": "gauge" + }, + { + "layout": { + "col": 2, + "row": 0, + "sizeX": 4, + "sizeY": 10 + }, + "panel": { + "color": "#ffffff", + "currentColor": "#ffffff", + "showOffline": { + "type": "none" + }, + "title": "Leakage Detection (7 days)" + }, + "properties": { + "alignTimeSeries": false, + "dataAppend": false, + "options": "var options = {\n chart: {\n type: 'line',\n stacked: false\n },\n dataLabels: {\n enabled: false\n },\n stroke: {\n curve: 'smooth',\n width: 2\n },\n xaxis: {\n type: 'datetime',\n labels: {\n datetimeUTC: false\n },\n tooltip: {\n enabled: false\n }\n },\n yaxis: [\n {\n seriesName: 'Leakage Events',\n title: {\n text: 'Status'\n },\n labels: {\n formatter: function(val) {\n if (val === 1) return 'Leak';\n if (val === 0) return 'Normal';\n return val;\n }\n }\n }\n ],\n tooltip: {\n x: {\n format: 'dd/MM/yyyy HH:mm:ss'\n }\n },\n colors: ['#e74c3c']\n};\n", + "realTimeUpdate": true + }, + "sources": [ + { + "bucket": { + "backend": "mongodb", + "id": "milesight_em300_mld_data", + "mapping": "leakage_status", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#e74c3c", + "name": "Leakage Status", + "processing": { + "output": "function(value) { return value === 'leak' ? 1 : 0; }" + }, + "source": "bucket", + "timespan": { + "magnitude": "day", + "mode": "relative", + "period": "latest", + "value": 7 + } + } + ], + "type": "apex_charts" + }, + { + "layout": { + "col": 2, + "row": 10, + "sizeX": 4, + "sizeY": 5 + }, + "panel": { + "color": "#ffffff", + "currentColor": "#ffffff", + "showOffline": { + "type": "none" + }, + "title": "Battery Level (7 days)" + }, + "properties": { + "alignTimeSeries": false, + "dataAppend": false, + "options": "var options = {\n chart: {\n type: 'area'\n },\n dataLabels: {\n enabled: false\n },\n stroke: {\n curve: 'smooth'\n },\n xaxis: {\n type: 'datetime',\n labels: {\n datetimeUTC: false\n },\n tooltip: {\n enabled: false\n }\n },\n yaxis: {\n labels: {\n formatter: function (val) {\n if (val !== null && typeof val !== 'undefined')\n return val.toFixed(0) + '%';\n }\n }\n },\n tooltip: {\n x: {\n format: 'dd/MM/yyyy HH:mm:ss'\n }\n }\n};\n", + "realTimeUpdate": true + }, + "sources": [ + { + "bucket": { + "backend": "mongodb", + "id": "milesight_em300_mld_data", + "mapping": "battery", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#2ebd59", + "name": "Battery", + "source": "bucket", + "timespan": { + "magnitude": "day", + "mode": "relative", + "period": "latest", + "value": 7 + } + } + ], + "type": "apex_charts" + }, + { + "layout": { + "col": 0, + "row": 10, + "sizeX": 2, + "sizeY": 5 + }, + "panel": { + "color": "#ffffff", + "currentColor": "#ffffff", + "showOffline": { + "type": "none" + }, + "title": "Recent Events" + }, + "properties": { + "source": "code", + "template": "
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
DateStatus
{{ entry.ts | date:'short' }}\n LEAK\n Normal\n
\n
" + }, + "sources": [ + { + "bucket": { + "backend": "mongodb", + "id": "milesight_em300_mld_data", + "mapping": "ts", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#1abc9c", + "name": "ts", + "source": "bucket", + "timespan": { + "magnitude": "day", + "mode": "relative", + "period": "latest", + "value": 7 + } + }, + { + "bucket": { + "backend": "mongodb", + "id": "milesight_em300_mld_data", + "mapping": "leakage_status", + "tags": { + "device": [], + "group": [] + } + }, + "color": "#e74c3c", + "name": "leakage_status", + "source": "bucket", + "timespan": { + "magnitude": "day", + "mode": "relative", + "period": "latest", + "value": 7 + } + } + ], + "type": "html_time" + } + ] + } + ] + } + } + ] + } + } + ] + } +} \ No newline at end of file