Xawaaraha isku mar ee dhowr modem LTE

Inta lagu jiro karantiil, waxaa la ii soo bandhigay inaan ka qaybqaato samaynta qalab lagu cabbiro xawaaraha modem-ka LTE ee dhowr hawlwadeennada gacanta.

Xawaaraha isku mar ee dhowr modem LTE

Macmiilku waxa uu rabay in uu qiimeeyo xawaaraha hawlwadeenada kala duwan ee isgaadhsiinta ee meelo kala duwan si uu u fahmo taleefoonka gacanta ugu fiican isaga marka uu ku rakibayo qalabka isticmaalaya xidhiidhka LTE, tusaale ahaan, baahinta muuqaalka. Isla mar ahaantaana, dhibaatadu waxay ahayd in la xalliyo si fudud oo raqiis ah intii suurtagal ah, iyada oo aan qalab qaali ah la helin.

Isla markiiba waxaan dhihi doonaa in hawshu aysan ahayn tan ugu fudud uguna aqoonta badan; Waxaan kuu sheegi doonaa dhibaatooyinka aan la kulmay iyo sida aan u xalliyo. Markaa, aan tagno.

tacliiq

Cabbiraadda xawaaraha isku xirka LTE waa arrin aad u adag: waxaad u baahan tahay inaad doorato qalabka saxda ah iyo farsamada cabbirka, iyo sidoo kale inaad si fiican u fahamto topology iyo hawlgalka shabakada gacanta. Waxaa dheer, xawaaraha waxaa saameyn ku yeelan kara dhowr arrimood: tirada macaamiisha unugga, xaaladaha cimilada, xitaa unugga ilaa unugga xawaaruhu aad ayuu u kala duwanaan karaa iyadoo ay ugu wacan tahay topology network. Guud ahaan, tani waa dhibaato tiro badan oo aan la garanayn, oo kaliya hawlwadeenka isgaadhsiinta ayaa si sax ah u xallin kara.

Markii hore, macmiilku waxa uu rabay in uu kaxeeyo telifoonnada hawl-wadeennada, oo uu si toos ah u cabbiro taleefanka ka dibna ku qoro natiijada cabbirka xawaaraha buug-yaraha. Xalkayga lagu cabbirayo xawaaraha shabakadaha lt, in kasta oo aan ku habboonayn, ayaa xalliya dhibaatada.

Waqti la'aan darteed, waxaan qaatay go'aamo aan ku habboonayn ku habboonaanta ama wax ku oolka, laakiin waxaan doorbidayaa xawaaraha horumarka. Tusaale ahaan, reverse ssh ayaa loo isticmaalay marin durugsan, halkii laga isticmaali lahaa VPN ka waxtarka badan, si loo badbaadiyo wakhtiga dejinta serverka iyo macmiil kasta.

Hawl farsamo

Sida lagu sheegay maqaalka Iyadoo aan lahayn tilmaamo farsamo: sababta macmiilku aanu u rabin: Ha shaqayn iyada oo aan lahayn tilmaamo farsamo! Marna, meel kasta!

Hawsha farsamadu waxay ahayd mid fudud, wax yar ayaan u kordhin doonaa fahamka isticmaalaha dhamaadka. Xulashada xalalka farsamada iyo qalabka waxaa amray macaamilka. Marka, qeexida farsamada lafteeda, ka dib dhammaan ansixinta:

Iyada oo ku saleysan kombuyuutar sabuur keliya ah vim2 Samee tijaabiyaha xawaaraha ee isku xirka lite via modem Huwei e3372h - 153 dhowr shirkadood oo isgaarsiineed (hal ilaa n). Waxa kale oo lagama maarmaan ah in la helo isku-duwayaasha soo-dhoweeyaha GPS-ka ee ku xidhan UART. Samee cabbirada xawaaraha adoo isticmaalaya adeegga www.speedtest.net oo dhig miiska sida:

Xawaaraha isku mar ee dhowr modem LTE

Shaxda qaab csv ah. Kadibna calaamadan ugu dir e-mail 6dii saacadoodba mar. Haddii ay khaladaad dhacaan, biliglbidh LED-ka ku xidhan GPIO.

Waxaan ku qeexay qeexitaannada farsamada qaab bilaash ah, ka dib oggolaansho badan. Laakiin macnaha hawshu waa horeba muuqata. Todobaad ayaa la siiyay wax walba. Laakiin dhab ahaantii waxay socotay saddex toddobaad. Tani waxay ku xisaabtamaysaa xaqiiqda ah inaan tan sameeyay kaliya ka dib shaqadeyda ugu weyn iyo maalmaha fasaxa ah.

Halkan waxaan rabaa in aan mar kale soo jiito xaqiiqda ah in macaamiishu ay horay ugu heshiiyeen isticmaalka adeegga cabbiraadda xawaaraha iyo qalabka, taas oo si weyn u xaddidday awooddayda. Miisaaniyaddu sidoo kale way xaddidnayd, markaa wax gaar ah lama soo iibsan. Markaa waxay ahayd inaan ku ciyaarno xeerarkan.

Dhismaha iyo horumarinta

Nidaamku waa mid fudud oo muuqda. Sidaa darteed, waxaan ka tagi doonaa iyada oo aan wax faallooyin gaar ah lahayn.

Xawaaraha isku mar ee dhowr modem LTE

Waxaan go'aansaday inaan mashruuca oo dhan ku fuliyo Python, inkastoo xaqiiqda ah inaanan khibrad u lahayn horumarinta luqaddan. Waxaan u doortay sababtoo ah waxaa jiray tiro badan oo tusaalayaal diyaarsan iyo xalal soo dedejin kara horumarka. Sidaa darteed, waxaan ka codsanayaa dhammaan barnaamijyada xirfadleyda ah inayan canaanan waayo-aragnimadayda ugu horreysa ee horumarinta Python, mar walbana waan ku faraxsanahay inaan maqlo dhaleeceyn wax dhisaysa si aan u horumariyo xirfaddeyda.

