Contoh Program Mengontrol Wi-Fi Relay Menggunakan Bahasa PHP Dan Python


Pada tulisan sebelumnya, yakni Mengontrol Empat Relay Via Wi-Fi Dengan ESP-01 Dan STM8S103F3F6, telah saya berikan cerita singkat dan contoh program untuk mengontrol Wi-Fi Relay menggunakan Visual Basic.

Pada tulisan ini saya akan memberikan contoh program singkat untuk mengontrol Wi-Fi Relay menggunakan bahasa PHP dan Python. Karena Wi-Fi Relay menggunakan komunikasi TCP, maka program PHP dan Python yang saya akan saya contohkan sebenarnya hanyalah contoh sederhana pemrograman socket.

Jadi intinya hanyalah tentang bagaimana menginisialisasi koneksi socket, bagaimana melakukan koneksi ke host (Wi-Fi Relay) dan bagaimana mengirimkan data (perintah) ke host (Wi-Fi Relay).

wf4ron

Wi-Fi Relay menggunakan modul ESP8266 (ESP-01) yang bekerja pada mode AP (Access-Point) dengan alamat IP 192.168.4.1. Layanan komunikasi TCP untuk pengontrolan diberikan melalui port 23. Adapun perintah-perintah (commands) pengontrolan relay yang dikenali oleh modul Wi-Fi Relay adalah:

  • on1, mengaktifkan Relay-1
  • on2, mengaktifkan Relay-2
  • on3, mengaktifkan Relay-3
  • on4, mengaktifkan Relay-4
  • off1, mematikan Relay-1
  • off2, mematikan Relay-2
  • off3, mematikan Relay-3
  • off4, mematikan Relay-4
  • aon, mengaktifkan semua relay
  • aof, mematikan semua relay
  • n *5ms, delay selama (n * 5) ms

Nah langsung saja, berikut ini adalah kode program wf4r.php dan wf4r.py.

Kode Program wf4r.php

#!/usr/local/bin/php -q

<?php

 $address = '192.168.4.1';
 $port = 23;

 if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) 
 {
   echo "socket_create() error: " . socket_strerror(socket_last_error()) . "\n";
   exit();
 }

 echo "Connecting to '$address' on port '$port'...";
 $result = socket_connect($sock, $address, $port);
 if ($result === false) 
 {
   echo "socket_connect() error ($result) : " . socket_strerror(socket_last_error($sock)) . "\n";
   exit();
 } 
 else { echo "\nOK.\n"; }

 $msg = "\r\n\r\non1 200 *5ms on2 200 *5ms on3 200 *5ms on4 500 *5ms aof\r\n";
 echo "Send commands: $msg";
 if ((socket_write($sock, $msg, strlen($msg))) === false)
 { 
   echo "socket_write() error: " . socket_strerror(socket_last_error()) . "\n";
 }
 else { echo "OK.\n"; }
 sleep(1);
 socket_close($sock);
?>

Program wf4r.php menggunakan fungsi socket_create untuk menginisialisasi koneksi TCP. Variabel $sock nantinya akan berisi handle komunikasi yang selanjutnya digunakan untuk melakukan koneksi dan komunikasi dengan host.

Untuk melakukan koneksi ke host, digunakan fungsi socket_connect. Dan untuk mengirimkan data ke host, pada program PHP ini digunakan fungsi socket_write.

Mengeksekusi wf4r.php

Untuk mengeksekusi kode program di atas, kita bisa langsung memanggil program php dengan perintah sebagai berikut:

$ php wf4r.php

Ketika dieksekusi dan berhasil melakukan koneksi ke host, maka program wf4r.php akan mengirimkan perintah

on1 200 *5ms on2 200 *5ms on3 200 *5ms on4 500 *5ms aof

yang artinya:

  • mengaktifkan Relay-1 (on1)
  • delay sekitar 1000 ms (200 *5ms)
  • mengaktifkan Relay-2 (on2)
  • delay sekitar 1000 ms (200 *5ms)
  • mengaktifkan Relay-3 (on3)
  • delay sekitar 1000 ms (200 *5ms)
  • mengaktifkan Relay-4 (on4)
  • delay sekitar 2500 ms (500 *5ms)
  • matikan semua relay (aof)

Kode Program wf4r.py

#!/usr/bin/python

import socket, sys, time

# Usage:
# ./wf4r.py <ip address> <port> <command1> <command2> <...>

# Example:
# ./wf4r.py 192.168.4.1 23 on1 on2 on3 on4 200 *5ms aof

print 'Connecting to ' +sys.argv[1] + ' on port '+ sys.argv[2]
s = socket.socket()
s.connect((sys.argv[1], int(sys.argv[2])))

n = len(sys.argv)
sys.stdout.write('Sending ')

for i in range(n-3):
  sys.stdout.write(sys.argv[i+3] + ' ')
  s.send(sys.argv[i+3]+' ')
  time.sleep(.1)

s.send('\r\n');

print "\nDone."

Untuk pemrograman socket, program Python memerlukan module atau library socket. Oleh karenanya diperlukan baris perintah:

import socket, sys, time

Module sys digunakan untuk mengambil data parameter (arguments) yang diberikan pada saat program dipanggil (dieksekusi). Sedangkan module time digunakan untuk melakukan tundaan waktu.

Program memerlukan beberapa parameter (arguments) yakni:

  • ip address
  • port
  • commands

Contoh pemanggilan wf4r.py adalah sebaga berikut:

$ ./wf4r.py 192.168.4.1 23 on1 on2 on3 on4 200 *5ms aof

Perintah ini akan mengaktifkan Relay-1, Relay-2, Relay-3, Relay-4 dan kemudian melakukan tundaan 1000 ms dan mematikan semua relay.

Catatan: untuk mengubah file wf4r.py menjadi executable, lakukan perintah:

$ chmod +x wf4r.py

 

Screenshot

 

Kunjungi Situs Kami

 

Penutup

Jika Anda membutuhkan modul interface dengan koneksi Wi-Fi atau USB atau SERIAL, silakan menghubungi saya melalui SMS/WA ke 081231784018.

Selamat berkarya.

Iklan

2 thoughts on “Contoh Program Mengontrol Wi-Fi Relay Menggunakan Bahasa PHP Dan Python

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

%d blogger menyukai ini:
search previous next tag category expand menu location phone mail time cart zoom edit close