Mengontrol Relay USB-2REL Via Web/Internet Menggunakan Python-CGI


usb2rel_python_cgi

Mengontrol relay via web/internet tidak pernah semudah ini saya rasakan. Pada tulisan terdahulu tentang pengontrolan modul USB-2REL via web/internet menggunakan PHP, saya menggunakan program utilitas USB2R.EXE untuk mengontrol USB-2REL. Program tersebut dieksekusi oleh PHP menggunakan fungsi exec().

Dengan Python-CGI, kita tidak memerlukan lagi program USB2R.EXE karena Python memiliki library yang siap-pakai dan handal untuk mengakses port USB. Modul yang digunakan adalah PyUSB 1.0. Modul ini dapat Anda download melalui situsnya di: http://sourceforge.net/projects/pyusb/.

Langsung saja, berikut adalah listing program pyusb2rel.cgi yang selengkapnya.

# pyusb2rel.cgi
# Kontrol relay USB-2REL via web
# Chandra MDE (22/04/2013)
# 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)

Skrip mengimport modul cgi dan usb.core untuk berinteraksi dengan web browser melalui CGI dan berinteraksi dengan modul USB-2REL.

Skrip menampilkan 6 buah button submit dengan nama yang sama yakni name="BTN". Pemberian nama yang sama untuk keenam button submit ini 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.

Untuk mengambil data yang di-submit oleh user, perintah:

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)

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

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

Yang terpenting adalah parameter cgi_interpreter harus diarahkan pada file python.exe yang ada pada komputer yang digunakan sebagai server. Pada komputer saya, python.exe terletak pada direktori c:\python25\python.exe.

Python itu cespleng, bukan? ๐Ÿ˜€

Jika Anda berminat untuk bereksperimen dengan modul USB-2REL, Anda bisa mendapatkannya di: http://teknikelektrolinks.com.

Dan jika Anda menginginkan file-file hasil eksperimen ini, yakni yang terdiri dari file pyusb2rel.cgi lengkap dengan web server Mongoose yang siap digunakan, silakan memberikan komentar pada tulisan ini disertai alamat email yang benar.

Semoga bermanfaat. Selamat belajar dan selamat berkarya!

๐Ÿ™‚

Iklan
Perihal

Cek situs kami di http://teknikelektrolinks.com. Blog Raspberry Pi: http://raspi.teknikelektrolinks.com

Tagged with: , , , , ,
Ditulis dalam Antarmuka Komputer, AVR, Driver Relay, Elektronika, Gratisan, Industrial Control and Automation, Mikrokontroler, PHP, Python, Software/Programming
5 comments on “Mengontrol Relay USB-2REL Via Web/Internet Menggunakan Python-CGI
  1. Lukman berkata:

    Mau donk di share ilmunya.kebetulan ane punya hobby merakit elrktronik/elektrik

  2. mynameadam berkata:

    cara di atas bisa dikembangkan dengan mengendalikan peralatan usb-rel, menggunakan android dg widget webkit.
    jd alur kerjanya adaah = > aplikasi android via webkit –> konek ke server usb-rel –> usb-rel.
    (lagi dicoba) :-p

    • Chandra MDE berkata:

      Sip, langkah selanjutnya adalah mengontrol USB-2REL dengan Android.
      Semoga cepat terlaksana. Btw, download link sudah kami kirim ke alamat email Bapak.
      Thank you for using USB-2REL. ๐Ÿ™‚

  3. jihat berkata:

    thanks pak . atas share ilmunya …….
    ini akan saya kembangkan ke tempat saya bekerja >>>>>>>>thanks

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Kategori

Bergabunglah dengan 2.503 pengikut lainnya

Hot Links




Display Counter 3-Digit Dengan Koneksi Wi-Fi
Display Nomor Antrian WiFi Android
Mengontrol Relay Via USB/Serial dan Wi-Fi
USB Relay USB-2REL
USB Relay USB-4REL
Water Level Control WLC-02
Serial Relay SER-4REL
NEO STARDUINO SMS ALARM

Alarm SMS Berbasis NEO STARDUINO

1 PC – 6 Unit USB-2REL

Testing 6 USB-2REL Pada 1 Komputer

Standard Pengujian USB-2REL

Pengujian USB-2REL Sebelum Dikirim

LPT-4REL on Knoppix 7.0.5

Testing LPT-4REL on Knoppix Linux

T101 Inkubator Telur

T101 Inkubator Penetas Telur

KONTROL PERALATAN LISTRIK VIA PORT LPT KOMPUTER

Demo Kontrol Kontaktor via Port LPT

STARDUINO meets ANDROID

Demo Kontrol Bluetooth Relay Android

STARDUINO SMS RELAY

Kontrol Relay Via SMS Dengan Starduino

STARDUINO WEB RELAY

Demo Kontrol Relay Via Web/Internet

JustBASIC USB-2REL Control

Demo Kontrol USB-2REL + JustBASIC

STARDUINO + GPS + LCD

Demo Starduino GPS Dengan LCD

USB-2REL EXTREME TEST

Demo Kontrol On/Off Lampu USB-2REL

THERMOSTAT T101 IN ACTION

Demo Thermostat T101 Pada SV=37.5ยฐC

WATER LEVEL CONTROL WLC-02

Demo Kontrol Level Air Tandon WLC-02

HUMIDITY CONTROLLER H103

Demo Kontrol Kelembaban H103 (DHT11)

%d blogger menyukai ini: