{"id":1174,"date":"2020-03-17T13:14:07","date_gmt":"2020-03-17T06:14:07","guid":{"rendered":"http:\/\/wiki.rdd-tech.com\/?post_type=ht_kb&#038;p=1174"},"modified":"2020-08-19T15:15:47","modified_gmt":"2020-08-19T08:15:47","slug":"pengenalan-node-red","status":"publish","type":"ht_kb","link":"https:\/\/wiki.rdd-tech.com\/index.php\/knowledge-base\/pengenalan-node-red\/","title":{"rendered":"Pengenalan Node-Red"},"content":{"rendered":"\n<h3 id=\"1-apa-itu-node-red\" >1. Apa itu Node-Red?<\/h3>\n\n\n\n<p>Node-Red merupakan salah satu perkakas pemrograman (<em>programming tools<\/em>) yang dapat menghubungkan perangkat keras (<em>hardware<\/em>), API, dan layanan online dengan cara yang sangat mudah dan menarik.<\/p>\n\n\n\n<h3 id=\"2-fitur-node-red\" >2. Fitur Node-Red<\/h3>\n\n\n\n<p>Node-Red ini memiliki fitur-fitur sebagai berikut:<\/p>\n\n\n\n<ol><li><em>Flow Editor<\/em> yang berbasis aplikasi<em> web browser<\/em>.<\/li><li>Dibuat berdasarkan nodejs.<\/li><li><em>Flow <\/em>tersimpan dalam bentuk JSON.<\/li><\/ol>\n\n\n\n<h3 id=\"3-penggunaan-node-red-dalam-aplikasi-local-sensor-node\" >3. Penggunaan Node-Red dalam aplikasi <em>local sensor node<\/em><\/h3>\n\n\n\n<p>Node-Red dapat menghimpun data dari berbagai <em>sensor node<\/em>. 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.<\/p>\n\n\n\n<p>Node-Red juga dapat mempresentasikan data-data yang dikumpulkan dalam berbagai data visual, bisa berupa bagan garis (<em>line chart<\/em>), meteran (<em>gauge<\/em>), dan lain sebagainya dengan mudah dan praktis. Berikut langkah penggunaannya:<\/p>\n\n\n\n<h4 id=\"instalasi-node-red\" >Instalasi node-red<\/h4>\n\n\n\n<ol><li>Siapkan PC\/Laptop dan<em> install<\/em> nodejs terlebih dahulu. <\/li><li>Setelah nodejs berhasil di install, bukan <em>command prompt <\/em>lalu ketik &#8220;<strong>node &#8211;version &amp;&amp; npm &#8211;version<\/strong>&#8220;, pastika versi dari node dan npmnya adalah 12.15.0 dan 6.14.5.<\/li><li>Setelah itu ketikan pada command prompt &#8220;<strong>npm install -g &#8211;unsafe-perm node-red<\/strong>&#8220;<\/li><li>Jika proses installasinya berhasil, node-red sudah dapat dipanggil, yaitu dengan cara ketik pada cmd &#8220;<strong>node-red<\/strong>&#8220;.<\/li><li>Node-red sudah siap dipakai jika pada command prompt sudah terdapat tulisan seperti gambar di bawah ini. Setelah itu, buka browser dan ketikan &#8220;<strong>localhost:1880<\/strong>&#8220;. Node-red sudah siap digunakan<\/li><\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"593\" src=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/image-1024x593.png\" alt=\"\" class=\"wp-image-1359\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/image-1024x593.png 1024w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/image-300x174.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/image-768x445.png 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/image-50x29.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/image-920x533.png 920w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/image-600x348.png 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/image-320x185.png 320w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/image.png 1103w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 id=\"instalasi-mqtt-broker-node-red\" >Instalasi MQTT broker node-red<\/h4>\n\n\n\n<ol><li>Siapkan beberapa sensor node yang akan dihubungkan.<\/li><li>Jika menggunakan arduino sebagai mikrokontroler, <em>install<\/em> library MQTT pada arduino IDE. Library dapat didownload di <a href=\"https:\/\/github.com\/256dpi\/arduino-mqtt\">https:\/\/github.com\/256dpi\/arduino-mqtt<\/a>.<\/li><li>Siapkan sebuah jaringan baik WiFi maupun LAN.<\/li><li>Hubungkan Raspberry Pi atau PC pada jaringan.<\/li><li>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.<\/li><li>Install MQTT broker pada node-red dengan mengakses menu opsi pada pojok kanan atas&gt;manage palette&gt;ketik node-red-contrib-mqtt-broker&gt;klik install.<\/li><li>Install node red dashboard yang berisi visualisasi data berupa chart, gauge, dan lain sebagainya di menu yang sema dengan MQTT&gt;ketik  node-red-dashboard&gt;klik install<\/li><li>Buatlah drag dan drop serta hubungkan palette (untuk membuat <em>flow<\/em>) seperti pada gambar 1.3 dan gambar 1.4.<\/li><li>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.<\/li><li>Upload Program dibawah ini pada mikrokontroler. <strong>Catatan: <\/strong>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<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/Program Local Node Red menggunakan Arduino MKR1000\n\/\/RDD Team\n\n#include &lt;WiFi101.h>\n#include &lt;PubSubClient.h>\n\nconst char ssid&#91;] = \"SSID\"; \/\/masukan nama jaringan WiFi\nconst char pass&#91;] = \"PASSWORD\"; \/\/masukan password\nconst char mqtt_server&#91;] = \"BROKER\";\n\/\/ masukan alamat server broker\nconst char username&#91;] = \"rdd_user\";\nconst char password&#91;] = \"rdd_password\";\n\n\nWiFiClient MKRClient;\nPubSubClient client(MKRClient);\n\nunsigned long lastMillis = 0;\n\nconst int  analogPin = A0;\n\nint analogVal;\n\nchar suhu_string&#91;50]; \/\/agar dapat terbaca di UI Node Red, variable harus berbentuk String \n\nIPAddress ReadIP;\n\nvoid setup_wifi() {\n\n  delay(10);\n  \/\/ We start by connecting to a WiFi network\n  Serial.println();\n  Serial.print(\"Connecting to \");\n  Serial.println(ssid);\n\n  WiFi.begin(ssid, pass);\n\n  while (WiFi.status() != WL_CONNECTED) {\n    delay(500);\n    Serial.print(\".\");\n  }\n\n  randomSeed(micros());\n\n  Serial.println(\"\");\n  Serial.println(\"WiFi connected\");\n  Serial.println(\"IP address: \");\n  ReadIP = WiFi.localIP();\n  Serial.println(ReadIP);\n}\n\nvoid reconnect() {\n  \/\/ Loop until we're reconnected\n  while (!client.connected()) {\n    Serial.print(\"Attempting MQTT connection...\");\n    \/\/ Create a random client ID\n    String clientId = \"MKR1000Client-\";\n    clientId += String(random(0xffff), HEX);\n    \/\/ Attempt to connect\n    if (client.connect(clientId.c_str(),\"rdd_user\",\"rdd_password\")) {\n      Serial.println(\"connected\");\n      \/\/ Once connected, publish an announcement...\n      \/\/ ... and resubscribe\n      client.subscribe(\"RDD\/Input1\");\n    } else {\n      Serial.print(\"failed, rc=\");\n      Serial.print(client.state());\n      Serial.println(\" try again in 5 seconds\");\n      \/\/ Wait 5 seconds before retrying\n      delay(5000);\n    }\n  }\n}\n\nvoid messageReceived(char* topic, byte* payload, unsigned int length) \n{\n  \n  Serial.print(\"Message arrived &#91;\");\n  Serial.print(topic);\n  Serial.print(\"] \");\n  for (int i = 0; i &lt; length; i++) {\n    Serial.print((char)payload&#91;i]);\n  }\n  Serial.println();\n\n  \/\/ Switch on the LED if an 1 was received as first character\n  if ((char)payload&#91;0] == '1') {\n    digitalWrite(LED_BUILTIN, LOW);   \/\/ Turn the LED on (Note that LOW is the voltage level\n    \/\/ but actually the LED is on; this is because\n    \/\/ it is active low on the ESP-01)\n  } else {\n    digitalWrite(LED_BUILTIN, HIGH);  \/\/ Turn the LED off by making the voltage HIGH\n  }\n  \n}\n\nvoid setup() \n{\n Serial.begin(115200);\n \/\/while (!Serial.available());\n analogReadResolution(12);\n analogReference(AR_DEFAULT);\n\n setup_wifi();\n \n client.setServer(mqtt_server, 1883); \/\/masukan Broker IP, Port Broker\n client.setCallback(messageReceived);\n \/\/printWiFiData();\n \/\/printCurrentNet();\n}\n\nvoid loop() \n{\n \/*======konversi Nilai Analog Ke Nilai Temperature*\/\n analogVal = analogRead(analogPin);\n float temp = (analogVal\/4095.0)*3.3;\n float suhu = (temp*1.51)*100; \/\/ nilai temperature\n \/*================================================*\/\n sprintf(suhu_string,\"%.2f\", suhu);\n client.loop();\n if (!client.connected()) \n {\n   reconnect();\n }\n \n if (millis() - lastMillis > 1000) \n {\n   lastMillis = millis();\n   client.publish(\"RDD\/Temperature\", suhu_string); \/\/Publish data \"suhu_String\" ke MQTT broker dengan topic \"RDD\/Temperature\"\n   Serial.print(\"Suhu = \");\n   Serial.println(suhu_string);\n }\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"982\" height=\"514\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red0.png\" alt=\"\" class=\"wp-image-1180\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red0.png 982w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red0-300x157.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red0-768x402.png 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red0-50x26.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red0-920x482.png 920w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red0-600x314.png 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red0-320x167.png 320w\" sizes=\"(max-width: 982px) 100vw, 982px\" \/><figcaption>Gambar 1.1<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"976\" height=\"516\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red1.png\" alt=\"\" class=\"wp-image-1181\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red1.png 976w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red1-300x159.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red1-768x406.png 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red1-50x26.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red1-920x486.png 920w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red1-600x317.png 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red1-320x169.png 320w\" sizes=\"(max-width: 976px) 100vw, 976px\" \/><figcaption>Gambar 1.2<br>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.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"495\" src=\"http:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red2-1-1024x495.png\" alt=\"\" class=\"wp-image-1185\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red2-1-1024x495.png 1024w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red2-1-300x145.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red2-1-768x372.png 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red2-1-50x24.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red2-1-920x445.png 920w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red2-1-600x290.png 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red2-1-320x155.png 320w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/02\/node-red2-1.png 1362w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Gambar 1.3<br>Mosca MQTT broker<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"549\" src=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodered-1024x549.png\" alt=\"\" class=\"wp-image-1361\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodered-1024x549.png 1024w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodered-300x161.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodered-768x412.png 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodered-50x27.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodered-1536x824.png 1536w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodered-920x494.png 920w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodered-600x322.png 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodered-320x172.png 320w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodered.png 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Gambar 1.4<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"549\" src=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodred1-1024x549.png\" alt=\"\" class=\"wp-image-1363\" srcset=\"https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodred1-1024x549.png 1024w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodred1-300x161.png 300w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodred1-768x412.png 768w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodred1-50x27.png 50w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodred1-1536x824.png 1536w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodred1-920x494.png 920w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodred1-600x322.png 600w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodred1-320x172.png 320w, https:\/\/wiki.rdd-tech.com\/wp-content\/uploads\/2020\/08\/Nodred1.png 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Gambar 1.5<br>UI Node Red<\/figcaption><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"author":4,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0},"ht_kb_category":[10],"ht_kb_tag":[24,43],"_links":{"self":[{"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/ht_kb\/1174"}],"collection":[{"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/ht_kb"}],"about":[{"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/comments?post=1174"}],"version-history":[{"count":11,"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/ht_kb\/1174\/revisions"}],"predecessor-version":[{"id":1614,"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/ht_kb\/1174\/revisions\/1614"}],"wp:attachment":[{"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/media?parent=1174"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/ht_kb_category?post=1174"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/wiki.rdd-tech.com\/index.php\/wp-json\/wp\/v2\/ht_kb_tag?post=1174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}