Milesight WTS: LoRaWAN Solar Weather Station
Milesight WTS LoRaWAN weather station: own ChirpStack/ThingsBoard decoder, decoded example, wind, rain, pressure and temperature for smart city.
- LoRaWAN
- Class A, OTAA
- Band / port
- EU868 / port 85
- Power
- Solar with rechargeable battery backup
- Ingress protection
- IP65
- Temperature
- -40 to +80 °C
- Wind speed
- 0 to 60 m/s
- Configuration
- NFC (Milesight ToolBox)
What the WTS measures
Temperature & humidity
Ambient air temperature and relative humidity.
Wind speed & direction
Wind speed in m/s and direction in degrees.
Barometric pressure
Atmospheric pressure in hPa for forecasting and trend alerts.
Rainfall
Cumulative rainfall in mm plus a tipping-bucket counter.
Battery level
Reported as a percentage, with local storage and retransmission.
Integration
Sensor / controller
Measures or controls in the field and sends LoRaWAN uplinks.
LoRaWAN gateway
Receives the radio packets and forwards them to the server.
ChirpStack
Network server: manages sessions and decodes the payload.
ThingsBoard / Grafana
Dashboards, alarms, rules and 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 === 0x04 && type === 0x68) { // humidity (%RH)
data.humidity = bytes[i] / 2; i += 1;
} else if (channel === 0x05 && type === 0x84) { // wind direction (°)
data.wind_direction = readInt16LE(bytes, i) / 10; i += 2;
} else if (channel === 0x06 && type === 0x73) { // barometric pressure (hPa)
data.pressure = readUInt16LE(bytes, i) / 10; i += 2;
} else if (channel === 0x07 && type === 0x92) { // wind speed (m/s)
data.wind_speed = readUInt16LE(bytes, i) / 10; i += 2;
} else if (channel === 0x08 && type === 0x77) { // rainfall total (mm) + counter
data.rainfall_total = readUInt16LE(bytes, i) / 100;
data.rainfall_counter = bytes[i + 2]; i += 3;
} else {
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;
}
Implemented from the published Milesight byte specification (Communication Protocol / User Guide).
Channel format: 01 75 battery (%), 03 67 temperature (INT16 little-endian, /10), 04 68 humidity (/2), 05 84 wind direction (INT16, /10), 06 73 pressure (UINT16, /10), 07 92 wind speed (UINT16, /10), 08 77 rainfall total (UINT16, /100) plus a 1-byte tipping counter. Alarm channels (0x83/0x86/0x87/0x88) repeat the same value plus an alarm-type byte. For ThingsBoard the same channel logic goes into an uplink converter.
Uplink (hex)
01755A0367EA000468640584080706739427079223000877E20405Decoded JSON
{ "battery": 90, "temperature": 23.4, "humidity": 50, "wind_direction": 180, "pressure": 1013.2, "wind_speed": 3.5, "rainfall_total": 12.5, "rainfall_counter": 5 }Configuration & pitfalls
NFC setup
Keys, reporting interval and threshold alarms are set over NFC with the Milesight ToolBox before the station goes on the mast.
Solar power budget
The station charges from its solar panel with battery backup. Pick a reporting interval that keeps the battery topped up through several overcast days.
Rainfall counter rollover
Rainfall is a cumulative total with a separate tipping counter. Track the difference between uplinks in your dashboard, and handle the counter resetting after a clear-history command.
Wind direction reference
Wind direction is reported in degrees. Mount the station with the orientation mark to true north so the values stay meaningful.
How merkaio supports your WTS
From sourcing to day-to-day operation, all from one partner on our own European infrastructure.
Pre-staging & provisioning
We configure the WTS, set keys, intervals and alarms, and ship it ready to deploy.
Own decoder
Payload codec for ChirpStack v4 and ThingsBoard, implemented from the Milesight specification.
Dashboard integration
Data lands in your ThingsBoard or Grafana, with alarms and reports.
Operations & monitoring
We run the LoRaWAN stack and dashboards on European infrastructure, you just use the data.
Frequently asked questions
Let's discuss your infrastructure. Digital and on-site.
Whether it's IoT platform development, hardware selection, managed hosting for ChirpStack, ThingsBoard, Grafana or NetBird VPN, or migration from a self-hosted setup - we'll find the right solution for your use case. Book a free 30-minute consultation, no commitment required.
Your contact
Timo Wevelsiep
Founder, merkaio
15 minutes, no commitment, directly with Timo.
Decoder for ChirpStack v4. merkaio is an independent integrator and is not affiliated with Milesight.