Orodha ya maudhui:

Programu ya Android / iOS ya Kupata Router Yako ya OpenWrt kwa mbali: Hatua 11
Programu ya Android / iOS ya Kupata Router Yako ya OpenWrt kwa mbali: Hatua 11

Video: Programu ya Android / iOS ya Kupata Router Yako ya OpenWrt kwa mbali: Hatua 11

Video: Programu ya Android / iOS ya Kupata Router Yako ya OpenWrt kwa mbali: Hatua 11
Video: Netgear R6120 AC1200 Router Firmware Upgrade Step by Step Tutorial 2024, Juni
Anonim
Programu ya Android / iOS ya Kupata Router Yako ya OpenWrt kwa mbali
Programu ya Android / iOS ya Kupata Router Yako ya OpenWrt kwa mbali
Programu ya Android / iOS ya Kupata Router Yako ya OpenWrt kwa mbali
Programu ya Android / iOS ya Kupata Router Yako ya OpenWrt kwa mbali

Hivi karibuni nilinunua router mpya (Xiaomi Mi Router 3G). Na kwa kweli, kipande hiki kipya, cha kushangaza cha vifaa vilihamasisha mimi kuanza kufanya kazi kwenye mradi huu;)

Hatua ya 1: Nadhani, Kuwa tayari Una OpenWrt Tayari…

Nadhani, Kwamba Una OpenWrt Tayari…
Nadhani, Kwamba Una OpenWrt Tayari…

Ilinibidi kusanikisha OpenWrt kwanza… Zaidi ya yote, nilifuata mwongozo huu (maalum kwa mfano huu wa router): https://dzone.com/articles/hacking-into-xiaomi-mi-…: Ufungaji wa Openwrt, kipimo cha WiFi, Msichana anayeangaza. Wow nilicheka sana!:)

Tahadhari! Kuweka OpenWrt kunaweza kutengeneza router yako. Lakini mara baada ya kukamilika, inafungua nguvu kamili na udhibiti. Sina ujasiri wa kutosha kutoa maagizo hapa, kwani zinaweza kuwa tofauti kwa kila mfano wa router.

Lakini ikiwa tayari unayo OpenWrt kwenye router yako, utaweza kuanza na mafunzo haya wakati wa sasa

BTW, bodi zingine za maendeleo huja na OpenWrt nje ya sanduku, kama Onion Omega, VoCore, LinkIt Smart 7688 na zingine. Mafunzo haya pia yanaelezea maoni kadhaa ya msingi nyuma ya kuunda programu kama hizo, kwa hivyo unaweza kuibadilisha kwa urahisi ili ifanye kazi na Raspberry Pi na unayopenda.

Kwa mradi huu, nitatumia zaidi programu iliyosanikishwa mapema (inapatikana kwenye router yoyote inayowezeshwa na OpenWrt). Lakini kwa utendaji fulani wa hali ya juu, ilibidi kusanikisha vifurushi vya ziada. Hii imefanywa kwa mibofyo michache tu, kwa hivyo nitajumuisha maagizo hapa.

Pia, nadhani tayari unajua:

  • Jinsi ya kufungua / kutumia terminal ya SSH kwa router yako ya OpenWrt
  • Jinsi ya kupakia / kuhariri faili kwenye router yako (tumia FileZilla au scp / sftp)
  • Jinsi ya kufanya kazi na kiweko cha Linux

Hatua ya 2: Programu na Zana

Programu na Zana
Programu na Zana

Kwa upande wa smartphone, ninatumia Blynk. Inatoa programu za iOS na Android kudhibiti vifaa vyovyote. Unaweza kuunda kiolesura kizuri cha picha kwa miradi yako yote kwa kuburuta na kuacha vilivyoandikwa, sawa kwenye simu yako mahiri. Blynk hutumiwa zaidi na Arduino, Raspberry Pi, nk. Lakini kwanini usiendeshe kwenye router yenyewe?;)

Kwenye upande wa kifaa nitatumia Lua kuandikia utendaji unaohitajika. Ninaweza pia kutumia Python au Node.js, lakini kwa bahati mbaya chaguzi hizi hazipatikani kila wakati, kwa sababu ya ukosefu wa rasilimali kwenye ruta zingine. Au C / C ++, lakini sio rahisi sana kufanya kazi na (kurudisha kwa kila mabadiliko, n.k.) Kwa upande mwingine, Lua imewekwa mapema, ni rahisi kutumia na kujifunza. Inatumiwa na kiolesura cha wavuti chaguomsingi, LuCI.

