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:

Install MQTT broker di Raspberry

MQTT adalah suatu protokol yang paling efektif untuk digunakan di IOT. Yang paling terasa karena dalam suatu response nya yang idak berbelit-belit seperti HTTP, hanya beberapa bytes code saja digunakan sehingga ketika suatu node yang hanya mempunyai power supply terbatas sangat terbantu dengan protokol ini karena ketika dia mentransmit dan receive data hanya beberapa byte saja sehingga konsumsi dayanya kecil.



Disini saya akan menjelaskan langkah untuk instalasi broker MQTT di raspberry menggunakan mosquitto dari Ellipse, karena OS yang saya install disini adalah OSMC dengan based DEBIAN maka seharusnya sangat mudah instalasinya.

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
- Pilih link berikut disesuaikan dengan versi debian kamu:
  sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list
  sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
apt-get update
apt-get install mosquitto

Dan selesai sudah instalasi nya. Kita lanjutkan lagi di post berikutnya untuk cara setting nya.