Normalisasi

Konsep Normalisasi

 Perancangan database harus dilakukan secara cermat agar dihasilkan database yang efisien dalam penggunaan ruang penyimpanan, cepat dalam pengaksesan dan mudah dalam manipulasi data. Salah satu cara yang dapat dilakukan untuk merancang database seperti itu adalah dengan melakukan normalisasi.

Normalisasi adalah teknik peracangan yang banyak digunakan sebagai pemandu dalam merancang basisdata relational. Pada dasarnya normalisasi adalah proses dua langkah yang  meletakkan data dalam bentuk tabulasi dengan menghilangkan kelompok berulang lalu menghilangkan data yang terduplikasi dari tabel relasional. dan hapus data.

Teori normalisasi didasarkan pada konsep bentuk normal. Sebuah tabel relasional dikatakan berada pada bentuk normal tertentu jika tabel memenuhi himpunan batasan tertentu.  Proses normalisasi merupakan proses pengelompokan data elemen menjadi tabel-tabel yang menunjukkan entity dan reasinya.

Normalisasi merupakan proses penyusunan tabel-tabel yang tidak redudant (double), yang dapat menyebabkan anolami pada saat operasi menipulasi data seperti tambah data, ubah data, dan hapus data.

Pada waktu menormalisasi basisdata, ada empat tujuan yang harus dicapai, yaitu :

  1. Mengatur data dalam kelompok-kelompok sehingga masing-masing kelompok hanya menangani bagian kecil sistem.
  2. Meminimalkan jumlah data berulang dalam basisdata.
  3. Membuat basisdata yang datany dapat diakses dan dimanipulasi secara cepat dan efisien tanpa melupakan integritas data.
  4. Mengatur data sedemikian rupa sehingga ketika memodifikasi data, kita hanya mengubah pada satu tempat.

Tujuan normalisasi adalah membuat kumpulan tabel relasional yang bebas dari data berulang dan dapat dimodifikasi secara benar dan konsisten.

Aturan Normalisasi.

Berikut adalah aturan-aturan normalisasi :

  1. Hilangkan kelompok berulang, buat tabel terpisah untuk setiap himpunan atribut yang berhubungan dan tentukan kunci utama pada masing-masing tabel.
  2. Hilangkan data berulang, jika sebuah atribut hanya tergantung pada sebagian kunci utama gabungan, pindahkan atribut ke tabel lain.
  3. Hilangkan kolom yang tidak tergantung pada kunci, jika atribut tidak tergantung pada kunci, pindahkan atribut ke tabel lain.
  4. Pisahkan relasi majemuk, tidak ada tabel yang bisa mengandung dua atu lebih relasi satu ke banyak atau banyak ke banyak yang tidak berhubungan langsung.
  5. Pisahkan relasi majemuk yang berhubungan secara semantik, ada batasan pada informasi yang memperbolehkan pemisahan relasi banyak ke banyak yang berhubungan secara logis.
  6. Bentuk normal optional sebuah model hanya dibatasi oleh fakta sederhana.
  7. Bentuk normal domain key, sebuah model harus terbebas dari semua anomaly.

Field/Atribut Kunci

Setiap file selalu terdapat kunci dari file berupa satu field atau satu set field yang dapat mewakili record. Misalnya Kode Guru merupakan kunci dari tabel Guru, setiap pencarian cukup dengan menyebutkan kode guru tersebut, maka dapat diketahui nama, alamat dan atribut lainnya mengenai guru tersebut. Berikut jenis-jenis dari kunci yang mewakili suatu record.

  1. Candidate Key (Kunci Kandidat)

Kunci kandidat adalah satu atribut atau satu set minimal atribut yang mengidentifikasi secara unik suatu kejadian spesifik dari entity. Jika satu kunci kandidat berisi lebih dari satu atribut, maka biasanya disebut disebut sebagai composite key (kunci campuran/gabungan). Contoh :

File guru berisi atribut : kode Guru, Nama Guru, Tempat Lahir, Tanggal Lahir, Jeis Kelamin, agama, pendidikan, jabatan, masa tugas dan nomor telp.

Kunci kandidat dari file guru tersebut adalah kode guru karena bersifat unik karena tidak mungkin ganda.

  • Primary Key (Kunci Primer)

Primary key adalah satu atribut atau satu set minimal atribut yang tidak hanya mengidentifikasi secara unik suatu kejadian spesifik, tapi juga dapat mewakili setiap kejadian dari suatu entity. Setiap kunci kandidat mempunyai peluang untuk menjadi primary key. Contoh:

Kunci primer dari file guru adalah : Kode guru, karena unik tidak mungkin ganda dan mewakili secara menyeluruh terhadap entity guru dan setiap guru selalu punya kode guru.

  • Alternate Key (Kunci Alternatif)

Alternate key adalah kunci kandidat yang tidak dipakai sebagai primary key

  • Foreign Key (Kunci Tamu)

Foreign Key adalah satu atribut (atau satu set atribut) yang melengkapi satu relationship (hubungan) yang menunjukkan ke induknya. Kunci tamu ditempatkan pada entity anak dan sama dengan kunci primary induk direlasikan. Hubungan antara entity induk dengan anak adalah hubungan satu lawan banyak (one to many relationship)

Kebergantungan Fungsi (Function Dependency)

