Reading Requirement


Pada tutorial ini, akan dicoba melakukan pengiriman action control menggunakan protocol MQTT kepada modul ESP8266.


  1. Struktural Koneksi



  2. Persiapan ESP8266
    Setelah memahami struktural koneksi, supaya pengerjaan berjalan lancar, tahap pertama , kita harus meng-flash modul ESP-12 tersebut seperti pada reading requirement ESP8266

  3. Alat dan Bahan
  • ESP8266 
  • FTDI
  • Kabel Konektor
  • Protoboard
  • LED
  • Resistor 220 Ohm

  • ESP8266-12
    1. ESP8266 Wiring
      Pada tahap selanjutnya, hubungkanlah ESP-12 ke PC/Laptop menggunakan kabel FTDI yang telah dipersiapkan untuk programming, kemudian komponen lain seperti LED ke ESP-12 seperti gambar di bawah ini.


    2. Programming
      Buatlah script program menggunakan LUA Uploader seperti script contoh init.lua dan mqtt.lua, kemudian upload program ke ESP8266
      Program Lua Uploader

      untuk melihat fungsi toolbar klik link Tabel Lua Uploader.

       

    3. Test (Monitoring)
      Buka serial monitor atau output screen pada sebelah kanan layar PC/Laptop untuk melihat hasilnya.


    Sample code ESP8266


     init.lua

    -- Constants
    SSID    = "Your SSID"
    APPWD   = "Password"
    
    -- File that is executed after connection
    CMDFILE = "mqtt.lua"
    
    -- Some control variables
    wifiTrys     = 0      -- Counter of trys to connect to wifi
    NUMWIFITRYS  = 200    -- Maximum number of WIFI Testings while waiting for connection
    
    -- Change the code of this function that it calls your code.
    function launch()
      print("Connected to WIFI!")
      print("IP Address: " .. wifi.sta.getip())
    
    -- Call our command file every minute.
      tmr.alarm(0, 1000, 0, function() dofile(CMDFILE) end )
    end
    
    function checkWIFI() 
      if ( wifiTrys > NUMWIFITRYS ) then
        print("Sorry. Not able to connect")
      else
        ipAddr = wifi.sta.getip()
        if ( ( ipAddr ~= nil ) and  ( ipAddr ~= "0.0.0.0" ) )then
          -- lauch()        -- Cannot call directly the function from here the timer... NodeMcu crashes...
          tmr.alarm( 1 , 500 , 0 , launch )
        else
          -- Reset alarm again
          tmr.alarm( 0 , 2500 , 0 , checkWIFI)
          print("Checking WIFI..." .. wifiTrys)
          wifiTrys = wifiTrys + 1
        end 
      end 
    end
    
    print("-- Starting up! ")
    
    -- Lets see if we are already connected by getting the IP
    ipAddr = wifi.sta.getip()
    if ( ( ipAddr == nil ) or  ( ipAddr == "0.0.0.0" ) ) then
    -- We aren't connected, so let's connect
      print("Configuring WIFI....")
      wifi.setmode( wifi.STATION )
      wifi.sta.config( SSID , APPWD)
      print("Waiting for connection")
      tmr.alarm( 0 , 2500 , 0 , checkWIFI )  -- Call checkWIFI 2.5S in the future.
    else
    -- We are connected, so just run the launch code.
     launch()
    end
    -- Drop through here to let NodeMcu run


    File init.lua ini merupakan script penting dari project ini, karena script ini berfungsi untuk menghubungkan ESP8266-12 ke server dengan men-setting SSID Wifi dan Password Wifi yang anda gunakan.


      

    mqtt.lua 

    m = mqtt.Client("device-8d7dc14bf6cf01xxxxxxx",120,"user","password") 
     
    --inisialisasi pin (gpio) 
    pin=2 
    gpio.mode(pin,gpio.OUTPUT) 
    gpio.write(pin,gpio.HIGH) 
     
    --Fungsi di bawah ini berfugsi untuk mengkonekkan device ke ip 
    geeknesia.com 
    function connect() 
     m:connect("geeknesia.com", 1883, 0, function(conn) 
       print("connected") 
       m:lwt("iot/will", "device-8d7dc14bf6cf01xxxxxx", 0, 0) 
       m:subscribe("topic-8d7dc14bf6cf010dxxxxxx",0, function(conn) 
         print("subscribe success") 
       end) 
    end) 
     
    print("selesai connect") 
    end 
    connect() 
     
    --Script dibawah bertujuan supaya jika koneksi terputus maka akan auto 
    reconnect 
    m:on("offline", function(conn) 
      print("Reconnect" ) 
      connect() 
    end) 
     
    --Pesan yang diterima dari topic yang di subscribe 
    --Jika Esp-12 menerima “on” maka pin akan HIGH dan sebaliknya jika 
    menerima  
    --“off” maka pin akan LOW (Tergantung Wiring Esp ke led) 
    m:on("message", function(conn, topic, data) 
      print(topic .. ":" ) 
      if data ~= nil then 
        print(data) 
         if data=="on" then 
           gpio.write(2, gpio.HIGH)
         end 
         if data=="off" then 
           gpio.write(2, gpio.LOW) 
         end 
      end 
    end) 

     

    Dan untuk File mqtt.lua adalah program utama dalam project ini, anda dapat membuat script aplikasi yang anda inginkan atau aplikasi project yang kita bahas, dan memasukan Device Id,Username,Password yang sudah anda dapatkan pada saat anda membuat gateway dan device di akun geeknesia.com, yang dimana ketiga data tersebut berfungsi untuk menghubungkan device (ESP8266-12) ke cloud (geeknesia.com).  


    Note: Pastikan file init.lua dan mqtt.lua ter-upload kedalam ESP8266.