Kamis, 25 Agustus 2022

NODE RED-iot tutorial

 

Pengenalan Node-Red

https://wiki.rdd-tech.com/index.php/knowledge-base/pengenalan-node-red/

1. Apa itu Node-Red?

Node-Red merupakan salah satu perkakas pemrograman (programming tools) yang dapat menghubungkan perangkat keras (hardware), API, dan layanan online dengan cara yang sangat mudah dan menarik.

2. Fitur Node-Red

Node-Red ini memiliki fitur-fitur sebagai berikut:

  1. Flow Editor yang berbasis aplikasi web browser.
  2. Dibuat berdasarkan nodejs.
  3. Flow tersimpan dalam bentuk JSON.

3. Penggunaan Node-Red dalam aplikasi local sensor node

Node-Red dapat menghimpun data dari berbagai sensor node. Sensor node ini bisa berupa sensor yang terpasang bersama mikrokontroler serta modul komunikasi jaringan (bisa WiFi atau Ethernet). Sebagai contoh sensor yang terpasang bersama Arduino MKR1000.

Node-Red juga dapat mempresentasikan data-data yang dikumpulkan dalam berbagai data visual, bisa berupa bagan garis (line chart), meteran (gauge), dan lain sebagainya dengan mudah dan praktis. Berikut langkah penggunaannya:

Instalasi node-red

  1. Siapkan PC/Laptop dan install nodejs terlebih dahulu.
  2. Setelah nodejs berhasil di install, bukan command prompt lalu ketik “node –version && npm –version“, pastika versi dari node dan npmnya adalah 12.15.0 dan 6.14.5.
  3. Setelah itu ketikan pada command prompt “npm install -g –unsafe-perm node-red
  4. Jika proses installasinya berhasil, node-red sudah dapat dipanggil, yaitu dengan cara ketik pada cmd “node-red“.
  5. Node-red sudah siap dipakai jika pada command prompt sudah terdapat tulisan seperti gambar di bawah ini. Setelah itu, buka browser dan ketikan “localhost:1880“. Node-red sudah siap digunakan

Instalasi MQTT broker node-red

  1. Siapkan beberapa sensor node yang akan dihubungkan.
  2. Jika menggunakan arduino sebagai mikrokontroler, install library MQTT pada arduino IDE. Library dapat didownload di https://github.com/256dpi/arduino-mqtt.
  3. Siapkan sebuah jaringan baik WiFi maupun LAN.
  4. Hubungkan Raspberry Pi atau PC pada jaringan.
  5. Jalankan node-red dengan membuka cmd pada windows 10 dan ketik dan enter perintah node-red. IP host/broker (karena host dan broker berada pada hardware yang sama) bisa dilihat pada network setting. Lebih jelasnya dapat dilihat pada gambar 1.1 dan gambar 1.2.
  6. Install MQTT broker pada node-red dengan mengakses menu opsi pada pojok kanan atas>manage palette>ketik node-red-contrib-mqtt-broker>klik install.
  7. Install node red dashboard yang berisi visualisasi data berupa chart, gauge, dan lain sebagainya di menu yang sema dengan MQTT>ketik node-red-dashboard>klik install
  8. Buatlah drag dan drop serta hubungkan palette (untuk membuat flow) seperti pada gambar 1.3 dan gambar 1.4.
  9. Aturlah masing-masing palette dengan cara men-double click-nya, untuk Mosca MQTT broker aturlah alamat IP (sesuai dengan IP PC) dan portnya. Untuk chart dan gauge aturlah topicnya agar sama dengan yang ada di program Arduino.
  10. Upload Program dibawah ini pada mikrokontroler. Catatan: mikrokontroler yang digunakan adalah Arduino MKR1000, jika menggunakan arduino dengan WiFi Shield cukup ubah #include WiFi101.h menjadi WiFi.h. Hasilnya dapat dilihat pada gambar 1.5
//Program Local Node Red menggunakan Arduino MKR1000
//RDD Team

#include <WiFi101.h>
#include <PubSubClient.h>

const char ssid[] = "SSID"; //masukan nama jaringan WiFi
const char pass[] = "PASSWORD"; //masukan password
const char mqtt_server[] = "BROKER";
// masukan alamat server broker
const char username[] = "rdd_user";
const char password[] = "rdd_password";


WiFiClient MKRClient;
PubSubClient client(MKRClient);

unsigned long lastMillis = 0;

const int  analogPin = A0;

int analogVal;

char suhu_string[50]; //agar dapat terbaca di UI Node Red, variable harus berbentuk String 

IPAddress ReadIP;

void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, pass);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());

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

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Create a random client ID
    String clientId = "MKR1000Client-";
    clientId += String(random(0xffff), HEX);
    // Attempt to connect
    if (client.connect(clientId.c_str(),"rdd_user","rdd_password")) {
      Serial.println("connected");
      // Once connected, publish an announcement...
      // ... and resubscribe
      client.subscribe("RDD/Input1");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

void messageReceived(char* topic, byte* payload, unsigned int length) 
{
  
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();

  // Switch on the LED if an 1 was received as first character
  if ((char)payload[0] == '1') {
    digitalWrite(LED_BUILTIN, LOW);   // Turn the LED on (Note that LOW is the voltage level
    // but actually the LED is on; this is because
    // it is active low on the ESP-01)
  } else {
    digitalWrite(LED_BUILTIN, HIGH);  // Turn the LED off by making the voltage HIGH
  }
  
}

void setup() 
{
 Serial.begin(115200);
 //while (!Serial.available());
 analogReadResolution(12);
 analogReference(AR_DEFAULT);

 setup_wifi();
 
 client.setServer(mqtt_server, 1883); //masukan Broker IP, Port Broker
 client.setCallback(messageReceived);
 //printWiFiData();
 //printCurrentNet();
}

void loop() 
{
 /*======konversi Nilai Analog Ke Nilai Temperature*/
 analogVal = analogRead(analogPin);
 float temp = (analogVal/4095.0)*3.3;
 float suhu = (temp*1.51)*100; // nilai temperature
 /*================================================*/
 sprintf(suhu_string,"%.2f", suhu);
 client.loop();
 if (!client.connected()) 
 {
   reconnect();
 }
 
 if (millis() - lastMillis > 1000) 
 {
   lastMillis = millis();
   client.publish("RDD/Temperature", suhu_string); //Publish data "suhu_String" ke MQTT broker dengan topic "RDD/Temperature"
   Serial.print("Suhu = ");
   Serial.println(suhu_string);
 }
}
Gambar 1.1
Gambar 1.2
Kotak berwarna kuning merupakan alamatdan port server (local) dan kotak berwarna merah merupakan IP dan port MQTT broker. Kita dapat mengakses node-red editor dan UI dengan cara mengakses salah satu dari keduanya.
Gambar 1.3
Mosca MQTT broker
Gambar 1.4
Gambar 1.5
UI Node Red

Tidak ada komentar:

Posting Komentar