Konsep ketergantungan fungsional adalah dasar untuk tiga bentuk normal pertama. Sebuah kolom y suatu tabel relational R dikatakan tergantung secara fungsional pada kolom x jika dan hanya jika setiap nilai x pada R berhubungan dengan tepat satu nilai y pada suatu saat tertentu. X dan y bisa berupa gabungan kolom. Mengatakan bahwa kolom y tergantung secara fungsional pada x sama dengan mengatakan bahwa nilai kolm x menentukan nilai kolom y. jika kolom x dalh kunci utama, maka semua kolom pada tabel relational R harus tergantung secara fungsional pada x.

Bentuk-Bentuk Normalisasi.

Bentuk normalisasi adalah suatu aturan yang dikenakan pada tabel-tabel dalam basis data dan harus dipenuhi oleh tabel-tabel tersebut pada level-level normalisasi. Ada beberapa bentuk normalisasi, diantaranya adalah sebagai berikut :

  1. Bentuk Tidak Normal.

Bentuk ini merupakan kumpulan data yang akan direkam, tidak ada keharusan mengikuti format tertentu, dapat saja tidak lengkap dan terduplikasi. Data dikumpulkan apa adanya sesuai keadaannya.

  1. Bentuk Normal Pertama (First Normal Form/1NF)

Bentuk Normal Pertama mempunyai ciri yaitu setiap data dibentuk dalam flat file (file datar/rata), data dibentuk dalam satu record demi satu record dan nilai dari field berupa “atomic value”. Tidak ada set atribut yang berulang-ulang atau atribut bernilai ganda (multi value). Tiap field hanya satu pengertian, bukan merupakan kumpulan kata yang mempunyai arti mendua, hanya satu arti saja dan juga bukanlah pecahan kata-kata sehingga artinya lain.

  1. Bentuk Normal Kedua (Second Normal Form/2NF)

Bentuk normal ke dua terpenuhi jika normalisasi tahap pertama terpenuhi. Bentuk Normal Kedua mempunyai syarat yaitu bentuk data telah memenuhi kriteria bentuk norma ke satu. Atribut bukan kunci haruslah bergantung secara fungsi pada kunci utama/primary key. Sehingga untuk membentuk normal ke dua haruslah sudah ditetukan kunci-kunci field. Kunci field haruslah unik dan dapat mewakili atribut lain yang menjadi anggotanya.

  1. Bentuk Normal Ketiga (Third Normal Form/3NF)

Untuk menjadi bentuk normal ketiga maka relasi haruslah dalam bentuk normal kedua dan semua atribut bukan primary tidak punya hubungan yang transitif. Dengan kata lain, setiap atribut bukan kunci haruslah bergantung hanya pada primary key secara menyeluruh.

  1. Boyce-Codd Normal Form (BCNF)

Boyce Codd Normal Form mempunyai paksaan yang lebih kuat dari bentuk normal ke tiga. Untuk menjadi BCF, relasi harus dalam bentuk normal kesatu dan setiap atribut harus bergantung fungsi pada atribut superkey

ENTITY RELATIONSHIP DIAGRAM (ERD)

Konsep ERD

Entity relationship data model didasarkan pada persepsi terhadap dunia nyata yang tersusun atas kumpulan objek-objek dasar yang disebut entitas dan hubungan antar objek. Entitas adalah suatu atau objek dalam dunia nyata yang dapat dibedakan dari objek lain. Sebagai contoh, masing-masing mahasiswa adalah entitas dan mata kuliah dapat dianggap sebagai entitas.

Entitas digambarkan dapam basisdata dengan kumpulan atribut. Misalnya atribut nama, nim, alamat dan kota dapat mendeskripsikan entitas dari mahasiswa.

Model Entity Relationship diperkenalkan pertama kali oleh P.P. Chen pada tahun 1976. Model ini dirancang untuk menggambarkan persepsi dari pemakai dan berisi obyek-obyek dasar yang disebut entity dan hubungan antar entity-entity tersebut yang disebut relationship.

Desain basis data secara konseptual dimodelkan dalam bentuk notasi grafis yang disebut ERD (Entity Relationship Diagram). ERD merupakan notasi grafis dalam pemodelan data konseptual yang mendeskripsikan hubungan antara penyimpanan. ERD digunakan untuk memodelkan struktur data dan hubungan antar data, karena hal ini relatif kompleks. Dengan ERD kita dapat menguji model dengan mengabaikan proses yang harus dilakukan.

Komponen-Komponen ERD

ERD mempunyai komponen-komponen sebagai berikut yaitu:

  1. Entity dalah suatu objek yang dapat diidentifikasi dalam lingkungan pemakai, sesuatu yang penting bagi pemakai dalam konteks sistem yang akan dibuat. Entiti digambarkan dalam bentuk persegi empat.

  1. Atribut merupakan elemen dari entity, dan berfungsi mendeskripsikan karakter entity. Entiti digambarkan dalam bentuk elips. Misalnya atribut nama barang dari etitas barang.

  1. Relasi/Hubungan (Relationsip) adalah hubungan alamiah yang terjadi antara satu atau lebih entitas. Kardinalitas menentukan kejadian suatu entitas untuk satu kejadian pada entitas yang berhubungan.

  1. Derajat Kardinalitas (Cardinality Degree)

