Thing Speak sebagai visualisasi data IOT

Pernah ga, ada rasanya penasaran ketika di rumah cuaca pada jam sekian sama jam sekian berapa celcius, kemudian berapa kelembabannya. Nah sekarang daripada bengong mending ikut proyek kecil buat monitoring temperature dan kelembaban rumah.

Alat dan bahan:
- ESP8266 esp01 cukup 1 buah (flash dengan firmware nodeMCU)
- Power bank
- Sensor DHT22
- Otak yang masih segerr
- Kopi kalau ada

Koneksikan DHT22 dengan ESP8266 dengan wiring sebagai berikut:

Kemudian, buat account di thingspeak.com dan bila dibutuhkan authentikasi by email, di authentikasi dulu agar lancar kesananya.

- Di tab Channel, create new channel
- Kemudian masukkan beberapa detail seperti nama chanel misal "Monitor rumah orang"
- Field1, field2 ...etc adalah tempat kita nanti memasukkan data dari node kita (ESP8266 mksdnya)
- centang Field1 dan Field2, kemudian ubah nama Field1 menjadi Temperature dan Field2 menjadi Humidity. Dan save channelnya.
- Setelah itu akan didapatkan API key
- Coba tes menggunakan browser apapun dan ketik di alamatnya: http://api.thingspeak.com/update?key=YOUR_API_KEY&field1=40&field2=70
setelah itu coba masuk ke tab Private/public view, maka akan ada satu titik disana

Kembali ke hardware, berikut adalah source codenya, mudah-mudahan bisa dipahami hehe:
--tes TCP Connection
    INPUT_DHT = 3 
        ssid = blabla
             pwd = 1234567890987654321 
require "dht_lib"
CHANNEL_API_KEY = "YOUR_API"
gpio.mode(INPUT_DHT, gpio.INPUT);

wifi.setphymode(wifi.PHYMODE_N);
wifi.setmode(wifi.STATION);
wifi.sta.disconnect();
wifi.sta.config(SSID, PWD);
repeat
  print("connecting to AP...\r\n"
  wifi.sta.getip());
  tmr.delay(1000)
  Until wifi.sta.getip()~=nil
local ip, br, gate = wifi.sta.getip()
Print('IP Address:',ip,'\r\nBroadcast:',br,'\r\nGateway: ',gate);

function bebeb()
    soket = net.createConnection(net.TCP,0)
    status,temp,humi,temp_decimial,humi_decimial = dht.readxx(INPUT_DHT)
    if( status == dht.OK ) then
        -- Float firmware using this example
        temperature = string.format("%d.%03d",
        math.floor(temp),
        temp_decimial)
        humidity = string.format("%d.%03d",
        math.floor(humi),
        humi_decimial)               
    end
    request = "GET /update?api_key="..CHANNEL_API_KEY..
              "&field1="..temperature.."&field2="..humidity.." HTTP/1.1\r\n"..
              "Host: api.thingspeak.com\r\n"..
              "Connection: close\r\n"..
              "Accept: */*\r\n"..
              "User-Agent: Mozilla/4.0 (Compatible; NodeMCU)\r\n\r\n"
    soket:on("connection", function(conn,payload)
    soket:send(request)
    end)
    soket:on("receive", function(conn,payload)
    --print(payload)
    end)
    soket:on("disconnection", function(conn,payload)
    soket:close()
    collectgarbage()
    end)
    --print(request)
    soket:connect(80,"api.thingspeak.com")
end

tmr.alarm(2,15000,1, function() bebeb() end)


maka hasilnya akan seperti ini kira-kira:

Share this

Related Posts

Previous
Next Post »