NodeMCU dengan ADAFRUIT IO

Adafruit IO adalah salah satu penyedia layanan Mqtt server untuk IOT, layanan ini dapat dipergunakan untuk membuat ESP8266 dikendalikan secara remote dengan menggunakan fasilitas subscribe dan publish. Untuk dapat menggunakan layanan ini kita harus mendaftar dahulu disini . Berikut ini adalah langkah - langkahnya :

  1. Buat account terlebih daulu pada adafruit io.
  2. Buat sebuah dashboard baru karena saya menggunakan nodemcu board saya memberi nama dashboard saya dengan NodeMCU.



    3. Kemudian Tekan tombol + di ujung kanan atas pada dashboard yang baru 
        dibuat kemudian pilih Toggle.




    4.  Kemudian atur tampilan switchnya saya membuat menampilkan Label ON
         untuk kondisi on dan OFF untuk kodisi off.




    5. Hal yang paling crusial adalah AIO key yang nantinya akan dipergunakan 
       dalam pengkodean arduino. Jika sebelumnya pernah menggunakan blynk 
       ini seperti authentication token untuk menghubungkan ESP8266 ke             
       Adafruit server. 




   6. Sampai disini konfigurasi di adafruit io telah selesai, langkah berikutnya 
       adalah membuat code pada arduino IDE untuk di upload pada NodeMCU
       boardnya. Silahkan buat sketch baru dan isikan kode berikut pada arduino
       IDE, namun pastikan esp8266 core dan adafruit mqtt library telah terinstall
       pada arduino IDE setelah itu kemudian silahkan upload ke node mcu
       (" saya anggap anda telah mengerti cara mengupload arduino code ke node
        mcu board").




/***************************************************
 ADAFRUIT Mqtt Library for NodeMCU 1.0.0 to control Built in LED
 Created by: Cahyo Hertanto for Secureinstruments
 ****************************************************/

#include <ESP8266WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"

// Deklarasi variable Internal LED
#define internal LED_BUILTIN  

/************************* WiFi Access Point *********************************/

#define WLAN_SSID       "SSID"//SSID router anda
#define WLAN_PASS       "pass"//password router anda

/************************* Adafruit.io Setup *********************************/

#define AIO_SERVER      "io.adafruit.com"
#define AIO_SERVERPORT  1883    
#define AIO_USERNAME    "username"//isi dengan username saat mendaftar di adafruit
#define AIO_KEY         "AIO keys"//AIO key di adafruit

/************ Global State (you don't need to change this!) ******************/

WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_USERNAME, AIO_KEY);

/****************************** Feeds ***************************************/

Adafruit_MQTT_Subscribe onoff = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/onoff");

/*************************** Sketch Code ************************************/

void MQTT_connect();

void setup() {
  pinMode(LED, OUTPUT); /deklarasi buildin led difungsikan sebagai output
  Serial.begin(115200); /serial port untuk debugging dengan baudrate 115200
  delay(10);

  // Connect to WiFi access point.
  Serial.println(); Serial.println();
  Serial.print("Connecting to ");
  Serial.println(WLAN_SSID);

  WiFi.begin(WLAN_SSID, WLAN_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  Serial.println("WiFi connected");
  Serial.println("IP address: "); Serial.println(WiFi.localIP());

  // Setup MQTT untuk subscribe ke topic yang di buat
  mqtt.subscribe(&onoff);

}

uint32_t x=0;

void loop() {
  MQTT_connect();

  Adafruit_MQTT_Subscribe *subscription;
  while ((subscription = mqtt.readSubscription(5000))) {
    // Check if its the onoff button feed
    if (subscription == &onoff) {
      Serial.print(F("On-Off button: "));
      Serial.println((char *)onoff.lastread);
      
      if (strcmp((char *)onoff.lastread, "ON") == 0) {
        digitalWrite(LED, LOW); 
      }
      if (strcmp((char *)onoff.lastread, "OFF") == 0) {
        digitalWrite(LED, HIGH); 
      }
    }
}
}

// Fungsi untuk terkoneksi dengan adafruit
void MQTT_connect() {
  int8_t ret;

  // Stop if already connected.
  if (mqtt.connected()) {
    return;
  }

  Serial.print("Connecting to MQTT... ");

  uint8_t retries = 3;
  while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected
       Serial.println(mqtt.connectErrorString(ret));
       Serial.println("Retrying MQTT connection in 5 seconds...");
       mqtt.disconnect();
       delay(5000);  // wait 5 seconds
       retries--;
       if (retries == 0) {
         // basically die and wait for WDT to reset me
         while (1);
       }
  }
  Serial.println("MQTT Connected!");
}


  7. Jika telah selesai kembali  ke adafuit dashboard dan silahkan ubah kondisi
     switchnya kalau step anda benar maka anda akan mendapati internal LED
     yang berwarna Merah pada NodeMCU board akan berubah kondisinya dari
     padam menjadi nyala atau sebaliknya saat switch di adafruit dashboard
     diubah.

Semoga bermanfaat.


NodeMCU dengan ADAFRUIT IO NodeMCU dengan ADAFRUIT IO Reviewed by cahyohertanto on June 11, 2017 Rating: 5

1 comment:

close