Sidoo kale intii aan hawsha ku jiray waxaan ogaaday in Python ay leedahay laba nooc oo ordaya 2 iyo 3, natiijadiina waxaan degay kan saddexaad.

noodhadhka qalabka

Hal saxan vim2

Waxa la i siiyay kumbiyuutar hal sabuur ah oo ah mishiinkayga ugu muhiimsan vim2

Xawaaraha isku mar ee dhowr modem LTE

Processor-saxaafadeed aad u fiican, awood badan oo loogu talagalay guriga smart iyo SMART-TV, laakiin aad uguma habboona hawshan, ama, aynu nidhaahno, ku habboonayn. Tusaale ahaan, OS-kiisa ugu weyn waa Android, Linux-na waa OS-da labaad, sidaas darteed ma jiro qof dammaanad qaadaya shaqada tayada sare leh ee dhammaan qanjidhada iyo darawallada hoosta Linux. Oo waxaan u malaynayaa in qaar ka mid ah dhibaatooyinka ay la xiriiraan darawallada USB-ga ee goobtan, sidaas darteed modemku uma shaqeynin sidii la filayay ee guddigan. Waxa kale oo ay leedahay dukumeenti aad u liidata oo kala firdhisan, sidaa awgeed hawlgal kastaa waxa uu qaatay wakhti badan in la dhex maro meelaha lagu xidho. Xitaa shaqada caadiga ah ee GPIO waxay qaadatay dhiig badan. Tusaale ahaan, waxay igu qaadatay dhowr saacadood inaan dejiyo LED-ka. Laakiin, si ay u noqoto ujeedo, asal ahaan muhiim ma ahayn nooca hal-board-ka, waxa ugu muhiimsan ayaa ahaa in ay shaqeyso oo ay jiraan dekedo USB ah.

Marka hore, waxaan u baahanahay inaan ku rakibo Linux sabuuradan. Si aan loo baadhin duurjoogta dukumeentiga qof kasta, iyo sidoo kale kuwa wax ka qaban doona nidaamkan hal-board-ka ah, waxaan qorayaa cutubkan.

Waxaa jira laba ikhtiyaar oo lagu rakibo Linux: kaarka SD dibadda ama MMC gudaha ah. Waxaan qaatay fiidkii isku dayay inaan ogaado sida loogu shaqeeyo kaarka, markaa waxaan go'aansaday inaan ku rakibo MMC, inkastoo shaki la'aan ay aad u sahlanaan doonto in lagu shaqeeyo kaarka dibadda.

Ku saabsan firmware-ka si qalloocan ayaa halkan loogu sheegay. Waxaan ka turjumayaa qalaad oo u turjumaya Ruushka. Si aan u iftiimiyo looxa, waxaan u baahanahay inaan ku xidho qalabka UART. Isku xidhay sida soo socota.

  • Qalabka Pin GND: <—> Pin17 ee VIMs's GPIO
  • Qalab Pin TXD: <—> Pin18 ee VIMs's GPIO (Linux_Rx)
  • Qalab ku dheji RXD: <—> Pin19 ee VIMs's GPIO (Linux_Tx)
  • Qalabka Ku-xidhka VCC: <—> Pin20 ee VIMs's GPIO

Xawaaraha isku mar ee dhowr modem LTE

Taas ka dib, waxaan soo dejisanay firmware-ka halkan. Nooca firmware gaar ah VIM1_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.

Si aan u soo geliyo firmware-kan, waxaan u baahanahay utilities. Faahfaahin dheeraad ah oo arrintan ku saabsan halkan. Iskuma dayin inaan ku iftiimiyo Windows, laakiin waxaan u baahanahay inaan kuu sheego ereyo kooban oo ku saabsan firmware-ka hoos yimaada Linux. Marka hore, waxaan ku rakibi doonaa utility si waafaqsan tilmaamaha.

git clone https://github.com/khadas/utils
cd /path/to/utils
sudo ./INSTALL

Aaand... Wax shaqeeya ma jiraan. Waxaan qaatay dhowr saacadood oo aan tafatirayay qoraallada rakibaadda si wax walba ay iigu rakibaan si sax ah. Ma xasuusto wixii aan halkaas ku sameeyay, laakiin waxa kale oo jiray in cirku fardo la socdo. Markaa iska jir. Laakin la'aanteed yutiilitiyadan ma jirto wax faa'iido ah in la sii jirdilo vim2. Way fiicantahay inaadan isaga la khaldin haba yaraatee!

Ka dib todoba wareeg oo cadaabta ah, qaabeynta qoraalka iyo rakibida, waxaan helay xirmo ka mid ah adeegyada shaqada. Waxaan ku xidhay looxa USB-ga kumbuyuutarka Linux, sidoo kale waxaan ku xiray UART sida ku cad jaantuska kore.
Waxaan u dejinayaa terminalka minicom-ka ee aan ugu jecelahay xawaare dhan 115200, iyada oo aan la xakamayn qalabka iyo software-ka. Oo aan bilowno.

Xawaaraha isku mar ee dhowr modem LTE

Marka lagu shubayo VIM2 gudaha UART, waxaan taabsiiyaa furaha, sida booska bannaan, si aan u joojiyo rarista. Ka dib markii xariiqdu soo baxdo

kvim2# 

Waxaan galaa amarka:

kvim2# run update

Martigeliyaha aan ka soo dejineyno, waxaan fulinayaa:

burn-tool -v aml -b VIM2 -i  VIM2_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.img

Taasi waa, phew. Waan hubiyay, waxaa sabuuradda ku jira Linux. Login/password khadas:khadas.

Taas ka dib, qaar yar oo ah dejinta bilowga ah. Shaqo dheeraad ah, waxaan dami erayga sirta ah ee sudo (haa, ma ahan ammaan, laakiin ku habboon).

sudo visudo

Waxaan tafatirayaa laynka foomka oo kaydiyaa

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) NOPASSWD: ALL

Kadibna waxaan bedelayaa degaanka hadda jira si wakhtigu u joogo Moscow, haddii kale waxay noqon doontaa Greenwich.

sudo timedatectl set-timezone Europe/Moscow

ama

ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Haddii ay kugu adag tahay, markaa ha isticmaalin looxan; Raspberry Pi ayaa ka fiican. Daacadnimo.

Modem Huawei e3372h - 153

modem-kani waxa uu ii ahaa il muhiim ah oo dhiig ah, run ahaantiina, waxa ay noqotay cidhiidhiga mashruuca oo dhan. Guud ahaan, magaca "modem" ee qalabkani kama tarjumayo nuxurka shaqada gabi ahaanba: kani waa isku-dar xoog leh, qaybtan qalabku waxay leedahay qalab isku dhafan oo iska dhigaya CD-ROM si loo rakibo darawalada. ka dibna u beddelo habka kaadhka shabakadda.

Qaab dhismeed ahaan, marka laga eego aragtida isticmaalaha Linux, ka dib dhammaan goobaha, waxay u egtahay sidan: ka dib marka la isku xiro modemka, waxaan haystaa eth * network interface, kaas oo via dhcp helaya cinwaanka IP 192.168.8.100, iyo albaabka caadiga ah. waa 192.168.8.1.

Iyo daqiiqadda ugu muhiimsan! Qaabka modem-kani kuma shaqayn karo qaabka modem, kaas oo ay gacanta ku hayaan amarrada AT. Wax walba aad bay u fududaan doonaan, u samee isku xirka PPP modem kasta ka dibna ku shaqee iyaga. Laakiin xaaladdeyda, "laftiisa" (si sax ah, weeliyaha Linux sida waafaqsan xeerarka udev), wuxuu abuuraa eth interface wuxuuna ku meeleeyaa ciwaanka IP-ga iyada oo loo marayo dhcp.

Si looga fogaado jahawareer dheeraad ah, waxaan soo jeedinayaa in la iloobo ereyga "modem" oo aan dhaho kaarka shabakada iyo albaabka, sababtoo ah nuxurka, waxay la mid tahay isku xirka kaarka cusub ee shabakada albaabka.
Marka uu jiro hal modem, tani ma keenayso dhibaato gaar ah, laakiin marka ay jiraan wax ka badan hal, kuwaas oo n-pieces, sawirka shabakada soo socda ayaa soo baxaya.

Xawaaraha isku mar ee dhowr modem LTE

Taasi waa, n kaadhadhka shabakadda, oo leh cinwaan IP isku mid ah, mid walbana leh isla albaabkii caadiga ahaa. Laakiin dhab ahaantii, mid kasta oo iyaga ka mid ah waxay ku xiran tahay hawlwadeenkeeda.

Markii hore, waxaan haystay xal fudud: adoo isticmaalaya ifconfig ama ip Command, dami dhammaan interfaces oo si fudud u shid mid markeeda oo tijaabi. Xalku wuxuu u fiicnaa qof walba, marka laga reebo in inta lagu jiro daqiiqadaha beddelka aanan awoodin inaan ku xidho qalabka. Oo maadaama beddelashadu tahay mid soo noqnoqda oo degdeg ah, run ahaantii ma helin fursad aan ku xidho dhammaan.

Sidaa darteed, waxaan doortay dariiqa gacanta lagu beddelayo cinwaannada IP-ga ee modem-yada ka dibna wadista taraafikada iyadoo la adeegsanayo jaangooyooyinka marinka.

Xawaaraha isku mar ee dhowr modem LTE

Tani ma ahayn dhamaadka dhibaatooyinkayga modem-ka: haddii ay dhacdo dhibaatooyin koronto, way dhaceen, waxaana loo baahan yahay koronto deggan oo wanaagsan oo loogu talagalay xuddunta USB. Waxaan dhibaatadan ku xalliyey anigoo si adag ugu gadiyay korantada xuddunta. Dhibaato kale oo aan la kulmay oo baabi'isay mashruuca oo dhan: ka dib dib-u-kicinta ama bilawga qabow ee qalabka, dhammaan modem-yada lama helin had iyo jeer, mana go'aamin karo sababta tani u dhacday iyo waxa algorithm. Laakiin marka hore wax walba.

Si modemku si sax ah u shaqeeyo, waxaan rakibay xirmada usb-modeswitch.

sudo apt update
sudo apt install -y usb-modeswitch

Taas ka dib, ka dib markii la isku xiro, modem-ka si sax ah ayaa loo ogaan doonaa oo loo habeyn doonaa nidaamka hoose ee udev. Waxaan hubiyaa anigoo si fudud ku xiraya modemka oo aan hubinayaa in shabakadu ay muuqato.
Dhibaato kale oo aan xalin waayay: sidee ku heli karaa magaca hawlwadeenka aanu la shaqaynayno modem-kan? Magaca hawlwadeenku waxa uu ka kooban yahay interneedka shabakadda modem-ka 192.168.8.1. Kani waa bog shabakad firfircoon oo xogta ku hesha codsiyada Ajax, markaa si fudud u jeexjeexa bogga iyo kala saarista magaca ma shaqeyn doonto. Markaa waxaan bilaabay inaan eego sida loo horumariyo bogga internetka, iwm., waxaanan ogaaday inaan sameynayo nooc ka mid ah wax aan macno lahayn. Natiijo ahaan, wuu tufay, oo hawlwadeenku wuxuu bilaabay inuu helo isagoo isticmaalaya Speedtest API laftiisa.

