Milesight TS201: LoRaWAN-Temperaturfühler (DS18B20)
Milesight TS201 LoRaWAN-Temperaturfühler (DS18B20): eigener ChirpStack/ThingsBoard-Decoder, Beispiel, Schwellwertalarme, Kühlketten-Integration.
- LoRaWAN
- v1.0.3 Class A, OTAA / ABP
- Band / Port
- EU868 / Port 85
- Fühler
- Steckbarer DS18B20, 1,5 m Kabel, 50 mm Spitze
- Temperatur
- -40 bis +125 °C, ±0,5 °C (-10 bis +85 °C)
- Auflösung
- 0,1 °C
- Lokaler Speicher
- 4000 Datensätze, Retransmission
- Batterie
- 2700 mAh ER14505 Li-SOCl₂, bis zu ~9 Jahre
Was misst der TS201?
Temperatur
Steckbarer DS18B20-Fühler, -40 bis +125 °C, übertragen als INT16 Little-Endian mit Faktor /10.
Batteriestand
Prozentwert, wird periodisch zusammen mit den Messwerten gemeldet.
Schwellwertalarm
Eigener Alarmkanal löst sofort aus, sobald ein konfigurierter Grenzwert überschritten wird.
Sprungalarm
Der Mutation-Kanal meldet einen plötzlichen Temperatursprung samt Höhe der Änderung.
Fühlerfehler-Status
Kanal B3 67 meldet einen Lesefehler oder einen Wert außerhalb des Bereichs, wenn der DS18B20-Fühler defekt oder abgesteckt ist.
Verlaufsdaten
Bis zu 4000 zeitgestempelte Datensätze werden im Gerät gespeichert und nach einem Ausfall nachgesendet.
Integration
Sensor / Controller
Misst oder steuert vor Ort und sendet LoRaWAN-Uplinks.
LoRaWAN-Gateway
Empfängt die Funkpakete und reicht sie an den Server weiter.
ChirpStack
Network-Server: verwaltet Sessions und decodiert das Payload.
ThingsBoard / Grafana
Dashboards, Alarme, Regeln und Reports.
function decodeUplink(input) {
var bytes = input.bytes;
var data = {};
for (var i = 0; i < bytes.length; ) {
var channel = bytes[i++];
var type = bytes[i++];
if (channel === 0x01 && type === 0x75) { // battery (%)
data.battery = bytes[i]; i += 1;
} else if (channel === 0x03 && type === 0x67) { // temperature (°C)
data.temperature = readInt16LE(bytes, i) / 10; i += 2;
} else if (channel === 0x83 && type === 0x67) { // threshold alarm
data.temperature = readInt16LE(bytes, i) / 10;
data.temperature_alarm = readAlarm(bytes[i + 2]); i += 3;
} else if (channel === 0x93 && type === 0x67) { // abrupt change alarm
data.temperature = readInt16LE(bytes, i) / 10;
data.temperature_mutation = readInt16LE(bytes, i + 2) / 10;
data.temperature_alarm = readAlarm(bytes[i + 4]); i += 5;
} else if (channel === 0xb3 && type === 0x67) { // probe sensor status
data.temperature_sensor_status = readSensorStatus(bytes[i]); i += 1;
} else if (channel === 0xff) { // device info (skip)
break;
} else {
break;
}
}
return { data: data };
}
function readInt16LE(b, i) {
var v = (b[i + 1] << 8) | b[i];
return v > 0x7fff ? v - 0x10000 : v;
}
function readAlarm(v) {
var m = { 0: "threshold alarm release", 1: "threshold alarm", 2: "mutation alarm" };
return m[v] !== undefined ? m[v] : v;
}
function readSensorStatus(v) {
var m = { 0: "read error", 1: "out of range" };
return m[v] !== undefined ? m[v] : v;
}
Implementiert nach der veröffentlichten Milesight-Byte-Spezifikation (Communication Protocol / User Guide).
Kanalformat: 01 75 Batterie (%), 03 67 Temperatur (INT16 Little-Endian, /10). Alarm-Uplinks nutzen Kanal 83 67 (Schwellwert, +1-Byte-Alarmflag) und 93 67 (Sprung, +2-Byte-Sprungwert +1-Byte-Alarmflag); das Flag bedeutet 0 Schwellwert-Aufhebung, 1 Schwellwertalarm, 2 Sprungalarm. Kanal B3 67 meldet einen Fühlerfehler (0 Lesefehler, 1 außerhalb des Bereichs). Geräteinfo-Segmente auf Kanal FF (Version, Seriennummer) erscheinen im ersten Uplink nach dem Join; erweitere die Schleife, falls du sie speichern willst. Anhand der veröffentlichten Milesight-Byte-Spezifikation erstellt. Für ThingsBoard kommt dieselbe Kanallogik in einen Uplink-Converter.
Uplink (hex)
01756403671C01Decoded JSON
{ "battery": 100, "temperature": 28.4 }Einsatzszenarien
Kühlketten-Überwachung
EN12830-zertifizierte Temperaturaufzeichnung für Lebensmittel und Pharma mit Schwellwertalarmen.
MehrApothekenkühlschränke
Der Fühler sitzt im Kühlschrank, während der Sender außerhalb der Kältezone bleibt.
MehrServerraum & Archiv
Punktuelle Temperaturüberwachung kritischer Räume mit Sofortalarmen.
MehrKonfiguration & Stolpersteine
NFC-Einrichtung
Keys, Meldeintervall und Schwellwertalarme werden vor dem Rollout per NFC mit der Milesight-ToolBox-App gesetzt.
Steckbarer Fühler
Der DS18B20-Fühler lässt sich zur Selbstkalibrierung und zum Tausch abstecken. Notiere die Fühler-Seriennummer, damit ein Tausch im Dashboard nachvollziehbar bleibt.
Schwellwert- und Sprungalarme
Schwellwert (83 67) und Sprung (93 67) werden sofort außerhalb des Meldeintervalls gesendet. Behandle sie in Dashboard-Regeln als priorisierte Ereignisse.
Fühlerplatzierung
Halte das Sendergehäuse außerhalb der Kältezone und führe nur den 1,5 m langen Fühler hinein, damit Batterie und Funk in stabiler Temperatur bleiben.
So unterstützt dich merkaio beim TS201
Von der Beschaffung bis zum laufenden Betrieb, alles aus einer Hand und auf eigener europäischer Infrastruktur.
Pre-Staging & Provisioning
Wir konfigurieren den TS201, setzen Keys, Intervalle und Alarme und liefern einsatzbereit aus.
Eigener Decoder
Payload-Codec für ChirpStack v4 und ThingsBoard, nach der Milesight-Spezifikation implementiert.
Integration ins Dashboard
Die Daten landen in deinem ThingsBoard oder Grafana, inklusive Alarmen und Reports.
Betrieb & Monitoring
Wir betreiben LoRaWAN-Stack und Dashboards auf europäischer Infrastruktur, du nutzt nur die Daten.
Häufige Fragen
Sprechen wir über Ihre Infrastruktur. Digital und vor Ort.
Ob IoT-Plattformentwicklung, Hardwareauswahl, Managed Hosting für ChirpStack, ThingsBoard, Grafana oder NetBird VPN, oder Migration von einem Self-Hosted-Setup - wir finden die passende Lösung für Ihren Anwendungsfall. Buchen Sie ein kostenloses 30-Minuten-Gespräch, unverbindlich.
Ihr Ansprechpartner
Timo Wevelsiep
Gründer, merkaio
15 Minuten, unverbindlich, direkt mit Timo.
Decoder für ChirpStack v4. merkaio ist unabhängiger Integrator und nicht mit Milesight affiliiert.