Simultaneous speedtest ntawm ob peb LTE modems

Thaum lub sijhawm cais tawm, kuv tau muab los koom nrog hauv kev tsim cov cuab yeej ntsuas qhov ceev ntawm LTE modems rau ntau tus neeg siv xov tooj ntawm tes.

Simultaneous speedtest ntawm ob peb LTE modems

Tus neeg siv khoom xav ntsuas qhov nrawm ntawm ntau tus neeg siv xov tooj hauv ntau qhov chaw sib txawv kom nkag siab tias tus neeg siv xov tooj ntawm tes yog qhov zoo tshaj plaws rau nws thaum txhim kho cov cuab yeej siv kev sib txuas LTE, piv txwv li, rau kev tshaj tawm video. Nyob rau tib lub sijhawm, qhov teeb meem yuav tsum tau daws kom yooj yim thiab pheej yig li sai tau, tsis muaj cov khoom siv kim.

Kuv yuav hais tam sim ntawd tias txoj hauj lwm tsis yog qhov yooj yim tshaj plaws thiab kev paub ntau tshaj plaws; Kuv yuav qhia koj tias kuv tau ntsib dab tsi thiab kuv daws lawv li cas. Yog li, cia peb mus.

Примечание

Kev ntsuas qhov ceev ntawm kev sib txuas LTE yog ib qho teeb meem nyuaj heev: koj yuav tsum xaiv cov cuab yeej thiab ntsuas cov txheej txheem, thiab tseem muaj kev nkag siab zoo ntawm topology thiab kev ua haujlwm ntawm lub xov tooj ntawm tes. Ntxiv rau, qhov ceev tuaj yeem cuam tshuam los ntawm ntau yam: tus naj npawb ntawm cov neeg siv ntawm lub xov tooj ntawm tes, huab cua huab cua, txawm tias los ntawm lub xov tooj mus rau ntawm tes qhov ceev tuaj yeem sib txawv heev vim yog lub network topology. Feem ntau, qhov no yog ib qho teeb meem nrog ntau tus neeg tsis paub, thiab tsuas yog tus neeg siv xov tooj tuaj yeem daws tau nws kom raug.

Thaum xub thawj, tus neeg siv khoom tsuas yog xav tsav lub xa xov nrog cov neeg siv xov tooj ntawm tes, ntsuas kev ntsuas ncaj qha ntawm lub xov tooj thiab tom qab ntawd sau cov ntsuas ntsuas qhov nrawm hauv phau ntawv sau. Kuv txoj kev daws teeb meem rau kev ntsuas qhov ceev ntawm lte tes hauj lwm, txawm tias tsis zoo, daws qhov teeb meem.

Vim tsis muaj sij hawm, kuv txiav txim siab tsis nyob rau hauv kev pom zoo ntawm kev yooj yim los yog practicality, tab sis nyob rau hauv kev pom zoo ntawm kev ceev ntawm kev loj hlob. Piv txwv li, thim rov qab ssh tau siv rau kev nkag mus rau tej thaj chaw deb, es tsis txhob siv VPN ntau dua, txhawm rau txuag sijhawm ntawm kev teeb tsa lub server thiab txhua tus neeg siv khoom.

Kev ua haujlwm

Raws li tau hais hauv tsab xov xwm Tsis muaj kev qhia tshwj xeeb: vim li cas tus neeg siv khoom tsis xav tau: Tsis txhob ua haujlwm yam tsis muaj kev qhia tshwj xeeb! Tsis txhob, nyob qhov twg!

Kev ua haujlwm tau yooj yim heev, kuv yuav nthuav nws me ntsis rau kev nkag siab ntawm cov neeg siv kawg. Kev xaiv cov kev daws teeb meem thiab cov cuab yeej siv tau hais los ntawm tus neeg siv khoom. Yog li, cov kev specification nws tus kheej, tom qab tag nrho cov kev pom zoo:

Raws li ib tug board computer vim 2 ua tus ntsuas ceev rau kev sib txuas lte ntawm H modemsua e3372h - 153 ob peb telecom operators (los ntawm ib tug mus rau n). Nws kuj tseem yuav tsum tau txais kev tswj hwm los ntawm GPS receiver txuas ntawm UART. Ua ntsuas nrawm siv qhov kev pabcuam www.speedtest.net thiab muab lawv tso rau hauv ib lub rooj zoo li no:

Simultaneous speedtest ntawm ob peb LTE modems

Table hauv csv format. Tom qab ntawd xa daim paib no los ntawm e-mail txhua 6 teev. Nyob rau hauv rooj plaub uas tsis raug, ntsais lub LED uas txuas nrog GPIO.

Kuv tau piav qhia txog cov kev qhia tshwj xeeb hauv daim ntawv dawb, tom qab ntau qhov kev pom zoo. Tab sis lub ntsiab lus ntawm txoj hauj lwm twb pom lawm. Ib lub lim tiam tau muab rau txhua yam. Tab sis qhov tseeb nws kav peb lub lis piam. Qhov no suav nrog qhov tseeb tias kuv tau ua qhov no tsuas yog tom qab kuv txoj haujlwm tseem ceeb thiab hnub so.