Wax badan ayaa fududaan lahaa haddii modemku uu galo amarrada AT. Waxa suurtagal noqon doonta in dib loo habeeyo, la sameeyo xidhiidhka pp-ga, lagu meeleeyo IP-ga, la helo hawlwadeenka isgaadhsiinta, iwm. Laakiin hoogtay, waxaan la shaqeynayaa wixii la ii dhiibay.

GPS

Qaadaha GPS-ka ee la i siiyay waxa uu lahaa interface UART iyo awood. Ma ahayn xalka ugu fiican, laakiin wali waxa ay ahayd mid la shaqayn karo oo fudud. Soo-qaaduhu wuxuu u ekaa sidan.

Xawaaraha isku mar ee dhowr modem LTE

Si daacad ah, tani waxay ahayd markii ugu horeysay ee aan la shaqeeyo qalabka GPS-ka, laakiin sida aan filayo, wax walba ayaa naloo maleeyay wakhti dheer ka hor. Markaa waxaan isticmaalnaa kaliya xalal diyaarsan.

Marka hore, waxaan awood u siinayaa uart_AO_B (UART_RX_AO_B, UART_TX_AO_B) inuu ku xidho GPS.

khadas@Khadas:~$ sudo fdtput -t s /dtb.img /serial@c81004e0 status okay

Ka dib waxaan hubiyaa guusha qaliinka.

khadas@Khadas:~$ fdtget /dtb.img /serial@c81004e0 status
okay

Amarkan ayaa sida muuqata wax ka beddelaya devtree-ka duullimaadka, kaas oo aad ugu habboon.

Kadib guusha hawlgalkan, reboot oo rakib daemon GPS-ka.

khadas@Khadas:~$ sudo reboot

Ku rakibida daemon-ka GPS-ka. Wax walba waan rakibaa oo isla markiiba gooyaa qaabeynta dheeraadka ah.

sudo apt install gpsd gpsd-clients -y
sudo killall gpsd
 
/* GPS daemon stop/disable */
sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket

Tafatirka faylka dejinta

sudo vim /etc/default/gpsd

Waxaan ku rakibayaa UART kaas oo GPS-ku ku laadlaadsan doono.

DEVICES="/dev/ttyS4"

Kadibna wax walba waan shidnaa oo bilownaa.

/* GPS daemon enable/start */
sudo systemctl enable gpsd.socket
sudo systemctl start gpsd.socket

Taas ka dib, waxaan isku xiraa GPS-ka.

Xawaaraha isku mar ee dhowr modem LTE

Siliga GPS-ku wuxuu ku jiraa gacmahayga, fiilooyinka cilladaha UART waxay ka muuqdaan faraheyga hoostooda.

Dib baan u kiciyaa oo waan hubiyaa hawlgalka GPS-ka aniga oo isticmaalaya barnaamijka gpmon.

Xawaaraha isku mar ee dhowr modem LTE

Ma arki kartid satalaytka sawirkan, laakiin waxaad arki kartaa isgaadhsiinta qalabka GPS-ka, taasina waxay la macno tahay in wax walba ay fiican yihiin.

Python dhexdeeda, waxaan isku dayay xulashooyin badan oo aan kula shaqeynayo daemon-kan, laakiin waxaan degay midka sida saxda ah ula shaqeeyay Python 3.

Waxaan rakibay maktabadda lagama maarmaanka ah.

sudo -H pip3 install gps3 

Oo anna waxaan ku xardhay koodhka shaqada.

from gps3.agps3threaded import AGPS3mechanism
...

def getPositionData(agps_thread):
	counter = 0;
	while True:
		longitude = agps_thread.data_stream.lon
		latitude = agps_thread.data_stream.lat
		if latitude != 'n/a' and longitude != 'n/a':
			return '{}' .format(longitude), '{}' .format(latitude)
		counter = counter + 1
		print ("Wait gps counter = %d" % counter)
		if counter == 10:
			ErrorMessage("Ошибка GPS приемника!!!")
			return "NA", "NA"
		time.sleep(1.0)
...
f __name__ == '__main__':
...
	#gps
	agps_thread = AGPS3mechanism()  # Instantiate AGPS3 Mechanisms
	agps_thread.stream_data()  # From localhost (), or other hosts, by example, (host='gps.ddns.net')
	agps_thread.run_thread()  # Throttle time to sleep after an empty lookup, default '()' 0.2 two tenths of a second

Haddii aan u baahdo inaan helo iskuduwayaal, tan waxaa lagu sameeyaa wicitaanka soo socda:

longitude, latitude = getPositionData(agps_thread)

Oo 1-10 ilbiriqsi gudahood ayaan heli doonaa isku-dubarid ama ma heli doono. Haa, waxaan isku dayay toban iskuday inaan helo iskuduwayaal. Ma fiicna, qalloocan oo askew, laakiin way shaqeysaa. Waxaan go'aansaday inaan tan sameeyo sababtoo ah GPS-ku wuxuu yeelan karaa soo dhaweyn xumo oo had iyo jeer ma helo xogta. Haddii aad sugto inaad hesho xogta, markaa haddii aad ka shaqeyso qol fog, barnaamijku wuxuu ku xannibi doonaa meeshan. Sidaa darteed, waxaan hirgeliyay doorashadan aan xarrago lahayn.

