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”
Leave a Reply