Ntawm no kuv xav rov qab xav txog qhov tseeb tias cov neeg siv khoom tau pom zoo ua ntej ntawm kev siv cov kev ntsuas ceev thiab kho vajtse, uas txwv kuv lub peev xwm heev. Cov peev nyiaj kuj raug txwv, yog li tsis muaj dab tsi tshwj xeeb tau yuav. Yog li peb yuav tsum ua si los ntawm cov cai no.

Architecture thiab kev loj hlob

Cov txheej txheem yog yooj yim thiab pom tseeb. Yog li ntawd, kuv yuav tso nws yam tsis muaj lus tshwj xeeb.

Simultaneous speedtest ntawm ob peb LTE modems

Kuv txiav txim siab los siv tag nrho qhov project hauv python, txawm tias kuv tsis muaj kev paub dhau los hauv cov lus no txhua. Kuv xaiv nws vim tias muaj ib pawg ntawm cov qauv npaj ua tiav thiab cov kev daws teeb meem uas tuaj yeem ua kom txoj kev loj hlob sai. Yog li ntawd, kuv thov kom txhua tus kws tshaj lij programmer tsis txhob thuam kuv thawj qhov kev paub ntawm kev txhim kho hauv python, thiab kuv ib txwm zoo siab los hnov ​​​​cov lus thuam los txhim kho kuv cov kev txawj ntse.

Tsis tas li ntawd nyob rau hauv tus txheej txheem kuv nrhiav pom tias python muaj ob tug khiav versions 2 thiab 3, vim li ntawd kuv tau nyob rau qhov thib peb.

Kho vajtse nodes

Single-plate vim 2

Kuv tau txais ib lub tshuab computer ib leeg ua kuv lub tshuab loj vim 2

Simultaneous speedtest ntawm ob peb LTE modems

Ib qho zoo heev, muaj zog tshaj tawm xov xwm processor rau lub tsev ntse thiab SMART-TV, tab sis tsis tsim nyog rau txoj haujlwm no, lossis, cia peb hais, tsis zoo. Piv txwv li, nws lub ntsiab OS yog Android, thiab Linux yog qhov thib ob OS, thiab raws li tsis muaj leej twg lav qhov kev ua haujlwm zoo ntawm tag nrho cov nodes thiab tsav tsheb hauv Linux. Thiab kuv xav tias qee qhov teeb meem cuam tshuam nrog USB tsav tsheb ntawm lub platform no, yog li cov modems tsis ua haujlwm raws li qhov xav tau ntawm lub rooj tsavxwm no. Nws kuj muaj cov ntaub ntawv tsis zoo thiab tawg, yog li txhua qhov haujlwm tau siv sijhawm ntau los khawb los ntawm cov chaw nres nkoj. Txawm tias kev ua haujlwm zoo ib yam nrog GPIO coj ntshav ntau. Piv txwv li, nws siv kuv ob peb teev los teeb tsa LED. Tab sis, txhawm rau ua lub hom phiaj, nws yog qhov tseem ceeb tsis tseem ceeb yam twg ntawm ib lub rooj tsav xwm nws yog, qhov tseem ceeb yog nws ua haujlwm thiab muaj USB chaw nres nkoj.

Ua ntej, kuv yuav tsum tau nruab Linux ntawm lub rooj tsavxwm no. Txhawm rau kom tsis txhob cuam tshuam cov tsiaj qus ntawm cov ntaub ntawv rau txhua tus, thiab rau cov neeg uas yuav cuam tshuam nrog cov txheej txheem ib leeg, kuv sau tshooj no.

Muaj ob txoj hauv kev rau nruab Linux: ntawm daim npav SD sab nraud lossis ntawm MMC sab hauv. Kuv tau siv sijhawm yav tsaus ntuj los txiav txim siab seb yuav ua li cas thiaj ua rau nws ua haujlwm nrog daim npav, yog li kuv txiav txim siab los nruab nws ntawm MMC, txawm tias tsis muaj qhov tsis ntseeg nws yuav yooj yim dua rau kev ua haujlwm nrog daim npav sab nraud.

Hais txog lub firmware crookedly hais ntawm no. Kuv txhais los ntawm coj txawv txawv rau hauv Lavxias. Txhawm rau teeb tsa lub rooj tsavxwm, kuv yuav tsum txuas lub khoos phis tawj UART. Txuas nws raws li nram no.

  • Tool Pin GND: <—> Pin17 of VIMs's GPIO
  • Tool Pin TXD: <—> Pin18 of VIMs's GPIO (Linux_Rx)
  • Tool Pin RXD: <—> Pin19 of VIMs's GPIO (Linux_Tx)
  • Tool Pin VCC: <—> Pin20 of VIMs's GPIO

Simultaneous speedtest ntawm ob peb LTE modems