Hatua ya 3: Kuunda Programu Ndogo

Kuanza na Blynk na Lua ni rahisi kama:

  • Pakua Programu ya Blynk (kutoka Duka la App, Google Play)
  • Unda mradi mpya na upate Ishara ya Auth
  • Fuata maagizo ya usanidi wa Blynk Lua kwa OpenWrt.

Tumia SSH kupata kiweko chako cha router. Baada ya kutumia mfano chaguomsingi:

lua. / mifano / mteja.lua

Tunapaswa kuona kitu kama hiki:

Inaunganisha…

Kushikana mikono kwa SSL… iko tayari.

Ambayo inamaanisha unganisho salama, la pande mbili kwa programu limeanzishwa!

Sasa tunaweza kupanua kielelezo kilichotolewa kwa urahisi, kwa hivyo inafanya kitu cha kupendeza. Nimeunda nakala ya mfano huu kuihariri:

cp./ mifano / mteja.lua./blynkmon.lua

Hatua ya 4: Kuongeza Maelezo: Idadi ya Wateja, Anwani ya IP ya WAN, Wakati wa kupumzika

Wazo la msingi ni kupata maelezo kutoka kwa OS mara kwa mara, fanya hesabu rahisi ikiwa inahitajika, na kisha tuma matokeo kwa Blynk kwa onyesho.

Katika Linux / OpenWrt, tuna njia kadhaa za kupata data ya mfumo:

  • Tumia amri, na uchanganue maandishi yanayotokana
  • Endesha amri, na angalia nambari ya kutoka ambayo inarudi
  • Soma faili ya mfumo, iliyoko / proc / na / sys / darasa / saraka

Sasa ninataka kuonyesha idadi ya vifaa vilivyounganishwa.

Ninapoendesha paka / proc / wavu / arp kwenye koni, inatoa orodha ya vifaa vinavyojulikana, pamoja na anwani zao za MAC na IP:

Anwani ya IP aina ya HW Bendera HW anwani Anwani ya Mask

192.168..10.162 0x1 0x0 04: b1: 67: 2f: e3: 74 * br-lan

Tunaweza kuipitisha moja kwa moja huko Lua, lakini mara nyingi ni rahisi kutumia huduma maalum. Kwenye Linux, hizi ni grep, kichwa, mkia, kata, wc, awk.

Ili kupata idadi ya wateja kutoka kwa pato la arp, ninahitaji kuchuja meza (ondoa vitu visivyohusiana) na kuhesabu safu za meza, ambayo inasababisha amri ifuatayo:

paka / proc / wavu / arp | grep br-lan | grep 0x2 | wc -l

Wacha tuijaribu:

mzizi @ router: ~ / lua-blynk # paka / proc / net / arp | grep br-lan | grep 0x2 | wc -l

1

Kubwa. Sasa tunapata wazo la jinsi tunaweza kukusanya habari zote zinazohitajika. Ili kufanya nambari yetu iwe safi na inayoweza kupanuliwa, wacha tuunde kazi za msaidizi:

kazi exec_out (cmd)

faili ya ndani = io.popen (cmd) ikiwa sio faili kisha rudisha nil mwisho pato la ndani = faili: soma ('* all') faili: funga () chapisha ("Run:"..cmd.. "->".. pato) kurudisha pato la mwisho kazi kusoma_file (njia) faili ya ndani = io.open (path, "rb") ikiwa sio faili kisha rudisha nil mwisho yaliyomo ndani = faili: soma "* a" file: close () print ("Soma: ".. njia.." -> ".. yaliyomo) kurudisha mwisho wa yaliyomo

Kutumia huduma hizi, sasa tunaweza kutekeleza kazi halisi za kuleta data:

kazi GetArpClients ()

rudisha tonumber (exec_out ("paka / proc / wavu / arp | grep br-lan | grep 0x2 | wc -l")) kazi ya mwisho getUptime () kurudi tonumber (exec_out ("paka / proc / uptime | awk '{print $ 1 } '")) kazi ya mwisho getWanIP () kurudi exec_out (" ifconfig eth0.2 | grep' inet addr: '| cut -d: -f2 | awk' {print $ 1} '") end

Unaweza kuendesha sehemu za amri hizi za ganda, kupata uelewa wa kina juu ya jinsi inavyofanya kazi, na kuirekebisha kwa mahitaji yako.

Sehemu rahisi ni kutuma data kwenye Programu ya Blynk. Mfano chaguo-msingi tayari unaweka kipima muda, ambacho hutumia nambari kadhaa kila sekunde 5, kwa hivyo tunatumia tena:

mitaa tmr1 = Timer: mpya {muda = 5000, func = kazi ()

blynk: virtualWrite (10, getArpClients ()) blynk: virtualWrite (11, string.format ("%. 1f h", getUptime () / 60/60)) blynk: virtualWrite (12, getWanIP ()) mwisho}

Katika programu, tunaongeza vilivyoandikwa 3 vya lebo, na kuzipa Pini za Virtual 10, 11, 12 ipasavyo.

Ingawa hii inafanya kazi, haina ufanisi, kwani WAN IP au idadi ya wateja haisasishi mara kwa mara. Wacha turekebishe hii

Kwa WAN IP, tunaihamisha kwa kidhibiti kilichounganishwa. Itaendeshwa kila wakati router itaanzisha unganisho kwa Blynk Cloud. Hii inapaswa kuwa ya kutosha:

blynk: on ("imeunganishwa", kazi ()

chapa ("Tayari.") blynk: virtualWrite (12, getWanIP ()) mwisho)

Kwa Nambari ya Wakavu na Wateja, tunaunda kipima muda tofauti na dakika 5. muda:

mitaa tmr2 = Timer: mpya {muda = 5 * 60 * 1000, func = kazi ()

blynk: virtualWrite (10, getArpClients ()) blynk: virtualWrite (11, string.format ("%. 1f h", getUptime () / 60/60)) mwisho}

Hatua ya 5: Udhibiti wa WiFi: ON / OFF

Udhibiti wa WiFi: ON / OFF
Udhibiti wa WiFi: ON / OFF

Hadi sasa, tulikuwa tunapata tu habari kutoka kwa kifaa. Wacha tujaribu kuidhibiti!

blynk: on ("V20", kazi (param)

ikiwa param [1] == "1" basi os.execute ("wifi up") mwingine os.execute ("wifi chini") mwisho mwisho)

Kwa upande wa programu, niliongeza tu wijeti ya Kitufe (hali: Badilisha) na kuipatia V20.

Hiyo ndio. Ajabu.

Hatua ya 6: Chati ya Takwimu za Mfumo

Chati ya Takwimu za Mfumo
Chati ya Takwimu za Mfumo
Chati ya Takwimu za Mfumo
Chati ya Takwimu za Mfumo

kazi GetCpuLoad ()

rudisha tonumber (exec_out ("top -bn1 | grep 'CPU:' | head -n1 | awk '{print $ 2 + $ 4}'")) kazi ya mwisho getRamUsage () rejesha tonumber (exec_out ("free | grep Mem | awk ' {print ($ 3- $ 7) / $ 2 * 100.0} '")) mwisho

Tunahitaji pia kutuma data kwa Blynk (wacha tutumie tmr1 tena):

mitaa tmr1 = Timer: mpya {muda = 5000, func = kazi ()

blynk: virtualWrite (5, getCpuLoad ()) blynk: virtualWrite (6, getRamUsage ()) mwisho}

Kwenye Upande wa Programu, ongeza wijeti ya SuperChart. Ongeza ndoto za kumbukumbu za CPU, RAM na upe V5, V6.

Hatua ya 7: Hali ya Spinning HDD

Router yangu ina gari la nje la HDD lililounganishwa kama kifaa cha Uhifadhi cha Masharti ya Mtandao. Jambo ni kwamba, kiendeshi hiki kimeundwa kuanza kuzunguka wakati mtu anaifikia, na kusimamisha baada ya muda.

Kwa wazi, itakuwa nzuri kujua ni mara ngapi inageuka kwa siku nzima. Kwa hivyo niliongeza dasastream nyingine kwenye chati yangu ya Mfumo.

Ni ngumu zaidi kupata hadhi ya gari la HDD, lakini nimepata njia! Kwanza kabisa, weka smartmontools kutoka kwa kiweko cha SSH:

sasisho la opkg

opkg kufunga smartmontools

Halafu, katika nambari yetu, tunahitaji kutekeleza amri maalum na kuangalia nambari ya kutoka:

kazi exec_ret (cmd)

exit ya ndani = os.execute (cmd) chapisha ("Run:"..cmd.. "-> exit:".. exit) rudisha kazi ya kumaliza kazi getHddSpinning () ikiwa exec_ret ("smartctl --nocheck = kusubiri - habari / dev / sda> / dev / null ") == 0 kisha rudisha 1 mwingine kurudi 0 mwisho mwisho

Kumbuka: HDD yangu ni / dev / sda

Hatua ya 8: Chati ya Shughuli za Mtandao

