All Projects → gojigeje → saklarku

gojigeje / saklarku

Licence: MIT license
Aplikasi mobile remote control untuk mengendalikan saklar/relay yang terhubung dengan port LED/GPIO di router berbasis OpenWRT

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
shell
77523 projects
java
68154 projects - #9 most used programming language
objective c
16641 projects - #2 most used programming language
CSS
56736 projects
PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to saklarku

Endbasic
BASIC environment with a REPL, a web interface, and RPi support written in Rust
Stars: ✭ 106 (+430%)
Mutual labels:  gpio
Diozero
Java Device I/O library that is portable across Single Board Computers. Tested with Raspberry Pi, Odroid C2, BeagleBone Black, Next Thing CHIP, Asus Tinker Board and Arduinos. Supports GPIO, I2C, SPI as well as Serial communication. Also known to work with Udoo Quad.
Stars: ✭ 167 (+735%)
Mutual labels:  gpio
go-uci
Native Go bindings for OpenWrt's UCI.
Stars: ✭ 69 (+245%)
Mutual labels:  openwrt
Gpio
Go library to do GPIO on systems with /sys/class/gpio (sysfs)
Stars: ✭ 120 (+500%)
Mutual labels:  gpio
Ofxgpio
Library C++ for raspberrypi and orangepi, GPIO interfaces compatible with openframeworks.
Stars: ✭ 155 (+675%)
Mutual labels:  gpio
Rpi gpio
Ruby conversion of RPi.GPIO Python module
Stars: ✭ 185 (+825%)
Mutual labels:  gpio
Gpiozero
A simple interface to GPIO devices with Raspberry Pi
Stars: ✭ 1,302 (+6410%)
Mutual labels:  gpio
openipc.github.io
Alternative IP Camera firmware from an open community, http://openipc.org site source code
Stars: ✭ 28 (+40%)
Mutual labels:  openwrt
Nf Interpreter
⚙️ nanoFramework Interpreter, CLR, HAL, PAL and reference target boards
Stars: ✭ 168 (+740%)
Mutual labels:  gpio
Drivers
TinyGo drivers for sensors and other devices that use I2C, SPI, GPIO, ADC, and UART interfaces.
Stars: ✭ 250 (+1150%)
Mutual labels:  gpio
Periph
Go·Hardware·Lean
Stars: ✭ 1,700 (+8400%)
Mutual labels:  gpio
Gpiod
A native Go library for Linux GPIO
Stars: ✭ 142 (+610%)
Mutual labels:  gpio
Rpi Rgb Led Matrix
Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO
Stars: ✭ 2,544 (+12620%)
Mutual labels:  gpio
Powershell Iot
Interact with I2C, SPI & GPIO devices using PowerShell Core!
Stars: ✭ 106 (+430%)
Mutual labels:  gpio
ct-frontend
Frontend Demo for Cucumber Tony API
Stars: ✭ 20 (+0%)
Mutual labels:  openwrt
Go Dht
Golang library to interact with DHT11/DHT22/DHT12 temperature and humidity sensors from Raspberry PI.
Stars: ✭ 103 (+415%)
Mutual labels:  gpio
Johnny Five
JavaScript Robotics and IoT programming framework, developed at Bocoup.
Stars: ✭ 12,498 (+62390%)
Mutual labels:  gpio
NueXini Packages
Packages for OpenWrt【每日更新luci-app OpenWrt Packages】
Stars: ✭ 269 (+1245%)
Mutual labels:  openwrt
wrt-hisicam
OpenWrt based HiSilicon`s System-On-a-Chip ip camera firmware
Stars: ✭ 21 (+5%)
Mutual labels:  openwrt
Mqtt Io
Expose GPIO modules (Raspberry Pi, Beaglebone, PCF8754, PiFace2 etc.) and digital sensors (LM75 etc.) to an MQTT server for remote control and monitoring.
Stars: ✭ 234 (+1070%)
Mutual labels:  gpio

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
  • Menyesuaikan nama masing-masing saklar
  • Bisa menambahkan lebih dari 1 server
  • Menampilkan jadwal dari crontab
  • Ubah parameter server dan hapus server dengan mudah
  • Open Source!

Todo:

  • 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@OpenWrt:# ./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 Bash & PHP
opkg update && opkg install bash php5 php5-cgi
Atur Web Server Agar Bisa Mengeksekusi Script PHP

Untuk web server, kita bisa menggunakan web server apa saja, asalkan web server tersebut bisa mengeksekusi script php. Karena di OpenWrt sudah ada webserver bawaan (uHTTPd), kita akan menggunakannya sebagai contoh:

Tambahkan baris option dan list berikut ke file /etc/config/uhttpd di bagian config uhttpd 'main':

config uhttpd 'main'
    ...
    ...
    option index_page "index.html, index.php"
    list interpreter ".php=/usr/bin/php-cgi"

Lalu restart uhttpd:
/etc/init.d/uhttpd restart

Copy File Server ke Router

(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 /www/, copy folder gpio ke dalamnya, pastikan path file index.php dan file gpio.sh sesuai dengan path berikut:
      • /www/gpio/index.php
      • /www/gpio/script/gpio.sh
  2. Ubah permission file gpio.sh agar bisa dieksekusi
    chmod +x /www/gpio/script/gpio.sh

  3. Coba jalankan script gpio dengan parameter list
    bash /www/gpio/script/gpio.sh list
    Jika sukses, seharusnya akan keluar output:
    { "success": true, "type": "list", "total": .......
    berisi daftar gpio yang akan dikontrol script.

  4. Sekarang coba buka browser, akses alamat http://IP_ROUTER/gpio/ seharusnya akan menampilkan error: unauthorized karena memang harus diakses dari aplikasi client. Tidak apa-apa, sekarang script server sudah siap.

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/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 * * * /www/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 /www/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 * * /www/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)

Agar Status/Posisi Saklar Dikembalikan Saat Startup

Setiap kali dijalankan, script gpio.sh akan menyimpan status terakhir semua GPIO ke file gpio_status.cfg di direktori yang sama. Anda bisa membaca file config ini ketika router startup dan mengembalikan posisi GPIO sesuai dengan posisi terakhir sebelum router mati.

  • Masukkan command berikut di /etc/rc.local sebelum exit:
    /full/path/to/gpio.sh startup

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].