Tom qab ntawd, kuv rub tawm lub firmware ntawm no. Tshwj xeeb firmware version VIM1_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.

Txhawm rau upload cov firmware no, kuv xav tau cov khoom siv hluav taws xob. Xav paub ntxiv txog qhov no S, SѓS,. Kuv tsis tau sim flashing nws hauv qab Windows, tab sis kuv yuav tsum qhia koj ob peb lo lus hais txog firmware hauv Linux. Ua ntej, kuv yuav nruab cov khoom siv hluav taws xob raws li cov lus qhia.

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

Aaand... Tsis muaj dab tsi ua. Kuv siv ob peb teev kho cov ntawv teeb tsa kom txhua yam teeb tsa raug rau kuv. Kuv tsis nco qab tias kuv tau ua dab tsi nyob rau ntawd, tab sis kuj muaj qhov circus nrog nees. Yog li ceev faj. Tab sis yog tias tsis muaj cov khoom siv hluav taws xob no tsis muaj qhov cuam tshuam rau kev tsim txom vim 2 ntxiv. Nws yog qhov zoo dua tsis txhob cuam tshuam nrog nws!

Tom qab xya lub voj voog ntawm ntuj txiag teb tsaus, tsab ntawv teeb tsa thiab kev teeb tsa, kuv tau txais ib pob khoom siv ua haujlwm. Kuv txuas lub rooj tsavxwm ntawm USB rau kuv lub computer Linux, thiab tseem txuas UART raws li daim duab saum toj no.
Kuv tab tom teeb tsa qhov kuv nyiam minicom davhlau ya nyob twg rau qhov nrawm ntawm 115200, tsis muaj kev tswj hwm kho vajtse thiab software yuam kev. Thiab cia peb pib.

Simultaneous speedtest ntawm ob peb LTE modems

Thaum thauj khoom VIM2 hauv UART davhlau ya nyob twg, kuv nias ib qho tseem ceeb, xws li qhov chaw, kom tsis txhob thauj khoom. Tom qab kab tshwm

kvim2# 

Kuv nkag mus rau qhov hais kom ua:

kvim2# run update

Ntawm tus tswv tsev uas peb tab tom thauj khoom, kuv ua tiav:

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

Yog lawm, phew. Kuv tshawb xyuas, muaj Linux ntawm lub rooj tsavxwm. Login/password khadas: khadas.

Tom qab ntawd, qee qhov kev teeb tsa me me pib. Txhawm rau ua haujlwm ntxiv, Kuv lov tes taw tus password rau sudo (yog, tsis ruaj ntseg, tab sis yooj yim).

sudo visudo

Kuv kho cov kab rau hauv daim ntawv thiab txuag

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

Tom qab ntawd kuv hloov qhov chaw tam sim no kom lub sijhawm nyob hauv Moscow, txwv tsis pub nws yuav nyob hauv Greenwich.

sudo timedatectl set-timezone Europe/Moscow

los yog

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

Yog tias koj pom nws nyuaj, tsis txhob siv lub rooj tsavxwm no; Raspberry Pi yog qhov zoo dua. Ua siab ncaj.

Modem Huawei e3372h – 153

Lub modem no yog qhov tseem ceeb ntawm cov ntshav rau kuv, thiab qhov tseeb, nws tau dhau los ua lub hauv paus ntawm tag nrho cov haujlwm. Feem ntau, lub npe "modem" rau cov khoom siv no tsis cuam tshuam qhov tseem ceeb ntawm kev ua haujlwm txhua qhov: qhov no yog qhov sib xyaw ua ke muaj zog, cov khoom siv kho vajtse no muaj cov cuab yeej sib xyaw uas ua txuj ua CD-ROM txhawm rau txhim kho cov tsav tsheb, thiab ces hloov mus rau network card hom.

Architecturally, los ntawm qhov pom ntawm tus neeg siv Linux, tom qab txhua qhov teeb tsa, nws zoo li qhov no: tom qab txuas lub modem, Kuv muaj eth * network interface, uas ntawm dhcp tau txais IP chaw nyob 192.168.8.100, thiab lub rooj vag qub. yog 192.168.8.1.

Thiab lub sijhawm tseem ceeb tshaj plaws! Tus qauv modem no tsis tuaj yeem ua haujlwm hauv modem hom, uas yog tswj los ntawm AT cov lus txib. Txhua yam yuav yooj yim dua, tsim PPP kev sib txuas rau txhua tus modem thiab tom qab ntawd ua haujlwm nrog lawv. Tab sis hauv kuv qhov teeb meem, "nws tus kheej" (qhov tseeb dua, Linux diver raws li udev cov cai), tsim cov eth interface thiab muab tus IP chaw nyob rau nws ntawm dhcp.