Chati ya Shughuli za Mtandao
Chati ya Shughuli za Mtandao

Tunaunda wijeti nyingine ya SuperChart (sawa na ile ya awali), Ongeza taswira za ndoto za TX na RX, na tunapeana V1 na V2. Kumbuka: Nataka kuonyesha statc ya bandari ya WAN, na bandari yangu ya WAN ni eth0.2

Kazi za msaidizi:

kazi GetWanRxBytes ()

rudisha toni (soma_file ("/ sys / darasa / wavu / eth0.2 / takwimu / rx_bytes")) kazi ya kumaliza) mwisho

Ifuatayo, ongeza nambari kadhaa kwa tmr1 sawa. Hii ni ngumu zaidi, kwani tunahitaji tu kuhesabu na kuonyesha tofauti katika ka / zilizopitishwa:

prevTx ya ndani, prevRx

local tmr1 = Timer: new {interval = 5000, func = function () local tx = getWanTxBytes () local rx = getWanRxBytes () ikiwa prevTx na prevTx ~ = tx kisha blynk: virtualWrite (1, tx - prevTx) mwisho ikiwa prevRx na prevRx ~ = rx kisha blynk: virtualWrite (2, rx - prevRx) mwisho prevTx = tx prevRx = rx blynk: virtualWrite (5, getCpuLoad ()) blynk: virtualWrite (6, getRamUsage ()) blynk: virtualWriteSp (7, getHdd mwisho)

Hatua ya 9: Arifa

Arifa
Arifa

Pia nilitaka kujulishwa wakati Router yangu inapoteza nguvu au unganisho la mtandao. Kwa hili, tunahitaji wijeti ya Arifa

Katika mipangilio ya wijeti, wezesha "arifa ya nje ya mkondo". Kuna nambari inayohitajika. Lakini tunaweza pia kutuma arifa za kawaida kutoka kwa nambari yetu.

Hatua ya 10: Autorun kwa Usuli

Kwa sasa hati inapaswa kutekelezwa kwa mikono, lakini nataka kuifanya iendeshwe kwa nyuma kiotomatiki wakati router inapowezeshwa.

Hii imefanywa kwa kuunda huduma. Unda faili /etc/init.d/blynkmon:

#! / bin / sh / nk / rc. kawaida

ANZA = 99 STOP = pidfile = "/ var / run / blynkmon.pid" anza () {if [-f $ pidfile]; kisha echo "blynkmon tayari inaendesha" toka 0 fi cd / mzizi / lua-blynk lua blynkmon.lua yako-auth-tokeni> / dev / null & echo $! > $ pidfile} simama () {ikiwa [! -f $ pidfile]; kisha unganisha "blynkmon haiendeshi" kutoka 0 fi kuua -9 $ (paka $ pidfile) rm $ pidfile}

Kumbuka: usisahau kuchukua nafasi yako-auth-tokeni

Kisha, wezesha huduma ya blynkmon:

huduma blynkmon kuwezesha

Hatua ya 11: Hitimisho & Mawazo Zaidi

Hitimisho & Mawazo Zaidi
Hitimisho & Mawazo Zaidi

Unaweza kuchanganua QR hii ili kupata picha ya Mradi wangu wa Blynk. Inahitaji sehemu kadhaa za nishati (4600), kwani hutumia vilivyoandikwa vingi!

Pata nambari kamili ya Lua hapa:

Hadi sasa ni nzuri sana, lakini hapa kuna maoni ambayo ningependa kuongeza hivi karibuni.

  • Ongeza amri ya Reboot. Kuzuia kubonyeza juu yake kwa bahati mbaya.
  • Ongeza wijeti ya Kituo ili kutekeleza amri yoyote ya linux.
  • Ongeza chati ya joto ya CPU.

    UPD: Kwa bahati mbaya OpenWrt sasa haina madereva kwa mfano wa router yangu. Lakini inapatikana kwa ruta nyingine nyingi

  • Ongeza arifa wakati kifaa fulani kikijiunga / kikiacha mtandao. Tayari tuna maelezo ya arp, sasa angalia tu anwani ya MAC.

Kwa njia hii, tunaweza kufuatilia na kudhibiti Printa za 3D, Roboti, PC / Laptop ya kawaida, Arduino / ESP8266 / ESP32 / RaspberryPi, vifaa vya Smart Home, na karibu kila kitu karibu. Nijulishe ikiwa kuna maoni mengine ya kupendeza. Je! Unafikiria nini juu ya haya yote?

Ilipendekeza: