Teknik Elektro LinksBarrier-Gate & Turnstile Interface, Thermostat, Relay Driver, Microcontroler Board

Mengontrol Peralatan Listrik Via Web/Internet Menggunakan Python-CGI Dan Modul USB-2REL

usb-2rel python cgi

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:

usb2rel_python_gui_mongoose

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.

usb relay usb-2rel

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.

Add a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>