Milesight WT102: LoRaWAN-Heizkörperthermostat (Smart-TRV)
Milesight WT102 LoRaWAN-Heizkörperthermostat: eigenes ChirpStack-Decoder-Framework, dekodiertes Beispiel und Solltemperatur-Downlinks fürs Smart Office.
- LoRaWAN
- Class A, OTAA
- Band / Port
- EU868 / Port 85
- Montage
- M30 x 1,5 Ventilgewinde (Adapter inkl.)
- Temperaturbereich
- -20 bis +60 °C (NTC)
- Solltemperatur
- 5 bis 35 °C, in 0,5-°C-Schritten
- Stromversorgung
- 2x AA-Batterien
- Konfiguration
- NFC (Milesight ToolBox)
Was misst der WT102?
Umgebungstemperatur
Interner NTC, -20 bis +60 °C, mit jedem Heizperioden-Uplink gemeldet.
Aktuelle Ventilöffnung
Tatsächliche Ventilstellung 0 bis 100 % aus dem Motor.
Solltemperatur
Der Sollwert, auf den das Gerät regelt, 5 bis 35 °C.
Soll-Ventilöffnung
Sollwert für den Ventilöffnungs-Regelmodus, 0 bis 100 %.
Batteriestand
In periodischen Uplinks gemeldet, mit Niedrig-Batterie-Alarm.
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++];
if (channel === 0x00) { // battery (%)
data.battery = bytes[i]; i += 1;
} else if (channel === 0x01) { // ambient temperature (INT16 LE, /100)
data.temperature = readInt16LE(bytes, i) / 100; i += 2;
} else if (channel === 0x02) { // motor total stroke
data.motor_total_stroke = readUInt16LE(bytes, i); i += 2;
} else if (channel === 0x03) { // motor position
data.motor_position = readUInt16LE(bytes, i); i += 2;
} else if (channel === 0x04) { // current valve opening (%)
data.valve_opening = bytes[i]; i += 1;
} else if (channel === 0x06) { // target temperature (INT16 LE, /100)
data.target_temperature = readInt16LE(bytes, i) / 100; i += 2;
} else if (channel === 0x07) { // target valve opening (%)
data.target_valve_opening = bytes[i]; i += 1;
} else if (channel === 0x08) { // low-battery alarm: battery (%)
data.low_battery_alarm = true; data.battery = bytes[i]; i += 1;
} else {
// calibration (0x05), event/alarm and periodic-report frames
// (0x09..0x0E, 0x60.., 0xFF..) are configuration-dependent:
// decode per deployment, see note
break;
}
}
return { data: data };
}
function readUInt16LE(b, i) {
return (b[i + 1] << 8) | b[i];
}
function readInt16LE(b, i) {
var v = readUInt16LE(b, i);
return v > 0x7fff ? v - 0x10000 : v;
}
Implementiert nach der veröffentlichten Milesight-Byte-Spezifikation (Communication Protocol / User Guide).
Aus der veröffentlichten Milesight-Byte-Spezifikation umgesetzt. Anders als die IPSO-Sensoren nutzt das WT102 ein Befehls-ID-Payload: jeder Frame beginnt mit einem Befehlsbyte, ohne separates Typbyte. Die Basis-Datenkanäle sind 0x00 Batterie (%), 0x01 Umgebungstemperatur (INT16 LE, /100), 0x04 aktuelle Ventilöffnung (%), 0x06 Solltemperatur (INT16 LE, /100), 0x07 Soll-Ventilöffnung (%). Der periodische Report-Frame (0x0E) und die Ereignis-/Alarm-Frames haben eine variable Struktur, die vom konfigurierten Regelmodus abhängt (automatische Temperatur, Ventilöffnung oder integriert), daher ist dieser Teil ein Framework, das wir je Deployment ausbauen. Als Class-A-Gerät nimmt das WT102 in seinen Empfangsfenstern Downlinks an, um Solltemperatur oder Ventilöffnung zu setzen.
Uplink (hex)
0064016608040606f6090707Decoded JSON
{ "battery": 100, "temperature": 21.5, "valve_opening": 6, "target_temperature": 25.5, "target_valve_opening": 7 }Konfiguration & Stolpersteine
NFC-Einrichtung
Keys, Regelmodus, Heizperiode und Zeitpläne werden vor der Montage am Ventil über NFC mit der Milesight ToolBox gesetzt.
Motorkalibrierung
Nach der Montage kalibriert das Gerät den Motorhub gegen das Ventil. Auf das Kalibrierungs-Ergebnis achten; eine fehlgeschlagene Kalibrierung bedeutet keine Temperaturregelung.
Heiz- vs. Nicht-Heizperiode
Reporting-Intervall und Ventilverhalten unterscheiden sich zwischen konfigurierter Heizsaison und Nebensaison. Dashboard-Erwartungen für beide einplanen.
Regelmodus bestimmt das Payload
Automatische Temperatur, Ventilöffnung und integrierte Regelung erzeugen unterschiedliche Report-Layouts, daher den Decoder gegen den eingesetzten Modus finalisieren.
So unterstützt dich merkaio beim WT102
Von der Beschaffung bis zum laufenden Betrieb, alles aus einer Hand und auf eigener europäischer Infrastruktur.
Pre-Staging & Provisioning
Wir konfigurieren den WT102, 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.