Txhawm rau kom tsis txhob muaj kev ntxhov siab ntxiv, kuv xav kom tsis nco qab lo lus "modem" thiab hais tias daim npav network thiab lub rooj vag, vim qhov tseeb, nws zoo li txuas daim npav tshiab nrog lub rooj vag.
Thaum muaj ib qho modem, qhov no tsis ua rau muaj teeb meem tshwj xeeb, tab sis thaum muaj ntau tshaj ib qho, uas yog n-thooj, cov duab hauv qab no tshwm sim.

Simultaneous speedtest ntawm ob peb LTE modems

Ntawd yog, n network phaib, nrog tib tus IP chaw nyob, txhua tus nrog tib lub rooj vag qub. Tab sis qhov tseeb, txhua tus ntawm lawv txuas nrog nws tus kheej tus neeg teb xov tooj.

Thaum xub thawj, kuv muaj cov kev daws teeb meem yooj yim: siv ifconfig lossis ip hais kom ua, tua txhua qhov cuam tshuam thiab tsuas yog tig rau ib qho thiab sim nws. Kev daws tau zoo rau txhua tus, tshwj tsis yog tias thaum lub sijhawm hloov pauv kuv tsis tuaj yeem txuas rau lub cuab yeej. Thiab txij li qhov kev hloov pauv tau nrawm thiab nrawm, kuv yeej tsis muaj sijhawm los txuas txhua yam.

Yog li ntawd, kuv xaiv txoj hauv kev ntawm manually hloov tus IP chaw nyob ntawm cov modems thiab ces tsav tsheb khiav siv routing nqis.

Simultaneous speedtest ntawm ob peb LTE modems

Qhov no tsis yog qhov kawg ntawm kuv cov teeb meem nrog modems: nyob rau hauv cov ntaub ntawv ntawm lub hwj chim teeb meem, lawv poob, thiab ib tug zoo ruaj khov fais fab mov rau lub USB hub. Kuv daws qhov teeb meem no los ntawm nyuaj soldering lub hwj chim ncaj qha mus rau lub hub. Lwm qhov teeb meem uas kuv tau ntsib thiab qhov uas ua rau tag nrho qhov project: tom qab reboot lossis txias pib ntawm lub cuab yeej, tsis yog txhua tus modems raug kuaj pom thiab tsis tas li, thiab kuv tsis tuaj yeem txiav txim siab vim li cas qhov no tshwm sim thiab los ntawm dab tsi algorithm. Tab sis thawj yam ua ntej.

Rau lub modem ua haujlwm kom raug, kuv tau teeb tsa lub pob usb-modeswitch.

sudo apt update
sudo apt install -y usb-modeswitch

Tom qab ntawd, tom qab txuas, lub modem yuav raug kuaj pom thiab teeb tsa los ntawm udev subsystem. Kuv tshawb xyuas los ntawm kev txuas lub modem thiab xyuas kom meej tias lub network tshwm.
Lwm qhov teeb meem uas kuv daws tsis tau: Kuv tuaj yeem tau txais lub npe ntawm tus neeg teb xov tooj peb ua haujlwm li cas los ntawm lub modem no? Tus neeg teb xov tooj lub npe muaj nyob rau hauv modem web interface ntawm 192.168.8.1. Qhov no yog nplooj ntawv web dynamic uas tau txais cov ntaub ntawv los ntawm Ajax thov, yog li tsuas yog wgeting nplooj ntawv thiab cais lub npe yuav tsis ua haujlwm. Yog li kuv pib saib yuav ua li cas los tsim ib nplooj ntawv web, thiab lwm yam, thiab pom tau tias kuv tau ua qee yam tsis muaj tseeb. Yog li ntawd, nws spat, thiab tus neeg teb xov tooj pib tau txais kev siv Speedtest API nws tus kheej.

Ntau yam yuav yooj yim dua yog tias lub modem tau nkag los ntawm AT cov lus txib. Nws yuav muaj peev xwm rov kho nws, tsim kev sib txuas ppp, muab tus IP, tau txais tus neeg teb xov tooj, thiab lwm yam. Tab sis alas, Kuv tab tom ua haujlwm nrog qhov kuv tau muab.

GPS

Lub GPS receiver kuv tau muab muaj UART interface thiab lub zog. Nws tsis yog qhov kev daws teeb meem zoo tshaj plaws, tab sis nws tseem ua haujlwm tau yooj yim thiab yooj yim. Lub receiver saib ib yam dab tsi zoo li no.

Simultaneous speedtest ntawm ob peb LTE modems

Ua kom ncaj ncees, qhov no yog thawj zaug kuv ua haujlwm nrog GPS txais, tab sis raws li kuv xav tau, txhua yam tau xav txog peb lub sijhawm ntev dhau los. Yog li peb tsuas yog siv cov kev daws teeb meem npaj txhij.

Ua ntej, kuv pab uart_AO_B (UART_RX_AO_B, UART_TX_AO_B) txuas GPS.

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

Tom qab ntawd kuv xyuas qhov ua tiav ntawm kev ua haujlwm.

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

Cov lus txib no pom meej kho cov devtree ntawm ya, uas yooj yim heev.

