• Tidak ada hasil yang ditemukan

Implementasi IOT Mengontrol LED berbasis WEB

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi IOT Mengontrol LED berbasis WEB"

Copied!
15
0
0

Teks penuh

(1)

Package.json

{

"name": "webserver", "version": "1.0.0",

"description": "the webserver", "main": "server.js",

"scripts": {

"test": "echo \"Error: no test specified\" && exit 1"

},

"keywords": [

"iotwebserver" ],

"author": "Samuel Siburian", "license": "ISC",

"dependencies": {

"nodejs-websocket": "^1.7.1" }

}

Server.js

var socket = require('nodejs-websocket'); var http = require('http');

var fs = require('fs');

var espNode = {};

http.createServer(function(req, res) { if (req.url == '/') {

res.writeHead(200, { 'Content-Type': 'text/html' });

res.end(fs.readFileSync('./public/index.html')); }

if (req.url == '/style.css') {

res.writeHead(200, { 'Content-Type': 'text/css' });

res.end(fs.readFileSync('./public/style.css')); }

if (req.url == '/script.js') {

res.writeHead(200, { 'Content-Type': 'text/javascript' });

res.end(fs.readFileSync('./public/script.js')); }

(2)

res.writeHead(200, { 'Content-Type': 'text/javascript' });

res.end(fs.readFileSync('./public/socket.js')); }

}).listen(8080, function() {

console.log("server running in port 8080"); });

var server = socket.createServer(function(conn) { if (conn.path !== '/') {

var id = conn.path.substring(1, 6);

console.log('new connection coming from esp: ' + id);

espNode[id] = conn; } else

console.log('new connection from client');

conn.on("text", function(res) { var data = JSON.parse(res); console.log(data);

checkID(data.led, function(connection) { if (connection !== false) {

var value = data.value;

connection.sendText(value.toString()); // data.status = "Okay!";

// conn.sendText(JSON.stringify(data)); } else {

data.value = "connection was not establish";

conn.sendText(JSON.stringify(data)); }

}); })

conn.on('close', function(code, reason) { console.log('connection close');

})

conn.on('error', function(err) { console.log(err);

})

}).listen(8888, function() {

console.log("socket running in port 8888"); });

var checkID = function(id, done) { var conn = espNode[id];

if (conn !== undefined) {

(3)

} else {

console.log("no id"); done(false);

}

Index.html

<!DOCTYPE html> <html lang="en">

<head>

<title>Dashboard</title> <meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="style.css"> <script src="socket.js"></script>

</head>

<body> <p>

<h1 align="center">LED CONTROL PANEL</h1> </p>

<div class="card">

<div class="container"> <div align="center">

<span><h3>LED BLINKING</h3></span> </br>

<input id="blinkIn" type="number" min="100" max="10000" style="padding: 2% 2%;

line-height: 10%; font-size: 200%; width:30%; margin-right: 5%;"> <button id="blinkSub" style="padding: 5% 2%; line-height: 10%; font-size: 150%;

width:30%;">Submit</button> </br>

</br> </div>

Return: <span id="blinkRet"></span> </div>

</div>

<div class="card">

<div class="container">

<h3 align="center">LED DIMMER</h3> <b id="dimVal">50</b>

<div align="center">

(4)

value="50" min="0" max="100" style="width:80%;"> <span>100</span>

<!--<button type="button"

id="dimSw">Hidupkan!</button> <span style="padding-right: 10%">100</span>-->

</br> </br> </div>

Return: <span id="dimRet"></span> </div>

</div>

<div class="card">

<div class="container">

<h3 align="center">RGB LED</h3> <div style="margin-left: 10%;">

R: <input id="rgbRanR" type="range" name="points" id="slideA" value="50" min="0" max="248" style="width:50%; margin-right: 3%;"> <b

id="rgbR">32</b></br>

G: <input id="rgbRanG" type="range" name="points" id="slideA" value="50" min="0" max="255" style="width:50%; margin-right: 3%;"> <b id="rgbG" style="margin-right: 6%;">32</b> <input id="rgbCol" value="#323232" type="color" style="width:20%;"></br> B: <input id="rgbRanB" type="range" name="points" id="slideA" value="50" min="0" max="255" style="width:50%; margin-right: 3%;"> <b

id="rgbB">32</b> </div> </br>

Return: <span id="rgbRet"></span> </div>

</div>

</body>

<script src="script.js"></script>

</html>

Script.js

var blinkInput = document.getElementById("blinkIn"), blinkSubmit = document.getElementById("blinkSub"), blinkReturn = document.getElementById("blinkRet");

(5)

led: "blink",

value: blinkInput.value }

conn.send(JSON.stringify(data)); // send through socket using json

});

var dimValue = document.getElementById("dimVal"), dimRange = document.getElementById("dimRan"), dimReturn = document.getElementById("dimRet"), switchStat = true;

dimRange.addEventListener('input', function() { var value = convertBit(this.value, 100); dimValue.innerHTML = this.value;

var data = { led: "dim", value: value };

conn.send(JSON.stringify(data)); });

var rgbRed = document.getElementById("rgbR"), rgbGreen = document.getElementById("rgbG"), rgbBlue = document.getElementById("rgbB"),

rgbRanRed = document.getElementById("rgbRanR"), rgbRanGreen = document.getElementById("rgbRanG"), rgbRanBlue = document.getElementById("rgbRanB"), rgbColor = document.getElementById("rgbCol"), rgbReturn = document.getElementById("rgbRet");

rgbRanRed.addEventListener('input', function() { var value = convertBit(this.value, 255); console.log(this.value);

convert(this.value, function(val) { rgbRed.innerHTML = val;

colInput();

sendRGB(1, value); });

});

rgbRanGreen.addEventListener('input', function() { var value = convertBit(this.value, 255);

convert(this.value, function(val) { rgbGreen.innerHTML = val;

colInput();

sendRGB(2, value); });

(6)

rgbRanBlue.addEventListener('input', function() { var value = convertBit(this.value, 255);

convert(this.value, function(val) { rgbBlue.innerHTML = val;

colInput();

sendRGB(3, value); });

});

var convert = function(val, done) { var v = parseInt(val);

var value = v.toString(16); if (v < 16)

value = "0" + value; done(value);

}

var colInput = function() { var red = rgbRed.innerHTML; var green = rgbGreen.innerHTML; var blue = rgbBlue.innerHTML;

var color = "#" + red + green + blue; rgbColor.value = color;

}

var sendRGB = function(col, val) { var value = col + ":" + val; var data = {

led: "rgb", value: value };

conn.send(JSON.stringify(data)); }

var convertBit = function(value, divider) { return parseInt((parseInt(value) * 1023) / divider);

}

Socket.js

var ip = "192.168.43.82";

var conn = new WebSocket('ws://' + ip + ':8888');

(7)

var data = JSON.parse(result); if (data.led == 'blink') {

blinkReturn.innerHTML = data.value; } else if (data.led == 'dim') {

dimReturn.innerHTML = data.value; } else if (data.led == 'rgb') {

rgbReturn.innerHTML = data.value; }

}

Style.css

body {

background-color: rgba(129, 169, 187, 0.3); }

.card {

float: left;

box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); background-color: rgba(129, 169, 187, 0.50); transition: 0.3s;

width: 33.33%; }

.card:hover {

box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2); }

.container {

padding: 10px 16px; }

@media only screen and (max-device-width: 550px) { body {

background-color: rgba(129, 169, 187, 0.3); }

.card {

float: left;

box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); background-color: rgba(129, 169, 187, 0.50); transition: 0.3s;

width: 100%; }

.card:hover {

box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2); }

.container {

(8)

} }

dimClient.ino

#include <ESP8266WiFi.h> #include <WebSocketClient.h>

const char* ssid = "bles";

const char* password = "chelseafc231"; char path[] = "/dim";

char host[] = "192.168.43.82";

WebSocketClient webSocketClient;

#define ledPin 0

WiFiClient client;

void setup() {

Serial.begin(115200); delay(10);

Serial.println(); Serial.println();

Serial.print("Connecting to "); Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) { delay(500);

Serial.print("."); }

Serial.println("");

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

delay(5000);

// Connect to the websocket server if (client.connect(host, 8888)) { Serial.println("Connected"); } else {

(9)

// Hang on failure }

}

// Handshake with the server webSocketClient.path = path; webSocketClient.host = host;

if (webSocketClient.handshake(client)) { Serial.println("Handshake successful"); } else {

Serial.println("Handshake failed."); while(1) {

// Hang on failure }

}

analogWrite(ledPin, 512); }