Hubungan antar entitas ditandai pula oleh derajat kardinalitas. Fungsi dari derajat kardinalitas ini adalah untuk menentukan entitas kuat dan entitas lemah. Tiga jenis derajat kardinalitas adalah :

  1. Relasi satu ke satu (one to one relationship). Yang berarti setiap entitas hanya berelasi dengan satu entitas lainnya, misalnya setiap anggota entitas A hanya boleh berhubungan dengan satu anggota entitas B, begitu pula sebaliknya.
  2. Relasi satu ke banyak (one to many relationship). Yang berarti setiap entitas dapat mempunyai relasi lebih dari satu pada entitas lainnya, misalnya Setiap anggota entitas A dapat berhubungan dengan lebih dari satu anggota entitas B tetapi tidak sebaliknya.
  3. Relasi banyak ke banyak (many to many relationship). Pada relasi ini banyak entitas dapat berelasi dengan banyak entitas lainnya, misalnya Setiap entitas A dapat berhubungan dengan banyak entitas himpunan entitas B dan demikian pula sebaliknya.

Metodologi ERD

  1. Menetukan Entitas yaitu menentukan peran, kejadian, lokasi, hal nyata, dan konsep dimana pengguna akan menyimpan data.
  2. Menentukan Relasi yaitu menentukan hubungan antar pasangan entitas menggunakan matriks relasi.
  3. Gambar ERD Sementara yaitu entitas digambarkan dengan kotak dan relasi dengan garis yang menghubungkan entitas.
  4. Isi Kardinalitas yaitu menentukan jumlah kejadian satu entitas untuk sebuah kejadian pada entitas yang berhubungan
  5. Tentukan Kunci Utama yaitu menentukan atribut yang mengidentifikasi satu dan hanya satu kejadian pada entitas masing-masing entitas.
  6. Gambarkan ERD berdasarkan Kunci yaitu menghilangkan relasi many to many dan memasukkan primary dan kunci tamu pada masing-masing entitas.
  7. Menentukan Atribut yaitu menuliskan field-field yang diperlukan oleh sistem.
  8. Pemetaan Atribut yaitu untuk masing-masing atribut, memasangkan atribut dengan satu entitas yang sesuai.
  9. Gambarkan ERD dengan atribut yaitu mengatur ERD dari langkah 6 dengan menambah entitas atau relasi yang ditemukan pada langkah 8.
  10. Periksa Hasil yaitu apakah ERD sudah menggambarkan sistem yang akan dibangun

Perancangan Input

Konsep Perancangan Input

Perancangan input merupakan perancangan masukkan data atau lebih dikenal dengan sebutan form input (kotak masukkan). Rancangan Input merupakan jembatan yang menghubungkan perangkat lunak dengan user dan tergantung apakah sistem tersebut Online / Batch.

Perancangan input juga merupakan awal dimulainya proses informasi. Bahan mentah dari informasi adalah data yang terjadi dari transaksi-transaksi yang dilakukan oleh organisasi. Formulir adalah perangkat penting untuk mengendalikan aliran kerja dan digunakan untuk menangkap (capture) data yang terjadi atau sering juga disebut Dokumen Dasar.

Perancangan input adalah konversi data mentah menjadi output. Kegiatan yang dilakukan dalam perancangan input seperti mengup-date database, menggabungkan database, memasukan dan mengolah olah data langsung serta membuat dialog dengan sistem.

Tujuan dari rancangan input adalah sebagai berikut :

  1. Mengontrol jumlah data input. Dimana proses penyiapan dan pemasukkan data sangat tergantung pada manusia, dengan mengurangi kuantitas kebutuhan data, maka akan mengurangi biaya.
  2. Menghindari kesalahan data. Dimana kesalahan data, dapat dikurangi dengan rancangan input yang baik, dengan teknik validasi (program komputer)
  3. Menghindari keterlambatan proses. Dimana keterlambatan proses biasanya disebabkan oleh pemasukkan data yang bersifat menunggu (BOTTLE NECK), kita harus menghindarinya.
  4. Merancang pengolahan yang sederhana. Dimana rancangan sistem yang baik, harus sesuai dengan orang yang mengoperasikannya dan mudah dipahami (USER FRIENDLY) tanpa melupakan aspek kontroling data.
  5. Menentukan kebutuhan input sistem baru. Dimana bentuk input yang akan dirancang dapat ditentukan dari data flow diagram (DFD) sistem baru yang telah dibuat dengan melihat dataflow yang terjadi dari satu proses ke proses lainnya.
  6. Menentukan parameter dokumen input, setelah bentuk output dirancang, maka selanjutnya menentukkan PARAMETER dari dokumen INPUT tersebut, (Fungsi, Sumber, Tujuan, Frekwensi, Kondisi, Media & Bentuk)

Media Input

  1. Formulir Kertas

Dokumen sumber yang membutuhkan pengisian dengan metode tulisan tangan atau pengetikan. Perancangan formulir kertas melibatkan

  • Pemilihan kertas yang tepat – Ukuran
  • Manifolding – Zoning
  • Penyiapan instruksi
  • Pembuatan kapsion dan penggambaran field data
  • Pemberian spasi
  • Pemberian sekuens
  1. Formulir Elektronik

Rancangan layar entri data yang merefleksikan dokumen sumber. Komponen yang digunakan adalah sebagai berikut :

  1. Zoning
  2. Instruksi
  3. Garis, kotak dan kapsion
  4. Indikator field data
  5. Urutan pedoman perancangan Perancangan formulir elektronik
  6. Rancangan field data
  7. Pengaturan kapsion dan field data
  8. Rancangan pesan pada layar
  9. Perangkat entri langsung

Perangkat yang dapat digunakan untuk memasukkan data secara langsung, antara lain

  1. Magnetic Ink Character Recognition (MICR)
  2. Optical Character Recognition (OCR)
  3. Digitizer
  4. Image scanner
  5. Perangkat Teller Machines (ATM)
  6. Mouse
  7. Voice recognition
  8. Kode

