Giter Club home page Giter Club logo

saklarku's Introduction

saklarku

Saklarku adalah aplikasi mobile remote control berbasis web untuk mengendalikan saklar atau relay yang terhubung pada port GPIO di perangkat atau router yang berbasis OpenWRT.

Repository ini berisi source code aplikasi client yang dibangun dengan platform PhoneGap (silakan di-build sendiri ke platform tujuan Anda) dan script server saklarku-server yang harus dipasangkan di router yang hendak dikendalikan.

Loncat ke:

  1. Tentang aplikasi client
  2. Tentang script saklarku-server
  3. Develop & Build di komputer lokal
  4. Memasang script saklarku-server di router
  5. Menghubungkan aplikasi client ke Server
  6. Berkontribusi

Info:

Dalam pengerjaan project ini, versi OpenWRT yang saya gunakan adalah Barrier Breaker (14.07, r42625) dan router yang saya pakai adalah Huawei HG553

hg553-hardware-mod
gambar modifikasi pemasangan relay ke router, oleh Joni Wang - via Group OpenWRT Indonesia (lihat Credits)

(Client) saklarku-phonegap

saklarku-screenshot

Fitur:

  • Mode kontrol saklar yang lengkap
  • Posisi saklar tersinkronisasi ke semua aplikasi client
  • Bisa menambahkan lebih dari 1 server
  • Menampilkan jadwal dari crontab
  • Ubah parameter server dan hapus server dengan mudah
  • Open Source!

Todo:

  • Edit nama tiap saklar
  • Menambah jadwal baru

(Server) saklarku-server

Pada dasarnya, script di server terdiri dari 2 bagian, yaitu:

  1. saklarku-server/gpio/index.php
    Script ini merupakan script php yang menjadi endpoint parameter URL server di aplikasi client. Script ini akan meneruskan request ke script gpio.sh dan mengembalikan outputnya.
  • Yang perlu diedit:
    • $password, untuk login ke server. (baris 3)
    • $scriptlocation, sesuaikan path dengan tempat Anda meletakkan file gpio.sh. (baris 4)
  1. saklarku-server/gpio/script/gpio.sh
    Script ini merupakan script bash yang bertugas untuk mengubah value/status pada masing-masing LED/GPIO. Script ini mengeluarkan output berupa sintaks JSON.
  • Yang perlu diedit:
    • Sesuaikan urutan GPIO dengan path masing-masing LED (baris 17-25), hapus yang tidak diperlukan.
    • Sesuikan array GPIOS dengan jumlah GPIO yang dipakai. (baris 27)

Script ini juga bisa dijalankan langsung dari command line, beri parameter help untuk menampilkan bantuan:

root@gojibox:# ./gpio.sh help

Cara Pakai:
  ./gpio.sh  [mode] [target] [status]

Mode:
  toggle, single, group, allon, allof, list, status, startup

Contoh:
  ./gpio.sh  toggle 1        toggle GPIO ke 1 (ON/OFF)
  ./gpio.sh  single 2 0      set GPIO 2 dengan posisi 0
  ./gpio.sh  group 123 101   set GPIO 1=1, GPIO 2=0, dan GPIO 3=1
  ./gpio.sh  allon           set semua posisi GPIO dengan 1 / ON
  ./gpio.sh  alloff          set semua posisi GPIO dengan 0 / OFF

  ./gpio.sh  list            tampilkan daftar GPIO yang tersedia
  ./gpio.sh  status          tampilkan status masing-masing GPIO

  ./gpio.sh  startup         mengembalikan posisi GPIO saat startup
                             ke posisi terakhir

Sepertinya output help di atas sudah cukup menjelaskan tentang bagaimana fungsi script gpio.sh ini.

Develop & Build di Komputer Lokal

Aplikasi client ini berbasis HTML dan JavaScript, dibangun menjadi aplikasi mobile dengan platform phonegap, jadi untuk develop di komputer lokal kira-kira workflow-nya seperti berikut:
(Silakan merujuk ke http://docs.phonegap.com/ untuk panduan dan dokumentasi yang lebih lengkap)

  1. Install PhoneGap (http://phonegap.com/)
  2. Install PhoneGap Developer App di device/smartphone untuk testing
  3. Clone/Download repo ini
  4. Edit source aplikasi di folder saklarku-phonegap/www/, oprek sesuka Anda
  5. Testing dengan PhoneGap Developer App atau langsung lewat web browser
    • buka file index.html di browser
  6. Build aplikasi ke platform tujuan
    • Untuk mem-build aplikasi, Anda harus sudah memasang dan mengatur SDK platform tujuan di komputer lokal
  7. Install hasil build ke device/smartphone

Memasang Script saklarku-server di Router

Karena script server berbasis PHP dan BASH, maka Anda membutuhkan web server dan BASH shell untuk menjalankannya di router.

Install web server via opkg. Saya pribadi menggunakan lighttpd sebagai web server di router saya, namun Anda bisa menggunakan web server lain seperti nginx atau uhttpd, yang penting web server tersebut bisa menjalankan script PHP.

Anda juga bisa menginstall BASH langsung dari opkg.

(Pastikan Anda sudah mengubah password di file index.php dan menyesuaikan daftar GPIO di file gpio.sh)

  1. Copy folder gpio (saklarku-server/gpio) ke folder root web server, folder ini akan menjadi endpoint parameter URL di aplikasi client

    • misalnya root web server adalah /website/, copy folder gpio ke dalamnya, pastikan path file index.php dan file gpio.sh sesuai dengan path berikut:
      • /website/gpio/index.php
      • /website/gpio/script/gpio.sh
  2. Ubah permission file gpio.sh agar bisa dieksekusi
    # chmod +x /website/gpio/script/gpio.sh

  3. Sekarang seharusnya script bisa diakses dengan alamat http://IP_ROUTER/gpio/ dan akan menampilkan error: unauthorized karena memang harus diakses dari aplikasi client. Tidak apa-apa, script sudah bisa diakses.

Agar Jadwal di Crontab Bisa Ditampilkan di Aplikasi Client

Saat ini client bisa mengenali jadwal harian, mingguan dan bulanan. Agar jadwal bisa ditampilkan, maka penulisan jadwal di crontab harus sesuai formatnya:

* * * * * /full/script/path/to/gpio.sh [parameter] # Nama Jadwal
- perhatikan bahwa path script ditulis dengan lengkap, dan nama jadwal dipisahkan oleh simbol #

  • Matikan saklar 1 tiap hari jam 6:15 pagi dengan nama "Lampu Mati"
    15 6 * * * /website/gpio/script/gpio.sh single 1 0 # Lampu Mati

  • Nyalakan saklar 2 dan 3 tiap hari minggu jam 19:00 malam dengan nama "Pagar dan Taman ON"
    0 19 * * 6 /website/gpio/script/gpio.sh group 23 11 # Pagar dan Taman ON

  • Matikan saklar 3 dan 4 tanggal 25 tiap bulan, jam 9:30 dengan nama "Tanggal Tua"
    30 9 25 * * /website/gpio/script/gpio.sh group 34 00 # Tanggal Tua

(Anda bisa menggunakan layanan crontab generator agar lebih mudah dalam memahami sintaks crontab: http://crontab-generator.org)

Menghubungkan Aplikasi Client ke Server

Setelah berhasil build ke platform tujuan dan aplikasi telah terpasang di device/smartphone Anda, saatnya mengakses server dari aplikasi.

  1. Pastikan device/smartphone bisa mengakses router.

  2. Tambahkan server baru di aplikasi client:

    • Nama Server: terserah
    • URL Server: http://IP_ROUTER/gpio/
    • Password: sesuaikan (sesuaikan dengan pengaturan sebelumnya)
  3. Selanjutnya aplikasi client akan otomatis menyambungkan ke server dan menampilkan list saklar dan jadwal. Koreksi parameter sebelumnya jika terjadi kegagalan saat menghubungi server.

  4. Aplikasi sudah bisa digunakan untuk mengendalikan saklar.

  5. Anda bisa menambahkan server dari slide menu di sisi kiri aplikasi dan berganti-ganti server dengan memilih salah-satu server di menu tersebut.

Berkontribusi

Project ini masih terdapat sangat banyak bug, dan banyak kode yang tidak efisien dan bersifat hacking (asal bisa jalan). Jadi silakan berkontribusi dalam bentuk apapun agar membantu project ini menjadi lebih baik.

Credits

saklarku's People

Contributors

gojigeje avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.