• Tidak ada hasil yang ditemukan

DAFTAR PUSTAKA. pada tanggal 10 Juni 2019.

N/A
N/A
Protected

Academic year: 2021

Membagikan "DAFTAR PUSTAKA. pada tanggal 10 Juni 2019."

Copied!
23
0
0

Teks penuh

(1)

63

DAFTAR PUSTAKA

Akmal. 2017. Pengertian Flowchart Dan Simbol-Simbolnya Dalam Pemrograman. https://satujam.com. Diakses pada tanggal 10 Juni 2019.

Alamsyah, Andry. 2003. Pengantar Javascript. http://ilmukomputer.com. Diakses pada tanggal 10 Juni 2019.

Andhika, Farid. 2012. “Protokol Interchangeable Data Pada VMeS (Vessel Messaging System) Dan AIS (Automatic Identification System).” Jurnal Teknik ITS Vol.1. Hal.1.

C, Ariata. 2018. Apa Itu HTML? Pemahaman Dasar Tentang Bahasa Markup Hypertext. https://www.hostinger.co.id. Diakses pada tanggal 10 Juni 2019.

Faisal, Lutfi. 2017. Mengenal Node.js. https://www.codepolitan.com. Diakses pada tanggal 10 Juni 2019.

Harini. 2012. Automatic Identification System (AIS) Sebagai Alat

Bantu Pendeteksi Lokasi Kapal. http://re-teknik.com. Diakses pada tanggal 10 Juni 2019

Mahfud dkk. 2018. “Penerapan Protokol MQTT Pada Teknologi Wan (Studi Kasus Sistem Parkir Univeristas Brawijaya).” Informatika Mulawarman : Jurnal Ilmiah Ilmu Komputer Vol.12, Hal. 2.

Muhar Dian. 2015. Belajar MongoDB: Pengenalan Dasar MongoDB untuk Pemula. https://www.petanikode.com. Diakses pada tanggal 10 Juni 2019.

Masyhuri Imron. 2003. “Kemiskinan Dalam Masyarakat Nelayan.” Jurnal Masyarakat Dan Budaya. Vol.5, Hal.63.

Melia, Fenny. 2014. Diagram Swimlane. https://sis.binus.ac.id. Diakses Pada tanggal 9 Agustus 2019.

Novitasari, Candra. 2018. Pengertian Class Diagram Contoh, Dan Simbolnya.

https://pelajarindo.com. Diakses pada tanggal 10 Juni 2019.

Pratama, Aditya Rahmatullah. 2019. Belajar Unified Modeling Language (UML) - Pengenalan. https://www.codepolitan.com. Diakses Pada tanggal 10 Juni 2019.

Purnama, Evan. 2018. Berkenalan Dengan Teknologi MQTT. https://medium.com.

Diakses pada tanggal 9 Agustus 2019.

Riadi, Muchlisin. 2013. Use Case Diagram. https://www.kajianpustaka.com.

Diakses pada tanggal 10 Juni 2019.

Smith, Ryan. 2018. What Is Laravel Framework?. https://www.quora.com. Diakses pada tanggal 10 Juni 2019.

Wahyuni, Ayu Sri. 2016. Apa Itu Ionic Framework. https://www.codepolitan.com.

Diakses pada tanggal 10 Juni 2019.

Yuliano, Triswansyah. 2007. Pengenalan PHP. http://ilmukomputer.com. Diakses pada tanggal 10 Juni 2019

(2)

64 LAMPIRAN

(3)

Servis.js

var mqtt = require('mqtt');

var mongoose = require('mongoose');

const Device = require('./model/Device');

const TitikIkan = require('./model/TitikIkan');

const DeviceHistory =

require('./model/DeviceHistory');

const Perahu = require('./model/Perahu');

const User = require('./model/User');

mongoose.connect('mongodb://localhost:27017/neldas', {useNewUrlParser: true});

var option = {

host: 'ais.polindra.ac.id', port:1883,

clientId: 'server' };

const client = mqtt.connect(option);

var db = mongoose.connection;

db.on('error', console.error.bind(console, 'connection error: '));

db.once('open', () => {

console.log('db connected ok');

})

client.on('connect', function () { console.log('mqtt connected ok');

client.subscribe("device/request", function(err){

if (!err) {

// console.log('device request subscribed');

}

(4)

function(err){

if (!err) {

// console.log('device request subscribed');

} });

client.subscribe('channel/vessel/+', function(err){

if (!err) {

// console.log('device update subscribed');

} });

client.subscribe("titik-ikan/push", function(err){

if (!err) {

// console.log('titik ikan push subscribed');

} });

client.subscribe("titik-ikan/request", function(err){

if (!err) {

// console.log('titik ikan request subscribed');

} });

client.subscribe("titik-ikan/store", function(err){

if (!err) {

// console.log('titik ikan store subscribed');

} });

client.subscribe("channel/perahu/+", function(err){})

(5)

function(err){

if (!err) {

// console.log('device request subscribed');

} });

client.subscribe('channel/vessel/+', function(err){

if (!err) {

// console.log('device update subscribed');

} });

client.subscribe("titik-ikan/push", function(err){

if (!err) {

// console.log('titik ikan push subscribed');

} });

client.subscribe("titik-ikan/request", function(err){

if (!err) {

// console.log('titik ikan request subscribed');

} });

client.subscribe("titik-ikan/store", function(err){

if (!err) {

// console.log('titik ikan store subscribed');

} });

client.subscribe("channel/perahu/+", function(err){})

(6)

subscribed');

} });

client.subscribe("channel/perahu/+", function(err){})

// client.subscribe('device/tracking', function(err){

// if(!err){

// console.log('device tracking subscribed');

// } // }) });

client.on("message", function (topic, p) { // var result = [topic, p].join(":");

if(topic.match("device/request")){

var data = JSON.parse(p);

// console.log('device reqested by :', data.id_user);

sendDeviceToUser('user', data.id_user);

}

else if(topic.match('channel/vessel/+')){

// result =

result.replace('device/update:', '');

// result = JSON.parse(result);

var result = p.toString();

broadCastDevice(result);

updateDevice(result);

}

else if(topic.match('channel/perahu/+')){

var result = p.toString();

result = JSON.parse(result);

(7)

updateDevice(result);

}

else if(topic.match('channel/perahu/+')){

var result = p.toString();

result = JSON.parse(result);

console.log(result.nama, 'Online');

}

else if(topic.match("titik-ikan/push")){

var data = JSON.parse(p);

console.log('titik ikan push by :', data.id_user);

broadcastTitikIkanToAll();

}

else if(topic.match("titik-ikan/request")){

var data = JSON.parse(p);

// console.log('titik ikan requested by :', data.id_user);

broadcastTitikIkanToUser(data.id_user);

}

else if(topic.match("titik-ikan/store")){

var data = JSON.parse(p);

console.log('titik ikan added by :', data.id_user);

storeTitikIkan(data);

}

})

/*

================================================

================== */

/**

* database service *

(8)

function broadCastDevice(data){

var array = data.split(',');

Device.find().where('no_seri').equals(array[0]).

exec(function(err, devices){

if(devices.length !== 0){

Perahu.find().where('id_device').equals(devices[

0]._id).exec(function(err, perahus){

if(perahus.length !== 0){

var photo = '';

if(!perahus[0].photo){

photo = '/storage/perahus/default.svg';

} else { photo = perahus[0].photo;

}

var data = {

nama: perahus[0].nama, no_seri: array[0], photo: photo,

last_information:

devices[0].last_information }

client.publish('channel/perahu/' + array[0], JSON.stringify(data));

} }) }

}) }

(9)

} }) }

}) }

function sendDeviceToUser(type, userId){

Device.find().where('status').equals(1).exec(fun ction(err, data){

// console.log(JSON.stringify(data));

if(data.length !== 0){

if(type == 'all'){

client.publish('device/tracking', JSON.stringify(data));

// console.log("Send Devices To All : " + JSON.stringify(data));

} else if(type == 'user'){

client.publish('device/user/' + userId +'/getDevice', JSON.stringify(data));

// console.log("Send Devices to User " + JSON.stringify(data));

} } });

}

function updateDevice(data){

var array = data.split(',');

console.log(array);

let today = new

Date().toISOString().slice(0, 10);

let hour = new Date();

var information = {

(10)

console.log(array);

let today = new

Date().toISOString().slice(0, 10);

let hour = new Date();

var information = { position: {

lat: parseFloat(array[2]), lng: parseFloat(array[3]) },

rssi: parseFloat(array[4]), roll: parseFloat(array[5]), pitch:parseFloat(array[6]), battery: parseFloat(array[7]), compass: parseFloat(array[8]), speed: parseFloat(array[9]), time: hour.getHours() + ":" +

hour.getMinutes() + ":" + hour.getSeconds() };

Device.updateOne({no_seri: array[0]}, { last_information: information,

status: parseInt(array[1]) }, function(err, affected, resp) {

DeviceHistory.findOne({no_seri:

array[0], date: today}, function(err, docs){

if(docs == null){

var history = new DeviceHistory({

no_seri: array[0], date: today,

information: [information]

})

history.save();

} else {

docs.update({information:

docs.information.push(information)});

(11)

})

history.save();

} else {

docs.update({information:

docs.information.push(information)});

docs.save().then(() => {

console.log('Device History updated');

});

}

// console.log(docs.length + 'HASIL!!');

});

onlineListen(array[0]);

// sendDeviceToUser('all', '');

});

}

function storeTitikIkan(data){

var titikIkan = new TitikIkan({

jenis: data.jenis,

position_lat: data.position_lat, position_lng: data.position_lng, keterangan: data.keterangan

});

titikIkan.save().then(() => {

console.log('titik ikan stored');

broadcastTitikIkanToAll() });

}

function broadcastTitikIkanToAll(){

TitikIkan.find().where('status').equals(true).ex

(12)

}

function broadcastTitikIkanToAll(){

TitikIkan.find().where('status').equals(true).ex ec(function (err, data) {

console.log(data)

client.publish('titik-ikan', JSON.stringify(data));

console.log('broadcast titik ikan to all user');

});

}

function treshold(data, userId){

var depreceted_index = [];

var i = 1;

console.log("===================================

=")

var array = [];

data.forEach(function(entry){

if(entry.type == "Private"){

if(entry.canView.includes(userId)){

array.push(entry) }

} else {

array.push(entry);

} })

console.log(array);

return array;

}

function onlineListen(no_seri){

setTimeout(()=> {

(13)

return array;

}

function onlineListen(no_seri){

setTimeout(()=> {

let hour = new Date();

var information = { position: { lat: 0, lng: 0 },

rssi: 0, roll: 0, pitch:0, battery: 0, compass: 0, speed: 0,

time: hour.getHours() + ":" + hour.getMinutes() + ":" + hour.getSeconds() };

Device.updateOne({no_seri:

no_seri},{status: 0, last_information:

information}, function(err, affected, resp) { console.log(no_seri + "Offline") });

}, 10000) }

(14)

aa

(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)

BIODATA PENULIS TUGAS AKHIR

Nama : Bayu Rasukma Raga Nomor Induk Mahasiswa : 1603093

Jenis Kelamin : Pria

Tempat & Tanggal Lahir : Indramayu, 7 September 1998 Status : Belum Nikah

Agama : Islam

Asal Ijazah Sekolah : Nama Sekolah Kota Sekolah Tahun Ijazah SD : MI GUPPI TELUKAGUNG Indramayu 2010

SMP : SMPN 1 INDRAMAYU Indramayu 2013 SMK : SMKN 1 INDRAMAYU Indramayu 2016 Program Studi/Jurusan : Teknik Informatika

Alamat Rumah Asal : Ds. Telukagung, Blok Sindu Praja, RT01B/RW01, Kec.

Indramayu, Kab. Indramayu No Telpon./HP : 08987014563

Email : bayurasukmaraga@gmail.com Nama Orang Tua : Wardinah – Nurcasih

Pekerjaan Orangtua : Wiraswasta

Alamat Orang Tua : Ds. Telukagung, Blok Sindu Praja, RT01B/RW01, Kec.

Indramayu, Kab. Indramayu

Judul Tugas Akhir : Rancang Bangun Aplikasi Tracking Perahu Nelayan Dosen Pembimbing : Sumarudin. S.Pd, M.T., M.Sc

Fachrul Pralienka Bani Muhamad, S.ST., M.Kom

16 Agustus 2019 Penulis,

Bayu Rasukma Raga 1603093

Referensi

Dokumen terkait

Tingginya glukosa dalam darah yang berlangsung lama akan menimbulkan beberapa komplikasi dan kerusakan organ pada penderita diabetes melitus (Goud et al, 2011 ; Sanchez et al,

Pada perokok aktif kronis yang terjadi obstruktif kronik berat saluran napas, diketahui dapat terjadi inflamasi, atrofi, metaplasia sel goblet, metaplasia skuamosa

Hal ini dikarenakan enzim bromelain pada sari batang nanas pada kelompok perlakuan memiliki efek anti inflamasi, sedangkan pada kelompok kontrol tidak diberikan zat

Sementara perlakuan akuntansi dalam pencatatan dan penyusunan laporan keuangan sesuai dengan Standar Akuntansi Keuangan – Entitas Tanpa Akuntabilitas

Departemen SHINE berperan sebagai mitra pengembangan bagi individu maupun organisasi yang memiliki minat atau fokus pada studi ekonomi maupun bisnis Islam.. Dengan program

Dari hasil observasi dilapangan dan wawancara yang dilakukan terhadap karyawan Rumah Sakit Gigi dan Mulut Pendidikan Fakultas Kedokteran Gigi Universitas

Tabel 2. Toksisitas isolat Bt terhadap S. Angka-angka dalam satu lajur yang diikuti dengan huruf sama tidak berbeda pada taraf nyata 5% menurut uji DMRT.. usus tengah

Adapun permasalahan yang dihadapi oleh mitra pengabdian yaitu: (1) kurangnya kompetensi mitra dalam mengembangkan bahan ajar digital yang kekinian sesuai