Webserver: Temperature Data Logger

, , 1 Comment

Halo selamat datang kembali di andidinata.com. Satu lagi hal yang bisa dikerjakan dengan Raspberry Pi yaitu sebagai temperature logger yang hasilnya dipublikasikan melalui webserver. Pengamatan temperatur menjadi hal yang penting untuk beberapa aplikasi. Misalnya bila kita bekerja di laboratorium yang kondisi temperatur dan kelemabaannya harus terjaga sesuai standar. Atau jika kita ingin memantau temperatur ruang server dengan grafik. Atau bila seorang siswa sedang bereksperimen ilmiah dan diharuskan untuk mencatat nilai temperatur lingkungan sekitar.

Tutorial kali ini menjabarkan secara total bagaimana tahapan setup temperature logger dan webserver hingga mengeksekusi file python dari webserver guna menampilkan grafik trend pembacaan temperatur.

Dalam tutorial ini saya tidak menggunakan sensor temperatur, karena belum punya :). Jadi saya mencoba untuk mengukur temperatur dari CPU (yang tidak jauh berbeda dengan temperatur GPU sebagai data.

Install apache webserver

sudo apt-get install apache2 -y

test dengan mengetikkan http://localhost di web browser

selanjutnya lakukan instalasi sqllite database

sudo apt-get install sqlite3

Buat sebuah database dalam sebuah direktori misalnya /home/pi/temperature

cd
mkdir temperature
cd temperature
sqlite3 templog.db

Buat sebuah tabel bernama temps dengan dua kolom bernama timestamp bertipe DATETIME dan temp bertipe NUMERIC

BEGIN; 
CREATE TABLE temps (timestamp DATETIME, temp NUMERIC); 
COMMIT;

Hingga tahap ini kita sudah menginstall webserver dan database. Ketik .exit untuk keluar dari sqlite3.

Selanjutnya kita perlu membuat script untuk mengambil data temperatur dari CPU dan simpan dalam direktori yang sama dengan database templog.db. Berikan nama read_temp.py

Kalau kamu memiliki script untuk mencatat temperature dan kelembaban dari sensor, tambahakan beberapa library yang diimport dalam script ini dan juga fungsi log_temperature() kedalam script kamu.

rubah file python menjadi executable

chmod +x read_temp.py

Jalankan scriptnya untuk mulai mengambil data temperatur dari CPU agar database mulai terisi dengan data. Untuk membaca isi database, buat python script sepert dibawah ini. Dan rubah menjadi executable seperti perintah sebelumnya.

Tahap terakhir adalah membuat script untuk membaca isi database dan melakukan visualisasi tampilan di web browser.

Download file webgui.py ke dalam direktori /usr/lib/cgi-bin (lihat source dibagian bawah). Script ini perlu dirubah sedikit untuk menyesuaikan dengan lokasi database dan juga periode waktu penyajian data. Script ini berfungsi untuk membaca data dalam database templog.db lalu membuat format html yang ditampilkan di web browser. Script ini tidak saya tulis sendiri, tapi mengambil dari source yang saya tuliskan dibagian bawah.

Berikan permission agar apache2 bisa mengakses file ini

sudo chown www-data /usr/lib/cgi-bin/webgui.py

Untuk membuat apache webserver dapat mengeksekusi python script, maka rubah file webgui.py menjadi executable

sudo chmod +x /usr/lib/cgi-bin/webgui.py

Lakukan beberapa perubahan di konfigurasi filenya agar dapat menghandle file berekstensi .py dan mengeksekusinya.

sudo nano /etc/apache2/sites-enabled/000-config.conf

 

Setelah file konfigurasi disave, untuk mengaktifkan cgi handler, ketikkan

a2enmod cgi

lalu diikuti dengan melakukan restart service

sudo service apache2 restart

Sekarang, saatnya moment of truth, ketikkan http://localhost/cgi-bin/webgui.py . Apabila berhasil, kamu akan melihat grafik yang bagus seperti dibawah ini

 

Jika file read_temp.py dijalankan dibackground (lihat posting bagaimana menjalankan python script pada saat boot) maka setiap kali kita refresh page ini, maka chart akan terupdate. Untuk mengupdate webpage secara otomatis installah sebuah chrome extension “Easy Auto Refresh” dan set waktu refreshnya untuk mendapatkan kesan se “real-time” mungkin. Hasilnya graph akan terupdate secara otomatis, dijamin keren.

Selain dengan Raspberry Pi, kamu juga bisa melakukan hal yang sama dengan microcontoller misalnya ESP8266 dengan bantuan MQTT untuk memposting nilai temperature dan kelembaban ke sebuah analytical service ThingSpeak.

Sekian informasi tutorial ini, semoga bermanfaat. Jika suka dengan post ini, silahkan berikan komentar, like, share dan subscribe. Sampai bertemu di tulisan berikutnya.

 

My learning sources:

“http://raspberrywebserver.com/cgiscripting/rpi-temperature-logger/building-an-sqlite-temperature-logger.html”

“https://www.raspberrypi.org/forums/viewtopic.php?t=186241&p=1176134”

“https://github.com/Pyplate/rpi_temp_logger/blob/master/webgui.py”

 

 

Facebook Comments
 

One Response

Leave a Reply