![Aplikasi Android / iOS untuk Mengakses Router OpenWrt Anda Dari Jauh: 11 Langkah Aplikasi Android / iOS untuk Mengakses Router OpenWrt Anda Dari Jauh: 11 Langkah](https://i.howwhatproduce.com/images/004/image-10073-15-j.webp)
Isi kandungan:
- Langkah 1: Saya Andaikan, Sudah Anda Buka OpenWrt…
- Langkah 2: Perisian dan Alat
- Langkah 3: Membuat Aplikasi Minimal
- Langkah 4: Menambah Beberapa Maklumat: Bilangan Pelanggan, Alamat IP WAN, Waktu Masa
- Langkah 5: Kawalan WiFi: ON / OFF
- Langkah 6: Carta Statistik Sistem
- Langkah 7: Status Putaran HDD
- Langkah 8: Carta Aktiviti Rangkaian
- Langkah 9: Pemberitahuan
- Langkah 10: Autorun di Latar Belakang
- Langkah 11: Kesimpulan & Idea Lanjut
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:01
![Aplikasi Android / iOS untuk Mengakses Router OpenWrt Anda dari jauh Aplikasi Android / iOS untuk Mengakses Router OpenWrt Anda dari jauh](https://i.howwhatproduce.com/images/004/image-10073-16-j.webp)
![Aplikasi Android / iOS untuk Mengakses Router OpenWrt Anda dari jauh Aplikasi Android / iOS untuk Mengakses Router OpenWrt Anda dari jauh](https://i.howwhatproduce.com/images/004/image-10073-17-j.webp)
Saya baru-baru ini membeli penghala baru (Xiaomi Mi Router 3G). Dan tentu saja, perkakasan baru yang hebat ini memberi inspirasi kepada saya untuk mula mengerjakan projek ini;)
Langkah 1: Saya Andaikan, Sudah Anda Buka OpenWrt…
![Saya Andaikan, Sudah Anda Buka OpenWrt… Saya Andaikan, Sudah Anda Buka OpenWrt…](https://i.howwhatproduce.com/images/004/image-10073-18-j.webp)
Saya terpaksa memasang OpenWrt terlebih dahulu… Selalunya, saya mengikuti panduan ini (khusus untuk model penghala ini): https://dzone.com/articles/hacking-into-xiaomi-mi-… Semasa mengerjakan ini, saya dapati video hebat ini: Pemasangan Openwrt, penanda aras WiFi, Pacar Berkelip. Wow saya ketawa begitu keras!:)
Perhatian! Memasang OpenWrt dapat membuat penghala penghala anda. Tetapi setelah selesai, ia membuka kuasa dan kawalan sepenuhnya. Saya tidak cukup berani untuk memberikan arahan di sini, kerana ia mungkin berbeza untuk setiap model penghala.
Tetapi jika anda sudah mempunyai OpenWrt pada penghala anda, anda akan dapat memulakan dengan tutorial ini dalam waktu
BTW, beberapa papan pengembangan dilengkapi dengan OpenWrt di luar kotak, seperti Onion Omega, VoCore, LinkIt Smart 7688 dan lain-lain. Tutorial ini juga menerangkan beberapa idea asas di sebalik membuat aplikasi sedemikian, sehingga anda dapat menyesuaikannya dengan mudah untuk berfungsi dengan Raspberry Pi dan yang serupa.
Untuk projek ini, saya kebanyakan akan menggunakan perisian pra-pemasangan (tersedia di mana-mana penghala yang dibolehkan OpenWrt). Tetapi untuk beberapa fungsi canggih, saya terpaksa memasang pakej tambahan. Ini dilakukan hanya dalam beberapa klik, jadi saya akan memasukkan arahannya di sini.
Saya juga menganggap bahawa anda sudah tahu:
- Cara membuka / menggunakan terminal SSH ke penghala OpenWrt anda
- Cara memuat naik / mengedit fail pada penghala anda (gunakan FileZilla atau scp / sftp)
- Cara bekerja dengan konsol Linux
Langkah 2: Perisian dan Alat
![Perisian dan Alat Perisian dan Alat](https://i.howwhatproduce.com/images/004/image-10073-19-j.webp)
Di bahagian telefon pintar, saya menggunakan Blynk. Ia menyediakan aplikasi iOS dan Android untuk mengawal sebarang perkakasan. Anda boleh membina antara muka grafik yang indah untuk semua projek anda dengan hanya menyeret dan melepaskan widget, tepat di telefon pintar anda. Blynk kebanyakan digunakan dengan Arduino, Raspberry Pi, dll. Tetapi mengapa tidak menjalankannya pada penghala itu sendiri?;)
Di sisi peranti saya akan menggunakan Lua untuk menulis skrip fungsi yang diperlukan. Saya juga boleh menggunakan Python atau Node.js, tetapi sayangnya pilihan ini tidak selalu tersedia, kerana kekurangan sumber pada beberapa router. Atau C / C ++, tetapi Ia tidak begitu senang untuk dikerjakan (dikompilasi ulang untuk setiap perubahan, dll.) Sebaliknya, Lua sudah dipasang sebelumnya, mudah digunakan dan dipelajari. Ia digunakan oleh antara muka web lalai, LuCI.
Langkah 3: Membuat Aplikasi Minimal
Bermula dengan Blynk dan Lua semudah:
- Muat turun Aplikasi Blynk (dari App Store, Google Play)
- Buat projek baru dan dapatkan Auth Token
- Ikuti arahan pemasangan Blynk Lua untuk OpenWrt.
Gunakan SSH untuk mengakses konsol penghala anda. Setelah menjalankan contoh lalai:
lua./contoh/client.lua
Kita harus melihat sesuatu seperti ini:
Menyambung…
Jabat tangan SSL … Sedia.
Maksudnya, hubungan dua arah yang selamat ke aplikasi dijalin! YAY!
Kita sekarang dapat memperluas contoh yang diberikan dengan mudah, jadi ia melakukan sesuatu yang menarik. Saya telah membuat salinan contoh ini untuk mengeditnya:
cp./contoh/client.lua./blynkmon.lua
Langkah 4: Menambah Beberapa Maklumat: Bilangan Pelanggan, Alamat IP WAN, Waktu Masa
Idea asasnya adalah untuk mendapatkan maklumat dari OS secara berkala, melakukan beberapa pengiraan mudah jika diperlukan, dan kemudian menghantar hasilnya ke Blynk untuk dipamerkan.
Di Linux / OpenWrt, kami mempunyai beberapa cara untuk mendapatkan data sistem:
- Jalankan perintah, dan menguraikan teks yang dikeluarkannya
- Jalankan arahan, dan perhatikan kod keluar yang dikembalikannya
- Baca fail sistem, yang terdapat di / proc / dan / sys / class / direktori
Sekarang saya mahu memaparkan jumlah peranti yang disambungkan.
Apabila saya menjalankan cat / proc / net / arp di konsol, ia mengeluarkan senarai peranti yang diketahui, bersama dengan alamat MAC dan IP mereka:
Alamat IP jenis HW Bendera Alamat HW Topeng Peranti
192.168.10.206 0x1 0x2 78: 02: f8: fb: d6: bf * br-lan 194.---------- 0x1 0x2 4c: 5e: 0c: 14: e0: 5c * eth0.2 192.168.10.162 0x1 0x0 04: b1: 67: 2f: e3: 74 * br-lan
Kita boleh menguraikannya secara langsung di Lua, tetapi selalunya lebih mudah menggunakan utiliti khusus. Di Linux, ini adalah grep, head, tail, cut, wc, awk.
Untuk mendapatkan jumlah pelanggan dari output arp, saya perlu menyaring jadual (membuang item yang tidak berkaitan) dan mengira baris jadual, yang menghasilkan perintah berikut:
kucing / proc / net / arp | grep br-lan | grep 0x2 | wc -l
Mari mencubanya:
root @ router: ~ / lua-blynk # cat / proc / net / arp | grep br-lan | grep 0x2 | wc -l
1
Hebat. Kami sekarang mendapat idea bagaimana kita dapat mengumpulkan semua maklumat yang diperlukan. Mari automatikkannya. Untuk menjadikan kod kami bersih dan dapat diperluas, mari buat beberapa fungsi pembantu:
fungsi exec_out (cmd)
fail tempatan = io.popen (cmd) jika tidak berkas maka kembalikan nil akhir keluaran tempatan = fail: baca ('* semua') fail: tutup () cetak ("Jalankan:"..cmd.. "->".. output) kembali fungsi akhir fungsi read_file (path) fail tempatan = io.open (jalan, "rb") jika tidak memfailkan maka kembalikan nil akhir kandungan tempatan = fail: baca "* a" fail: tutup () cetak ("Baca: "..path.." -> "..content) mengembalikan kandungan akhir
Dengan menggunakan utiliti ini, kita sekarang dapat melaksanakan fungsi pengambilan data yang sebenarnya:
fungsi getArpClients ()
return tonumber (exec_out ("cat / proc / net / arp | grep br-lan | grep 0x2 | wc -l")) fungsi akhir getUptime () pulangan ton (exec_out ("cat / proc / uptime | awk '{cetak $ 1 } '")) fungsi akhir getWanIP () return exec_out (" ifconfig eth0.2 | grep' inet addr: '| cut -d: -f2 | awk' {print $ 1} '") akhir
Anda boleh menjalankan bahagian perintah shell ini, untuk mendapatkan pemahaman yang lebih mendalam tentang cara kerjanya, dan menyesuaikannya dengan keperluan anda.
Bahagian paling mudah adalah menghantar data ke Aplikasi Blynk. Contoh lalai sudah menetapkan pemasa, yang menjalankan beberapa kod setiap 5 saat, jadi kami menggunakannya semula:
tempatan tmr1 = Pemasa: baru {selang = 5000, func = fungsi ()
blynk: virtualWrite (10, getArpClients ()) blynk: virtualWrite (11, string.format ("%. 1f h", getUptime () / 60/60)) blynk: virtualWrite (12, getWanIP ()) akhir}
Dalam aplikasi, kami menambahkan 3 widget label, dan menetapkannya ke Virtual Pin 10, 11, 12 dengan sewajarnya.
Walaupun ini berfungsi, agak tidak cekap, kerana WAN IP atau bilangan pelanggan tidak kerap mengemas kini. Mari perbaiki ini
Untuk IP WAN, kami mengalihkannya ke pengendali yang disambungkan. Ia akan dijalankan setiap kali penghala membuat sambungan ke Blynk Cloud. Ini mesti mencukupi:
blynk: aktif ("disambungkan", fungsi ()
cetak ("Sedia.") blynk: virtualWrite (12, getWanIP ()) akhir)
Untuk Uptime dan Clients Number, kami membuat pemasa yang berasingan dengan 5 min. selang:
tempatan tmr2 = Pemasa: baru {selang = 5 * 60 * 1000, func = fungsi ()
blynk: virtualWrite (10, getArpClients ()) blynk: virtualWrite (11, string.format ("%. 1f h", getUptime () / 60/60)) akhir}
Langkah 5: Kawalan WiFi: ON / OFF
![Kawalan WiFi: ON / OFF Kawalan WiFi: ON / OFF](https://i.howwhatproduce.com/images/004/image-10073-20-j.webp)
Sehingga sekarang, kami hanya mendapat beberapa maklumat dari peranti. Mari cuba kendalikan!
blynk: on ("V20", fungsi (param)
jika param [1] == "1" maka os.execute ("wifi up") lain os.execute ("wifi down") akhir akhir)
Di sisi aplikasi, saya baru saja menambahkan widget Butang (mod: Switch) dan memberikannya ke V20.
Itu sahaja. Hebat.
Langkah 6: Carta Statistik Sistem
![Carta Statistik Sistem Carta Statistik Sistem](https://i.howwhatproduce.com/images/004/image-10073-21-j.webp)
![Carta Statistik Sistem Carta Statistik Sistem](https://i.howwhatproduce.com/images/004/image-10073-22-j.webp)
fungsi getCpuLoad ()
return tonumber (exec_out ("top -bn1 | grep 'CPU:' | head -n1 | awk '{print $ 2 + $ 4}'")) fungsi akhir getRamUsage () pulangan ton (exec_out ("percuma | grep Mem | awk ' akhir {print ($ 3- $ 7) / $ 2 * 100.0} '"))
Kami juga perlu menghantar data ke Blynk (mari kita gunakan tmr1 lagi):
tempatan tmr1 = Pemasa: baru {selang = 5000, func = fungsi ()
blynk: virtualWrite (5, getCpuLoad ()) blynk: virtualWrite (6, getRamUsage ()) akhir}
Di Bahagian Aplikasi, tambahkan widget SuperChart. Tambahkan CPU, streaming data RAM dan tetapkan ke V5, V6.
Langkah 7: Status Putaran HDD
Penghala saya mempunyai pemacu HDD luaran yang disambungkan sebagai peranti Penyimpanan Terlampir Rangkaian. Masalahnya, pemacu ini dikonfigurasi untuk mula berputar ketika seseorang mengaksesnya, dan untuk menangguhkan setelah tamat waktu.
Jelas sekali, akan menyenangkan apabila mengetahui berapa kali ia dihidupkan sepanjang hari. Oleh itu, saya menambahkan lagi aliran data ke carta Sistem saya.
Agak sukar untuk mendapatkan status pemacu HDD, tetapi saya menemui jalan! Pertama sekali, pasang smartmontool dari konsol SSH:
kemas kini opkg
opkg pasang smartmontools
Kemudian, dalam kod kami, kami perlu menjalankan perintah khas dan memeriksa kod keluar:
fungsi exec_ret (cmd)
lokal exit = os.execute (cmd) print ("Run:"..cmd.. "-> exit:".. exit) kembali keluar fungsi akhir getHddSpinning () if exec_ret ("smartctl --nocheck = standby --info / dev / sda> / dev / null ") == 0 kemudian pulangkan 1 yang lain kembali 0 hujung akhir
Nota: HDD saya adalah / dev / sda
Langkah 8: Carta Aktiviti Rangkaian
![Carta Aktiviti Rangkaian Carta Aktiviti Rangkaian](https://i.howwhatproduce.com/images/004/image-10073-23-j.webp)
Kami Buat widget SuperChart yang lain (serupa dengan yang sebelumnya), Tambahkan aliran data TX dan RX, dan berikan kepada V1 dan V2. Catatan: Saya ingin memaparkan statc port WAN, dan port WAN saya adalah eth0.2
Fungsi pembantu:
fungsi getWanRxBytes ()
pulangan tanam (read_file ("/ sys / class / net / eth0.2 / statistik / rx_bytes")) fungsi akhir getWanTxBytes () pulangan ton (read_file ("/ sys / class / net / eth0.2 / statistik / tx_bytes")) akhir
Seterusnya, tambahkan beberapa kod ke tmr1 yang sama. Ini lebih rumit, kerana kita hanya perlu menghitung dan memaparkan perbezaan bait yang dihantar / diterima:
prevTx tempatan, prevRx
local tmr1 = Timer: new {interval = 5000, func = function () local tx = getWanTxBytes () local rx = getWanRxBytes () if prevTx dan prevTx ~ = tx maka blynk: virtualWrite (1, tx - prevTx) berakhir jika prevRx dan prevRx ~ = rx kemudian blynk: virtualWrite (2, rx - prevRx) akhir prevTx = tx prevRx = rx blynk: virtualWrite (5, getCpuLoad ()) blynk: virtualWrite (6, getRamUsage ()) blynk: virtualWrite (7, getHddSpinning))
Langkah 9: Pemberitahuan
![Pemberitahuan Pemberitahuan](https://i.howwhatproduce.com/images/004/image-10073-24-j.webp)
Saya juga ingin diberitahu apabila Penghala saya kehilangan kuasa atau sambungan internet. Untuk ini, kami memerlukan widget Pemberitahuan.
Dalam tetapan widget, aktifkan "pemberitahuan luar talian". Tidak perlu kod. Tetapi kami juga dapat menghantar pemberitahuan tersuai dari kod kami.
Langkah 10: Autorun di Latar Belakang
Buat masa ini skrip harus dijalankan secara manual, tetapi saya ingin membuatnya berjalan di latar belakang secara automatik ketika penghala dihidupkan.
Ini dilakukan dengan membuat perkhidmatan. Buat fail /etc/init.d/blynkmon:
#! / bin / sh /etc/rc.common
MULAI = 99 STOP = pidfile = "/ var / run / blynkmon.pid" start () {if [-f $ pidfile]; kemudian gema "blynkmon sudah berjalan" keluar 0 fi cd / root / lua-blynk lua blynkmon.lua your-auth-token> / dev / null & echo $! > $ pidfile} berhenti () {jika [! -f $ pidfile]; kemudian gema "blynkmon not running" exit 0 fi kill -9 $ (cat $ pidfile) rm $ pidfile}
Catatan: jangan lupa ganti token-auth anda
Kemudian, aktifkan perkhidmatan blynkmon:
perkhidmatan blynkmon aktifkan
Langkah 11: Kesimpulan & Idea Lanjut
![Kesimpulan & Idea Lanjut Kesimpulan & Idea Lanjut](https://i.howwhatproduce.com/images/004/image-10073-25-j.webp)
Anda boleh mengimbas QR ini untuk mendapatkan klon Projek Blynk saya. Ia memerlukan beberapa titik tenaga (4600), kerana ia menggunakan banyak widget!
Cari kod Lua Penuh di sini:
Sejauh ini bagus, tetapi berikut adalah beberapa idea yang ingin saya tambahkan dalam masa terdekat.
- Tambah arahan Reboot. Elakkan mengkliknya secara tidak sengaja.
- Tambahkan widget Terminal untuk menjalankan sebarang arahan linux.
-
Tambahkan carta suhu CPU.
UPD: Sayangnya OpenWrt pada masa ini kekurangan beberapa pemacu untuk model penghala saya. Tetapi ia tersedia untuk banyak penghala lain
- Tambahkan pemberitahuan apabila peranti tertentu bergabung / keluar dari rangkaian. Kami sudah mempunyai maklumat ARP, sekarang hanya periksa alamat MAC.
Dengan cara ini, kita dapat memantau dan mengawal Pencetak 3D, Robot, PC / Komputer riba biasa, barang Arduino / ESP8266 / ESP32 / RaspberryPi, peranti Smart Home, dan hampir apa sahaja. Beritahu saya jika ada idea menarik lain. Apa pendapat anda mengenai semua ini?
Disyorkan:
Mengakses dari jauh Raspberry Pi: SSH, Dekstop & FTP: 4 Langkah
![Mengakses dari jauh Raspberry Pi: SSH, Dekstop & FTP: 4 Langkah Mengakses dari jauh Raspberry Pi: SSH, Dekstop & FTP: 4 Langkah](https://i.howwhatproduce.com/images/005/image-14128-j.webp)
Mengakses dari jauh Raspberry Pi: SSH, Dekstop & FTP: Dalam catatan ini, kita akan melihat 3 kaedah berbeza dengan mana anda dapat mengakses Raspberry Pi dari jarak jauh untuk membuatnya lebih mudah untuk menggunakannya. Yang pertama adalah SSH, yang membolehkan anda mengakses terminal dari jauh. Yang kedua adalah remo
Arduino: Program Masa & Kawalan Jauh Dari Aplikasi Android: 7 Langkah (dengan Gambar)
![Arduino: Program Masa & Kawalan Jauh Dari Aplikasi Android: 7 Langkah (dengan Gambar) Arduino: Program Masa & Kawalan Jauh Dari Aplikasi Android: 7 Langkah (dengan Gambar)](https://i.howwhatproduce.com/images/005/image-14702-j.webp)
Arduino: Program Masa & Alat Kawalan Jauh Dari Aplikasi Android: Saya selalu tertanya-tanya apa yang berlaku dengan semua papan Arduino yang tidak diperlukan orang setelah mereka menyelesaikan projek mereka yang hebat. Kebenarannya sedikit menjengkelkan: tidak ada. Saya telah melihatnya di rumah keluarga saya, di mana ayah saya berusaha membina rumahnya sendiri
Aplikasi Kawalan Jauh AmbiBox IOS: 5 Langkah
![Aplikasi Kawalan Jauh AmbiBox IOS: 5 Langkah Aplikasi Kawalan Jauh AmbiBox IOS: 5 Langkah](https://i.howwhatproduce.com/images/009/image-26958-j.webp)
Aplikasi Kawalan Jauh AmbiBox IOS: Dengan aplikasi iOS ini, anda dapat mengawal AmbiBox anda dari iPhone atau iPad anda. Saya akan bercakap tentang aplikasi dan bagaimana ia berkomunikasi dengan pelayan AmbiBox, jika anda ingin mengetahui cara memasang AmbiBox dan jalur yang dipimpin, terdapat beberapa tutorial di
Kawal Peralatan Elektrik Anda Dengan Jauh Tv Anda (Ir Jauh) Dengan Paparan Suhu dan Kelembapan: 9 Langkah
![Kawal Peralatan Elektrik Anda Dengan Jauh Tv Anda (Ir Jauh) Dengan Paparan Suhu dan Kelembapan: 9 Langkah Kawal Peralatan Elektrik Anda Dengan Jauh Tv Anda (Ir Jauh) Dengan Paparan Suhu dan Kelembapan: 9 Langkah](https://i.howwhatproduce.com/images/003/image-8087-24-j.webp)
Kawal Peralatan Elektrik Anda Dengan Televisyen Jauh Anda (Ir Jauh) Dengan Paparan Suhu dan Kelembapan: hai saya Abhay dan ini blog pertama saya di Instructables dan hari ini saya akan menunjukkan kepada anda cara mengendalikan peralatan elektrik anda dengan alat kawalan jauh tv anda dengan membina ini projek sederhana. terima kasih kepada makmal atl atas sokongan dan penyediaan bahan
Cara Mengakses Muzik Anda Dari Mana Saja Dengan Mac Mini Anda: 5 Langkah
![Cara Mengakses Muzik Anda Dari Mana Saja Dengan Mac Mini Anda: 5 Langkah Cara Mengakses Muzik Anda Dari Mana Saja Dengan Mac Mini Anda: 5 Langkah](https://i.howwhatproduce.com/preview/how-and-what-to-produce/11122711-how-to-access-your-music-from-anywhere-with-your-mac-mini-5-steps-j.webp)
Cara Mengakses Muzik Anda Dari Mana Saja Dengan Mac Mini Anda: Arahan ini menjadikan komputer anda menjadi pelayan saham peribadi. Ini akan menghimpunkan muzik anda sehingga hanya anda yang dapat menikmatinya. Tetapi, dengan andaian sambungan internet anda cukup pantas, anda akan dapat menggunakannya dari seluruh dunia. Betapa hebatnya