Mabda 'ahaan, haddii ay jirto waqti dheeri ah, waxaa suurtagal ah in si toos ah xogta GPS looga helo UART, ku dheji dun gaar ah oo la shaqeyso. Laakiin ma jirin wakhti dhan, sidaas darteed code-ka foosha xun. Oo haa, anigu ma xishoon.

Diode nalka dhaliya

Isku xirka LED wuxuu ahaa mid fudud oo adag isla waqti isku mid ah. Dhibka ugu weyni waa in nambarka biinanka ee nidaamka uusan u dhigmin lambarka biinka ee sabuuradda iyo sababta oo ah dukumeentiga waxaa lagu qoray gacanta bidix. Si aad u barbar dhigto nambarka biinanka qalabka iyo lambarka biinka ee OS, waxaad u baahan tahay inaad socodsiiso amarka:

gpio readall

Miiska warqadaha biinka ah ee nidaamka iyo sabuuradda ayaa la soo bandhigi doonaa. Taas ka dib waxaan horeyba ugu shaqeyn karaa pin-ka OS laftiisa. Xaaladeyda LED-ka ayaa ku xiran GPIOH_5.

Xawaaraha isku mar ee dhowr modem LTE

Waxaan u beddelaa biinka GPIO qaabka wax soo saarka.

gpio -g mode 421 out

Waxaan qoraa eber

gpio -g write 421 0

Mid baan qoray

gpio -g write 421 1

Xawaaraha isku mar ee dhowr modem LTE
Wax walba waa shidan, ka dib marka la qoro "1"

#gpio subsistem
def gpio_init():
	os.system("gpio -g mode 421 out")
	os.system("gpio -g write 421 1")

def gpio_set(val):
	os.system("gpio -g write 421 %d" % val)
	
def error_blink():
	gpio_set(0)
	time.sleep(0.1)
	gpio_set(1)
	time.sleep(0.1)
	gpio_set(0)
	time.sleep(0.1)
	gpio_set(1)
	time.sleep(0.1)
	gpio_set(0)
	time.sleep(1.0)
	gpio_set(1)

def good_blink():
	gpio_set(1)

Hadda, haddii ay dhacdo khaladaad, waxaan u wacaa error_blink () LED-kuna si qurux badan ayuu u libiqi doonaa.

Nodes Software

Speedtest API

Waa farxad aad u weyn in adeegga Speedtest.net uu leeyahay Python-API u gaar ah, waad eegi kartaa Github.

Waxa wanaagsan ayaa ah in ay jiraan code-yada isha oo sidoo kale la arki karo. Sida loogu shaqeeyo API-gan (tusaalooyin fudud) ayaa laga heli karaa qaybta khuseeya.

Waxaan ku rakibay maktabadda Python amarka soo socda.

sudo -H pip3 install speedtest-cli

Tusaale ahaan, waxaad xitaa si toos ah ugu rakibi kartaa tijaabiyaha xawaaraha Ubuntu adigoo isticmaalaya software-ka. Kani waa isla arjiga Python, kaas oo si toos ah looga bilaabi karo console-ka.

sudo apt install speedtest-cli -y

Oo cabbir xawaarahaaga internetka.

speedtest-cli
Retrieving speedtest.net configuration...
Testing from B***** (*.*.*.*)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by MTS (Moscow) [0.12 km]: 11.8 ms
Testing download speed................................................................................
Download: 7.10 Mbit/s
Testing upload speed......................................................................................................
Upload: 3.86 Mbit/s

Natiijo ahaan, sida aan sameeyay. Waxaan ku qasbanaay inaan galo koodka isha ee tijaabadan xawaaraha si aan si buuxda ugu hirgaliyo mashruucayga. Mid ka mid ah hawlaha ugu muhiimsan waa in la helo magaca hawlwadeenka isgaarsiinta si loogu beddelo saxanka.

import speedtest
from datetime import datetime
...
#Указываем конкретный сервер для теста
#6053) MaximaTelecom (Moscow, Russian Federation)
servers = ["6053"]
# If you want to use a single threaded test
threads = None
s = speedtest.Speedtest()
#получаем имя оператора сотовой связи
opos = '%(isp)s' % s.config['client']
s.get_servers(servers)
#получаем текстовую строку с параметрами сервера
testserver = '%(sponsor)s (%(name)s) [%(d)0.2f km]: %(latency)s ms' % s.results.server
#тест загрузки
s.download(threads=threads)
#тест выгрузки
s.upload(threads=threads)
#получаем результаты
s.results.share()

#После чего формируется строка для записи в csv-файл.
#получаем позицию GPS
longitude, latitude = getPositionData(agps_thread)
#время и дата
curdata = datetime.now().strftime('%d.%m.%Y')
curtime = datetime.now().strftime('%H:%M:%S')
delimiter = ';'
result_string = opos + delimiter + str(curpos) + delimiter + 
	curdata + delimiter + curtime + delimiter + longitude + ', ' + latitude + delimiter + 
	str(s.results.download/1000.0/1000.0) + delimiter + str(s.results.upload / 1000.0 / 1000.0) + 
	delimiter + str(s.results.ping) + delimiter + testserver + "n"
#тут идет запись в файл логов

Halkan, sidoo kale, wax walbaa waxay noqdeen kuwo aan sahlanayn, inkastoo ay u muuqato mid aad u fudud. Markii hore, halbeegga adeegayaasha ayaa la mid ahaa [], waxay yiraahdeen, dooro server-ka ugu fiican. Natiijo ahaan, waxaan lahaa server-yo aan kala sooc lahayn, iyo, sida aad qiyaasi karto, xawaaraha doorsooma. Kani waa mawduuc aad u adag, iyadoo la isticmaalayo server go'an, haddii ay sidaas tahay, taagan ama firfircoon, waxay u baahan tahay cilmi-baaris. Laakiin halkan waxaa ah tusaale jaantusyada cabbiraadda xawaaraha ee hawlwadeenka Beeline marka uu si firfircoon u dooranayo server-ka tijaabada ah iyo mid taagan.

