Mengontrol Peralatan Listrik Via Web/Internet Menggunakan Python-CGI Dan Modul USB-2REL
|Mengontrol modul USB Relay USB-2REL melalui web/internet menggunakan bahasa pemrograman Python sangatlah mudah. Dengan Python, kita bisa mengakses secara langsung modul USB-2REL dengan menggunakan module PyUSB 1.0. Modul ini dapat Anda download melalui situsnya di: http://sourceforge.net/projects/pyusb/. Dan untuk berinteraksi dengan web browser, kita bisa menggunakan modul CGI yang siap pakai.
Nah, Anda pasti sudah penasaran ingin mengetahui bagaimana skrip Python untuk mengontrol relay USB-2REL melalui web/internet. Kalau begitu kita langsung saja, berikut ini adalah listing program pyusb2rel.cgi untuk mengontrol relay via web/internet.
Skrip pyusb2rel.cgi
# pyusb2rel.cgi # Kontrol relay USB-2REL via web # Chandra MDE # Teknik Elektro Links # http://teknikelektrolinks.com import cgi import usb.core usb2rel = usb.core.find(idVendor=5824, idProduct=1500) fields = cgi.FieldStorage() print "Content-type: text/html\r\n\r\n" print "<html>" print "<head>" print "<h2>Kontrol USB-2REL Via Web (Python-CGI)</h2>" print "<hr/>" print "</head>" print '<body style="font-family:Tahoma">' print '<br />' print '<table>' print '<tr>' print ' <form action="pyusb2rel.cgi" method="GET">' print ' <td align="center">' print ' <input type="submit" name="BTN" style="width: 120px; height: 40px;" value="RELAY-1 ON"><br /><br />' print ' <input type="submit" name="BTN" style="width: 120px; height: 40px;" value="RELAY-2 ON"><br /><br />' print ' <input type="submit" name="BTN" style="width: 120px; height: 40px;" value="RELAY1,2 ON"><br /><br />' print ' </td>' print ' <td></td><td></td><td></td>' print ' <td align="center">' print ' <input type="submit" name="BTN" style="width: 120px; height: 40px;" value="RELAY-1 OFF"><br /><br />' print ' <input type="submit" name="BTN" style="width: 120px; height: 40px;" value="RELAY-2 OFF"><br /><br />' print ' <input type="submit" name="BTN" style="width: 120px; height: 40px;" value="RELAY1,2 OFF"><br /><br />' print ' </td>' print ' <td></td><td></td><td></td>' print ' </form>' print ' <td><img src="usb2rel.jpg" width="200" height="150" style="border:2px solid black"><br /><br /></td>' print '</tr><tr></tr><tr></tr>' print '</table>' print '<hr/>' print '<h4>Chandra MDE - <a href="http://teknikelektrolinks.com">http://teknikelektrolinks.com</a></h4>' print '</body>' print '</html>' # proses permintaan user if fields["BTN"].value == "RELAY-1 ON": usb2rel.ctrl_transfer(0x40, 1, 1, 1, None) elif fields["BTN"].value == "RELAY-1 OFF": usb2rel.ctrl_transfer(0x40, 1, 0, 1, None) elif fields["BTN"].value == "RELAY-2 ON": usb2rel.ctrl_transfer(0x40, 1, 1, 2, None) elif fields["BTN"].value == "RELAY-2 OFF": usb2rel.ctrl_transfer(0x40, 1, 0, 2, None) elif fields["BTN"].value == "RELAY1,2 ON": usb2rel.ctrl_transfer(0x40, 2, 0, 0, None) elif fields["BTN"].value == "RELAY1,2 OFF": usb2rel.ctrl_transfer(0x40, 3, 0, 0, None)
Penjelasan Singkat
Skrip mengimport modul cgi agar dapat berinteraksi dengan web browser melalui CGI. Skrip juga mengimport modul usb.core agar dapat mengakses modul USB-2REL melalui port USB.
Skrip pyusb2rel.cgi menampilkan 6 buah button submit dengan nama yang sama yakni name=”BTN”. Pemberian nama yang sama untuk keenam button submit ini merupakan trik yang bertujuan untuk memudahkan proses penyeleksian tombol manakah yang ditekan oleh user.
Ukuran button submit adalah 120px X 40px yang diatur menggunakan parameter style sebagai berikut:
print '<input type="submit" name="BTN" style="width: 120px; height: 40px;" value="RELAY-1 OFF"><br /><br />'
Parameter value diisi nilai string sesuai dengan fungsi button. Button untuk mengaktifkan RELAY-1 diberi value=”RELAY-1 ON”. Untuk button yang berfungsi untuk mematikan RELAY-1 diberi value=”RELAY-2 OFF”. Demikian seterusnya. Dengan demikian, skrip nantinya hanya perlu mengecek nilai dari value untuk mengetahui button apa yang diklik oleh user melalui web browser.
Untuk mengambil data yang di-submit oleh user perintahnya adalah sebagai berikut.
fields = cgi.FieldStorage()
dan untuk menyeleksi button manakah yang ditekan oleh user programnya adalah sebagai berikut:
# proses permintaan user if fields["BTN"].value == "RELAY-1 ON": usb2rel.ctrl_transfer(0x40, 1, 1, 1, None) elif fields["BTN"].value == "RELAY-1 OFF": usb2rel.ctrl_transfer(0x40, 1, 0, 1, None) elif fields["BTN"].value == "RELAY-2 ON": usb2rel.ctrl_transfer(0x40, 1, 1, 2, None) elif fields["BTN"].value == "RELAY-2 OFF": usb2rel.ctrl_transfer(0x40, 1, 0, 2, None) elif fields["BTN"].value == "RELAY1,2 ON": usb2rel.ctrl_transfer(0x40, 2, 0, 0, None) elif fields["BTN"].value == "RELAY1,2 OFF": usb2rel.ctrl_transfer(0x40, 3, 0, 0, None)
Perlu Diperhatikan
Di sinilah letak keuntungan dari pemberian parameter name yang sama untuk keenam button sumbit meskipun fungsinya berbeda-beda. Dengan name yang sama kita dapat dengan mudah mengidentifikasi tombol manakah yang ditekan oleh user.
Pada awal skrip, handle untuk modul USB-2REL didapatkan dengan perintah:
usb2rel = usb.core.find(idVendor=5824, idProduct=1500)
Setelah handle didapat, maka skrip dapat mengirimkan perintah ke modul USB-2REL dengan perintah:
usb2rel.ctrl_transfer(0x40, 1, 1, 1, None) #RELAY-1 ON
Web Server Mongoose
Pad eksperimen ini saya menggunakan web server Mongoose versi 3.6. Setting untuk program Mongoose pada eksperimen ini adalah sebagai berikut:
Setingan yang terpenting adalah parameter cgi_interpreter. Parameter ini harus diarahkan pada file python.exe yang ada pada komputer yang digunakan sebagai server. Pada komputer saya, file python.exe terletak pada direktori c:\python25\python.exe. Sesuaikan nilai parameter ini untuk komputer Anda.
Kesimpulan
Dari eksperimen ini dapat saya simpulkan bahwa bahasa pemrograman Python memang bahasa yang asik karena dukungan modul (library) yang sangat banyak dan teruji. Skrip diatas tentunya juga akan bekerja dengan baik pada platform Linux dan Raspberry Pi.
Versi PHP
Aplikasi yang sama dengan versi pemrograman bahasa PHP dapat Anda baca melalui link berikut ini:
Kontrol Peralatan Listrik Via Web Menggunakan PHP
Jika Anda berminat untuk bereksperimen dengan modul USB-2REL, Anda bisa mendapatkannya di: http://teknikelektrolinks.com/usb-2rel/usb-2rel.htm.
Produk dilengkapi dengan CD yang berisi contoh-contoh program termasuk program pyusb2rel.cgi di atas.
Nah, terima kasih sudah membaca tulisan ini, semoga ada guna dan manfaatnya.
Selamat belajar dan selamat berkarya.