Tom qab ua tiav ntawm qhov haujlwm no, rov pib dua thiab nruab GPS daemon.

khadas@Khadas:~$ sudo reboot

Txhim kho GPS daemon. Kuv nruab txhua yam thiab txiav nws tam sim ntawd rau kev teeb tsa ntxiv.

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

Kho cov ntaub ntawv teeb tsa.

sudo vim /etc/default/gpsd

Kuv tab tom txhim kho UART uas lub GPS yuav dai.

DEVICES="/dev/ttyS4"

Thiab ces peb tig txhua yam rau thiab pib.

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

Tom qab ntawd, kuv txuas GPS.

Simultaneous speedtest ntawm ob peb LTE modems

Lub GPS hlau yog nyob rau hauv kuv txhais tes, UART debugger xov hlau yog pom nyob rau hauv kuv tus ntiv tes.

Kuv rov pib dua thiab tshawb xyuas GPS ua haujlwm siv gpsmon program.

Simultaneous speedtest ntawm ob peb LTE modems

Koj tsis tuaj yeem pom cov satellites hauv qhov screenshot no, tab sis koj tuaj yeem pom kev sib txuas lus nrog GPS txais, thiab qhov no txhais tau tias txhua yam zoo.

Hauv python, kuv tau sim ntau txoj hauv kev los ua haujlwm nrog tus daemon no, tab sis kuv tau txiav txim siab rau qhov uas ua haujlwm raug nrog python 3.

Kuv nruab lub tsev qiv ntawv tsim nyog.

sudo -H pip3 install gps3 

Thiab kuv sculpt tus lej ua haujlwm.

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

Yog tias kuv xav tau kev tswj hwm, qhov no ua tiav nrog kev hu hauv qab no:

longitude, latitude = getPositionData(agps_thread)

Thiab tsis pub dhau 1-10 vib nas this kuv yuav tau txais kev sib koom tes lossis tsis tau. Yog lawm, kuv muaj kaum sim kom tau txais kev tswj hwm. Tsis pom zoo, crooked thiab askew, tab sis nws ua haujlwm. Kuv txiav txim siab ua qhov no vim tias GPS tuaj yeem muaj kev txais tos tsis zoo thiab tsis tas yuav tau txais cov ntaub ntawv. Yog tias koj tos kom tau txais cov ntaub ntawv, ces yog tias koj ua haujlwm hauv chav nyob deb, qhov kev pab cuam yuav khov rau hauv qhov chaw no. Yog li ntawd, kuv tau siv qhov kev xaiv tsis zoo no.

Hauv cov ntsiab lus, yog tias muaj sijhawm ntxiv, nws tuaj yeem tau txais cov ntaub ntawv los ntawm GPS ncaj qha ntawm UART, txheeb xyuas nws hauv ib txoj xov sib cais thiab ua haujlwm nrog nws. Tab sis tsis muaj sij hawm nyob rau hauv tag nrho, li no lub lim hiam phem phem. Thiab yog, kuv tsis txaj muag.

Lub teeb ci ntsa iab

Txuas lub LED yog qhov yooj yim thiab nyuaj tib lub sijhawm. Qhov teeb meem tseem ceeb yog tus lej tus lej hauv qhov system tsis sib haum nrog tus lej pin ntawm lub rooj tsavxwm thiab vim tias cov ntaub ntawv sau nrog sab laug tes. Txhawm rau sib piv tus lej kho vajtse thiab tus lej pin hauv OS, koj yuav tsum khiav cov lus txib:

gpio readall

Ib lub rooj ntawm tus pin xov xwm nyob rau hauv lub system thiab ntawm lub rooj tsavxwm yuav tshwm sim. Tom qab ntawd kuv tuaj yeem ua haujlwm tus pin hauv OS nws tus kheej. Hauv kuv rooj plaub, LED txuas nrog GPIOH_5.

Simultaneous speedtest ntawm ob peb LTE modems

Kuv hloov GPIO tus pin rau cov zis hom.

gpio -g mode 421 out

kuv sau zero.

gpio -g write 421 0

kuv sau ib qho.

gpio -g write 421 1

Simultaneous speedtest ntawm ob peb LTE modems
Txhua yam yog ci, tom qab sau "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)

Tam sim no, nyob rau hauv cov ntaub ntawv ntawm kev ua yuam kev, kuv hu error_blink() thiab LED yuav ntsais zoo nkauj.

Software nodes

Speedtest API

Nws yog qhov zoo siab heev uas qhov kev pabcuam speedtest.net muaj nws tus kheej python-API, koj tuaj yeem saib github.

Qhov zoo yog tias muaj cov lej uas tuaj yeem pom. Yuav ua li cas ua haujlwm nrog API no (cov piv txwv yooj yim) tuaj yeem pom hauv muaj feem cuam tshuam.

Kuv nruab lub tsev qiv ntawv python nrog cov lus txib hauv qab no.

sudo -H pip3 install speedtest-cli

