1 BAB III PENGEMBANGAN SISTEM SOFTWARE Sistem software yang dikembangkan untuk mengendalikan sistem kerja pemantauan kualitas air menggunakan data log...
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. cgi / db engine
Database Onlimodb
apache httpd
Web onlimo OSS
mysqld tcp/ip
mysql tcp/ip
Onlimo logger
mysql tcp/ip
mysql tcp/ip
Onlimo logger data
Onlimo logger data
data
Gambar 3.1. Diagram Aliran Data Pengukuran Dari Data Logger ke Pusat Data Petunjuk Operasional
20
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.
Petunjuk Operasional
21
Tabel 3.1. Perkembangan Versi Program Control Data Logger No.
Program
Versi
1.
Onlimo
1.0
Perubahan
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
3.
Onlimo
1.2
Data dari sensor tidak lagi dicatat ke file teks, tetapi dimasukkan ke dalam database MySQL
4.
Onlimo
1.2.1
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
Membaca parameter setting dari file onlimo.conf Mencatat pesan error ke file monitoring.log Penambahan fitur peringatan dini EWS
Tidak ada perubahan dari versi 1.2. Hanya disertakan satu program lagi berupa simulator. Release selanjutnya selalu menyertakan simulator.
Alamat file config bisa diubah, tidak harus berada pada satu direktori dengan program Interval pengambilan data dibuat lebih akurat
7.
Onlimo
1.5
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
Petunjuk Operasional
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.
22
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 sumber program.cpp dan header.h
Berisi kelas untuk pembacaan data dari file konfigurasi onlimo.conf dengan format konfigurasi : = # komentar = <delimiters> contoh: comport = /dev/ttyU0 BMSUHU = 25,00 32,00
ConfigHandler.cpp
5.
DbManager.h DbManager.cpp
6.
SensorLogger.h SensorLogger.cpp
7.
8.
SerialStream.h
Berisi kelas untuk menangani operasi penulisan data ke dalam database MySQL server. Berisi kelas utama yang bertugas melakukan pengambilan data dan mencatatkannya ke dalam database.
SerialStream.cpp
SerialStream adalah kelas yang menangani operasi terhadap serial port, seperti membuka port, menutupnya, membaca data, dan menulis data.
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) Petunjuk Operasional
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 SensorLogger.cpp SerialStream.h SensorLogger.h main.cpp
onlimo.conf
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. Pengambilan data dimulai.
Petunjuk Operasional
25
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 :
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 baudrate idstasiun twarning tperiodik filedata filelog
= = = = = = =
/dev/cuau0 9600 SB1 4 10 data.txt monitoring.log
# # # # # # #
nama file communication port kecepatan koneksi data nomor identifikasi stasiun interval waktu data early warning system interval waktu data periodik (detik) nama file data nama file log pengoperasian
BMPH BMDO BMSAL BMTEMP BMDHL BMTDS
= = = = = =
06,50 05,00 10,00 25,00 10,00 10,00
# # # # # #
batasan batasan batasan batasan batasan batasan
07,05 06,00 15,00 32,00 20,00 15,00
baku baku baku baku baku baku
mutu mutu mutu mutu mutu mutu
pH /asam - basa DO /oksigen terlarut Salinitas / kadar garam temperatur konduktifitas 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.
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]> ConfigHandler.cpp ConfigHandler.h ConfigHandler.o DbManager.cpp DbManager.h DbManager.o Makefile
ls SensorLogger.cpp SensorLogger.h SensorLogger.o SerialStream.cpp SerialStream.h SerialStream.o main.cpp
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]> DbManager.h ConfigHandler.cpp ConfigHandler.h DbManager.cpp
Petunjuk Operasional
ls SerialStream.cpp Makefile SensorLogger.cpp SensorLogger.h
28
SerialStream.h main.cpp onlimo.conf
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 # Deskripsi # # # Project # Versi # Last edit # Author
: cekquery.sh : Bourne Shell Script untuk memeriksa data terkini (hari ini) yang telah dari logger ke database server MySQL sesuai masukan IDStasiun : Onlimo OSS : 1.0 : 7 Juli 2012 : HDW
masukan/input IDStasiun user name akses database nama database alamat IP Server MySQL jumlah baris data yang tampil ke layar intarval waktu refresh ke layar dalam detik
# Cara pemakaian if [ $# = echo echo echo echo echo echo exit 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. Petunjuk Operasional
29
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.
Gambar 3.3. Tampilan Console Screen Program Onlimo Versi 2.0 (beta) Petunjuk Operasional
30
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 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 Button.h Label.cpp TextEdit.cpp ButtonEventListener.h Label.h TextEdit.h GridLayout.cpp Table.cpp Widget.cpp root@onlimologger1[221]>
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 ..... . 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 . 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> ... 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. Petunjuk Operasional
32
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.
Petunjuk Operasional
33
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 ib_logfile1 ibdata1
mysql test onlimodb zenbook.err 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.
Petunjuk Operasional
34
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).
Petunjuk Operasional
35
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]> Cgi/ Images/ atas.php bawah.htm index.html tabbulanana.php tabbulananb.htm Petunjuk Operasional
ls -F tabbulananf.php tabhariana.php tabharianb.htm tabharianf.php tabpengukurana.php tabpengukuranb.htm tabpengukuranf.php 36
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 frame bagian bawahnya.
Petunjuk Operasional
37
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 home page pada program web browser Mozilla Firefox. Petunjuk Operasional
38
Online Monitoring Kualitas Air Berbasis OSS <noframes>
This page uses frames, but your browser doesn't support them.
atas.php
bawah.htm
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"; } Petunjuk Operasional
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.
asc");
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. Keterangan adalah keterangan lain tentang stasiun monitoring.
Petunjuk Operasional
40
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 Petunjuk Operasional
41
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)
Gambar 3.7. Halaman Web Tabel Data Pengukuran Petunjuk Operasional
42
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]. pH atau kadar keasaman (asam/basa).
Petunjuk Operasional
43
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.
Gambar 3.9. Halaman Web Analisa Grafik Per Jam Petunjuk Operasional
44
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. Petunjuk Operasional
45
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.
Gambar 3.11. Halaman Web Analisa Grafik Harian Petunjuk Operasional
46
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. Petunjuk Operasional
47
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.
Gambar 3.13. Halaman Web Analisa Grafik Bulanan
Petunjuk Operasional
48
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. Petunjuk Operasional
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.
Gambar 3.15. Halaman Web Analisa Grafik Realtime Petunjuk Operasional