ESP8266 NodeMCU DHT22 and thingspeak API

hardware: ESP8266 (ESP-12), DHT22/AM2302, jumpers
firmware: nodemcu-dev096-21-modules-2015-09-20-05-43-31-float (custome f/w) http://frightanic.com/nodemcu-custom-build/
language: Lua

IDE : ESPlorer

WRITEKEY="thingspeak write key"    -- set your thingspeak.com key
PIN = 2                --  data pin, GPIO2
wifi.setmode(wifi.STATION)
wifi.sta.config("ssid","password")
wifi.sta.setip({ip="192.168.0.115",netmask="255.255.255.0",gateway="192.168.0.1"})
wifi.sta.connect()
tmr.delay(1000000)
humi=0
temp=0
-- LED = 1
-- gpio.mode(LED, gpio.OUTPUT)

RST = 4
gpio.mode(RST, gpio.OUTPUT)
--gpio.write(RST, gpio.LOW)
function init_OLED(sda,scl) --Set up the u8glib lib
     sla = 0x3c
     i2c.setup(0, sda, scl, i2c.SLOW)
     disp = u8g.ssd1306_128x64_i2c(sla)
     disp:setFont(u8g.font_6x10)
     disp:setFontRefHeightExtendedText()
     disp:setDefaultForegroundColor()
     disp:setFontPosTop()
end

init_OLED(5,6) --Run setting up
gpio.write(RST, gpio.HIGH)

function display_OLED(humi, temp)
     disp:firstPage()
       repeat
          -- lines = 25
          lines = 5
          disp:drawFrame(0,0,128,64);
          disp:drawStr( 5, 5, "Temp & Humi")
          disp:drawStr( 5, 20, "Humidity    : "..humi.."%")
          disp:drawStr( 5, 31, "Temperature : "..temp.."C")
       until disp:nextPage() == false
end

--load DHT module and read sensor
function ReadDHT()
    dht=require("dht")
    -- dht.read(PIN)
    status,temp,humi,temp_decimial,humi_decimial = dht.read(PIN)
        if( status == dht.OK ) then
          -- gpio.write(LED, gpio.HIGH)
          -- Integer firmware using this example
          --  print(
          --      string.format(
          --          "\r\nDHT Temperature:%d.%03d\r\nHumidity:%d.%03d\r\n",
          --          temp,
          --          temp_decimial,
          --          humi,
          --          humi_decimial
          --      )
          --  )
            -- Float firmware using this example
            print("Humidity:    "..humi.."%")
            print("Temperature: "..temp.."C")
        elseif( status == dht.ERROR_CHECKSUM ) then
            print( "DHT Checksum error." );
        elseif( status == dht.ERROR_TIMEOUT ) then
            print( "DHT Time out." );
        end
    -- release module
    dht=nil
    package.loaded["dht"]=nil
end
-- send to https://api.thingspeak.com
function sendTS(humi,temp)
conn = nil
conn = net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload)success = true print(payload)end)
conn:on("connection",
   function(conn, payload)
   print("Connected")
   conn:send('GET /update?key='..WRITEKEY..'&field1='..humi..'&field2='..temp..'HTTP/1.1\r\n\
   Host: api.thingspeak.com\r\nAccept: */*\r\nUser-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n\r\n')end)
conn:on("disconnection", function(conn, payload) print('Disconnected') end)
conn:connect(80,'api.thingspeak.com')
-- gpio.write(LED, gpio.LOW)
end
-- ReadDHT()
-- sendTS(humi,temp)
tmr.alarm(1,60000,1,function()ReadDHT()display_OLED(humi, temp)sendTS(humi,temp)end)

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *