The Milesight UC300 is an industrial controller designed for monitoring and controlling field equipment.
It combines multiple input/output interfaces with LoRaWAN or 3G/4G connectivity, making it a flexible building block for industrial automation projects.
In this article, we will not attempt to cover every possible connectivity option. Instead, we provide a brief overview of LoRaWAN connectivity.
Detailed instructions for device setup, TTN registration, and step-by-step KaaIoT integration are beyond the scope of this discussion.
These topics will be covered in a dedicated tutorial later.
Here we will:
The UC300 offers a rich set of interfaces that make it suitable for a wide variety of industrial use cases:
This combination makes UC300 a universal gateway between industrial signals and IoT platforms like Kaa.
UC300 produces binary payloads that need to be decoded before they can be used by IoT applications.
Similarly, control commands must be encoded into binary form before being sent to the device.
Milesight provides official payload formatters for the UC300 series on GitHub:
⚠️ Important: Some documentation examples contain inconsistencies.
For example, the reboot command may be shown as{ "reboot": 1 }, but the encoder expects{ "reboot": "yes" }.
Always validate against the official formatter code.
Suppose UC300 is connected to a pressure transmitter via its analog input.
The device periodically sends measurement data over LoRaWAN.
0D0248040000 0B0290030000
{
"adc_1": 9.12,
"adv_1": 10.96
}

This makes the measurement immediately usable in KaaIoT dashboards and analytics.
Now suppose we want to turn on a pump connected to UC300’s relay output.
{
"gpio_output_1": "on",
"gpio_output_2": "off",
"confirmed": "false",
"f_port": 50
}
0701FF0800FF

This downlink allows the Kaa platform to remotely control industrial equipment through UC300.
The goal is to automate irrigation in a greenhouse based on environmental conditions. The UC300 acts as a local controller, collecting data from sensors and controlling actuators such as pumps and valves, while also transmitting telemetry to a remote LoRaWAN network server for monitoring and optimization.

Soil Moisture Sensors (analog input 0–10 V or 4–20 mA)
Placed in different greenhouse zones to measure soil humidity.
Soil Temperature Sensor (analog input)
Helps optimize irrigation (water uptake depends on soil temperature).
Water Tank Level Sensor (analog input or RS485 Modbus RTU)
Ensures there is enough water before activating the pump.
Ambient Temperature & Humidity Sensor (RS485 Modbus RTU)
Provides environmental data for irrigation scheduling and ventilation control.
Water meter (RS485 Modbus RTU)
Precisely controls water consumption.
Water Pump (relay output)
Main pump to supply water for irrigation.
Solenoid Valves (relay outputs)
Control irrigation for different greenhouse zones independently.
Ventilation Fan (relay output, optional)
Provides extra climate control if temperature/humidity exceed thresholds.
This illustrates how UC300 can serve as both a monitoring and a control device, with KaaIoT providing visualization, analytics, and remote operation.
Milesight UC300 is a versatile industrial controller that can bridge field devices with IoT platforms.
By combining multiple I/O interfaces and LoRaWAN connectivity, it enables both data acquisition and remote control.
The key to successful integration with TTN and KaaIoT lies in the proper use of payload formatters.
They allow developers to translate between binary device payloads and structured data or commands.