Xawaaraha isku mar ee dhowr modem LTE
Natiijada cabbiraadda xawaaraha marka la dooranayo server firfircoon.

Xawaaraha isku mar ee dhowr modem LTE
Natiijada tijaabada xawaaraha, oo leh mid si adag loo doortay hal server.

Inta lagu jiro tijaabada, waxaa jira "dhogorta" labada meelood, waxayna u baahan tahay in la saaro iyada oo la adeegsanayo hababka xisaabta. Laakinse server-ka go'an wax yar wuu ka yar yahay oo baaxadiisu waa xasiloon tahay.
Guud ahaan, tani waa meel cilmi baaris weyn. Oo waxaan cabbiri lahaa xawaaraha server-kayga anigoo isticmaalaya utility iperf. Laakiin waxaan ku adkeysaneynaa qeexida farsamada.

Diritaanka boostada iyo khaladaadka

Si aan u diro boostada, waxaan isku dayay dhowr iyo toban ikhtiyaar oo kala duwan, laakiin ugu dambeyntii waxaan degay kuwan soo socda. Waxaan ka diiwaan gashanaa sanduuqa boostada Yandex ka dibna qaatay Tani waa tusaale dirida boostada. Waan hubiyay oo barnaamijka ka hirgeliyay. Tusaalahani wuxuu eegayaa doorashooyin kala duwan, oo ay ku jiraan ka soo dirida gmail, iwm. Ma aanan rabin in aan ku dhibo dejinta server-kayga manaan helin wakhti, laakiin sida ay mar dambe noqotay, waxay sidoo kale ahayd faa'iido darro.

Diiwaanada waxaa loo diray si waafaqsan jadwalka. haddii uu jiro xiriir, 6dii saacadoodba mar: 00 subaxnimo, 06 subaxnimo, 12 duhurnimo iyo 18 galabnimo. Waxa uu u diray sidan soo socota.

from send_email import *
...
message_log = "Логи тестирования платы №1"
EmailForSend = ["[email protected]", "[email protected]"]
files = ["/home/khadas/modems_speedtest/csv"]
...
def sendLogs():
	global EmailForSend
	curdata = datetime.now().strftime('%d.%m.%Y')
	сurtime = datetime.now().strftime('%H:%M:%S')
	try:
		for addr_to in EmailForSend:
			send_email(addr_to, message_log, "Логи за " + curdata + " " + сurtime, files)
	except:
		print("Network problem for send mail")
		return False
	return True

Khaladaadka ayaa sidoo kale la diray markii hore. Si aad u bilawdo, waxay ku urureen liiska, ka dibna loo diray sidoo kale isticmaalaya jadwalka, haddii uu jiro xiriir. Si kastaba ha ahaatee, markaas dhibaatooyin ayaa ka kacay xaqiiqda ah in Yandex uu leeyahay xaddid ku saabsan tirada fariimaha la soo diro maalintii (tani waa xanuun, murugo iyo sharaf dhac). Maadaama ay jiri karaan tiro aad u badan oo khaladaad ah xitaa daqiiqadiiba, waxay ahayd inaan iska dhaafno khaladaadka boostada. Markaa maskaxda ku hay markaad si toos ah u dirayso macluumaadka ku saabsan dhibaatadan oo kale adoo adeegsanaya adeegyada Yandex.

Adeegga jawaab celinta

Si aan u helo qalab fog oo aan awood u yeesho in aan wax ka beddelo oo dib u habeeyo, waxaan u baahday server dibadda ah. Guud ahaan, si ay u noqoto mid caddaalad ah, waxay noqon doontaa sax in loo diro dhammaan xogta server-ka oo la dhiso dhammaan garaafyada quruxda badan ee shabakada internetka. Laakin hal mar maaha.

VPS waxaan doortay ruvds.com. Waxaad qaadan kartaa server-ka ugu fudud. Iyo guud ahaan, ujeeddooyinkayga tani way ku filnaan lahayd. Laakiin maadaama aanan jeebkayga ka bixinayn seerfarka, waxaan go’aansaday inaan ku qaato kayd yar si ay noogu filnaato haddii aan geyno interneedka shabakadda, server-kayaga SMTP, VPN, iwm. Intaa waxaa dheer, awood u yeelo inaad dejiso bot Telegram oo aadan dhibaato kala kulmin in la xannibo. Sidaa darteed, waxaan doortay Amsterdam iyo xuduudaha soo socda.

Xawaaraha isku mar ee dhowr modem LTE

Sida habka isgaarsiinta qalabka, vim2 waxay dooratay isku xirka ssh-ga rogan iyo, sida dhaqanku muujiyay, ma aha kan ugu fiican. Haddii xiriirku lumo, server-ku wuxuu hayaa dekedda oo suurtagal maaha in lagu xiro iyada oo loo marayo in muddo ah. Sidaa darteed, weli way fiicantahay in la isticmaalo hababka kale ee isgaarsiinta, tusaale ahaan VPN. Mustaqbalka waxaan rabay inaan u wareego VPN, laakiin waqti ma helin.

Ma geli doono tafaasiisha dejinta dab-damiska, xaddididda xuquuqda, curyaaminta xidhiidhada xididka ssh iyo xaqiiqooyinka kale ee dejinta VPS. Waxaan jeclaan lahaa inaan rumaysto inaad wax walba hore u ogeyd. Xidhiidhka fog, waxaan ku abuuray isticmaale cusub serverka.

adduser vimssh

