Thingsboard is an open-source server-side platform that allows you to monitor and control IoT devices. It is free for both personal and commercial usage and you can deploy it anywhere. If this is your first experience with the platform we recommend to review what-is-thingsboard page and getting-started guide.
This sample application performs collection of temperature and humidity values produced by DHT11 sensor. Collected data is pushed to Thingsboard for storage and visualization. The purpose of this application is to demonstrate Thingsboard data collection API and visualization capabilities.
The DHT11 sensor is connected to NodeMCU. NodeMCU push data to Thingsboard server via MQTT protocol. Data is visualized using built-in customizable dashboard. The application that is running on NodeMCU is written using Lua scripting language which is quite simple and easy to understand.
Once you complete this sample/tutorial, you will see your sensor data on the following dashboard.
Prerequisites
You will need to Thingsboard server up and running. Use either Live Demo or Installation Guide to install Thingsboard.
List of hardware and pinouts
- NodeMCU V3 - You can find list of additional documentation in NodeMCU overview
- Keyes DHT-11 - DHT11 sensor with built-in resistor.
- 3 female-to-female jumper wires
Wiring schema
NodeMCU Pin | DHT-11 Pin |
---|---|
NodeMCU 3.3V | DHT-11 VCC |
NodeMCU GND | DHT-11 GND (-) |
NodeMCU D5 | DHT-11 Data (S) |
Programming the NodeMCU device
We need to download and build firmware with Lua interpreter for NodeMCU. This process is described in official documentation and there are multiple way to do this. You can use cloud build service for this purpose, however, we will use Docker Image.
Firmware download
Use following commands to clone official github repository for NodeMCU firmware.
$ mkdir -p ~/samples/nodemcu
$ cd ~/samples/nodemcu
$ git clone https://github.com/nodemcu/nodemcu-firmware.git
There is ability to customize firmware by changing two files:
- ~/samples/nodemcu/nodemcu-firmware/app/include/user_config.h - There is an ability to change default baud rate in.
Please find and update line below to specify custom baud rate.
...
#define BIT_RATE_DEFAULT BIT_RATE_115200
...
- ~/samples/nodemcu/nodemcu-firmware/app/include/user_modules.h - Contains list of what kind of modules included by default.
In our case all necessary modules included by default. However, please check that these modules are uncommented.
...
define LUA_USE_MODULES_DHT
...
define LUA_USE_MODULES_MQTT
...
Building firmware using Docker
The easiest way to build nodemcu firmware is by using prepared docker container for that task.
Please visit docker installation page and install docker on your machine.
After installation you need to download docker image from docker hub by command:
$ sudo docker pull marcelstoer/nodemcu-build
Eventually build the firmware by next command:
$ sudo docker run --rm -ti -v ~/samples/nodemcu/nodemcu-firmware:/opt/nodemcu-firmware marcelstoer/nodemcu-build
As the result binary firmware located in the ~/samples/nodemcu/nodemcu-firmware/bin folder.
Application source code
Our application consists of three .lua files:
- config.lua - configuration file, where we define custom configuration.
You need to modify this file in order to setup your wifi network parameters and address of Thingsboard server.
- your wifi network SSID - name of the wifi network.
- your wifi network password - password to the network.
- thingsboard server ip - host where your thingsboard installation. Use “demo.thingsboard.io” if you are using live demo server.
- thingsboard mqtt port - 1883 is the default value.
- thingsboard access token - DHT11_DEMO_TOKEN is the default value that corresponds to pre-provisioned demo account.
If you are using live demo server - get the access token for pre-provisioned “DHT11 Demo Device”.
- dht11.lua - sending temperature and humidity every 10 seconds to thingsboard server via MQTT protocol.
- init.lua - initalization file that contains config.lua:
Flashing the firmware
Before flashing firmware we need to figure out what serial interface using to communicate with NodeMCU.
$ dmesg
...
[845270.901509] usb 3-3: ch341-uart converter now attached to ttyUSB0
...
In our case /dev/ttyUSB0 is used for communication.
In order to flash firmware for NodeMCU, please download and install following utilities
Upload nodemcu firmware using command:
$ sudo ./esptool.py -b 115200 write_flash --flash_mode dio --flash_size 32m 0x0 ~~/samples/nodemcu/nodemcu-firmware/bin/nodemcu_integer_master_*.bin --verify
Upload application files using following commands:
$ sudo ./luatool.py --port /dev/ttyUSB0 -b 115200 --src config.lua --dest config.lua -v
$ sudo ./luatool.py --port /dev/ttyUSB0 -b 115200 --src dht11.lua --dest dht11.lua -v
$ sudo ./luatool.py --port /dev/ttyUSB0 -b 115200 --src init.lua --dest init.lua -v
Troubleshooting
Sometimes you can observe frequent blinking of the blue led after firmware upload. This is probably related to missing initialization data. Use following command to fix this:
$ sudo ./esptool.py -b 115200 write_flash --flash_mode dio --flash_size 32m 0x3fc000 ~/samples/nodemcu/nodemcu-firmware/bin/esp_init_data_default.bin --verify
Sometimes you are not able to upload lua files. Try to reset device and executing command again within first 10 seconds after reset. If no success, try to delete init.lua code from NodeMCU:
$ sudo ./luatool.py --port /dev/ttyUSB0 -b 115200 --delete init.lua
Data visualization
In order to simplify this guide we have included “Temperature & Humidity Demo Dashboard” to the demo data that is available in each Thingsboard installation. Of course, you can modify this dashboard: tune, add, delete widgets, etc. You can access this dashboard by logging in as a tenant administrator. Use
- login: [email protected]
- password: tenant
in case of local Thingsboard installation.
Once logged in, open Dashboards->Temperature & Humidity Demo Dashboard page. You should observe demo dashboard with live data from your device (similar to dashboard image in the introduction).
Next steps
Browse other samples or explore guides related to main Thingsboard features:
- Device attributes - how to use device attributes.
- Telemetry data collection - how to collect telemetry data.
- Using RPC capabilities - how to send commands to/from devices.
- Rule Engine - how to use rule engine to analyze data from devices.
- Data Visualization - how to visualize collected data.
Prepare yourself to take your wardrobe for an overhaul without breaking the bank because of a wonderful piece of information – it is time to know about cider coupon code! It does not matter whether you fancy classic elegance, current fads, and casual chic. Check your chosen brand’s website, subscribe to its email newsletter, or keep abreast with its social media posts for these exclusive stylish offers by your favorite ladies’ wear manufacturers. Affordable high quality fashions are just few button presses. Pass on, your fashion discoveries, coupon/promo codes, and style notes to the community, and let’s help/empower each other to look fabulous for cheaper, better, and faster! Therefore, why don’t you do something
ReplyDeleteYour ability to connect seemingly disparate elements within this theme is a true testament to your creative genius, resulting in geometry dash a comprehensive and holistic understanding that enriches the reader's perspective.
DeleteI rely on BetGuru 365 for their comprehensive and honest assessments of betting sites. Their detailed reviews, available at https://betguru365.com/ , provide an unparalleled depth of analysis. They meticulously examine each site’s offerings, from odds and markets to security measures. This dedication to providing accurate and trustworthy reviews makes BetGuru 365 an essential tool for anyone interested in online betting.
ReplyDeleteUploading temperature via MQTT using NodeMCU and DHT11 sensors has greatly improved access speed. eggy car
ReplyDeleteThe technology of their numbers is amazing Head Soccer
ReplyDeleteTo upload temperature data over MQTT Bou's Revenge using a NodeMCU and a DHT11 sensor, you'll need to set up your hardware and software properly.
ReplyDeleteThank you so much sharing article you always sharing very informative article which help new students thank you so much.
ReplyDeleteFree Coupon Codes & Discounts
Purchasing a GPS tracker is mostly done for real-time tracking. Different tracking devices have different real-time GPS tracking capabilities. doodle baseball
ReplyDeleteThe significant improvement in access speed via MQTT using NodeMCU and DHT11 sensors has greatly improved access speed. geometry dash
ReplyDelete