LoRaWAN Thermostat1 -- Next-Generation Thermostat for Connected Buildings
Table of Contents:
- 1. Introduction
- 2. Configure Thermostat1 to connect to LoRaWAN network
- 3. Configure Thermostat1
- 4. OTA Firmware update
- 5. FAQ
- 6. Order Info
- 7. Packing Info
- 8. Support
1. Introduction
1.1 What is LoRaWAN Thermostat1
The Dragino Thermostat1 is a LoRaWAN-based smart thermostat designed specifically for the North American HVAC market. It is compatible with a wide range of 24VAC HVAC systems, including:
- Conventional Heating & Cooling: Supports 2H/2C and 1H/1C configurations
- Heat Pump Systems: Supports 3H/2C and 4H/2C configurations
- Boiler or Radiant Heating Systems with air handler and conventional cooling/heating
Leveraging LoRaWAN long-range wireless communication, the Thermostat1 enables remote temperature monitoring and control, significantly reducing the cost and complexity of installation and maintenance—especially in large or distributed facilities.
1.2 Features
- LoRaWAN US915 Class C protocol
- Local and remote temperature control for flexible operation
- Easy integration into building automation and energy management systems
- Wireless deployment minimizes wiring requirements and installation costs
- Scalable for large commercial facilities with centralized control needs
1.3 Specification
Power supply mode: 18-30VAC 60Hz
Temperature setting accuracy: 0.5 ℉
Temperature setting range: 41 ℉ ~ 95F
Temperature display accuracy: 0.5 ℉
Transportation temperature range: 14 ℉ ~ 140 ℉
Working environment temperature: 32 ℉ ~ 122 ℉
1.4 Applications
- Offices, industrial buildings, campuses
- Hotels and resorts
- Retail chains with multiple locations
- Schools & universities
- Healthcare facilities
Thermostat1 delivers a cost-effective, scalable, and reliable solution for modern commercial HVAC management.
1.5 Panel and Function
1.5.1 Operation Instructions
Button | Function |
![]() | Short press the power button to turn on/off the device; long press to turn on/off the child lock. |
![]() | 1. With the power on, briefly press the Mode button to switch between Manual and Automatic modes. 2. With the power off, press and hold for 3 seconds to enter the Advanced menu settings. Short presses allow you to switch between advanced options. 3. With the power on, press and hold for 3 seconds to switch between Cooling and Heating modes (if the current output mode is Automatic and the system is multi-stage). |
Slide Bar | 1. When the device is powered on, slide the bar left or right 2. Slide left or right to adjust the parameter (see Advanced Options Settings below). |
1.5.2 Programming mode setting
Device is powered on, programming can be done on the client side.
Mode | Time period | Default time | Default temp |
Cooling | working day | 06:00 | 77℉ |
08:00 | 66℉ | ||
11:30 | 77℉ | ||
12:30 | 66℉ | ||
17:00 | 77℉ | ||
22:00 | 66℉ | ||
Rest Day | 08:00 | 77℉ | |
23:00 | 66℉ | ||
Heating | working day | 06:00 | 72℉ |
08:00 | 61℉ | ||
11:30 | 72℉ | ||
12:30 | 61℉ | ||
17:00 | 72℉ | ||
22:00 | 61℉ | ||
Rest Day | 08:00 | 72℉ | |
23:00 | 61℉ |
1.5.3 Advanced Options Settings
In the off state, press and hold the mode button for 3 seconds to enter the advanced option settings, press the mode button to switch the advanced option parameters, slide the slider left and right to set the parameters, and press the power button to save and exit .
Parameter item | Parameter Name (Factory Default) | Select by sliding left and right on the slider | Unit | Functional meaning |
1 | System (0) | 0 ~ 4 | / | 0: Single cooling; 1: Single heating; 2. One cooling and one heating; 3: One cooling and two heating; 4: Two cooling and two heating |
2 | Output Mode (0) | 0 ~ 3 | / | 0: Cooling; 1: Heating; 2: Automatic; 3: AUX mode |
3 | Startup Mode (0) | 0 ~ 1 | / | 0: Slow speed -- When the temperature difference is>=3 ℉, start heating/cooling; 1: Quick -- When the temperature difference is>=1 ℉, start heating/cooling |
1.6 Dimension
1.7 Pin Mapping
Terminal | Function |
24+ / 24 - | 24-volt AC power supply from the HVAC system’s transformer. 24+ is the hot side, 24- is the common/neutral side. |
RC | (Red Cooling). Power (24VAC) for cooling systems. |
C | (Common). The return path for the 24VAC power (often called “common wire” or “C-wire”). |
Y1 | First-stage cooling output. |
Y2 | Second-stage cooling output. |
G | Controls the fan relay (blower fan) |
S | (Sensor) , External temperature or sensor input (varies by manufacturer). |
RH | (Red Heating): Power (24VAC) for heating systems. |
O/B | Heat pump reversing valve control. |
W1 | First-stage heating output. |
W2 | Second-stage heating output. |
1.8 Wiring
1.8.1 Traditional single-stage and multi-level systems
1.8.2 Heat pump+auxiliary heating system
1.8.3 Boiler+air conditioning system
1.9 Installation
2. Configure Thermostat1 to connect to LoRaWAN network
2.1 How it works
The Thermostat1 is configured as LoRaWAN OTAA Class C mode by default. It has OTAA keys to join LoRaWAN network. To connect a local LoRaWAN network, you need to input the OTAA keys in the LoRaWAN IoT server and press the button to activate the Thermostat1. It will automatically join the network via OTAA and start to send the sensor value. The default uplink interval is 1 hour.
2.2 Quick guide to connect to LoRaWAN server (OTAA)
Following is an example for how to join the TTN v3 LoRaWAN Network. Below is the network structure; we use the LPS8v2 as a LoRaWAN gateway in this example.
The LPS8v2 is already set to connected to TTN network , so what we need to now is configure the TTN server.
Step 1: Create a device in TTN with the OTAA keys from Thermostat1.
Each Thermostat1 is shipped with a sticker with the default device EUI as below:
You can enter this key in the LoRaWAN Server portal. Below is TTN screen shot:
Create the application.
- On the home screen, click the + Add application button.
- On the Create application page, enter an Application ID to identify your application within The Things Stack and provide an Application name. Read https://thethingsindustries.com/docs/integrations/adding-applications for more information on how to do that.
- Click the Create application button.
Add devices to the created Application
- After creating the application, you will be redirected to the Application overview page.
- On the Application overview page, click the + Register end device button.
Enter end device specifics manually
We use Over The Air Activation (OTAA) to activate Thermostat1 with The Things Stack. OTAA is the most secure way of activating an end device with a LoRaWAN network server.
- On the Register end device page, select the ‘Enter end device specifics manually’ option under the input method.
- Select the correct Frequency plan and LoRaWAN version. The Regional parameters version will appear automatically based on the LoRaWAN version
The Frequency plan should match the frequency of the Thermostat1.
Using the registration information sheet that comes with the Thermostat1,
- Fill the JoinEUI. The Thermostat1 uses AppEUI instead of JoinEUI. You can enter it in the JoinEUI text box. Then click the Confirm button.
Add DevEUI and AppKey
- Enter the DevEUI and AppKey.
- Enter an End device ID that can be used to identify your Thermostat1 within this application.
Click the Register end device button.
Step 2: Add decoder
LoRaWAN uplink and downlink payloads are encoded. To understand the data, you need a small script to decode them. We use a JavaScript function for this. It is called a payload formatter. It reads the payload and extracts useful information, such as relay status, event type, and timestamp. We have written a JavaScript function to decode uplinks from the Thermostat1 device.
To add an uplink payload formatter code to The Things Stack, follow the steps below:
- Go to your Thermostat1 device page and click Payload formatters.
- Click, Uplink.
- Select Custom Javascript formatter from the Formatter type drop-down list.
- Now copy the Uplink Formatter code from here: https://github.com/dragino/dragino-end-node-decoder/tree/main/
- Then paste it in the Formatter code box:
You can now test the formatter code with a sample payload.
- Enter 68 90 7A 1F 01 C1 23 09 25 0F 1A 64 50 D7 00 D1 00 D7 D1 00 D7 00 D1 00 in the Byte payload box.
- Change the FPort to 2 (because our payload formatter only accepts uplinks from FPort 2).
- Click the Test decoder button.
The payload will be decoded into the following JSON object and shown in the Decoded test payload box.
To save the payload formatter, click the Save changes button.
After applying the uplink payload formatter, you can see that all uplink payloads shown in the Live Data section are decoded into fields.
Step 3: Activate the Thermostat1
Press the ACT button for 3 seconds to activate the Thermostat1.
After a successful join, it will start uploading messages to The Things Stack, and you can see them in the Live data panel.
2.3 Uplink Payload
2.3.1 Device Status, FPORT=5
Users can use the downlink command(0x26 01) to ask Thermostat1 to send device configure detail, include device configure status. Thermostat1 will uplink a payload via FPort=5 to server.
The Payload format is as below.
Device Status (FPORT=5) | |||||
Size (bytes) | 1 | 2 | 1 | 1 | |
Value | Sensor Model | Firmware Version | Frequency Band | Sub-band |
Example parse in TTNv3
Sensor Model: For Thermostat1, this value is 0x46
Firmware Version: 0x0110, Means: v1.1.0 version
Frequency Band:
0x01: EU868
0x02: US915
0x03: IN865
0x04: AU915
0x05: KZ865
0x06: RU864
0x07: AS923
0x08: AS923-1
0x09: AS923-2
0x0a: AS923-3
0x0b: CN470
0x0c: EU433
0x0d: KR920
0x0e: MA869
Sub-Band:
AU915 and US915:value 0x00 ~ 0x08
CN470: value 0x0B ~ 0x0C
Other Bands: Always 0x00
2.3.2 Sensor Data. FPORT=2
Sensor Data is uplink via FPORT=2
Size(bytes) | 4 | 1 | 1 | 1 |
---|---|---|---|---|
Value | Unix TimeStamp | EventType | Plugstatus | Relaystatus |
Unit timestamp
Unit TimeStamp Example: 680DE31F(H) = 1745740575(D)
Put the decimal value into this link(https://www.epochconverter.com))to get the time.
Plugstatus
Example:
If payload is: 01H: Electrical INSERT
If payload is: 00H: Electrical PULL_OUT
Event
Example:
If payload is: 01H: PLUG_INSERT_EVENT
If payload is: 02H : PLUG_PULL_EVNET
If payload is: 03H :HEARTBEAT_EVNET
If payload is: 04H :RELAY_ACK_EVENT
Relaystatus
Example:
If payload is: 01H: Relay open
If payload is: 00H : Relay closed
2.4 Payload Decoder file
In TTN, use can add a custom payload so it shows friendly reading
In the page Applications --> Payload Formats --> Custom --> decoder to add the decoder from: https://github.com/dragino/dragino-end-node-decoder/tree/main/
2.5 Datalog Feature
Datalog Feature is to ensure IoT Server can get all sampling data from Sensor even if the LoRaWAN network is down. For each sampling, Thermostat1 will store the reading for future retrieving purposes.
2.5.1 Ways to get datalog via LoRaWAN
With the platform downlink 07 01, turn on the device to send None-ACK message function automatically, Thermostat1 will wait for every upstream ACK, when there is no LoRaWAN network, Thermostat1 will mark these records as non ack message and store the sensor data, and wait for the network to be restored (10s interval) to send all the messages.
a) Thermostat1 will do an ACK check for data records sending to make sure every data arrive server.
b) When automatic sending of None-ACK messages is enabled, the Thermostat1 will send data in CONFIRMED mode, but if an ACK is not received, the Thermostat1 will not resend the packet, it will only mark it as a NONE-ACK message. On subsequent uplinks, if the Thermostat1 receives an ACK, the Thermostat1 will consider the network connected and resend all NONE-ACK messages.
2.5.2 Unix TimeStamp
Thermostat1 uses Unix TimeStamp format based on
User can get this time from link: https://www.epochconverter.com/ :
Below is the converter example
So, we can use downlink 3060137afd00 to set the current time 2021 – Jan -- 29 Friday 03:03:25
2.5.3 Set Device Time
Users need to run downlink command 28 01 to enable the synchronization time.
Once Thermostat1 Joined LoRaWAN network, it will send the MAC command (DeviceTimeReq) and the server will reply with (DeviceTimeAns) to send the current time to Thermostat1 . If Thermostat1 fails to get the time from the server, Thermostat1 will use the internal time and wait for next time request (The default time is once every 10 days.).
Note: LoRaWAN Server need to support LoRaWAN v1.0.3(MAC v1.0.3) or higher to support this MAC command feature, Chirpstack,TTN V3 v3 and loriot support but TTN V3 v2 doesn't support. If server doesn't support this command, it will through away uplink packet with this command, so user will lose the packet with time request for TTN V3 v2 if when the automatic time synchronization function is turned on.
Downlink Command: 0x28
- Example: 0x28 01 // Automatic time synchronization Enabled
- Exampie: 0x28 00 // Automatic time synchronization Disable.
2.5.4 Datalog Uplink payload (FPORT=3)
The Datalog uplinks will use below payload format.
Retrieval data payload:
Size(bytes) | 4 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|
Value | Unix Time Stamp | Event | Plugstatus | Relaystatus | DatalogReply |
No ACK Message: 1: This message means this payload is fromn Uplink Message which doesn't get ACK from the server before ( for Automatically send None-ACK feature)
DatalogReply: 1: This message is a poll message reply.
- Poll Message Flag is set to 1.
- Each data entry is 8 bytes, to save airtime and battery, devices will send max bytes according to the current DR and Frequency bands.
For example, in US915 band, the max payload for different DR is:
a) DR0: max is 11 bytes so one entry of data
b) DR1: max is 53 bytes so devices will upload 4 entries of data (total 44 bytes)
c) DR2: total payload includes 11 entries of data
d) DR3: total payload includes 22 entries of data.
If devise doesn't have any data in the polling time. Device will uplink 8 bytes of 0
Example:
If user sends below downlink command: 31681D4580681D6FB005
Where : Start time: 681D4580 = time 25/5/9 08:00:00
Stop time: 681D6FB0 = time 25/5/9 11:00:00
Thermostat1 will uplink this payload.
68 1D 5C 51 04 00 00 40 68 1D 6A 61 03 00 00 40
Where the first 8 bytes is for the first entry:
68 1D 5C 51 04 00 00 40
Unix time is 0x68 1D 5C 51=1746754641s=25/5/9 09:37:00
Event=0x04 = RELAY_ACK_EVENT
Plugstatus=0x00 = PULL_OUT
Relaystatus = 0x00 = Relay closed
DatalogReply = 0x40 = Represents the current data as polled data
2.6 Frequency Plans
The Thermostat1 uses OTAA mode and below frequency plans by default. Each frequency band use different firmware, user update the firmware to the corresponding band for their country.
http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20Frequency%20Band/
2.7 Use Remote Temperature Sensor
3. Configure Thermostat1
3.1 Configure Methods
Thermostat1 supports below configure method:
- LoRaWAN Downlink. Instruction for different platforms: See IoT LoRaWAN Server section.
3.2 General Commands
These commands are to configure:
- General system settings like: uplink interval.
- LoRaWAN protocol & radio related command.
They are same for all Dragino Devices which support DLWS-005 LoRaWAN Stack. These commands can be found on the wiki:
http://wiki.dragino.com/xwiki/bin/view/Main/End%20Device%20AT%20Commands%20and%20Downlink%20Command/
3.3 Commands special design for Thermostat1
These commands only valid for Thermostat1 , as below:
3.3.1 Set Transmit Interval Time
AT Command:
There is no AT command to set TDC time.
Feature: Change LoRaWAN End Node Transmit Interval.
Downlink Command: 0x01
Format: Command Code (0x01) followed by 3 bytes time value.
If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01.
- Example 1: Downlink Payload: 0100001E // Set Transmit Interval (TDC) = 30 seconds
- Example 2: Downlink Payload: 0100003C // Set Transmit Interval (TDC) = 60 seconds
3.3.2 Get Device Status
Send a LoRaWAN downlink to ask device send Alarm settings.
Downlink Payload: 0x26 01
Sensor will upload Device Status via FPORT=5. See payload section for detail.
3.3.3 Clear Flash Record
AT Command:
No AT command to control relay enable or disable
Feature: Clear flash storage for data log feature.
Downlink Command: 0x08
- Example: 0x0801 // Clear all saved data in flash.
3.3.4 Relay enable or disable
AT Command:
There is no AT Command to control the Relay Output
Feature: Controls the turning on and off of appliances plugged into the socket
Downlink Command: 0x06
- Example: 0x06 01 // Relay Enabled.
- Exampie: 0x06 00 // Relay Disable.
3.3.5 Relay -- Control Relay Output time
Feature: Controls the relay output time.
AT Command:
There is no AT Command to control the Relay Output
Downlink Payload (prefix 0x09):
0x09 aa bb cc dd ee ff // Sets relays with time control
This controls the relay output time and includes 4 bytes:
First byte : Type code (0x09)
Second byte (aa): Inverter Mode
01: Relays will change back to their original state after a timeout.
00: Relays will change to the inverter state after a timeout.
Third byte (bb): Control Method and Ports status:
Fourth/Fifth/Sixth/Seventh bytes (cc dd ee ff): Latching time. (Min:6 seconds ,Unit: seconds)
The device will uplink a packet if the downlink code executes successfully.
Example payload:
1. 09 01 01 00 00 00 06
Relay will be set to NC, lasting 6 seconds, then revert to their original state
2. 09 01 00 00 00 00 06
Relay will change to NC, lasting 6 seconds, and then will will change to NO.
3. 09 00 01 00 00 00 06
Relay1 will change to NO, lasting 6 seconds, and then Relay will change to NC.
4. 09 01 01 00 00 00 06
Relay will change to NO, lasting 6 seconds, and then will revert to their original state.
3.3.6 Confirmed Mode
AT Command:
There is no AT command to control whether Confirmed mode is enabled or disabled.
Feature: Mode for sending data for which acknowledgment was not received
Downlink Command: 0x06
- Example: 0x07 01 // Confirmed Mode enabled.
- Exampie: 0x07 00 // Confirmed Mode Disable.
3.3.7 Set the time synchronization interval
Feature: Set how often to perform time synchronization.(default is 10 days, Unit: days)
Downlink Command: 0x28
- Example: 0x28 01 // Synchronize once a day
- Exampie: 0x28 03 // Synchronize once every three days
4. OTA Firmware update
User can change firmware Thermostat1 to:
- Change Frequency band/ region.
- Update with new features.
- Fix bugs.
Firmware and changelog can be downloaded from : Firmware download link
Methods to Update Firmware:
- (Recommanded way) OTA firmware update via wireless : http://wiki.dragino.com/xwiki/bin/view/Main/Firmware%20OTA%20Update%20for%20Sensors/
5. FAQ
6. Order Info
- Thermostat1: LoRaWAN Thermostat
- LHT52-TH: Remote Temperature Sensor for Thermostat1
7. Packing Info
Package Includes:
- Thermostat1: LoRaWAN Thermostat
- LHT52-TH: Remote Temperature Sensor for Thermostat1
Dimension and weight:
- Device Size: cm
- Device Weight: g
- Package Size / pcs : cm
- Weight / pcs : g
8. Support
- Support is provided Monday to Friday, from 09:00 to 18:00 GMT+8. Due to different timezones we cannot offer live support. However, your questions will be answered as soon as possible in the before-mentioned schedule.
- Provide as much information as possible regarding your enquiry (product models, accurately describe your problem and steps to replicate it etc) and send a mail to Support@dragino.cc.