Milesight WS156: LoRaWAN E-Ink Szenen-Panel
Milesight WS156 LoRaWAN E-Ink Szenen-Panel: 6 Tasten, eigener ChirpStack/ThingsBoard-Decoder, dekodiertes Beispiel und D2D-Szenensteuerung.
- LoRaWAN
- Class C, OTAA
- Tasten
- 6 programmierbare Szenen-Tasten
- Display
- E-Ink, programmierbare Beschriftung/Icons
- Steuermodi
- LoRaWAN-Uplink oder Milesight D2D je Taste
- Stromversorgung
- Batterie oder USB-C
- Montage
- Wandmontage, Innenbereich IP30
- Konfiguration
- NFC / Milesight ToolBox
Was misst der WS156?
Tastendruck
Meldet, welche der 6 Szenen-Tasten gedrückt wurde, auf Kanal FF Typ 34.
D2D-Befehl
Jede Taste enthält ein 16-Bit-D2D-Steuerwort zum Auslösen eines gekoppelten Milesight-Geräts.
Batteriestand
Batterie in Prozent auf Kanal 01 Typ 75 (UINT8).
Gerätestatus
Join-, Reset- und Versions-Frames auf Kanal FF für Inventar und Audit.
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 === 0xff && type === 0x34) { // button press + D2D command
var id = bytes[i];
data["button_" + id] = 1;
data["button_" + id + "_d2d"] = toHex16(readUInt16LE(bytes, i + 1));
i += 3;
} else if (channel === 0xff && type === 0x01) { // protocol/IPSO version
data.ipso_version = "v" + (bytes[i] >> 4) + "." + (bytes[i] & 0x0f); i += 1;
} else if (channel === 0xff && type === 0x16) { // serial number (8 bytes)
data.sn = toHexStr(bytes, i, 8); i += 8;
} else if (channel === 0xff && type === 0x0f) { // LoRaWAN class
data.lorawan_class = ["A", "B", "C", "CtoB"][bytes[i]] || "unknown"; i += 1;
} else if (channel === 0xff && (type === 0x09 || type === 0x0a)) { // hw/fw version
i += 2;
} else if (channel === 0xff && (type === 0xfe || type === 0x0b)) { // reset / device status
i += 1;
} else {
break;
}
}
return { data: data };
}
function readUInt16LE(b, i) {
return ((b[i + 1] << 8) | b[i]) & 0xffff;
}
function toHex16(v) {
return "0x" + ("0000" + v.toString(16)).slice(-4);
}
function toHexStr(b, i, len) {
var s = "";
for (var k = 0; k < len; k++) s += ("0" + (b[i + k] & 0xff).toString(16)).slice(-2);
return s;
}
Implementiert nach der veröffentlichten Milesight-Byte-Spezifikation (Communication Protocol / User Guide).
Kanalformat: 01 75 Batterie (UINT8 %), FF 34 Tastendruck (1 Byte Tasten-ID + UINT16 Little-Endian D2D-Steuerwort). Geräteinfo-Frames auf Kanal FF (Version 01/09/0A, Seriennummer 16, Klasse 0F, Reset FE, Status 0B) erscheinen nach einem Join oder Power-on und werden anhand ihrer Länge übersprungen. Da jede Taste auf LoRaWAN oder Milesight D2D gestellt werden kann, löst eine Taste im D2D-Modus das gekoppelte Gerät direkt aus und erzeugt möglicherweise keinen normalen Uplink. Für ThingsBoard kommt dieselbe Kanallogik in einen Uplink-Converter. Umgesetzt nach der veröffentlichten Milesight-Byte-Spezifikation.
Uplink (hex)
017564FF3401C800Decoded JSON
{ "battery": 100, "button_1": 1, "button_1_d2d": "0x00c8" }Einsatzszenarien
Konfiguration & Stolpersteine
Class-C-Strombudget
Als Class-C-Gerät hält das WS156 ein Empfangsfenster offen, daher ist die Batterielaufzeit kürzer als bei einem Class-A-Sensor. Für Dauerbetrieb USB-C-Strom verwenden.
Modus je Taste
Jede der 6 Tasten wird unabhängig auf LoRaWAN oder Milesight D2D gestellt. D2D-Tasten wirken lokal und lösen ggf. keinen Server-Uplink aus, das Monitoring entsprechend planen.
E-Ink-Beschriftung
Das E-Ink-Display wird per NFC mit der ToolBox programmiert. Labeltext und Szenen-Zuordnung im Dashboard synchron halten.
D2D-Kopplung
D2D nutzt ein 16-Bit-Steuerwort sowie eine gemeinsame Frequenz/Schlüssel. Jede Tasten-zu-Gerät-Kopplung dokumentieren, damit Szenen nachvollziehbar bleiben.
So unterstützt dich merkaio beim WS156
Von der Beschaffung bis zum laufenden Betrieb, alles aus einer Hand und auf eigener europäischer Infrastruktur.
Pre-Staging & Provisioning
Wir konfigurieren den WS156, 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.