Piv txwv li, koj tuaj yeem nruab qhov ntsuas ntsuas nrawm hauv Ubuntu ncaj qha los ntawm software. Qhov no yog tib daim ntawv thov python, uas tuaj yeem pib ncaj qha los ntawm console.

sudo apt install speedtest-cli -y

Thiab ntsuas koj Internet ceev.

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

Yog li ntawd, ib yam li kuv tau ua. Kuv yuav tsum tau nkag mus rau hauv cov lej ntawm qhov kev ntsuas nrawm no txhawm rau txhawm rau ua tiav lawv rau hauv kuv qhov project. Ib txoj haujlwm tseem ceeb tshaj plaws yog kom tau txais lub npe ntawm tus neeg teb xov tooj kom hloov nws mus rau hauv lub phaj.

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"
#тут идет запись в файл логов

Ntawm no, ib yam nkaus thiab, txhua yam ua tau tsis yooj yim, txawm tias nws yuav zoo li yooj yim dua. Thaum xub thawj, cov servers parameter yog sib npaug [], lawv hais tias, xaiv qhov zoo tshaj plaws server. Raws li qhov tshwm sim, kuv muaj random servers, thiab, raws li koj tuaj yeem kwv yees, hloov pauv ceev. Qhov no yog ib lub ntsiab lus nyuaj heev, siv lub server ruaj khov, yog tias muaj, zoo li qub lossis dynamic, xav tau kev tshawb fawb. Tab sis ntawm no yog ib qho piv txwv ntawm kev ntsuas ntsuas ceev rau tus neeg teb xov tooj Beeline thaum xaiv cov neeg rau zaub mov dynamically thiab ib qho ruaj khov.

Simultaneous speedtest ntawm ob peb LTE modems
Qhov tshwm sim ntawm kev ntsuas ceev thaum xaiv lub dynamic server.

Simultaneous speedtest ntawm ob peb LTE modems
Qhov tshwm sim ntawm kev ntsuas ceev, nrog ib qho nruj nruj xaiv ib tus neeg rau zaub mov.

Thaum kuaj, muaj "plam" nyob rau hauv ob qho tib si, thiab nws yuav tsum tau muab tshem tawm siv txoj kev ua lej. Tab sis nrog lub server ruaj nws yog me ntsis tsawg thiab lub amplitude yog ruaj khov dua.
Feem ntau, qhov no yog qhov chaw tshawb fawb zoo heev. Thiab kuv yuav ntsuas qhov ceev ntawm kuv lub server siv lub iperf utility. Tab sis peb ua raws li cov kev qhia tshwj xeeb.

Xa ntawv thiab yuam kev

Txhawm rau xa ntawv, kuv tau sim ntau lub kaum os ntau txoj kev xaiv, tab sis thaum kawg kuv txiav txim siab rau cov hauv qab no. Kuv sau npe rau ib lub thawv xa ntawv ntawm Yandex thiab tom qab ntawd coj Nov yog ib qho piv txwv ntawm kev xa ntawv. Kuv tshawb xyuas nws thiab siv nws rau hauv qhov program. Qhov piv txwv no tshuaj xyuas ntau yam kev xaiv, suav nrog xa los ntawm gmail, thiab lwm yam. Kuv tsis xav thab nrog teeb tsa kuv tus xa ntawv thiab tsis muaj sijhawm rau nws, tab sis raws li nws tau tshwm sim tom qab, nws kuj tsis muaj nuj nqis.

Cov log tau raug xa mus raws li lub sijhawm teem tseg, yog tias muaj kev sib txuas, txhua 6 teev: thaum 00 teev sawv ntxov, 06 teev sawv ntxov, 12 teev tsaus ntuj thiab 18 teev tsaus ntuj. Xa nws raws li nram no.

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

Qhov yuam kev kuj raug xa mus rau thawj zaug. Txhawm rau pib, lawv tau sau rau hauv daim ntawv teev npe, thiab tom qab ntawd xa kuj siv lub sijhawm teem sijhawm, yog tias muaj kev sib txuas. Txawm li cas los xij, tom qab ntawd cov teeb meem tshwm sim nrog qhov tseeb tias Yandex muaj qhov txwv ntawm cov lus xa mus rau ib hnub (qhov no yog qhov mob, kev tu siab thiab kev txaj muag). Txij li thaum tuaj yeem muaj ntau qhov yuam kev txawm tias ib feeb, peb yuav tsum tso tseg kev xa ntawv yuam kev. Yog li nco ntsoov thaum xa cov ntaub ntawv hais txog qhov teeb meem no los ntawm kev pabcuam Yandex.

Feedback server

Txhawm rau kom muaj kev nkag mus rau tej thaj chaw deb ntawm cov khoom kho vajtse thiab tuaj yeem kho thiab kho nws, kuv xav tau ib tus neeg rau zaub mov sab nraud. Feem ntau, kom muaj kev ncaj ncees, nws yuav raug xa tag nrho cov ntaub ntawv mus rau lub server thiab tsim tag nrho cov duab zoo nkauj hauv web interface. Tab sis tsis yog tag nrho ib zaug.