Waxaan ku abuuraa furayaasha isku xirka ssh qalabkayaga.

ssh-keygen

Oo waxaan ku koobiyayaa server-keena.

ssh-copy-id [email protected]

Qalabkayaga, waxaan ku abuuraa isku xirka ssh si toos ah boot kasta.

[Unit] Description=Auto Reverse SSH
Requires=systemd-networkd-wait-online.service
After=systemd-networkd-wait-online.service
[Service] User=khadas
ExecStart=/usr/bin/ssh -NT -o ExitOnForwardFailure=yes -o ServerAliveInterval=60 -CD 8080 -R 8083:localhost:22 [email protected]
RestartSec=5
Restart=always
[Install] WantedBy=multi-user.target

U fiirso dekedda 8083: waxay go'aamisaa dekedda aan isticmaali doono si loogu xiro ssh gadaal. Ku dar bilow oo bilow

sudo systemctl enable autossh.service
sudo systemctl start autossh.service

Waxaad xitaa arki kartaa heerka:

sudo systemctl status autossh.service

Hadda, server-kayaga VPS, haddii aan ku ordo:

ssh -p 8083 khadas@localhost

Kadibna waxaan tagayaa qalabkayga tijaabada ah. Qalabka waxaan sidoo kale u diri karaa logs iyo xog kasta iyada oo loo marayo ssh server-kayga, taas oo aad u habboon.

Isku soo wada duuboo

Xawaaraha isku mar ee dhowr modem LTE
Daarid, aynu bilowno horumarinta iyo wax-ka-hortagga

Phew, si fiican, taasi waa, waxaan ku tilmaamay dhammaan qanjidhada. Hadda waa waqtigii la isku dari lahaa dhammaan. Waxaad arki kartaa koodhka halkan.

Qodob muhiim ah oo leh koodka: Mashruucan waxaa laga yaabaa inuusan sidan ku bilaaban, sababtoo ah waxaa loogu talagalay hawl gaar ah, oo ah naqshad gaar ah. Inkasta oo aan siinayo koodhka isha, waxaan weli ku sharxi doonaa waxyaabaha ugu qiimaha badan halkan, sax ahaan qoraalka, haddii kale gabi ahaanba waa mid aan la fahmi karin.

Bilawga, waxaan bilaabaa gps, gpio oo waxaan bilaabaa dun jadwaliye gaar ah.

#запуск потока планировщика
pShedulerThread = threading.Thread(target=ShedulerThread, args=(1,))
pShedulerThread.start()

Jadwalku aad buu u fudud yahay: waxay u muuqataa in la gaadhay waqtigii fariimaha la diri lahaa iyo waxa uu yahay heerka khaladka hadda jira. Haddii uu jiro calan khalad ah, markaa waxaan ku libiqnaa LED-ka.

#sheduler
def ShedulerThread(name):
	global ready_to_send
	while True:
		d = datetime.today()
		time_x = d.strftime('%H:%M')
		if time_x in time_send_csv:
			ready_to_send = True
		if error_status:
			error_blink()
		else:
			good_blink()
		time.sleep(1)

Qaybta ugu adag ee mashruucani waa ilaalinta isku xirka ssh ee imtixaan kasta. Imtixaan kastaa wuxuu ku lug leeyahay dib-u-habaynta albaabka caadiga ah iyo server-ka DNS. Mar haddii qofna aanu wax akhriyin, ogow in tareenku aanu fuulin biraha alwaaxyada ah. Qofkii hela ukunta Easter-ka wuxuu helayaa xoogaa nacnac ah.

Si tan loo sameeyo, waxaan abuuraa miis kala-duwan oo kala duwan -set-mark 0x2 iyo xeer lagu hagayo taraafikada.

def InitRouteForSSH():
	cmd_run("sudo iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 22 -j MARK --set-mark 0x2")
	cmd_run("sudo ip rule add fwmark 0x2/0x2 lookup 102")

Waxaad wax badan ka baran kartaa sida ay u shaqeyso akhri maqaalkan.

Taas ka dib waxaan galaa wareeg aan dhammaad lahayn, halkaas oo mar kasta oo aan helno liiska modemka ku xiran (si aan u ogaano haddii qaabeynta shabakadu si lama filaan ah u beddeshay).

network_list = getNetworklist()

Helitaanka liiska isku xirka shabakadaha waa wax fudud.

def getNetworklist():
	full_networklist = os.listdir('/sys/class/net/')
	network_list = [x for x in full_networklist if "eth" in x and x != "eth0"]
	return network_list

Ka dib markaan helo liiska, waxaan dhigay ciwaanada IP-ga dhammaan is-dhexgalka, sida aan ku muujiyay sawirka cutubka ku saabsan modem-ka.

SetIpAllNetwork(network_list)

def SetIpAllNetwork(network_list):
	for iface in network_list:
		lastip = "%d" % (3 + network_list.index(iface))
		cmd_run ("sudo ifconfig " + iface + " 192.168.8." + lastip +" up")

Kadibna waxaan si fudud u dhex maraa interface kasta oo loop ah. Oo waxaan u habeeyaa interface kasta.

	for iface in network_list:
		ConfigNetwork(iface)

def ConfigNetwork(iface):
#сбрасываем все настройки
		cmd_run("sudo ip route flush all")
#Назначаем шлюз по умолчанию
		cmd_run("sudo route add default gw 192.168.8.1 " + iface)
#задаем dns-сервер (это нужно для работы speedtest)
		cmd_run ("sudo bash -c 'echo nameserver 8.8.8.8 > /etc/resolv.conf'")

Waxaan hubiyaa interface-ka shaqeynta, haddii aysan jirin shabakad, markaa waxaan abuuraa khaladaad. Haddii ay jirto shabakad, markaa waa waqtigii wax la qaban lahaa!

