Milesight WS502: LoRaWAN-Wandschalter mit 2 Tasten
Milesight WS502 LoRaWAN-Wandschalter mit 2 Tasten: eigener ChirpStack-Decoder für Schaltzustand und Tastenevents, dekodiertes Beispiel, Downlink-Steuerung.
- LoRaWAN
- Class C, OTAA
- Tasten
- 2 Tasten (switch_1, switch_2)
- Verdrahtung
- Phase + Last, ersetzt Standard-Wandschalter
- Lokale Steuerung
- Physische Tasten plus LoRaWAN-Downlink
- D2D
- Direktsteuerung ohne Milesight-Gateway
- Stromversorgung
- Netzbetrieb (keine Batterie)
- Konfiguration
- NFC (Milesight ToolBox)
Was misst der WS502?
Schaltzustand
An/Aus-Status von switch_1 und switch_2, gemeldet bei Änderung und im Intervall.
Änderungs-Flag
Pro Taste markiert ein Flag, welcher Schalter in diesem Uplink umgeschaltet hat.
Funktionstasten-Event
Druckereignis der konfigurierbaren Funktionstaste.
Gerätestatus
Reset, Reboot und LoRaWAN-Klasse werden bei Join und Einschalten gemeldet.
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++];
// Switch state: 1 byte. bits 0/1 = state of switch_1/switch_2,
// bits 4/5 = "changed in this uplink" flag for switch_1/switch_2.
if (channel === 0xff && type === 0x29) {
var v = bytes[i]; i += 1;
data.switch_1 = (v & 0x01) ? "on" : "off";
data.switch_2 = (v & 0x02) ? "on" : "off";
data.switch_1_change = ((v >> 4) & 0x01) ? "yes" : "no";
data.switch_2_change = ((v >> 5) & 0x01) ? "yes" : "no";
// Function key event: 1 byte (0 = no, 1 = yes)
} else if (channel === 0xff && type === 0x2b) {
data.function_key_event = bytes[i] ? "yes" : "no"; i += 1;
// Device status: 1 byte (0 = off, 1 = on)
} else if (channel === 0xff && type === 0x0b) {
data.device_status = bytes[i] ? "on" : "off"; i += 1;
// LoRaWAN class
} else if (channel === 0xff && type === 0x0f) {
data.lorawan_class = readClass(bytes[i]); i += 1;
// Reset / reboot event
} else if (channel === 0xff && type === 0xfe) {
data.reset_event = "reset"; i += 1;
// Serial number (6 bytes)
} else if (channel === 0xff && type === 0x08) {
data.sn = readHex(bytes, i, 6); i += 6;
// IPSO version (1 byte, skip)
} else if (channel === 0xff && type === 0x01) {
i += 1;
// Hardware / firmware version (2 bytes each, skip)
} else if (channel === 0xff && (type === 0x09 || type === 0x0a)) {
i += 2;
// TSL version (2 bytes, skip)
} else if (channel === 0xff && type === 0xff) {
i += 2;
} else {
break;
}
}
return { data: data };
}
function readClass(b) {
var map = { 0: "Class A", 1: "Class B", 2: "Class C", 3: "Class CtoB" };
return map[b] || "unknown";
}
function readHex(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 implementiert nach der veröffentlichten Milesight-Byte-Spezifikation: ff 29 Schaltzustand (Bit0/1 = Zustand switch_1/switch_2, Bit4/5 = Änderungs-Flag), ff 2b Funktionstasten-Event, ff 0f LoRaWAN-Klasse, ff fe Reset. Als Class-C-Gerät nimmt der WS502 Downlinks nahezu in Echtzeit an, um jede Taste zu schalten; Versions- und SN-Segmente beim Join werden übersprungen. Für ThingsBoard wandert dieselbe Logik in einen Uplink-Converter.
Uplink (hex)
FF2913Decoded JSON
{ "switch_1": "on", "switch_2": "on", "switch_1_change": "yes", "switch_2_change": "no" }Einsatzszenarien
Beleuchtung im Smart Office
Bestehende Wandschalter ersetzen und Licht ohne Neuverkabelung über LoRaWAN steuern.
MehrSzenensteuerung im Handel
Displays, Beschilderung und Zonenbeleuchtung aus dem Dashboard oder über lokale Tasten schalten.
MehrGebäudeautomation
Class-C-Downlinks und D2D steuern Lüfter, Heizungen und Maschinen bei Bedarf.
MehrKonfiguration & Stolpersteine
Class-C-Versorgung
Der WS502 hält sein Empfangsfenster für nahezu Echtzeitsteuerung offen und wird daher netzbetrieben. Planen Sie die Verdrahtung entsprechend, es gibt keinen Batterie-Fallback.
Verdrahtungsvarianten
Es gibt Zwei- und Dreidraht-Varianten. Passen Sie die Variante an Ihren Stromkreis an; ein fehlender Neutralleiter ändert das Verhalten bei der unterstützten Last.
Umgang mit dem Änderungs-Flag
Jeder Uplink meldet beide Tasten plus ein Änderungs-Flag pro Taste. Dashboard-Regeln sollten auf das Flag reagieren, nicht nur auf den Zustand, um doppelte Trigger bei Intervall-Uplinks zu vermeiden.
Kindersicherung & LED
Kindersicherungszeit und LED-Modus werden per Downlink (0x25, 0x2f) gesetzt. Dokumentieren Sie diese, damit das Verhalten vor Ort den Dashboard-Erwartungen entspricht.
D2D-Steuerung
Wenn ein D2D-Befehl den Schalter umschaltet, sendet er unter Umständen keinen normalen Uplink. Berücksichtigen Sie das im Monitoring, damit der Zustand konsistent bleibt.
So unterstützt dich merkaio beim WS502
Von der Beschaffung bis zum laufenden Betrieb, alles aus einer Hand und auf eigener europäischer Infrastruktur.
Pre-Staging & Provisioning
Wir konfigurieren den WS502, 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.