Kode digunakan untuk :

  1. Meringkas input data
  2. Mengklasifikasi dan mengidentifikasi item data
  3. Mengambil atau memilih item data tertentu
  4. Memperbolehkan satu atau lebih arah tindakan untuk terjadi menurut nilai yang disimpan dalam field kode

Yang termasuk struktur kode adalah

  1. Sekuens
  2. Blok
  3. Grup
  4. Kode spesial (kode bar & kode warna)
  5. Menu

Menu dibedakan atas menu basis teks dan visual. Jenis menu visual adalah menu pull-down, nested, shingled, tiled, icon, sentuh, isyarat dan suara.

  1. Bahasa natural

Memungkinkan sistem komputer mengerti bahasa manusia. Bahasa natural berupa dialog percakapan dan antarmuka database.

 

Sekilas Tentang Routing

Dalam satu jaringan yang sama setiap komputer akan terhubung dengan komputer lainnya, setiap packet yang dikirim akan diterima dengan cepat dan mudah. Berbeda bila masing-masing komputer memiliki jaringan yang berbeda, misalnya dalam 1 kantor, jaringan untuk bagian SDM dipisah dengan jaringan bagian Keuangan, maka secara otomatis kedua jaringan tidak dapat berkomunikasi.

Agar dapat melakukan komunikasi antar jaringan yang berbeda dibutuhkan peralatan
yang disebut router. Router dapat berupa komputer yang dikonfigurasi sebagai router,
ataupun perangkat yang didesain khusus untuk router, misalnya dari Cisco, Adtran,
Juniper, Maipu dll.

Gambar 1. Contoh konfigurasi jaringan berbeda

Permasalahan pada gambar di atas adalah network LAN 1 yang berada pada bagian kiri dengan blok IP 192.168.10.0 tidak dapat berkomunikasi dengan network LAN 2 yang berada di sebelah kanan dengan blok IP 192.168.20.0. Untuk menghubungkan keduanya dibutuhkan router yang berfungsi untuk me-routing packet dari network LAN 1 ke LAN 2 dan sebaliknya.

Berikut konfigurasi untuk router dengan jenis sistem operasi Windows, Linux dan router
Cisco.

Windows:
Router 1 : route add 192.168.2.0 mask 255.255.255.0 10.10.10.2
Router 2 : route add 192.168.1.0 mask 255.255.255.0 10.10.10.1

Linux:
Router 1 : route -add 192.168.2.0 netmask 255.255.255.0 10.10.10.2
Router 2 : route -add 192.168.1.0 netmask 255.255.255.0 10.10.10.1

Cisco:
Router 1 : ip route 192.168.2.0 255.255.255.0 10.10.10.2
Router 2 : ip route 192.168.1.0 255.255.255.0 10.10.10.1
Gambar jaringan yang dilengkapi dengan konfigurasi router dapat dilihat pada gambar berikut :

Gambar 2. Jaringan dan konfigurasi router

Untuk melihat table routing pada WindowsXP, dari command prompt berikan perintah
route print, Linux dengan perintah route –n dan router Cisco dengan show ip route.

Gambar 3. Contoh tampilan perintah route print

Sekilas Tentang Multimedia

Definisi Multimedia

¨Multimedia berasal dari dua kata

  • Multi –> Banyak
  • Media/Medium –> Sarana berkomunikasi untuk menyampaikan informasi.

Berikut definisi Multimedia yaitu.

  1. Kombinasi dari komputer dan video (Rosch, 1996)
  2. Kombinasi dari tiga elemen: suara, gambar, dan teks (McComick, 1996)
  3.  Kombinasi dari paling sedikit dua media input atau output. Media ini dapat berupa audio (suara, musik), animasi, video, teks, grafik dan  gambar (Turban dan kawan-kawan, 2002)
  4. (Robin dan Linda, 2001) Alat yang dapat menciptakan presentasi yang dinamis dan interaktif yang mengkombinasikan teks, grafik, animasi, audio dan video
  5. Multimedia dalam konteks komputer menurut Hofstetter 2001 adalah: pemanfaatan komputer untuk membuat dan menggabungkan teks, grafik, audio, video, dengan menggunakan tool dan link yang memungkinkan pemakai berinteraksi, berkreasi, dan berkomunikasi.

Sehingga dapat disimpulkan bahwa :

“ Multimedia adalah penggunaan komputer untuk membuat dan menggabungkan teks, grafik, audio, video dan animasi dengan menggabungkan link dan tool yang memungkinkan pemakai melakukan navigasi, berinteraksi, berkreasi, dan berkomunikasi untuk menyampai informasi “

Jenis Multimedia

Mengapa Multimedia?

Menurut ¨Francis M. Dwyer

  • Penyerapan sebesar 1,5% melalui sentuhan
  • Penyerapan sebesar 3,5% melalui penciuman
  • Penyerapan sebesar 11% melalui pendengaran
  • Penyerapan sebesar 83% melalui penglihatan

Menurut riset Computer Technology Research (CTR):

  • Orang mampu mengingat 20% dari yang dilihat
  • Orang mampu mengingat 30% dari yang didengar
  • Orang mampu mengingat 50% dari yang didengar dan dilihat
  • Orang mampu mengingat 70% dari yang didengar, dilihat, dan dilakukan.

Selain itu dengan Multimedia dapat mengubah :

  • Mengubah tempat kerja.

  • Mengubah cara belanja.

  • Mengubah cara bisnis.

  • Mengubah cara memperoleh informasi.

  • Mengubah cara belajar.

Komponen Multimedia

Menurut James A. Senn, komponen multimedia