void loop() { String data;

if (client.connected()) {

webSocketClient.getData(data); if (data.length() > 0) {

Serial.print("Received data: "); Serial.println(data);

int pwm = data.toInt(); analogWrite(ledPin, pwm); }

} else {

Serial.println("Client disconnected."); while (1) {

// Hang on disconnect. }

} }

blinkClient.ino

#include <ESP8266WiFi.h> #include <WebSocketClient.h>

const char* ssid = "bles";

(10)

char host[] = "192.168.43.82"; WebSocketClient webSocketClient;

#define ledPin 0 int interval = 500; int oldMillis = 0; int ledState = LOW;

// Use WiFiClient class to create TCP connections WiFiClient client;

void setup() {

Serial.begin(115200); delay(10);

// We start by connecting to a WiFi network

Serial.println(); Serial.println();

Serial.print("Connecting to "); Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) { delay(500);

Serial.print("."); }

Serial.println("");

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

delay(5000);

pinMode(ledPin, OUTPUT);

// Connect to the websocket server if (client.connect(host, 8888)) { Serial.println("Connected"); } else {

Serial.println("Connection failed."); while(1) {

// Hang on failure }

}

(11)

webSocketClient.host = host;

if (webSocketClient.handshake(client)) { Serial.println("Handshake successful"); } else {

Serial.println("Handshake failed."); digitalWrite(ledPin, HIGH);

while(1) {

// Hang on failure }

}

}

void loop() { String data;

unsigned long nowMillis = millis();

if(nowMillis - oldMillis >= interval){ oldMillis = nowMillis;

if(ledState == LOW) ledState = HIGH; else

ledState = LOW;

digitalWrite(ledPin, ledState); }

if (client.connected()) {

webSocketClient.getData(data); if (data.length() > 0) {

Serial.print("Received data: "); Serial.println(data);

interval = data.toInt(); }

} else {

Serial.println("Client disconnected."); while (1) {

// Hang on disconnect. }

} }

rgbClient.ino

(12)

const char* ssid = "bles";

const char* password = "chelseafc231"; char path[] = "/rgb";

char host[] = "192.168.43.82";

WebSocketClient webSocketClient;

// Use WiFiClient class to create TCP connections WiFiClient client;

#define redPin 1 #define greenPin 0 #define bluePin 2

void setup() { delay(10);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) { delay(500);

}

delay(5000);

pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); delay(100);

analogWrite(redPin, 0); analogWrite(greenPin, 0); analogWrite(bluePin, 1023);

// Connect to the websocket server if (client.connect(host, 8888)) { // Serial.println("Connected"); } else {

// Serial.println("Connection failed."); while (1) {

// Hang on failure }

}

// Handshake with the server webSocketClient.path = path; webSocketClient.host = host;

if (webSocketClient.handshake(client)) { // Serial.println("Handshake successful"); analogWrite(bluePin, 0);

(13)

} else {

// Serial.println("Handshake failed."); while (1) {

analogWrite(bluePin, 0); analogWrite(redPin,1023); // Hang on failure

} }

delay(1000);

analogWrite(redPin, 0); analogWrite(greenPin, 0); analogWrite(bluePin, 0); }

void loop() { String data;

if (client.connected()) {

webSocketClient.getData(data); if (data.length() > 0) {

changeColor(data); }

} else {

// Serial.println("Client disconnected."); while (1) {

// Hang on disconnect. }

} }

void changeColor(String getColor) { char temp[6];

getColor.toCharArray(temp,7);

char* separator = strchr(temp, ':'); int col = atoi(temp);

int colorVal = atoi(++separator);

// Serial.print(col); Serial.print(" "); Serial.println(colorVal);

if (col == 1) // 1 for red analogWrite(redPin, colorVal);

else if (col == 2) // 2 for green analogWrite(greenPin, colorVal);

else if (col == 3) // 3 for blue analogWrite(bluePin, colorVal);

(14)
(15)

Referensi

Dokumen terkait

Bapak Kusworo Anindito, S.T., M.T., selaku Kepala Program Studi Teknik Informatika, Fakultas Teknologi Industri Universitas Atma Jaya Yogyakarta dan selaku dosen pembimbing II yang

Pengujian dilakukan dengan membandingkan hasil pengukuran sensor yang didapat pada serial monitor NodeMCU dengan jarak kendaraan yang berada pada lahan parkir.. Serial monitor

Masalah-masalah yang diselesaikan adalah masalah yang dialami oleh suatu individu maupun kelompok untuk mendapatkan suatu pencapaian.. Adapun

Pada tahapan ini merupakan tahapan penting selain perancangan website, dimana dalam perancanagan program pada Node-MCU ini terdapat program untuk mengkoneksikan Node-MCU

Dari proses pengujian yang sudah dilakukan, diperoleh data cara kerja Hourmeter Digital menggunakan Web Server Berbasis IoT untuk memastikan proses perancangan alat

Semantic IoT web service yang saat ini telah ditambah CoAP juga mampu menangani permasalahan interoperabilitas khususnya syntactical interoperability dengan

Dengan perkambangan teknologi yang sangat cepat dan diintegrasikan pada Internet of Thing pertanian akan meningkat hasil dari pertanian dan secara terus menerus.

Implementasi IoT untuk pemantauan dalam sektor pertanian melalui platform