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

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

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

 

Penutup

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

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>