Pemanfaatan Multimedia

a. Hiburan

b. Pendidikan

c. Militer

d. Transportasi

e. Komunikasi

f. Arsitektur

g. Medis

h. Bisnis

 

Software Aplikasi Multimedia

a. Windows

  • Adobe Photoshop,
  • Macromedia
  • Swift
  • Ulead
  • Corel
  • Windows Movie maker

b. Linux

  • GIMP
  • FLPhoto
  • Sodipodi
  • Kalbum
  • Krecord
  • Audacity
  • Note Edit
  • Timidity,

Karir di Bidang Multimedia

  1. Animator
  2. Desainer grafis
  3. Editor Video
  4. Game Desainer
  5. Spesialis Efek
  6. Web Desainer

Instalasi Mosquitto MQTT Broker

Berikut adalah cara untuk menginstal Mosquitto MQTT Broker di Windows.

Download aplikas Mosquitto dari https://mosquitto.org/download/ dengan pilihan untuk sistem operasi Windows sebagai berikut :

Gambar di atas memperlihatkan versi aplikasi Mosquitto untuk Windows 64 bit dan 32 bit, tergantung dari sistem operasi yang kita gunakan. Cara mudah untuk melihat berapa bit versi Windows yang kita gunakan, cukup jalankan aplikasi dxdiag.

Pada bagian System Information tertulis Operating System : Windows 10 Pro 64-bit , artinya sistem operasi Windows yang kita gunakan adalah versi 64-bit, pilihlah untuk men-download aplikasi yang 64 bit yakni mosquitto-2.0.15-install-windows-x64.exe.

Setelah berhasil di download, install Mosquitto dengan menjalankan file mosquitto-2.0.15-install-windows-x64.exe.

Menjalankan aplikasi mosquito broker

Dari command prompt masuklah ke folder mosquito di folder “C:\Program Files\mosquitto”, jalankan aplikasi mosquito seperti gambar berikut.

Dari gambar di atas terlihat mosquito sudah running dan sedang menunggu client terhubung pada port 1883. Dengan demikian kita sudah dapat memulai koneksi ke mosquito melalui perangkat lain, misalnya dengan komputer, ESP8266 Wemos, ESP32 dll.

Install Python

Download aplikasi bahasa pemrograman Python pada site https://www.python.org/downloads/, selanjutnya install. Setelah itu install library paho-mqtt pada Python dengan mengetik perintah : pip3 install paho-mqtt

Kode Python MQTT Publish

#contoh kode MQTT publish

#nama file : kirimdata.py

import random

import time

from paho.mqtt import client as mqtt_client

broker = ‘localhost’   #bisa diganti menjadi nama server

port = 1883

topic = “datakita/templembab”

# generate client ID with pub prefix randomly

client_id = f’python-mqtt-{random.randint(0, 1000)}’

username = ‘uma123’

password = ‘umasaja’

def connect_mqtt():

    def on_connect(client, userdata, flags, rc):

        if rc == 0:

            print(“Terhubung ke MQTT Broker!”)

        else:

            print(“Gagal menghubungi MQTT Broker, kode error %d\n”, rc)

    client = mqtt_client.Client(client_id)

    client.username_pw_set(username, password)

    client.on_connect = on_connect

    client.connect(broker, port)

    return client

def publish(client):

    msg_count = 0

    while True:

        time.sleep(1)

        msg = f”Pesan {msg_count} -> Temp.: 35*C, Kelembaban : 80%”

        result = client.publish(topic, msg)

        # result: [0, 1]

        status = result[0]

        if status == 0:

            print(msg)

        else:

            print(f”Gagal mengirim pesan ke topic {topic}”)

        msg_count += 1

def run():

    client = connect_mqtt()

    client.loop_start()

    publish(client)

if __name__ == ‘__main__’:

    run()

Kode Python MQTT Subscribe

#contoh kode MQTT subscribe

#nama file : terimadata.py

import random

from paho.mqtt import client as mqtt_client

broker = ‘localhost’

port = 1883

topic = “datakita/templembab”

# generate client ID with pub prefix randomly

client_id = f’python-mqtt-{random.randint(0, 100)}’

username = ‘uma123’

password = ‘umasaja’

def connect_mqtt() -> mqtt_client:

def on_connect(client, userdata, flags, rc):

if rc == 0:

print(“Terhubung ke  MQTT Broker!”)

else:

print(“Gagal menghubungi MQTT Broker, kode error %d\n”, rc)

client = mqtt_client.Client(client_id)

client.username_pw_set(username, password)

client.on_connect = on_connect

client.connect(broker, port)

return client

def subscribe(client: mqtt_client):

def on_message(client, userdata, msg):

print(f”Diterima `{msg.payload.decode()}`”)

client.subscribe(topic)

client.on_message = on_message

def run():

client = connect_mqtt()

subscribe(client)

client.loop_forever()

if __name__ == ‘__main__’:

run()

Sekedar mengingatkan bahwa MQTT broker di atas sedang berjalan di komputer lokal atau localhost, bila MQTT broker dijalankan pada server hosting misalnya kolibriindonesia.com maka inisialisasi variable ‘broker’ pada kode Python harus diubah dari ‘localhost’ menjadi ‘kolibriindonesia.com’.

Demikian, mudah-mudahan bermanfaat. Terimakasih.

Protokol MQTT

