BAB III
PENGEMBANGAN SISTEM SOFTWARE
Sistem software yang dikembangkan untuk mengendalikan sistem kerja pemantauan kualitas air menggunakan data logger berbasis mainboard PC terdiri dari dua jenis software, yaitu :
Software control data logger yang digunakan untuk mengendalikan kerja perangkat data logger onlimo OSS dalam pengambilan data pengukuran kualitas air menurut interval waktu yang diberikan.
Software database monitoring yang digunakan untuk mengelola data-data pengukuran yang dikirimkan oleh perangkat data logger onlimo OSS ke pusat data.
Kedua perangkat lunak di atas saling bekerja sama secara kontinyu dan terintegrasi oleh konektifitas jaringan antara perangkat data logger dengan komputer
server melalui perangkat wireless access point / wireless router. Pengembangan
kedua perangkat lunak ini dilakukan menggunakan bahasa pemrograman yang berbeda-beda, namun tetap menggunakan perangkat lunak berbasis sumber terbuka (open source software / OSS).
Gambar berikut ini adalah diagram aliran data pengukuran dari data logger ke pusat data yang dilakukan oleh software control data logger dan software database
monitoring.
Gambar 3.1. Diagram Aliran Data Pengukuran Dari Data Logger ke Pusat Data mysqld tcp/ip Database Onlimodb apache httpd Web onlimo OSS cgi / db engine Onlimo logger mysql tcp/ip data Onlimo logger mysql tcp/ip data Onlimo logger mysql tcp/ip data
3.1. Pengembangan Software Control Data Logger
Software control data logger berfungsi untuk melalukan pengambilan data
menggunakan perangkat multiprobe sensor yang dihubungkan ke port serial RS232C pada perangkat data logger setiap interval waktu tertentu dan dikirimkan ke
database pada komputer server. Program control data logger dikembangkan
menggunakan bahasa pemrograman GNU CPP/C++ yang merupakan aplikasi perangkat lunak sumber terbuka. Beberapa aplikasi yang diperlukan untuk melakukan pengembangan software control data logger adalah :
A. Aplikasi text editor untuk menyunting kode sumber (source code) program yang dikembangkan.
B. GNU CPP/C++ compiler untuk mengkompilasi (mengubah ke bahasa mesin program yang dikembangkan sehingga bisa diekseskusi/dijalankan. Obyek
library yang digunakan dalam proses kompilasi adalah :
Library Glibc (GNU C Library) yang merupakan library standar pemrograman bahasa C yang dikerjakan oleh proyek GNU. Library ini merupakan library utama yang dipakai di dalam program ini. Beberapa kegunaannya di antaranya untuk membuka koneksi ke port serial, mengirim/menerima data ke/dari port serial, menulis/membaca data ke/dari file pencatatan, dan lain-lain.
Library Libpthread untuk menjalankan beberapa tugas (thread) secara
independen dan dalam waktu yang bersamaan. Program ini menggunakan
dua thread, yaitu thread utama untuk mengambil data secara periodik (PER) dan sebuah thread lagi untuk menjalankan tugas peringatan dini (EWS)
Library Librt untuk membuat fungsi semaphore, yaitu melindungi resource (sumber daya) yang dipakai secara bersama, seperti port serial dan log file pencatatan, agar hanya ada satu proses yang dapat mengaksesnya dalam satu waktu. Perlindungan ini diperlukan karena dimungkinkannya beberapa proses untuk berjalan dalam waktu bersamaan dan akses yang tidak diatur dapat menyebabkan terjadinya kekacauan dalam penulisan/pengambilan data.
Library Libmysqlclient yang digunakan untuk berkomunikasi dengan data base server Mysql dan mencatat data yang diambil oleh sensor serta mengirimkannya ke dalam database server.
Ketiga library terakhir diperlukan saat kompilasi menggunakan konfigurasi Makefile yang ditulis dengan format ( -lpthread -lrt -lmysqlclient )
Program control data logger onlimo OSS dikembangkan menurut rancangan
yang telah dibahas pada sub bab disain program control data logger. Untuk mempermudah proses identifikasi pengembangan diberikan versi pada kode sumber yang telah dikembangkan dan diujicobakan secara offline. Versi mayor dengan perubahan besar diberikan dengan dua digit angka, sedangkan versi minor dengan perubahan kecil diberikan dalam tiga digit angka. Berikut ini adalah tabel versi pengembangan program control data logger dengan masing-masing perubahan fitur di dalamnya.
Tabel 3.1. Perkembangan Versi Program Control Data Logger
No. Program Versi Perubahan
1. Onlimo 1.0 Release pertama dengan fitur berupa
pengambilan data dari sensor dan
mencatatkannya ke dalam sebuah file teks.
Release kedua berisi pengurangan interval
pengambilan data ketika program sedang dalam proses persiapan.
Release ketiga berisi penambahan opsi untuk
menjalankan program sebagai background
process atau berjalan di terminal.
2. Onlimo 1.1 Membaca parameter setting dari file onlimo.conf
Mencatat pesan error ke file monitoring.log
Penambahan fitur peringatan dini EWS
3. Onlimo 1.2 Data dari sensor tidak lagi dicatat ke file teks, tetapi dimasukkan ke dalam database MySQL
4. Onlimo 1.2.1 Tidak ada perubahan dari versi 1.2. Hanya disertakan satu program lagi berupa simulator. Release
selanjutnya selalu menyertakan simulator. 5. Onlimo 1.3 Tidak ada perubahan dari versi 1.2. Hanya
penambahan komentar pada source code untuk menjelaskan masing-masing fungsi.
6. Onlimo 1.4 Alamat file config bisa diubah, tidak harus berada pada satu direktori dengan program
Interval pengambilan data dibuat lebih akurat
7. Onlimo 1.5 Perbaikan bug :
Program harus dijalankan 2 kali agar bisa jalan.
Program terlalu banyak mengambil data dalam interval 1 detik.
Data yang diambil terkadang tidak lengkap (jumlah data tidak sama dengan 6).
Penulisan pesan error terlalu banyak, sehingga perlu dipersingkat.
Format penulisan tanggal berbeda. 8. Onlimo 1.5.1 Perbaikan bug saat menghentikan program,
terkadang harus menunggu hingga timer pengambilan data berakhir
9. Onlimo 1.5.2 Sebelum mengirim perintah “data<enter>”, diawali dengan pengiriman kode <enter> terlebih dahulu 10. Onlimo 1.6 Fitur reconnect apabila MySQL server mati 11. Onlimo 2.0 Tambahan fitur menu pada console screen
Program control data logger diberikan nama ‘onlimo’ singkatan dari ‘online
monitoring’ dengan versi di belakangnya, misalnya onlimo16 yang berarti program
online monitoring versi 1.6. Kode sumber setiap versinya diletakkan ke dalam sebuah
direktori yang diberi nama sama, misalnya ‘Onlimo1.6/’. Sejak versi 1.2.1, onlimo dibuat dalam dua sub versi, yaitu sub versi sesungguhnya yang diletakkan dalam direktori ‘OnlimoDataLogger/’ dan sub versi simulator yang diletakkan dalam direktori ‘OnlimoDataLogger_simulator/’.
Sub versi sesungguhnya digunakan untuk pengambilan data ke unit sensor, sedangkan sub versi simulator digunakan untuk pengambilan data tanpa sensor dengan data dummy/acak sebagai hasil pengukurannya. Prinsip kerja sub versi
simulator adalah sama dengan sub versi sesungguhnya, hanya pada saat program
tidak mendapatkan respon dari unit sensor, maka sub routine data generator di dalam program onlimo akan memberikan data secara acak sebagai data dummy hasil pengukuran. Sehingga seolah-olah program onlimo berhasil berkomunikasi dengan unit sensor.
Kedua sub versi dibuat agar dapat dikompilasi pada sistem operasi Unix FreeBSD maupun Linux Ubuntu menggunakan perintah standar kompilasi ‘make’ dengan mendifinisikan parameternya pada file konfigurasi ‘Makefiles’. Berikut ini adalah nama direktori dan daftar file yang dibuat pada versi terakhir Onlimo1.6 untuk masing-masing sub versi.
root@onlimoserver[192]> cd Onlimo1.6 root@onlimoserver[193]> pwd /home/onlimo/work/program/Onlimo1.6 root@onlimoserver[194]> ls -F OnlimoDataLogger/ OnlimoDataLogger_simulator/ root@onlimoserver[195]> ls OnlimoDataLogger
ConfigHandler.cpp Makefile SerialStream.h ConfigHandler.h SensorLogger.cpp main.cpp
DbManager.cpp SensorLogger.h onlimo.conf DbManager.h SerialStream.cpp
root@onlimoserver[196]> ls OnlimoDataLogger_simulator/
ConfigHandler.cpp Makefile SerialStream.h ConfigHandler.h SensorLogger.cpp main.cpp
DbManager.cpp SensorLogger.h onlimo.conf DbManager.h SerialStream.cpp
root@onlimoserver[197]>
Pada kedua sub versi terdapat 11 file yang terdiri file definisi makefile, file
setting parameter eksekusi onlimo.conf, file kode sumber header .h dan file kode
sumber program .cpp yang merupakan kelas-kelas modul program onlimo. Berikut ini adalah fungsi dari masing-masing file kode sumber Onlimo Versi 1.6.
Tabel 3.2. Daftar File Yang Dibuat Untuk Onlimo Versi 1.6
No. File Keterangan
1. Makefile file definisi untuk program kompiler make 2. main.cpp program utama yang mereferensi semua kode
3. onlimo.conf File konfigurasi setting parameter eksekusi onlimo 4. ConfigHandler.h
ConfigHandler.cpp
Berisi kelas untuk pembacaan data dari file
konfigurasi onlimo.conf dengan format konfigurasi : <nama_parameter> = <data> # komentar
<nama_parameter> = <data1><delimiters><data2> contoh: comport = /dev/ttyU0
BMSUHU = 25,00 32,00 5. DbManager.h
DbManager.cpp
Berisi kelas untuk menangani operasi penulisan data ke dalam database MySQL server.
6. SensorLogger.h SensorLogger.cpp
Berisi kelas utama yang bertugas melakukan pengambilan data dan mencatatkannya ke dalam database.
7. SerialStream.h SerialStream.cpp
SerialStream adalah kelas yang menangani operasi
terhadap serial port, seperti membuka port, menutupnya, membaca data, dan menulis data. 8. onlimo.conf File konfigurasi setting parameter eksekusi onlimo
Untuk mengkompilasi semua file kode sumber onlimo mulai dari versi 1.0 hingga saat dokumentasi ini ditulis versi 1.6, selalu digunakan perintah utilitas ‘make’. Program make akan membuat file obyek dari setiap kelompok source code, misalnya:
ConfigHandler.h dan ConfigHandler.cpp akan membentuk ConfigHandler.o DbManager.h dan DbManager.cpp akan membentuk DbManager.o
dan seterusnya.
Kemudian masing-masing file obyek akan dijadikan satu (linking) menjadi satu program yang dapat dieksekusi mewakili program onlimo ini.
Semua prosedur kompilasi dituliskan dalam file Makefile sedemikian rupa seperti contoh di bawah ini dan akan digunakan oleh perintah ‘make’ dalam proses kompilasi. Bagian kiri merupakan variabel parameter sedangkan bagian kanan merupakan nilai variabel tersebut. Contoh di bawah ini variabel kompilasi terdiri dari
project, CXX, CFLAGS, LDFLAGS, LIBS, all, dan clean. project = onlimo
CXX = g++
CFLAGS = -I/usr/include/mysql -I/usr/local/include/mysql LDFLAGS = -L/usr/lib/mysql -L/usr/local/lib/mysql
LIBS = -lpthread -lrt -lmysqlclient all: $(project)
clean:
rm -f ConfigHandler.o SerialStream.o DbManager.o SensorLogger.o main.o $(project)
$(project):
$(CXX) $(CFLAGS) -Wall -g -c ConfigHandler.cpp -o ConfigHandler.o $(CXX) $(CFLAGS) -Wall -g -c SerialStream.cpp -o SerialStream.o $(CXX) $(CFLAGS) -Wall -g -c DbManager.cpp -o DbManager.o
$(CXX) $(CFLAGS) -Wall -g -c SensorLogger.cpp -o SensorLogger.o $(CXX) $(CFLAGS) -Wall -g -c main.cpp -o main.o
$(CXX) $(LDFLAGS) $(LIBS) -Wall -g ConfigHandler.o SerialStream.o DbManager.o SensorLogger.o main.o -o $(project)
Pada onlimo versi 1.0 dirancang agar program dapat dijalankan secara manual layaknya perintah standar unix yang dituliskan di depan shell prompt dengan menempatkan beberapa opsi eksekusi di depan program onlimo tersebut. Pada versi 1.0 onlimo memiliki beberapa opsi ekskusi yang harus diisi saat dijalankan, yaitu :
Opsi SERIAL diisi dengan nomor port serial
Opsi BAUDRATE diisi dengan kecepatan akses
Opsi ID diisi dengan nomor ID lokasi
Opsi WAKTU diisi dengan interval pengambilan data dalam detik
Opsi FDATA diisi dengan nama file data
Berikut ini adala contoh proses kompilasi dan eksekusi program onlimo versi 1.0
root@onlimoserver[197]> pwd
/usr/home/onlimo/work/program/Versi1.0 root@onlimoserver[198]> ls
Makefile SerialStream.cpp onlimo.conf SensorLogger.cpp SerialStream.h SensorLogger.h main.cpp root@onlimoserver[199]> make g++ -g -c SerialStream.cpp -o SerialStream.o g++ -g -c SensorLogger.cpp -o SensorLogger.o g++ -g -c main.cpp -o main.o
g++ -g -lrt SerialStream.o SensorLogger.o main.o -o onlimo root@onlimoserver[200]> ./onlimo
Onlimo v1.0 - Program ambil data dari sensor YSI
Pemakaian: ./onlimo SERIAL BAUDRATE ID WAKTU FDATA [OPTIONS] SERIAL Nomor port serial
BAUDRATE Baudrate serial ID Nomor ID lokasi
WAKTU Interval pengambilan data dalam detik FDATA Nama file data
OPTIONS:
-f Set program untuk berjalan di foreground -v Aktifkan mode verbose
Contoh:
./onlimo /dev/ttyS0 9600 OSS1 4 data.txt
root@onlimoserver[201]> ./onlimo /dev/ttyU0 9600 OSS1 4 data.txt Mempersiapkan program .... selesai.
Pada contoh kompilasi di atas, dihasilkan output program yang diberi nama onlimo (opsi –o onlimo pada makefile). Jika program onlimo dijalankan tanpa opsi apapun, maka program tersebut akan menampilkan cara pemakaiannya. Pada contoh eksekusi ‘./onlimo /dev/ttyU0 9600 OSS1 4 data.txt’ berarti program onlimo dijalankan dengan opsi :
SERIAL=/dev/ttyU0
BAUDRATE=9600
ID=OSS1
WAKTU=4
FDATA=data.txt
Berikutnya program secara otomatis akan melakukan pengukuran melalui serial koneksi tersebut dengan kecepatan 9600bps dan interval waktu pengukuran 4 detik. Data hasil pengukuran akan dimasukkan ke dalam file ‘data.txt’. Jika opsi SERIAL tidak dipenuhi atau ada kesalahan, maka komputer akan menampilkan pesan seperti contoh berikut.
root@onlimoserver[202]> ./onlimo /dev/ttyUX 9600 OSS1 4 data.txt Mempersiapkan program .... gagal.
Pengambilan data tidak bisa dilaksanakan. Program akan berhenti.
Jika pada Onlimo versi 1.0 parameter eksekusi program disertakan saat eksekusi, maka untuk mempermudah pengelolaan parameter tersebut dituliskan dalam sebuah file konfigurasi yang diberi nama onlimo.conf. File konfigurasi ini berisi opsi-opsi yang dituliskan di depan pada versi 1.0. Sehingga program onlimo dapat dijalankan tanpa memberikan opsi apapun di depannya, namun program ini akan membaca file konfigurasi onlimo.conf saat pertama kali dijalankan sebelum memulai pengukuran. Adapun format penulisan parameter setting file onlimo.conf untuk versi 1.1 adalah sebagai berikut :
comport = /dev/cuau0 # nama file communication port baudrate = 9600 # kecepatan koneksi data
idstasiun = SB1 # nomor identifikasi stasiun
twarning = 4 # interval waktu data early warning system tperiodik = 10 # interval waktu data periodik (detik) filedata = data.txt # nama file data
filelog = monitoring.log # nama file log pengoperasian
BMPH = 06,50 07,05 # batasan baku mutu pH /asam - basa BMDO = 05,00 06,00 # batasan baku mutu DO /oksigen terlarut BMSAL = 10,00 15,00 # batasan baku mutu Salinitas / kadar garam BMTEMP = 25,00 32,00 # batasan baku mutu temperatur
BMDHL = 10,00 20,00 # batasan baku mutu konduktifitas BMTDS = 10,00 15,00 # batasan baku mutu zat padat terlarut
Untuk versi-versi selanjutnya program onlimo dirancang untuk selalu menggunakan file konfigurasi onlimo.conf agar mendapatkan opsi parameter eksekusi dalam pengukuran data. Berikut ini adalah contoh kompilasi program onlimo versi 1.6 baik sub versi sesungguhnya maupun sub versi simulator.
Kompilasi sub versi onlimo sesungguhnya :
root@onlimoserver[203]> cd OnlimoDataLogger/ root@onlimoserver[204]> ls
DbManager.h SerialStream.cpp
ConfigHandler.cpp Makefile SerialStream.h ConfigHandler.h SensorLogger.cpp main.cpp
DbManager.cpp SensorLogger.h onlimo.conf root@onlimoserver[205]> make
g++ -I/usr/include/mysql -I/usr/local/include/mysql -Wall -g -c ConfigHandler.cpp -o ConfigHandler.o
g++ -I/usr/include/mysql -I/usr/local/include/mysql -Wall -g -c SerialStream.cpp -o SerialStream.o
g++ -I/usr/include/mysql -I/usr/local/include/mysql -Wall -g -c DbManager.cpp -o DbManager.o
g++ -I/usr/include/mysql -I/usr/local/include/mysql -Wall -g -c SensorLogger.cpp -o SensorLogger.o
g++ -I/usr/include/mysql -I/usr/local/include/mysql -Wall -g -c main.cpp -o main.o
g++ -L/usr/lib/mysql -L/usr/local/lib/mysql -lpthread -lrt -lmysqlclient -Wall -g ConfigHandler.o SerialStream.o DbManager.o SensorLogger.o main.o -o onlimo
root@onlimoserver[206]> ls
ConfigHandler.cpp Makefile SerialStream.o ConfigHandler.h SensorLogger.cpp main.cpp
ConfigHandler.o SensorLogger.h main.o DbManager.cpp SensorLogger.o onlimo DbManager.h SerialStream.cpp onlimo.conf DbManager.o SerialStream.h
Kompilasi sub versi onlimo simulator :
root@onlimoserver[207]> cd OnlimoDataLogger_simulator/ root@onlimoserver[208]> ls
ConfigHandler.cpp Makefile SerialStream.h ConfigHandler.h SensorLogger.cpp main.cpp
DbManager.cpp SensorLogger.h onlimo.conf DbManager.h SerialStream.cpp
root@onlimoserver [209]> make
g++ -I/usr/include/mysql -I/usr/local/include/mysql -Wall -g -c ConfigHandler.cpp -o ConfigHandler.o
g++ -I/usr/include/mysql -I/usr/local/include/mysql -Wall -g -c SerialStream.cpp -o SerialStream.o
g++ -I/usr/include/mysql -I/usr/local/include/mysql -Wall -g -c DbManager.cpp -o DbManager.o
g++ -I/usr/include/mysql -I/usr/local/include/mysql -Wall -g -c SensorLogger.cpp -o SensorLogger.o
g++ -I/usr/include/mysql -I/usr/local/include/mysql -Wall -g -c main.cpp -o main.o
g++ -L/usr/lib/mysql -L/usr/local/lib/mysql -lpthread -lrt -lmysqlclient -Wall -g ConfigHandler.o SerialStream.o DbManager.o SensorLogger.o main.o -o onlimo
root@onlimoserver[210]> ls
ConfigHandler.cpp Makefile SerialStream.o ConfigHandler.h SensorLogger.cpp main.cpp
ConfigHandler.o SensorLogger.h main.o DbManager.cpp SensorLogger.o onlimo DbManager.h SerialStream.cpp onlimo.conf DbManager.o SerialStream.h
Baik versi sesungguhnya maupun versi simulator memiliki cara pemakaian yang sama saat eksekusi, yaitu dengan menuliskan nama program onlimo saja di depan
shell prompt. Pada program onlimo versi 1.6. opsi yang perlu diberikan adalah lokasi
direktori dan nama konfigurasi file onlimo.conf.
Berikut ini adalah cara eksekusi program onlimo versi 1.6 yang telah selesai dikompilasi untuk kedua sub versi. Opsi ’--help' digunakan untuk menampilkan cara pemakaian program ini, ‘opsi –f’ digunakan agar proses program onlimo dijalankan secara foreground, sedangkan ‘opsi –v’ digunakan untuk mengaktifkan mode
verbose (tampil di layar) berkombinasi dengan opsi -f. Pada contoh ini saat program
onlimo dijalankan memberikan pesan kesalahan bahwa file /dev/ttyU0 tidak ada, sehingga kernel membuat file onlimo.core (yang bercetak tebal).
Selanjutnya setelah menyunting file onlimo.conf dan mengganti /dev/ttyU0 dengan /dev/ttyu0, program onlimo dapat dijalankan. Contoh ekskusi berikutnya adalah perintah ‘make clean’ yang merupakan perintah untuk membersihkan file proyek program control data logger onlimo dengan menghapus file-file obyek *.o dan
output program ‘onlimo’. Perintah ‘ls’ berikutnya menunjukkan daftar file dalam
direktori tersebut dengan file obyek *.o yang telah dihapus.
root@onlimoserver[211]> ./onlimo --help
Onlimo v1.6 - Program ambil data dari sensor YSI Pemakaian: ./onlimo FILE_CONFIG [OPTIONS]
OPTIONS:
-f Set program untuk berjalan di foreground
-v Aktifkan mode verbose. Mode ini hanya berlaku jika opsi -f Diaktifkan
root@onlimoserver[212]> ./onlimo onlimo.conf
/dev/ttyU0 tidak bisa dibuka: No such file or directory Program tidak bisa dijalankan
Segmentation fault (core dumped) root@onlimoserver[213]> ls
ConfigHandler.cpp SensorLogger.cpp main.o
ConfigHandler.h SensorLogger.h monitoring.log ConfigHandler.o SensorLogger.o onlimo
DbManager.cpp SerialStream.cpp onlimo.conf DbManager.h SerialStream.h onlimo.core DbManager.o SerialStream.o
Makefile main.cpp
root@onlimoserver[214]> vi onlimo.conf (ganti ttyU0 dengan ttyu0) root@onlimoserver[215]> ./onlimo onlimo.conf
Mempersiapkan program .... selesai. Pengambilan data dimulai.
root@onlimoserver[216]> make clean
rm -f ConfigHandler.o SerialStream.o DbManager.o SensorLogger.o main.o onlimo
root@onlimoserver[217]> ls
DbManager.h SerialStream.cpp
ConfigHandler.cpp Makefile SerialStream.h ConfigHandler.h SensorLogger.cpp main.cpp
Jika pada versi 1.0 data hasil pengukuran dapat dilihat pada file data.txt atau pada nama file yang diberikan melalui opsi FDATA, maka pada versi 1.6 data hasil pengukuran dilihat dengan cara mengakses file database onlimo pada mysql server menggunakan perintah SQL ‘select’ yang akan dijelaskan pada sub bab pengembangan software database online monitoring. Selain itu beberapa utilitas untuk memeriksa data yang telah masuk dapat dibuatkan program shell script yang di dalamnya didefinisikan Data Manipulation Language (DML) dalam perintah SQL seperti contoh di bawah ini.
#!/bin/sh
# Program : cekquery.sh
# Deskripsi : Bourne Shell Script untuk memeriksa data terkini (hari ini) # yang telah dari logger ke database server MySQL sesuai # masukan IDStasiun
# Project : Onlimo OSS # Versi : 1.0
# Last edit : 7 Juli 2012 # Author : HDW
# Setting Parameter
ID=$1 # masukan/input IDStasiun user="root" # user name akses database db="onlimodb" # nama database
server="192.168.0.100" # alamat IP Server MySQL
limit="20" # jumlah baris data yang tampil ke layar wait="30" # intarval waktu refresh ke layar dalam detik # Cara pemakaian
if [ $# = 0 ]; then echo ""
echo "Pemakaian : `basename $0` [ IDStasiun ]" echo ""
echo " Contoh : `basename $0` OSS1" echo " `basename $0` OSS2" echo "" exit 1 fi # Eksekusi DML while [ TRUE ]; do clear
# Ambil informasi tanggal hari ini dari system tgl=`date "+%Y-%m-%d"`
# Susuan query DML SQL
query=" select IDStasiun, Tanggal, Jam, Suhu, TDS, DO, PH, EWS_PER from Pengukuran
where IDStasiun='$ID'
and Tanggal='$tgl' #and EWS_PER='PER' (ambil data PER saja) order by Jam desc
limit $limit " # Eksekusi query
mysql -u "$user" -h "$server" "$db" -e "$query" sleep $wait
done
Program shell script cekquery.sh di atas dapat dieksekusi dengan cara “cekquery.sh
OSS1”, dimana OSS1 adalah nomor identifikasi stasiun/data logger yang akan diambil datanya. Gambar berikut ini adalah tampilan layar monitor pada data logger setelah beberapa saat program cekquery.sh tersebut dijalankan.
Gambar 3.2. Tampilan Data Terkini Menggunakan Program cekquery.sh Pengembangan software control data logger saat ini telah dikembangkan ke arah penggunaan yang semakin mudah. Pada versi akhir pengembangan software
control data logger diharapkan diperoleh program onlimo versi 2.0 yang memberikan
tampilan menu pada layar console. Jika pada versi sebelumnya proses pengukuran yang dilakukan oleh program onlimo tidak terlihat tanpa melakukan pemeriksaan ke
server database, maka pada versi 2.0 ini proses pengukuran akan dapat langsung
terlihat pada data logger saat monitor dipasang, sehingga pengguna dapat mengetahui dengan segera status pengukuran yang dilakukan oleh data logger.
Tampilan console screen pada gambar di atas adalah program onlimo versi 2.0 yang dijalankan pada data logger dengan cara yang sama. Setting parameter yang terdapat dalam file konfigurasi onlimo.conf setelah dibaca saat program pertama kali dijalankan akan ditampilkan ke layar monitor. Untuk mengubah setting parameter tersebut pengguna dapat langsung mengarahkan cursor ke parameter yang dimaksud untuk dilakukan perubahan. Sedangkan pada versi sebelumnya yang harus menyunting file konfigurasi onlimo.conf menggunakan editor ‘vi’.
Melalui tampilan console screen ini, pengguna dapat langsung mengetahui ID
data logger yang digunakan dan beberapa informasi penting lainnya seperti nama file
pencatatan proses monitoring, setting komunikasi sensor, setting interval waktu pengukuran, setting database mysql dan baku mutu parameter ukur. Status beberapa record data pengukuran yang terakhir juga akan ditampilkan di bagian bawah layar ini.
Counter yang menghitung mundur waktu di bagian bawah layar dapat
menunjukkan sisa waktu yang dibutuhkan oleh data logger untuk berkomunikasi dengan unit sensor dalam melakukan pengukuran data kualitas air. Proses penyimpanan perubahan setting dilakukan dengan menekan menu ‘Save’, proses memulai dan mengakhiri pengukuran data dilakukan dengan menekan menu ‘Start’ dan ‘Exit’. Kode sumber untuk versi 2.0 bertambah beberapa file yang berisi header *.h dan program *.cpp untuk mengendalikan tampilan di layar monitor, yaitu seperti pada daftar file di bawah ini.
File kode sumber onlimo versi 2.0 sesungguhnya :
root@onlimologger1[218]> pwd
/home/onlimo/work/program/Onlimo2.0/OnlimoDataLogger root@onlimologger1[219]> ls -F
ConfigHandler.cpp GUI.h PrintHandler.h main.cpp ConfigHandler.h GUILib/ SensorLogger.cpp
onlimo.conf
DbManager.cpp LoggerEventListener.h SensorLogger.h DbManager.h Makefile SerialStream.cpp GUI.cpp PrintHandler.cpp SerialStream.h root@onlimologger1[220]> ls -F GUILib/
Button.cpp GridLayout.h Table.h Widget.h Button.h Label.cpp TextEdit.cpp
ButtonEventListener.h Label.h TextEdit.h GridLayout.cpp Table.cpp Widget.cpp root@onlimologger1[221]>
File kode sumber onlimo simulator :
root@onlimologger1[222]> pwd
/home/onlimo/work/program/Onlimo2.0/OnlimoDataLogger_simulator root@onlimologger1[223]> ls -F
ConfigHandler.cpp GUI.h PrintHandler.h main.cpp ConfigHandler.h GUILib/ SensorLogger.cpp
onlimo.conf
DbManager.cpp LoggerEventListener.h SensorLogger.h DbManager.h Makefile SerialStream.cpp GUI.cpp PrintHandler.cpp SerialStream.h root@onlimologger1[224]> ls -F GUILib/
Button.cpp GridLayout.h Table.h Widget.h Button.h Label.cpp TextEdit.cpp
ButtonEventListener.h Label.h TextEdit.h GridLayout.cpp Table.cpp Widget.cpp root@onlimologger1[225]>
3.2. Pengembangan Software Database Online Monitoring
Software database monitoring digunakan untuk melakukan pengelolaan data
pengukuran kualitas air yang diambil dan dikirimkan oleh program control data logger ke pusat data / komputer server. Perangkat lunak ini dikembangkan berbasis web menggunakan bahasa pemrograman yang juga merupakan perangkat lunak berbasis sumber terbuka (OSS). Beberapa bahasa pemrograman yang digunakan dalam mengembangkan software database monitoring adalah sebagai berikut :
HTML (HyperText Markup Language) yang merupakan bahasa standar untuk membuat dokumen hypertext yang mampu menampilan text, gambar, video, maupun musik secara bersamaan. Kode sumber pemrograman dengan bahasa HTML ini dituliskan di antara kedua tag <HTML> ... </HTML>. File yang berisi kode sumber pemrograman HTML diberi ekstensi .htm atau .html.
PHP (Hypertext Preprocessor) yang merupakan bahasa pemrograman untuk membuat dokumen hypertext juga, namun memiliki fitur yang lebih untuk dapat diintegrasikkan dengan modul pemrograman lainnya seperti konektifitas ke database maupun ke program java server. Kode sumber pemrograman dengan bahasa PHP dituliskan di antara kedua tag
<?PHP ... ?>. File yang berisi kode sumber pemrograman ini diberi ekstensi .php atau dapat berada di dalam file dokumen html.
JS (Java Script) yang merupakan bahasa pemrograman yang mendukung untuk pembuatan dokumen hypertext yang lebih maju / canggih. Berbeda dengan java applet, pemrograman java script tidak perlu dikompilasi. Kode sumber pemrograman dengan bahasa java script dituliskan di antara kedua
tag <javascript> ... </javascript> dan file yang berisi kode sumber ini diberi
ekstensi .java atau dapat berada di dalam file program php.
Standard Query Language (SQL) yang merupakan bahasa standar untuk mengakses data yang berada di dalam sistem database melalui database
server MySQL. Kode sumber pemrograman SQL ini biasanya berada di dalam
kode sumber php.
Agar dapat bekerja sesuai dengan rancangan yang diinginkan, software
database monitoring ini memerlukan beberapa perangkat lunak pendukung, di
antaranya adalah :
Web server yang berfungsi sebagai penyedia layanan web melalui program apache httpd server.
Database server yang berfungsi sebagai penyedia layanan database melalui program mysql server.
PHP Preprocessor yang berfungsi menerjemahkan dan memproses kode sumber php dalam program berbasis web.
Web browser yang berfungsi menerjemahkan dan memproses kode sumber html dan java script dalam program berbasis web.
Instalasi Web Server, Database Server dan PHP Preprocessor akan dijelaskan pada bab berikutnya dalam buku ini.
Software database online monitoring dikembangkan untuk mengelola data
pengukuran dalam sebuah file database ‘onlimodb’. Rancangan detail database onlimodb ini telah dijelaskan pada bab sebelumnya dimana terdiri dari dua tabel data, yaitu :
1. Tabel Stasiun untuk mengelola informasi data stasiun monitoring yang terdiri dari field data sebagai berikut :
IDStasiun : nomor identifikasi stasiun monitoring
NamaStasiun : nama stasiun monitoring
AlamatStasiun : alamat lengkap lokasi stasiun monitoring
NoTelepon : nomor telepon / HP di data logger unit
KontakPerson : nama penanggungjawab stasiun monitoring
LintangDerajat : posisi koordinat lintang derajat
LintangMenit : posisi koordinat lintang menit
LintangDetik : posisi koordinat lintang detik
BujurDerajat : posisi koordinat bujur derajat
BujurMenit : posisi koordinat bujur menit
BujurDetik : posisi koordinat bujur detik
Keterangan : keterangan lain tentang stasiun monitoring
Foto : nama direktori dan file foto stasiun
2. Tabel Pengukuran untuk mengelola informasi data pengukuran kualitas air yang terdiri dari field data sebagai berikut :
IDStasiun : nomor identifikasi stasiun monitoring
Tanggal : tanggal pengukuran (yyyy-mm-dd)
Jam : waktu pengukuran (hh:mm:ss)
Suhu : temperatur / suhu
DHL : daya hantar listrik / konduktifitas
TDS : kandungan zat padat terlarut
Salinitas : kadar garam
DO : kandungan oksigen terlarut
pH : kondisi keasaman / kebasaan
EWS_PER : data EWS atau periodik
Kedua tabel di atas dan field data di dalamnya dibuat menggunakan bahasa pemrograman Standar Query Language (SQ) melalui program mysql client yang telah diinstalasikan pada komputer server. Mysql pada sistem operasi unix seperti freebsd dan ubuntu menggunakan penamaan file database dan tabel data yang ‘case sensitive’ artinya membedakan antara huruf besar dan huruf kecil. Misalnya
database dengan nama ‘onlimodb’ akan berbeda dengan database ‘OnlimoDB’,
begitu juga dengan tabel data ‘stasiun’ akan berbeda dengan tabel data ‘Stasiun’. Sehingga perlu diperhatikan saat mendefinisikan nama database dan nama-nama tabel data dalam pembuatan kode sumber untuk mengakses database tersebut.
Berikut ini adalah langkah-langkah pembuatan database onlimodb, tabel Stasiun dan tabel Pengukuran menggunakan DDL (Data Definition Language) SQL.
root@onlimoserver[226]> mysql mysql> create database onlimodb;
mysql> CREATE TABLE IF NOT EXISTS `stasiun` ( `IDStasiun` varchar(8) NOT NULL,
`NamaStasiun` varchar(100) NOT NULL, `AlamatStasiun` varchar(250) NOT NULL, `NoTelepon` varchar(50) NOT NULL, `KontakPerson` varchar(100) NOT NULL, `LintangDerajat` double NOT NULL, `LintangMenit` double NOT NULL, `LintangDetik` double NOT NULL, `BujurDerajat` double NOT NULL, `BujurMenit` double NOT NULL, `BujurDetik` double NOT NULL,
`Keterangan` varchar(500) NOT NULL, `Foto` varchar(250) NOT NULL,
PRIMARY KEY (`IDStasiun`),
UNIQUE KEY `IDStasiun` (`IDStasiun`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
mysql> CREATE TABLE IF NOT EXISTS `Pengukuran` ( `IDStasiun` varchar(8) NOT NULL DEFAULT '', `Tanggal` date NOT NULL DEFAULT '0000-00-00', `Jam` time NOT NULL DEFAULT '00:00:00',
`Suhu` double DEFAULT NULL, `DHL` double DEFAULT NULL, `TDS` double DEFAULT NULL,
`Salinitas` double DEFAULT NULL, `DO` double DEFAULT NULL,
`PH` double DEFAULT NULL,
`EWS_PER` varchar(3) DEFAULT NULL,
PRIMARY KEY (`IDStasiun`,`Tanggal`,`Jam`),
UNIQUE KEY `IDStasiun` (`IDStasiun`,`Tanggal`,`Jam`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Setelah database dan tabel data dibuat, maka program database server mysql akan membuat beberapa file untuk keperluan akses ke dalam database onlimodb. File-file tersebut disimpan di dalam direktori /var/db/mysql/onlimodb di dalam komputer server. Berikut ini adalah daftar file yang ada di dalam direktori tersebut.
root@onlimoserver[227]> ls /var/db/mysql/
ib_logfile0 mysql test
ib_logfile1 onlimodb zenbook.err
ibdata1 performance_schema zenbook.pid
root@onlimoserver[228]> ls /var/db/mysql/onlimodb/
Pengukuran.frm Stasiun.frm db.opt
Database onlimodb dan kedua tabel di dalamnya yang telah dibuat menggunakan DDL SQL dapat diakses menggunakan DML (Data Manipulation
Language) SQL seperti contoh-contoh di bawah ini. Contoh berikut adalah program mysql client ketika dijalankan di depan shell prompt pada sistem operasi PC Unix.
Perintah SQL ‘show database’ di depan prompt ‘mysql>’ akan menampilkan file
database yang dikelola oleh database server mysql. Dalam contoh di bawah ini database onlimodb yang tercetak tebal terdapat di dalamnya.
root@onlimoserver[229]> mysql
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1
Server version: 5.5.17 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases; +---+ | Database | +---+ | information_schema | | mysql | | onlimodb | | performance_schema | | test | +---+ 5 rows in set (0.00 sec)
Data Manipulation Language (DML) ‘use onlimodb’ dalam contoh di bawah
ini digunakan untuk mulai menggunakan database onlimodb dan DML ‘show tables’ digunakan untuk menampilkan tabel data yang ada di dalam file database tersebut.
mysql> use onlimodb;
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
mysql> show tables; +---+ | Tables_in_onlimodb | +---+ | Pengukuran | | Stasiun | +---+ 2 rows in set (0.00 sec)
Untuk menampilkan struktur tabel data digunakan DML ‘describe’. Contoh di bawah ini adalah DML ‘describe Stasiun’ dan ‘describe Pengukuran’ untuk melihat struktur tabel data Stasiun dan Pengukuran. Dalam contoh di bawah ini ditampilkan nama-nama field data, tipe data, kategori field data, dan nilai default data pada setiap tabel data. Di bagian akhir eksekusi DML nya diinformasikan waktu yang dibutuhkan oleh program mysql client dalam melakukan query atau permintaan informasi data pada mysql server dalam satuan detik (sec).
mysql> describe Stasiun;
+---+---+---+---+---+---+ | Field | Type | Null | Key | Default | Extra | +---+---+---+---+---+---+ | IDStasiun | varchar(8) | NO | PRI | NULL | | | NamaStasiun | varchar(100) | NO | | NULL | | | AlamatStasiun | varchar(250) | NO | | NULL | | | NoTelepon | varchar(50) | NO | | NULL | | | KontakPerson | varchar(100) | NO | | NULL | | | LintangDerajat | double | NO | | NULL | | | LintangMenit | double | NO | | NULL | | | LintangDetik | double | NO | | NULL | | | BujurDerajat | double | NO | | NULL | | | BujurMenit | double | NO | | NULL | | | BujurDetik | double | NO | | NULL | | | Keterangan | varchar(500) | NO | | NULL | | | Foto | varchar(250) | NO | | NULL | | +---+---+---+---+---+---+ 13 rows in set (0.00 sec)
mysql> describe Pengukuran;
+---+---+---+---+---+---+ | Field | Type | Null | Key | Default | Extra | +---+---+---+---+---+---+ | IDStasiun | varchar(8) | NO | PRI | | | | Tanggal | date | NO | PRI | 0000-00-00 | | | Jam | time | NO | PRI | 00:00:00 | | | Suhu | double | YES | | NULL | | | DHL | double | YES | | NULL | | | TDS | double | YES | | NULL | | | Salinitas | double | YES | | NULL | | | DO | double | YES | | NULL | | | PH | double | YES | | NULL | | | EWS_PER | varchar(3) | YES | | NULL | | +---+---+---+---+---+---+ 10 rows in set (0.00 sec)
Bentuk tampilan GUI (Graphical User Interface) software database onlimo dikembangkan sesuai rancangan berbasis web yang telah dibahas dalam bab sebelumnya. Kode sumber yang dikembangkan terdiri dari beberapa file yang diletakkan di dalam sebuah direktori www atau htdocs. Pada komputer server yang telah diinstalasikan sistem operasi FreeBSD perlu didaftarkan pengguna/user dengan login name ‘onlimo’. Direktori software database online monitoring ini diletakkan di dalam home directory user tersebut (/home/onlimo/www). Berikut ini adalah lokasi instalasi direktori software database monitoring di dalam komputer
server.
root@onlimoserver[230]> pwd /home/onlimo/www
root@onlimoserver[231]> ls -F
Cgi/ tabbulananf.php tabperjama.php
Images/ tabhariana.php tabperjamb.htm atas.php tabharianb.htm tabperjamf.php bawah.htm tabharianf.php tabrealtimea.php index.html tabpengukurana.php tabrealtimeb.htm tabbulanana.php tabpengukuranb.htm tabrealtimef.php tabbulananb.htm tabpengukuranf.php tabstasiun.php
root@onlimoserver[232]> ls -F Cgi/
Jqplot/ grafbulanan.php waktubulanan.php cgipengukuran.php grafharian.php waktuharian.php cgistasiun.php grafjaman.php waktujaman.php connect.php grafrealtime.php waktupengukuran.php root@onlimoserver[233]> -F Cgi/Jqplot/
MIT-LICENSE.txt gpl-2.0.txt jquery.js README.txt jqPlotCssStyling.txt jquery.min.js
changes.txt jqPlotOptions.txt optionsTutorial.txt copyright.txt jquery.jqplot.css plugins/
examples.min.css jquery.jqplot.js syntaxhighlighter/ excanvas.js jquery.jqplot.min.css usage.txt
excanvas.min.js jquery.jqplot.min.js root@onlimoserver[234]> ls -F Images/
bin1.jpg nofoto.jpg sb1.jpg
fotosb1.jpg onlimo.jpg sb2.JPG
grafbulanan.jpg onlimohwsw.jpg ser.jpg
grafharian.jpg oss1.jpg sigi1.JPG
grafperjam.jpg oss2.jpg sigi2.JPG
grafrealtime.jpg oss3.jpg sigi3.JPG
home.jpg pdam.jpg tabeldata.jpg
man1.jpg pdam1.jpg
Pada contoh di atas, dalam home directory onlimo (/home/onlimo) terdapat direktori dokumen hypertext untuk software database monitoring (www) yang di dalamnya terdapat sub direktori (Cgi/) dan (Images/) serta beberapa file kode sumber software database monitoring. Fungsi kedua direktori dan file-file kode sumber tersebut adalah sebagai berikut :
Direktori Cgi/ digunakan untuk menyimpan file-file kode sumber yang berfungsi sebagai mesin pencari data dan mesin pemrosesan data.
Direktori Images/ digunakan untuk menyimpan fille-file gambar / foto yang diperlukan oleh software ini.
File index.html adalah kode sumber untuk frame utama.
File atas.php adalah kode sumber untuk frame bagian atas, dan file bawah.htm adalah kode sumber untuk frame bagian bawah.
File tabbulananf.php adalah kode sumber frame utama untuk tab menu analisa grafik bulanan, file tabbulanana.php adalah kode sumber untuk
frame bagian atasnya sedangkan tabbulananb.htm adalah kode sumber
untuk frame bagian bawahnya.
File tabharianf.php adalah kode sumber frame utama untuk tab menu analisa grafik harian, file tabhariana.php adalah kode sumber untuk frame bagian atasnya sedangkan tabharianb.htm adalah kode sumber untuk
frame bagian bawahnya.
File tabpengukuranf.php adalah kode sumber frame utama untuk tab menu data pengukuran, file tabpengukurana.php adalah kode sumber untuk
frame bagian atasnya sedangkan tabpengukuranb.htm adalah kode
sumber untuk frame bagian bawahnya.
File tabperjamf.php adalah kode sumber frame utama untuk tab menu analisa grafik per jam, file tabperjama.php adalah kode sumber untuk frame bagian atasnya sedangkan tabperjamb.htm adalah kode sumber untuk
File tabrealtimef.php adalah kode sumber frame utama untuk tab menu grafik realtime, file tabrealtimea.php adalah kode sumber untuk frame bagian atasnya sedangkan tabrealtimeb.htm adalah kode sumber untuk
frame bagian bawahnya.
File tabstasiun.php adalah kode sumber untuk tab menu data stasiun
monitoring.
Di dalam direktori Cgi/ terdapat direktori Jqplot/ dan beberapa file untuk mengakses ke database dan membuat beberapa grafik yang merupakan Common
Gateway Interface (CGI) bagi aplikasi ini. Fungsi masing-masing direktori dan file
kode sumbernya adalah sebagai berikut :
Direktori Jqplot/ merupakan kode sumber utilitas untuk pembuatan grafik yang ditulis dalam bahasa javascript.
File cgipengkuran.php adalah kode sumber yang digunakan untuk mengambil data pengukuran di dalam database.
File cgistasiun.php adalah kode sumber yang digunakan untuk mengambil data stasiun di dalam database.
File connect.php adalah kode sumber umum yang digunakan untuk menyambungkan ke database onlimo di dalam server. File ini dilink oleh hampir semua file .php dalam aplikasi ini.
File grafbulanan.php adalah kode sumber yang digunakan untuk membuat mengambil data dan menampilkannya dalam bentuk analisa grafik bulanan.
File grafharian.php adalah kode sumber yang digunakan untuk mengambil data dan menampilkannya dalam bentuk analisa grafik harian.
File grafjaman.php adalah kode sumber yang digunakan untuk mengambil data dan menampilkannya dalam bentuk analisa grafik per jam.
File grafrealtime.php adalah kode sumber yang digunakan untuk mengambil data dan menampilkannya dalam bentuk grafik realtime.
File waktubulanan.php adalah kode sumber yang dipakai untuk membuat rekap data bulanan dari satu stasiun monitoring.
File waktuharian.php adalah kode sumber yang dipakai untuk membuat rekap data harian dari satu stasiun monitoring.
File waktujaman.php adalah kode sumber yang dipakai untuk membuat rekap data per jam dari satu stasiun monitoring.
File waktupengukuran.php adalah kode sumber yang digunakan untuk membuat rekap waktu pengukuran dari satu stasiun monitoring.
Dalam direktori Jqplot/ terdapat beberapa file yang diperlukan untuk membuat grafik dengan format standar grafik garis (line graphics). Jqplot merupakan plugin jQuery yang dibuat menggunakan bahasa javascript dan merupakan software OSS dan dapat diunduh dari situs www.jqplot.com. Penjelasan rinci mengenai plugin jqplot ini ada pada file readme, usage, dan optionstutorial dalam direktori ini
Berikut ini adalah isi kode sumber file index.html yang merupakan kode sumber frame utama software database monitoring dan gambar tampilan halaman
<html> <head>
<title>Online Monitoring Kualitas Air Berbasis OSS</title> </head>
<frameset rows="125,*" framespacing="0" border="0" frameborder="0"> <frame name="frameatas" src="atas.php" scrolling="no"
noresize target="framebawah">
<frame name="framebawah" src="bawah.htm" scrolling="auto" noresize target="framebawah">
</frameset> <body> <noframes>
<p>This page uses frames, but your browser doesn't support them.</p> </noframes>
</body> </html>
Gambar 3.4. Home Page Software Database Monitoring (index.html)
Pilihan menu yang ditampilkan pada home page di atas terdiri dari 6 tab menu, yaitu (1). DataStasiun, (2). Data Pengukuran, (3). Grafik per Jam, (4). Grafik Harian, (5). Grafik Bulanan dan (6.) Grafik Realtime. Kode sumber untuk membuat tab menu di atas adalah seperti contoh di bawah ini.
<script language="javascript"> function resubmit() { document.form1.action="tabstasiun.php"; document.form1.submit(); } function fncSubmit(strPage){ if(strPage == "datastasiun"){ document.form1.action="tabstasiun.php"; } if(strPage == "datamonitoring"){ document.form1.action="tabpengukuranf.php"; } if(strPage == "grafikperjam"){ document.form1.action="tabperjamf.php"; } if(strPage == "grafikharian"){ document.form1.action="tabharianf.php"; } atas.php bawah.htm
if(strPage == "grafikbulanan") { document.form1.action="tabbulananf.php"; } if(strPage == "grafikrealtime") { document.form1.action="tabrealtimef.php"; } document.form1.submit(); } </script>
Pada frame bagian atas (atas.php) telah disediakan menu pilihan daftar stasiun monitoring yang diambil dari tabel Stasiun database onlimodb melalui DML SQL di bawah ini. Parameter IDStasiun yang diperoleh merupakan kunci untuk menampilkan data pengukuran dengan berbagai cara penelusuran. Perubahan pilihan variabel NamaStasiun akan berakibat perubahan nilai pada variabel IDStasiun sehingga rekap data yang disediakan di setiap menu tab control akan mengikuti nilai IDStasiun.
<?php
include "Cgi/connect.php";
$rs1 = mysql_query("select IDStasiun, NamaStasiun from Stasiun
group by IDStasiun, NamaStasiun asc"); while($row1 = mysql_fetch_array($rs1)){
$var_idsta=$row1["IDStasiun"]; $var_namasta=$row1["NamaStasiun"];
echo "<option value=".$var_idsta.">".$var_namasta."</option>"; }
?>
3.2.1. Pilihan Menu Data Stasiun
Pada menu Data Stasiun akan ditampilkan informasi umum mengenai stasiun monitoring. Jika menu Pilihan Stasiun dipilih atau menu Data Stasiun diklik, maka secara otomatis informasi umum mengenai stasiun tersebut akan ditampilkan oleh program tabstasiun.php melalui DML SQL sebagai berikut :
select * from Stasiun where IDStasiun LIKE '%$idstat%' group by IDStasiun
Informasi data yang diperoleh akan ditampilkan seperti pada gambar di bawah ini. Bagian kiri menampilkan foto kondisi lokasi stasiun yang dimaksud dan bagian kanan berisi informasi sebagai berikut :
ID Stasiun adalah nomor identifikasi stasiun monitoring.
Nama Stasiun adalah nama stasiun monitoring.
Alamat Stasiun adalah alamat lengkap lokasi stasiun monitoring.
Nomor Telepon adalah nomor telepon / alamat IP di data logger.
Kontak Person adalah nama penanggungjawab stasiun monitoring.
Koordinat Lintang adalah posisi koordinat lintang stasiun monitoring.
Koordinat Bujur adalah posisi koordinat bujur stasiun monitoring.
Gambar 3.5. Halaman Web Informasi Umum Stasiun Monitoring 3.2.2. Pilihan Menu Data Pengukuran
Gambar 3.6. Halaman Web Penelusuran Waktu Data Pengukuran
Pada menu ini, data pengukuran dapat ditelusuri kembali berdasarkan pilihan nama Stasiun dan Tahun pengukuran, Bulan pengukuran serta Tanggal pengukuran. Pilihan waktu ini disusun oleh program waktupengukuran.php yang membuat rekap waktu dari tabel Pengukuran. Jika seluruh variabel (Tahun, Bulan, Tanggal) telah dipilih maka seluruh data pengukuran per jam akan ditampilkan ke
layar monitor. Data Tahun, Bulan dan Tanggal pengukuran merupakan data sesungguhnya yang ada di dalam tabel data Pengukuran, sehingga dimungkinkan setiap stasiun memiliki pilihan data waktu pengukuran yang berbeda-beda.
Jika semua pilihan waktu pengukuran telah diisi, maka klik ikon [Cari Data] untuk menampilkan semua datanya. Program cgipengukuran.php yang merupakan mesin pencarinya akan menelusuri data menggunakan DML CGI sebagai berikut :
select `Stasiun`.`IDstasiun`,`Pengukuran`.`Tanggal`, `Pengukuran`.`Jam` from `Stasiun`, `Pengukuran`
where`Stasiun`.`IDStasiun` = `Pengukuran`.`IDStasiun` and (`Stasiun`.`IDstasiun` LIKE '%$idstat%') and
(`Pengukuran`.`Tanggal` LIKE '%$tglukur%')
Data yang ditampilkan dapat dinavigasikan menggunakan ikon navigasi sebagai berikut :
[ |<< ] :untuk menuju record data pertama.
[ << ] :untuk menuju record data sebelumnya.
[ >> ] :untuk menuju record data berikutnya.
[ >>| ] :untuk menuju record data terakhir.
Gambar berikut adalah contoh hasil penelusuran data pengukuran untuk pilihan stasiun Logger No. 1 Onlimo OSS (OSS1) dengan pilihan waktu pengukuran Tahun=2012, Bulan=Juni dan Tanggal=06 (2012-06-06)
3.2.3. Pilihan Menu Grafik Per Jam
Gambar 3.8. Halaman Web Pilihan Data Waktu Grafik Per Jam
Pada menu Grafik Per Jam akan ditampilkan analisa grafik per jam, yaitu grafik yang menampilkan data pengukuran selama satu hari pemantauan di salah satu stasiun dengan batasan jam mulai sampai jam akhir pengukuran. Analisa grafik per jam dapat dibuat dengan memilih salah satu nama Stasiun, dengan batasan data menggunakan Tahun pengukuran, Bulan pengukuran, Tanggal pengukuran, Jam Mulai dan Jam Akhir pengukuran serta Parameter kualitas air yang ingin ditampilkan grafiknya. Pilihan waktu ini disusun oleh program waktujaman.php yang membuat rekap waktu per jam dari tabel Pengukuran.
Batasan waktu pengukuran per jam yang akan ditampilkan merupakan data sesungguhnya yang ada di dalam tabel data pengukuran, sehingga dimungkinkan setiap stasiun memiliki batasan waktu pengukuran per jam yang berbeda-beda. Komputer akan membuat rekap data pemantauan sebelum menampilkan pilihan waktu pengukuran per jam, sehingga proses loading data sangat bergantung kepada banyak data dan kecepatan processor komputer. Parameter kualitas air yang dapat dipilih adalah sebagai berikut :
Suhu / Temperatur air dalam satuan derajat selsius [oC].
TDS / Total Dissolved Substance atau kandungan zat padat terlarut dalam satuan [gram / liter].
Conductivity / Konduktifitas atau Daya Hantar Listrik (DHL) dalam satuan [µS / cm].
Salinity / Salinitas atau kandungan kadar garam dalam satuan [ppt].
DO / Dissolve Oxygen atau kandungan oksigen terlarut dalam satuan [mg / liter].
Jika nama stasiun dan batasan waktu serta parameter kualitas air telah diisi, maka untuk menampilkan grafiknya, klik ikon [Gambar Grafik]. Program grafjaman.php yang merupakan mesin pencarinya akan menelusuri data menggunakan DML CGI berikut ini :
select Jam, $param
from `Stasiun`, `Pengukuran`
where `Stasiun`.`IDStasiun` = `Pengukuran`.`IDStasiun` and (`Stasiun`.`IDStasiun` LIKE '$idstat')
and (`Pengukuran`.`Tanggal` LIKE '$tanggal')
and (`Pengukuran`.`Jam` BETWEEN '$jammulai' and '$jamakhir') order by `Pengukuran`.`Jam` asc
Gambar di bawah ini adalah contoh hasil penelusuran data pengukuran yang ditampilkan dalam bentuk analisa grafik per jam. Pada bagian bawah ditampilkan grafik dan tabel data pengukuran sesuai batasan waktu yang tentukan di atas.
3.2.4. Pilihan Menu Grafik Harian
Pada menu Grafik Harian akan ditampilkan data pengukuran selama satu bulan pemantauan di salah satu stasiun dengan batasan tanggal mulai dan tanggal akhir pengukuran. Analisa grafik harian dapat dibuat dengan memilih salah satu nama Stasiun, dengan batasan data memakai Tahun pengukuran, Bulan pengukuran, dan Tanggal pengukuran, serta Parameter kualitas air yang ingin ditampilkan grafiknya. Pilihan batasan waktu yang diberikan disusun oleh program waktuharian.php yang membuat rekap waktu dari tabel Pengukuran.
Gambar 3.10. Halaman Web Pilihan Data Waktu Grafik Harian
Batasan waktu pengukuran merupakan data sesungguhnya yang ada di dalam tabel data pengukuran, sehingga dimungkinkan setiap stasiun memiliki batasan waktu pengukuran harian yang berbeda-beda. Komputer akan membuat rekap data pemantauan harian sebelum menampilkan pilihan waktu pengukuran hariannya, sehingga proses loading data sangat bergantung kepada banyak data dan kecepatan processor komputer. Parameter kualitas air yang dapat dipilih, yaitu :
Suhu / Temperatur air dalam satuan derajat selsius [oC].
TDS / Total Dissolved Substance atau kandungan zat padat terlarut dalam satuan [gram / liter].
Conductivity / Konduktifitas atau Daya Hantar Listrik (DHL) dalam satuan [µS / cm].
Salinity / Salinitas atau kandungan kadar garam dalam satuan [ppt].
DO / Dissolve Oxygen atau kandungan oksigen terlarut dalam [mg / liter].
pH atau kadar keasaman (asam/basa)
Jika nama stasiun dan batasan data serta parameter kualitas air telah diisi, klik ikon [Gambar Grafik] untuk menampilkan grafiknya. Program grafharian.php yang merupakan mesin pencarinya akan menelusuri data menggunakan DML CGI berikut ini.
select Tanggal, monthname(Tanggal) as bulan, avg($param) as rataparam from `Stasiun`, `Pengukuran`
where `Stasiun`.`IDStasiun` = `Pengukuran`.`IDStasiun` and (`Stasiun`.`IDStasiun` LIKE '$idstat')
and (`Pengukuran`.`Tanggal` BETWEEN '$tglmulai' and '$tglakhir') group by `Pengukuran`.`Tanggal` order by `Pengukuran`.`Tanggal` asc
Gambar berikut adalah hasil penelusuran data pengukuran yang ditampilkan dalam bentuk analisa grafik harian dengan tabel data pengukuran hariannya di bagian bawah window.
3.2.5. Pilihan Menu Grafik Bulanan
Menu Grafik Bulanan menampilkan analisa grafik bulanan dengan data pengukuran selama satu tahun pemantauan di salah satu stasiun dengan batasan bulan mulai dan bulan akhir pengukuran. Analisa grafik bulanan dapat dibuat dengan memilih salah satu nama Stasiun, dengan batasan data menggunakan Tahun pengukuran, Bulan Mulai, dan Bulan Akhir pengukuran, serta Parameter kualitas air yang ingin ditampilkan grafiknya. Pilihan batasan waktu ini disusun oleh program waktubulanan.php yang membuat rekap waktu dari tabel Pengukuran.
Gambar 3.12. Halaman Web Pilihan Data Waktu Grafik Bulanan
Batasan waktu pengukuran bulanan merupakan data sesungguhnya yang ada di dalam tabel data pengukuran, sehingga dimungkinkan setiap stasiun memiliki batasan waktu pengukuran bulanan yang berbeda-beda. Komputer akan membuat rekap data pemantauan bulanan sebelum menampilkan pilihan waktu pengukuran bulannya, sehingga proses loading data sangat bergantung kepada banyak data dan kecepatan processor komputer. Parameter kualitas air yang dapat dipilih, yaitu :
Suhu / Temperatur air dalam satuan derajat selsius [oC].
TDS / Total Dissolved Substance atau kandungan zat padat terlarut dalam satuan [gram / liter].
Conductivity / Konduktifitas atau Daya Hantar Listrik (DHL) dalam satuan [µS / cm].
Salinity / Salinitas atau kandungan kadar garam dalam satuan [ppt].
DO / Dissolve Oxygen atau kandungan oksigen terlarut dalam [mg / liter].
pH atau kadar keasaman (asam/basa)
Jika nama stasiun dan batasan data serta parameter kualitas air telah diisi, klik ikon [Gambar Grafik] untuk menampilkan grafiknya, maka program grafbulanan.php yang merupakan program cgi / mesin pencari secara otomatis akan dijalankan DML SQL seperti contoh di bawah ini.
select year(Tanggal) as tahun, month(Tanggal) as angkabulan, monthname(Tanggal) as bulan, avg($param) as rataparam
from Pengukuran where IDStasiun LIKE '$idstat' and year(Tanggal) LIKE '$tahun'
and month(Tanggal) BETWEEN '$blnmulai' and '$blnakhir' group by tahun, angkabulan, bulan
order by month(Tanggal) asc
Gambar berikut adalah hasil penelusuran data pengukuran bulanan yang ditampilkan dalam bentuk analisa grafik bulanan dan tabel data pengukuran bulanannya di bagian bawah window. Data yang diperoleh merupakan hasil perhitungan dari data rata-rata pengukuran per jam.
3.2.6. Pilihan Menu Grafik Realtime
Menu Grafik Realtime menampilkan grafik data pengukuran online dan
realtime salah hari ini di salah satu stasiun pengukuran. Analisa grafik realtime dapat
dibuat dengan memilih salah satu nama Stasiun dan memilih salah satu Parameter kualitas air yang ingin ditampilkan grafiknya.
Gambar 3.14. Halaman Web Pilihan Parameter Grafik Realtime
Untuk mendefinisikan waktu hari ini, perlu ditentukan local timezone dengan menggunakan kode sumber berikut :
if (function_exists('date_default_timezone_set')) { date_default_timezone_set('Asia/Jakarta'); } else { putenv("TZ=Asia/Jakarta"); }
Kemudian data diambil menggunakan kondisi waktu tersebut menggunakan DML SQL sebagai berikut :
$tglhariini = date("Y-m-d");
select Jam, $param from Pengukuran
where IDStasiun LIKE '$idstat' and Tanggal LIKE '$tglhariini' order by Jam asc
Tampilan grafik realtime akan berubah-ubah sesuai data yang masuk setiap interval waktu pengukuran. Program Web broswer akan memuat ulang (refresh) tampilan grafik realtime dengan interval waktu beberapa menit. Interval waktu untuk memuat ulang tampilan grafik realtime ini ditulis dalam kode sumber seperti contoh di bawah ini. Dalam contoh ini waktu yang diset adalah 10 menit. Pembaruan data diperoleh dengan menjalankan program script grafrealtime.php.
header("Refresh: 10; url=grafrealtime.php?id_stasiun=".$idstat." & Parameter=".$param."");
Parameter kualitas air yang dapat dipilih adalah sebagai berikut :
Suhu / Temperatur air dalam satuan derajat selsius [oC].
TDS / Total Dissolved Substance atau kandungan zat padat terlarut dalam satuan [gram / liter].
Conductivity / Konduktifitas atau Daya Hantar Listrik (DHL) dalam satuan [µS / cm].
Salinity / Salinitas atau kandungan kadar garam dalam satuan [ppt].
DO / Dissolve Oxygen atau kandungan oksigen terlarut dalam satuan [mg / liter].
pH atau kadar keasaman (asam/basa)
Jika nama stasiun dan parameter kualitas air telah dipilih, maka grafik realtime dapat ditampilkan dengan mengklik ikon [Refresh Grafik] seperti gambar di bawah ini. Tabel data pengukuran realtime disajikan pada bagian bawah window.