Introduction: ESP8266: DHT22 to MYSQL and HighCharts
I will tell you how I did to get an ESP8266-01 to read data from DHT22 and send it to an MYSQL database then view the data with HighCharts
Features that I will add later is HighStocks
You need below items:
DHT22
ESP8266 ESP-01
ESP8266flasher, also called NODEMCU FIRMWARE PROGRAMMER, attached in Step 1
USB->TTL
LUA Loader, attached in Step 3
If you want to use the sleep function you need to solder before start, see step 2
Links:
EDIT 150826: Updated INIT.LUA. added "--" before "end)" line after -- node.dsleep(sleep*60*1000*1000)
EDIT 150924: new ESP8266Flasher version, corrected errors in readdht22.lua, renamed to readdht22_test.lua for testing purpose
EDIT 151005: updated readdht22_test.lua(removed timer) and readdht22.lua(change so timer repeats)
Step 1: Flash ESP8266 With Firmware
Connect:
ESP8266 -> TTL
VCC -> VCC
CH_PD -> VCC
GND -> GND
GPIO0 -> GND
TX -> RX
RX -> TX
The USB-TTL that I used had the possibility to select power, I used 3.3V
Plug-in USB-TTL to your computer, wait until your PC have installed drivers for USB-TTL
Start ESP8266Flasher.
I used version 1.0.5619.5450 of ESP8266Flasher EDIT 20150924
I used version 0.9.5 20150318 firmware, build-in ESP8266Flasher
Config->INTERNAL://NODEMCU
Advanced->Baudrate 230400, Flash size 4MByte, Flash speed 40MHz, SPI Mode DIO
Select COM-port and press Flash. If the connection is correct you will get a QR-code at bottom left
When it is ready, green check appear in bottom left, close ESP8266Flasher
Attachments
Step 2: Connect ESP8266 to DHT22
Unplug USB-TTL, so the power is disconnected, we dont want to damage anything
Disconnect GPIO0 from GND
Connect:
ESP8266 -> DHT22
VCC -> VCC
GPIO2 -> Data
GND -> GND
If you want to use Sleep function you need to solder RESET to leg 8 on ESP8266 chip
Step 3: Upload Test Code to ESP8266
Before we send any data to an MYSQL we must test so that the ESP8266 can read from DHT22
I used LUA Loader version 0.87
Plug-in USB-TTL to your computer
Start LUA Loader
Select COM-port, Settings->Comm Port Settings
Click on Connect, upper right field should be green if you have connection
Click on Restart, middle right side
You should now see some text poping up, if not you have something wrong with the firmware in ESP8266 or the connection is not correct
To upload a file click on Upload file, bottom right
Upload dht22.lua and readdht22_test.lua
dht22.lua: to communication to dht22 sensor
readdht22_test.lua: read data from sensor and print it to the screen in LUA
When you have uploaded those two files select readdht22_test.lua from the yellow section and click dofile
Now you should see two lines
Humidity: xx.x %
Temperature: xx.x deg C
For every press on dofile you should see values from sensor
Step 4: Prepare MYSQL Database
I am using a WAMPServer 2.5 with Apache 2.4.9, PHP 5.5.12 and MYSQL 5.6.17
I don't know so much about PHP and MYSQL so please comment if some information is missing or wrong
Create a user named "user" and the password must be "password", these can be changed later on if wanted
Attached is an export from the database that I am using
Database name is dht22 and datatable name is temphumi
column 1 is date
column 2 is temp
column 3 is humidity
Step 5: Test PHP File
This is my dht22.php, download dht22.txt and rename to dht22.php, it seems to be blocked to download .php files, save it in the root of www on your webserver
change IP adress inside file, now it is 123.123.123.123, change to IP where your webserver is installed
test it in your webserver by typing, e.g. "123.123.123.123/dht22.php?temp=20&humi=30" [ENTER]
open your MYSQL database and now you must see a date, temp and humi values
Step 6: Upload Final Code to ESP8266
change WiFi settings in top of file, SSID, Password and IP
readdht22.lua: read data from sensor and write to MYSQL
if you want to use Sleep function you have to remove -- from init.lua file
--tmr.alarm(1, gsleep*1000, 0, function()
-- print("timer1 trigger dsleep")
-- node.dsleep(sleep*60*1000*1000)
Attachments
Step 7: VIew Data With HighCharts
Download files. Save .js files to a sub folder named JS and txt files in the folder above JS, rename txt to php
Access temphumi.php with a web browser, if everything is OK you should see data that ES8266 has sent
will be updated soon