Protokol merupakan peraturan atau prosedur untuk mengirimkan sebuah data pada perangkat elektronik. Pada sistem komputer, setiap komputer berkomunikasi dengan komputer lainnya menggunakan sebuah protokol. Banyak sekali jenis protokol, seperti UDP, FTP, TCP, ICMP dan yang sering kita pakai untuk komunikasi IoT yaitu HTTP (Hyper Text Transfer Protocol). MQTT merupakan salah satu protokol yang dapat digunakan untuk komunikasi pada sistem komputer.

MQTT (Message Queuing Telemetry Transport) protokol merupakan sebuah protokol yang berjalan diatas stack TCP/IP dan dirancang khusus untuk machine to machine yang tidak memiliki alamat khusus. Maksud dari kata tidak memiliki alamat khusus ini seperti halnya sebuah arduino, raspi atau device lain yang tidak memiliki alamat khusus. Sistem kerja MQTT menerapkan Publish dan Subscribe data. Dan pada penerapannya, device akan terhubung pada sebuah Broker dan mempunyai suatu Topic tertentu.

Broker pada MQTT berfungsi untuk menghandle data publish dan subscribe dari berbagai device, bisa diibaratkan sebagai server yang memiliki alamat IP khusus. Beberapa contoh dari Broker yang ada seperti Mosquitto, HiveMQ dan Mosca.

Publish merupakan cara suatu device untuk mengirimkan datanya ke subscribers. Biasanya pada publisher ini adalah sebuah device yang terhubung dengan sensor tertentu.

Subscribe merupakan cara suatu device untuk menerima berbagai macam data dari publisher. Subscriber dapat berupa aplikasi monitoring sensor dan sebagainya, subscriber ini yang nantinya akan meminta data dari publisher.

Topic seperti halnya pengelompokan data disuatu kategori tertentu. Pada sistem kerja MQTT protokol ini, topic bersifat wajib hukumnya. Pada setiap transaksi data antara Publisher dan Subscriber harus memiliki suatu topic tertentu. Contoh dapat dilihat pada gambar berikut.

Pada gambar di atas desain sistem MQTT sederhana tersebut, terdapat 3 bagian penting yaitu Publisher, Broker dan Subscriber. Setiap bagian memiliki tugas masing-masing yaitu :

  1. Blok Publisher

Pada blok Publisher, terdapat beberapa sensor, seperti contoh terdapat sensor A, B dan C. Setiap sensor akan terhubung ke suatu gateway seperti Ethernet shield, ESP8266, SIM800L atau device sejenisnya yang dapat menghubungkan kita ke MQTT Broker. Antara gateway dan sensor pasti terdapat controller seperti Arduino, RaspberryPi atau sejenisnya. Tugas dari Blok Publisher ini yaitu mengirim data yang diambil dari sensor A, B dan C ke suatu MQTT Broker dengan Topic datakirim.

  1. MQTT Broker

MQTT Broker memiliki suatu alamat yang dapat diakses oleh Publisher dan Subscriber. Tugas dari MQTT Broker ini yaitu sebagai penghubung transaksi data antara publisher dan subscriber. MQTT Broker juga mengenali suatu data lewat sebuah pengelompokan atau biasa disebut topic. Ketika Publisher mengirim data sensor A, B, C dengan topic datakirim, dan suatu saat terdapat Subscriber yang melakukan subscribe dengan topic yang sama datakirim, maka bisa dipastikan Subscriber akan menerima data sensor A, B dan C dari Publisher.

 

  1. Blok Subscriber

Blok Subscriber bertugas untuk melakukan subscribe data pada topic data1. Setelah mendapatkan data yang berupa nilai sensor A, B dan C dari publisher, kita dapat mengolah data-data tersebut untuk dimasukkan ke dalam database, dianalisis atau dapat kita proses menjadi sebuah sistem monitoring yang terstruktur dan memiliki nilai jual.

Sekilas Protokol TCP/IP

TCP/IP atau singkatan dari Transmission Control Protocol/ Internet Protocol diperkenalkan oleh Defense Advanced Research Projects Agency (DARPA) pada tahun 1969.

Internet Protocol (IP)
Protokol mewajibkan bagi semua komputer yang terhubung harus memiliki alamat yang
unik yang disebut IP Address. Tugas protokol IP melakukan pengiriman ke alamat tujuan (IP Address tujuan) tanpa terlebih dahulu memberitahukan pada komputer yang dituju. Protokol ini tidak memberikan jaminan apakah packet yang dikirim akan sampai ke tujuan atau tidak. Masalah keberhasilan pengiriman packet ditentukan oleh lapisan yang berada di atasnya yakni TCP dan UDP.

Pengalamatan IP
Komunikasi dengan protokol TCP/IP membutuhkan alamat IP (IP Address) yang unik
pada setiap komputer/perangkat komunikasi data. IP Address yang umum digunakan saat ini merupakan IP Address versi 4 (IPv4) yang terdiri atas 32 bit. IP Address versi 6
(IPv6) yang terdiri atas 128 bit sampai saat ini masih belum banyak diimplementasikan. 32 bit IP Address dibagi menjadi 4 bagian dengan masing-masing bagian terdiri atas 8
bit. Dengan kata lain IP Address memiliki 4 angka desimal dengan nilai 0 sampai 255,
misalnya : 192.168.2.1, 10.20.40.50, 172.16.250.1 dan seterusnya. Jadi formatnya : nnn.nnn.nnn.nnn

IP Address terdiri atas 3 class:

Atau dalam bentuk decimal:
Class A : xxx.nnn.nnn.nnn –> xxx=1 s/d 126
Jumlah jaringan maksimal : 126, host perjaringan : 16.7.777.214
Class B : xxx.yyy.nnn.nnn –> xxx=128 s/d 191, yyy=0 s/d 255
Jumlah jaringan maksimal : 16384, host perjaringan : 65.534
Class C : xxx.yyy.zzz.nnn –> xxx=192 s/d 223, yyy=0 s/d 255,           zzz=0 s/d 255
Jumlah jaringan maksimal : 2.097.152, host perjaringan : 254
Catatan : nnn = jumlah host

Untuk memisahkan antara Network-Id dengan Host-Id diperlukan netmask. Bagian
Network-Id menggunakan bit-bit 1 dan bagian Host-id dengan bit-bit 0.
Contoh :
Class A : IP Address : 1.1.1.1, Netmask : 255.0.0.0
Class B : IP Address : 172.1.1.1, Netmask : 255.255.0.0
Class C : IP Address : 192.168.1.1 Netmask : 255.255.255.0
Network-Id 192.168.1.0 dengan netmask 255.255.255.0 memiliki 254 host dengan
pembagian sebagai berikut :

Network-Id                : 192.168.1.0
Nomor IP pertama    : 192.168.1.1
Nomor IP kedua        : 192.168.1.2
: dst…
Nomor IP terakhir      : 192.168.1.254
Nomor IP broadcast   : 192.168.1.255

Mudahnya, untuk mengetahui jumlah host cukup lakukan pengurangan angka 256 dengan netmask host-id dikurang 2, berkaitan dengan masalah di atas maka jumlah host=256-0-2=254 host. Angka 2 diperoleh dari IP network-id dan IP broadcast yang tidak dihitung sebagai host.

Pembagian Jaringan
Dengan mengutak-atik netmask kita dapat membagi suatu jaringan menjadi jaringan-jaringan yang lebih kecil dengan cara mengubah nilai netmask host-id. Nilai ini sudah ditetapkan yakni 0, 128, 192, 224, 240, 248, 252, 254, 255, nilai ini diperoleh dari nilai biner.
00000000   = 0
10000000   = 128
11000000   = 192
11100000   = 224
11110000   = 240
11111000   = 248
11111100   = 252
11111110   = 254
11111111   = 255

Misalnya jaringan 192.168.1.0 mask 255.255.255.0 akan dibagi menjadi 2 network yang
sama jumlah hostnya maka mask yang 255.255.255.0 diubah menjadi 255.255.255.128.
Sehingga jaringannya menjadi:
– 192.168.1.0 mask 255.255.255.128
– 192.168.1.128 mask 255.255.255.128
Dengan jumlah host masing-masing jaringan adalah 256-128-2=126 host.
Untuk jaringan 192.168.1.0 diperoleh:
192.168.1.0 – network-id
192.169.1.1 – IP pertama
: dst…
192.168.1.126 – IP terakhir
192.168.1.127 – IP broadcast
Untuk jaringan 192.168.1.128 diperoleh:
192.168.1.128 – network-id
192.169.1.129 – IP pertama
: dst…
192.168.1.254 – IP terakhir
192.168.1.255 – IP broadcast

Pembagian menjadi jaringan yang lebih kecil lagi dapat dilakukan dengan cara yang sama yakni dengan mengubah mask host-id.
Catatan: Jaringan 127.0.0.0 tidak digunakan sebagai IP Address, karena sudah
dialokasikan sebagai loopback address. Misalnya, IP 127.0.0.1 digunakan sebagai IP
local perangkat atau sering juga disebut sebagai localhost.

TCP dan UDP
TCP dan UDP adalah protokol pengiriman data pada jaringan IP. TCP (Transfer Control
Protocol) adalah protocol yang menjamin data yang di kirim sampai ke tujuan dengan
utuh (reliable). Sebelum berkomunikasi harus terjadi hubungan komunikasi secara
virtual, itu sebabnya protocol TCP disebut protocol yang connection oriented. Protocol
TCP akan melakukan permintaan ulang data yang rusak dan TCP pengirim akan mengirim kembali data yang diminta. Contoh aplikasi yang menggunakan protocol ini seperti aplikasi online perbankan.

Sedangkan UDP (User Datagram Protocol) adalah protocol yang tidak memerlukan
hubungan dengan host lain. Aplikasi yang menggunakan protocol UDP terus-menerus
melakukan pengiriman data tanpa perlu menguji apakah data yang dikirim diterima atau
tidak dan benar atau tidak. Contoh aplikasi yang menggunakan protocol ini seperti VoIP
(Voice over IP), Audio Streaming, Video Streaming.

GEOLOKASI/GEOLOCATION

Geolokasi biasa dikenal juga dengan browsing sadar-lokasi merupakan istilah yang digunakan untuk menggambarkan kemampuan mendeteksi dan mencatat dimana Anda dan orang lain berada. Informasi geolokasi dapat diperoleh melalui data alamat IP pengguna, alamat MAC (Media Access Control), RFID (Radio-frequency identification), lokasi koneksi Wi-Fi, atau koordinat GPS( Global Positioning System).

Membuat geolocation sederhana

<!DOCTYPE html>

<html>

<head>

<title>Layanan Geolocation</title>

<meta name=”viewport” content=”initial-scale=1.0, user-scalable=no”>

<meta charset=”utf-8″>

<style>

html, body {

height: 100%;

margin: 0;

padding: 0;

}

#map {

height: 100%;

}

#floating-panel {

position: absolute;

top: 10px;

left: 25%;

z-index: 5;

background-color: #fff;

padding: 5px;

border: 1px solid #999;

text-align: center;

font-family: ‘Roboto’,’sans-serif’;

line-height: 30px;