Rau VPS kuv xaiv ruvds.com ua. Koj tuaj yeem nqa cov server yooj yim tshaj plaws. Thiab feem ntau, rau kuv lub hom phiaj qhov no yuav txaus. Tab sis txij li thaum kuv tsis tau them nyiaj rau lub server tawm ntawm kuv tus kheej lub hnab tshos, kuv txiav txim siab coj nws nrog me me kom nws yuav txaus yog tias peb yuav tsum xa lub web interface, peb tus kheej SMTP server, VPN, thiab lwm yam. Ntxiv rau, tuaj yeem teeb tsa Telegram bot thiab tsis muaj teeb meem nrog nws raug thaiv. Yog li ntawd, kuv xaiv Amsterdam thiab cov nram qab no tsis.

Simultaneous speedtest ntawm ob peb LTE modems

Raws li ib txoj hauv kev sib txuas lus nrog cov khoom siv kho vajtse, vim2 xaiv qhov kev sib txuas rov qab ssh thiab, raws li kev xyaum qhia, nws tsis yog qhov zoo tshaj plaws. Yog tias qhov kev sib txuas tau ploj lawm, tus neeg rau zaub mov tuav qhov chaw nres nkoj thiab nws tsis tuaj yeem txuas los ntawm nws rau qee lub sijhawm. Yog li ntawd, nws tseem zoo dua los siv lwm txoj kev sib txuas lus, piv txwv li VPN. Yav tom ntej kuv xav hloov mus rau VPN, tab sis tsis muaj sijhawm.

Kuv yuav tsis nkag mus rau hauv cov ntsiab lus ntawm kev teeb tsa lub firewall, txwv txoj cai, disabling root ssh kev sib txuas thiab lwm yam truisms ntawm kev teeb tsa VPS. Kuv xav ntseeg tias koj twb paub txhua yam lawm. Rau kev sib txuas ntawm cov chaw taws teeb, kuv tsim tus neeg siv tshiab ntawm lub server.

adduser vimssh

Kuv tsim ssh txuas yuam sij ntawm peb cov khoom siv kho vajtse.

ssh-keygen

Thiab kuv luam lawv rau peb lub server.

ssh-copy-id [email protected]

Ntawm peb cov khoom kho vajtse, kuv tsim qhov kev sib txuas tsis siv neeg rov qab ssh ntawm txhua lub khau raj.