Halkan waxaan ku habeeyaa ssh router-ka interface-kan (haddii aan la samayn), u dir khaladaadka server-ka haddii wakhtigu yimid, u diro logs oo ugu dambeyntii socodsiiyo xawaaraha oo ku kaydi logs faylka csv.

if not NetworkAvalible():
....
#Здесь мы формируем ошибки
....
else: #Есть сеть, ура, работаем!
#Если у нас проблемный интерфейс, на котором ssh, то меняем его
  if (sshint == lastbanint or sshint =="free"):
    print("********** Setup SSH ********************")
    if sshint !="free":
      сmd_run("sudo ip route del default via 192.168.8.1 dev " + sshint +" table 102")
    SetupReverseSSH(iface)
    sshint = iface
#раз сетка работает, то давай срочно все отправим!!!
    if ready_to_send:
      print ("**** Ready to send!!!")
        if sendLogs():
          ready_to_send = False
        if error_status:
          SendErrors()
#и далее тестируем скорость и сохраняем логи. 

Waxaa mudan in la xuso shaqada dejinta ssh-ga rogan.

def SetupReverseSSH(iface):
	cmd_run("sudo systemctl stop autossh.service")
	cmd_run("sudo ip route add default via 192.168.8.1 dev " + iface +" table 102")
	cmd_run("sudo systemctl start autossh.service")

Dabcan, waxaad u baahan tahay inaad ku darto dhammaan quruxdan si aad u bilowdo. Si tan loo sameeyo waxaan abuuraa fayl:

sudo vim /etc/systemd/system/modems_speedtest.service

Waxaana ku qoray:

[Unit] Description=Modem Speed Test
Requires=systemd-networkd-wait-online.service
After=systemd-networkd-wait-online.service
[Service] User=khadas
ExecStart=/usr/bin/python3.6 /home/khadas/modems_speedtest/networks.py
RestartSec=5
Restart=always
[Install] WantedBy=multi-user.target

Waxaan shid autoloading oo bilaabay!

sudo systemctl enable modems_speedtest.service
sudo systemctl start modems_speedtest.service

Hadda waxaan arki karaa diiwaannada waxa dhacaya aniga oo isticmaalaya amarka:

journalctl -u modems_speedtest.service --no-pager -f

Результаты

Hagaag, hadda waxa ugu muhiimsan waa, maxaa ku dhacay natiijada? Halkan waxaa ah garaafyo yar oo aan ku guulaystay in aan qabto intii lagu jiray habka horumarinta iyo ciribtirka. Garaafyada waxaa lagu dhisay gnuplot oo leh qoraalka soo socda.

#! /usr/bin/gnuplot -persist
set terminal postscript eps enhanced color solid
set output "Rostelecom.ps"
 
#set terminal png size 1024, 768
#set output "Rostelecom.png"
 
set datafile separator ';'
set grid xtics ytics
set xdata time
set ylabel "Speed Mb/s"
set xlabel 'Time'
set timefmt '%d.%m.%Y;%H:%M:%S'
set title "Rostelecom Speed"

plot "Rostelecom.csv" using 3:6 with lines title "Download", '' using 3:7 with lines title "Upload"
 
set title "Rostelecom 2 Ping"
set ylabel "Ping ms"
plot "Rostelecom.csv" using 3:8 with lines title "Ping"

Waayo-aragnimadii ugu horreysay waxay ahayd talefoonka Tele2, oo aan qabtay dhowr maalmood.

Xawaaraha isku mar ee dhowr modem LTE

Halkan waxa aan isticmaalay server cabbirka firfircoon. Cabbiraadaha xawaaruhu way shaqeeyaan, laakiin aad bay isu beddelaan, laakiin qaar ka mid ah qiimaha celceliska ayaa weli muuqda, tanna waxaa lagu heli karaa shaandhaynta xogta, tusaale ahaan, celceliska dhaqdhaqaaqa.

Ka dib waxaan u dhisay tiro garaafyo ah hawlwadeenada kale ee isgaadhsiinta. Xaaladdan oo kale, waxaa horay u jiray hal server oo tijaabo ah, natiijadu waxay sidoo kale ahaayeen kuwo aad u xiiso badan.

Xawaaraha isku mar ee dhowr modem LTE

Xawaaraha isku mar ee dhowr modem LTE

Xawaaraha isku mar ee dhowr modem LTE

Xawaaraha isku mar ee dhowr modem LTE

Sida aad arki karto, mawduucu aad buu u ballaadhan yahay cilmi-baadhista iyo habaynta xogtan, oo si cad uma soconayso laba toddobaad oo shaqo ah. Laakiin…

Natiijada shaqada

Shaqadii si lama filaan ah ayay u dhammaatay duruufo ka baxsan xakamaynta awgeed. Mid ka mid ah daciifnimada mashruucan, fikradayda shakhsi ahaaneed, waxay ahayd modem-ka, kaas oo aan runtii rabin inuu isku mar la shaqeeyo modemyada kale, oo uu sameeyo khiyaamo noocaas ah mar kasta oo la soo dhejiyo. Ujeeddooyinkan, waxaa jira tiro aad u badan oo ah moodooyinka kale ee modem-ka; badiyaa waxay horey ugu jireen qaabka Mini PCI-e waxaana lagu rakibay gudaha aaladda oo aad bay u fududahay in la habeeyo. Laakiin taasi waa sheeko gebi ahaanba ka duwan. Mashruucu waxa uu ahaa mid xiisa leh, aad ayaan ugu farxay in aan awooday in aan ka qayb qaato.

Xawaaraha isku mar ee dhowr modem LTE

Source: www.habr.com

Add a comment