padding-left: 10px;

}

</style>

</head>

<body>

<div id=”floating-panel”>

<input id=”address” type=”textbox” value=”Medan, Indonesia”>

<input id=”submit” type=”button” value=”Geolokasi”>

</div>

<div id=”map”></div>

<script>

function inisialpeta() {

var map = new google.maps.Map(document.getElementById(‘map’), {

zoom: 8,

center: {lat:3.597031, lng: 98.678513}

});

var geocoder = new google.maps.Geocoder();

 

document.getElementById(‘submit’).addEventListener(‘click’, function() {

geocodeAddress(geocoder, map);

});

}

 

function geocodeAddress(geocoder, resultsMap) {

var address = document.getElementById(‘address’).value;

geocoder.geocode({‘address’: address}, function(results, status) {

if (status === ‘OK’) {

resultsMap.setCenter(results[0].geometry.location);

var marker = new google.maps.Marker({

map: resultsMap,

position: results[0].geometry.location

});

} else {

alert(‘Geolokasi tidak berhasil menampilkan hasil: ‘ + status);

}

});

}

</script>

<script async defer

src=”https://maps.googleapis.com/maps/api/js?key=AIzaSyAb36UDFNyO28ZX0Bi7lfRFMZLHCRsS8hc&callback=inisialpeta”>

</script>

</body>

</html>

Latitude Dan Longitude

LATITUDE DAN LONGITUDE

Garis-garis vertikal dan horisontal pada sebuah peta atau atlas,
Itulah garis bujur (longitude) dan garis lintang (latitude). Longitude dan Latitude adalah suatu sistem koordinat geografis yang digunakan untuk menentukan lokasi suatu tempat di permukaan bumi. Latitude atau garis lintang adalah garis yang menentukan lokasi berada di sebelah utara atau selatan ekuator. Garis lintang diukur mulai dari titik 0 derajat dari khatulistiwa sampai 90 derajat di kutub. Longitude atau garis bujur adalah digunakan untuk menentukan lokasi di wilayah barat atau timur dari garis utara selatan yang sering disebut juga garis meridian. Garis bujur diukur dari 0 derajat di wilayah Greenwich sampai 180 derajat di International Date Line.

Garis tengah diantara kutub merupakan sebuah lingkaran besar yang membagi bumi menjadi 2 bagian yaitu utara dan selatan. Lingkaran garis imajiner ini akan semakin mengecil ketika mendekati kutub. Garis lintang digunakan untuk membatasi corak iklim di permukaan bumi sedangkan garis bujur untuk menentukkan waktu dan tanggal. Berikut ini pembagian iklim di bumi menurut bata garis lintang:

  • 23,5-23, 5 LU/LS = iklim tropis
  • 23,5-40 LU/LS = iklim subtropis
  • 40 LU-66,5 LU/LS = iklim sedang
  • 66,5 -90 LU/LS = iklim kutub

Beda halnya dengan garis bujur atau meridian, ia tidak memiliki batas utama penanda awalnya suatu garis bujur sampai batas titik 0 derajat disepakati di Greenwich Inggris pada tahun 1884. Jadi sampai abad ke 19 tidak ada ketentuan baku untuk titik tolak penanggalan di bumi dan setiap wilayah/negara memiliki kebijakan masing-masing. Sama seperti garis lintang, jarak antar garis bujur juga ditulis dalam satuan derajat. Penulisannya pada koordinat peta juga sama seperti penulisan untuk Garis Lintang. Yang membedakan hanyalah simbol huruf di belakangnya. Misalnya huruf B untuk Bujur Barat dan huruf T untuk Bujur Timur. Pada peta internasional, huruf E (East) untuk Bujur Timur dan huruf W (West) untuk Bujur Barat.

1 Derajat garis bujur sama dengan  atau 111,32 km. Satuan derajat bisa juga disebut jam sehingga setiap derajat terbagi menjadi 60 menit dan setiap menit terbagi menjadi 60 detik. Dalam penulisan letak astronomis contohnya 60º 23′ 14”S, maka dibaca sebagai 60 derajat 23 menit 14 detik Lintang Selatan. Pada sistem pemetaan internasional huruf U sebagai Lintang Utara diganti dengan huruf N (North). Kombinasi antara garis lintang dan garis bujur akan membentuk suatu koordinat lokasi di permukaan bumi dengan sumbu x sebagai garis lintang dan sumbu y sebagai garis bujur dalam koordinat kartesius.

  • Latitude = garis lintang mengarah dari khatulistiwa (0) ke kutub selatan, atau khatulistiwa ke kutub utara (sudut 0-90 dan 0 -90)
  • Longitude = garis bujur adalah garis horizontal seperti dari khatulistiwa. Sudut 0 (Greenwich) ke arah Hawai adalah 0-180, sedangkan kebalikannya dari 0 ke -180

Latitude adalah garis yang horisontal / mendatar. Titik 0 adalah sudut ekuator, tanda + menunjukan arah ke atas menuju kutub utara, sedangkan tanda minus di koordinat Latitude menuju ke kutub selatan.
Titik yang dipakai dari 0 ke 90 derajat ke arah kutub utara, dan 0 ke -90 derajat ke kutub selatan

Longitude adalah garis lintang . Angka dari sudut bundar bumi horisontal. Titik diawali dari 0 ke 180 derajat, dan 0 ke-180 ke arah sebaliknya.
Titik 0 dimulai dari garis negara Inggris. Mengarah ke Indonesia akan menjadi angka positif. Kebalikannya koordinat Longitude minus adalah arah kebalikan.