Skip to main content

Radio LCD Thermostat

This document will guide you through the Radio LCD Thermostat project. With this gadget you will be able to control remotly you temperature.

Block Concept

Block diagram: Radio LCD Thermostat Kit and Radio Power Controller Kit linked by radio to the Node-RED gateway stack

Requirements

Firmware Upload

In this procedure we will use the HARDWARIO Playground to upload firmware to the Core Module.

Step 1: Connect the Micro USB cable to the Core Module and your computer

Step 2: Flash firmware

Run the HARDWARIO Playground. In the Firmware tab choose and upload the bcf-radio-lcd-thermostat firmware to the Core Module:

warning

Flashing Core Module R1 & R2 For differences of flashing older Core Module 1 and newer Core Module 2 please read Core Module R1 and R2 comparison in the Hardware section

Step 3: Remove the Micro USB cable from the Core Module and your computer

success

At this point your firmware is successfully uploaded.

Hardware Assembling

See short video with easy step by step demonstration:

Step 1: Start with the Mini Battery Module

warning

Make sure the Mini Battery Module does not have batteries inserted.

Step 2: Plug the Core Module on top of the Mini Battery Module

Step 3: Plug the LCD Module on top of the Core Module

Playground Bootstrap

danger

If you are using the new HARDWARIO Playground, then use the Functions tab instead of using http://localhost:1880/. Also the pairing process is now done in Devices tab. For communication test use the Messages tab.

Step 1: Open Node-RED in your web browser

http://localhost:1880/

Step 2: You should see the empty workspace with Flow 1

Step 3: Insert the following snippet in the flow (using Menu >> Import)

[{"id":"2fc604fc.3b6abc","type":"inject","z":"dfc861b.b2a02a","name":"List all gateways","topic":"gateway/all/info/get","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":560,"y":460,"wires":[["a2c10833.24d5d8"]]},{"id":"1e4502b8.2f63fd","type":"inject","z":"dfc861b.b2a02a","name":"Start node pairing","topic":"gateway/usb-dongle/pairing-mode/start","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":570,"y":580,"wires":[["795ff5a7.8e266c"]]},{"id":"3d844ce2.932864","type":"inject","z":"dfc861b.b2a02a","name":"Stop node pairing","topic":"gateway/usb-dongle/pairing-mode/stop","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":560,"y":640,"wires":[["5967c452.c838bc"]]},{"id":"f202b253.2705b","type":"inject","z":"dfc861b.b2a02a","name":"List paired nodes","topic":"gateway/usb-dongle/nodes/get","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":560,"y":520,"wires":[["f0aca138.0b2c3"]]},{"id":"349f02fd.890f6e","type":"inject","z":"dfc861b.b2a02a","name":"Unpair all nodes","topic":"gateway/usb-dongle/nodes/purge","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":560,"y":700,"wires":[["2f1c5bb6.53d6f4"]]},{"id":"cf61d75d.4ad8f8","type":"mqtt in","z":"dfc861b.b2a02a","name":"","topic":"#","qos":"2","broker":"67b8de4a.029d3","x":530,"y":400,"wires":[["a5cb0658.f5d658"]]},{"id":"a5cb0658.f5d658","type":"debug","z":"dfc861b.b2a02a","name":"","active":true,"console":"false","complete":"false","x":790,"y":400,"wires":[]},{"id":"a2c10833.24d5d8","type":"mqtt out","z":"dfc861b.b2a02a","name":"","topic":"","qos":"","retain":"","broker":"717f7c18.ba0a24","x":770,"y":460,"wires":[]},{"id":"f0aca138.0b2c3","type":"mqtt out","z":"dfc861b.b2a02a","name":"","topic":"","qos":"","retain":"","broker":"717f7c18.ba0a24","x":770,"y":520,"wires":[]},{"id":"795ff5a7.8e266c","type":"mqtt out","z":"dfc861b.b2a02a","name":"","topic":"","qos":"","retain":"","broker":"717f7c18.ba0a24","x":770,"y":580,"wires":[]},{"id":"5967c452.c838bc","type":"mqtt out","z":"dfc861b.b2a02a","name":"","topic":"","qos":"","retain":"","broker":"717f7c18.ba0a24","x":770,"y":640,"wires":[]},{"id":"2f1c5bb6.53d6f4","type":"mqtt out","z":"dfc861b.b2a02a","name":"","topic":"","qos":"","retain":"","broker":"717f7c18.ba0a24","x":770,"y":700,"wires":[]},{"id":"67b8de4a.029d3","type":"mqtt-broker","z":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""},{"id":"717f7c18.ba0a24","type":"mqtt-broker","z":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]

It will look like this:

Imported Node-RED flow with inject buttons for the gateway commands, each wired to an MQTT node

info

This snippet provides control buttons for gateway/radio commands. These commands are sent over the MQTT protocol.

Step 4: Deploy the flow using the Deploy button in the top-right corner

Step 5: Open the debug tab

Node-RED editor with the debug tab highlighted in the right sidebar

info

In the debug tab, you will be able to see all the MQTT messages.

Step 6: Click on the List all gateways button. You should see a response like this in the debug tab

Debug tab showing the gateway info response after clicking List all gateways

success

At this point, you've got working Node-RED, MQTT, HARDWARIO Radio Dongle and HARDWARIO Gateway.

Radio Pairing

In this section, we will create a radio link between the Radio Dongle and the Radio LCD Thermostat.

Follow these steps in Node-RED:

Step 1: Click on the Start node pairing button

Start node pairing button highlighted, with the pairing start confirmed in the debug tab

Step 2: Insert the batteries into the Radio LCD Thermostat to send the pairing request (you should also see the red LED on the Core Module to be on for about 2 seconds)

Step 3: Click on the Stop node pairing button

Stop node pairing button highlighted, with the pairing stop confirmed in the debug tab

success

At this point, you've got established a radio link between the node (Radio LCD Thermostat) and the gateway (Radio Dongle).

Communication Test

Follow these steps in Node-RED:

Step 1: Switch to debug tab on the right

Step 2: Insert the following snippet in the flow (using Menu >> Import)

[{"id":"12b3deae.bbbdf1","type":"mqtt in","z":"f2f80e07.95983","name":"","topic":"node/lcd-thermostat:0/#","qos":"2","broker":"25b87ea5.743312","x":390,"y":320,"wires":[["7694514b.9b64d"]]},{"id":"7694514b.9b64d","type":"debug","z":"f2f80e07.95983","name":"","active":true,"console":"false","complete":"false","x":630,"y":320,"wires":[]},{"id":"25b87ea5.743312","type":"mqtt-broker","z":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]

Step 3: If you see some messages in debug log (like temperature) your kit works correctly

success

At this point, you've got verified radio communication.