[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

Ua tib zoo mloog rau qhov chaw nres nkoj 8083: nws txiav txim siab qhov chaw nres nkoj twg kuv yuav siv los txuas ntawm thim rov qab ssh. Ntxiv rau qhov pib thiab pib.

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

Koj tuaj yeem pom qhov xwm txheej:

sudo systemctl status autossh.service

Tam sim no, ntawm peb VPS server, yog tias peb khiav:

ssh -p 8083 khadas@localhost

Tom qab ntawd kuv tau mus rau kuv daim ntawv xeem ntawm kev kho vajtse. Thiab los ntawm cov khoom kho vajtse kuv kuj tuaj yeem xa cov cav thiab cov ntaub ntawv ntawm ssh rau kuv lub server, uas yooj yim heev.

Muab tag nrho ua ke

Simultaneous speedtest ntawm ob peb LTE modems
Hloov mus, cia peb pib kev txhim kho thiab kev debugging

Phew, zoo, qhov ntawd yog nws, Kuv piav qhia tag nrho cov nodes. Tam sim no nws yog lub sij hawm los muab tag nrho ua ke. Koj tuaj yeem pom cov cai nyob ntawm no.

Lub ntsiab lus tseem ceeb nrog cov cai: Qhov project no yuav tsis pib zoo li qhov no, vim tias nws tau raug kho rau ib txoj haujlwm tshwj xeeb, ntawm ib qho kev tsim tshwj xeeb. Txawm hais tias kuv muab qhov chaws los, kuv tseem yuav piav qhia qhov tseem ceeb tshaj plaws ntawm no, nyob rau hauv cov ntawv nyeem, txwv tsis pub nws yog qhov tsis nkag siab kiag li.

Thaum pib, kuv pib gps, gpio thiab tso tawm cov xov xwm sib cais.

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

Lub sijhawm teem sijhawm yog qhov yooj yim heev: nws zoo li pom tias lub sijhawm tau los xa cov lus thiab qhov teeb meem tam sim no yog dab tsi. Yog tias muaj qhov yuam kev chij, ces peb ntsais lub LED.

#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)

Qhov nyuaj tshaj plaws ntawm qhov project no yog tswj qhov rov qab ssh kev twb kev txuas rau txhua qhov kev xeem. Txhua qhov kev xeem suav nrog rov teeb tsa lub rooj vag qub thiab DNS server. Txij li thaum tsis muaj leej twg nyeem ntawv lawm, paub tias lub tsheb ciav hlau tsis caij tsheb ciav hlau. Leej twg pom lub qe Easter tau ib co khoom qab zib.

Ua li no, kuv tsim ib lub rooj sib cais -set-kos 0x2 thiab txoj cai los hloov tsheb.

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")

Koj tuaj yeem kawm paub ntxiv txog nws ua haujlwm li cas nyeem hauv kab lus no.

Tom qab ntawd kuv mus rau hauv lub voj tsis kawg, qhov twg txhua zaus peb tau txais ib daim ntawv teev cov kev sib txuas modems (kom paub seb lub network teeb tsa tau hloov pauv tam sim ntawd).

network_list = getNetworklist()

Tau txais ib daim ntawv teev npe ntawm network interfaces yog qhov yooj yim heev.

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

Tom qab tau txais daim ntawv teev npe, kuv teeb IP chaw nyob rau txhua qhov interfaces, raws li kuv tau pom hauv daim duab hauv tshooj hais txog modem.

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")

Tom qab ntawd kuv tsuas yog mus ntawm txhua qhov interface hauv lub voj. Thiab kuv configure txhua interface.

	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'")

Kuv tshawb xyuas lub interface rau kev ua haujlwm, yog tias tsis muaj lub network, ces kuv tsim qhov yuam kev. Yog tias muaj lub network, ces nws yog lub sijhawm los ua!

Ntawm no kuv teeb tsa ssh routing rau qhov interface no (yog tias nws tsis tau ua tiav), xa cov yuam kev rau lub server yog tias lub sijhawm tau los, xa cov cav thiab thaum kawg khiav speedtest thiab txuag cov cav rau hauv cov ntaub ntawv 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()
#и далее тестируем скорость и сохраняем логи. 

Nws tsim nyog hais txog kev ua haujlwm ntawm kev teeb tsa rov qab ssh.

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")

Thiab ntawm chav kawm, koj yuav tsum ntxiv tag nrho cov kev zoo nkauj no rau kev pib. Ua li no kuv tsim ib cov ntaub ntawv:

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

Thiab kuv sau rau hauv nws:

[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

Kuv qhib autoloading thiab pib!

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

Tam sim no kuv tuaj yeem pom cov cav ntawm qhov tshwm sim siv cov lus txib:

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

Результаты

Zoo, tam sim no qhov tseem ceeb tshaj plaws yog, ua li cas tshwm sim? Nov yog ob peb daim duab uas kuv tau tswj kom ntes thaum lub sijhawm txhim kho thiab kev debugging. Cov duab tau tsim siv gnuplot nrog cov ntawv hauv qab no.

#! /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"

Thawj qhov kev paub yog nrog tus neeg teb xov tooj Tele2, uas kuv tau ua ob peb hnub.

Simultaneous speedtest ntawm ob peb LTE modems

Ntawm no kuv siv lub dynamic ntsuas server. Kev ntsuas ceev ua haujlwm, tab sis hloov pauv ntau heev, tab sis qee qhov nruab nrab tus nqi tseem pom, thiab qhov no tuaj yeem tau los ntawm kev lim cov ntaub ntawv, piv txwv li, nrog qhov nruab nrab txav.

Tom qab ntawd kuv tau tsim ntau daim duab rau lwm tus neeg siv xov tooj. Nyob rau hauv rooj plaub no, twb muaj ib tug neeg rau zaub mov kuaj, thiab cov txiaj ntsig kuj tseem nthuav heev.

Simultaneous speedtest ntawm ob peb LTE modems

Simultaneous speedtest ntawm ob peb LTE modems

Simultaneous speedtest ntawm ob peb LTE modems

Simultaneous speedtest ntawm ob peb LTE modems

Raws li koj tuaj yeem pom, lub ntsiab lus yog qhov dav heev rau kev tshawb fawb thiab ua cov ntaub ntawv no, thiab kom meej meej tsis kav ntev li ob peb lub lis piam ntawm kev ua haujlwm. Tab sis…

Cov txiaj ntsig ntawm kev ua haujlwm

Txoj haujlwm tau ua tiav sai sai vim muaj xwm txheej dhau kuv kev tswj hwm. Ib qho ntawm qhov tsis muaj zog ntawm qhov project no, hauv kuv lub tswv yim, yog lub modem, uas tsis xav ua haujlwm ib txhij nrog lwm cov modems, thiab ua qhov kev ntxias zoo li no txhua zaus nws tau thauj khoom. Rau cov hom phiaj no, muaj ntau tus qauv ntawm lwm cov qauv modem; feem ntau lawv twb nyob hauv Mini PCI-e hom thiab tau nruab rau hauv lub cuab yeej thiab yooj yim dua rau kev teeb tsa. Tab sis qhov ntawd yog ib zaj dab neeg sib txawv kiag li. Qhov project tau nthuav thiab kuv zoo siab heev uas kuv tuaj yeem koom nrog.

Simultaneous speedtest ntawm ob peb LTE modems

Tau qhov twg los: www.hab.com

Ntxiv ib saib