Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Pa nthawi yokhala kwaokha, ndinapatsidwa mwayi wotenga nawo gawo pakupanga chipangizo choyezera kuthamanga kwa ma modemu a LTE kwa ogwiritsa ntchito ma cellular angapo.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Makasitomala ankafuna kuwunika kuthamanga kwa ogwiritsira ntchito ma telecom osiyanasiyana m'malo osiyanasiyana kuti athe kumvetsetsa kuti ndi wogwiritsa ntchito foni iti yemwe anali wabwino kwambiri kwa iye pakuyika zida pogwiritsa ntchito kulumikizana kwa LTE, mwachitsanzo, pakuwulutsa makanema. Panthawi imodzimodziyo, vutoli linayenera kuthetsedwa mosavuta komanso motsika mtengo, popanda zipangizo zodula.

Ndidzanena nthawi yomweyo kuti ntchitoyi si yosavuta komanso yodziwa zambiri; Ndikuuzani mavuto omwe ndinakumana nawo komanso momwe ndinawathetsera. Kotero, tiyeni tizipita.

ndemanga

Kuyeza liwiro la kulumikizana kwa LTE ndi nkhani yovuta kwambiri: muyenera kusankha zida zoyenera ndi njira yoyezera, komanso kumvetsetsa bwino za topology ndi magwiridwe antchito a ma cellular network. Kuphatikiza apo, liwiro limatha kukhudzidwa ndi zinthu zingapo: kuchuluka kwa olembetsa pa cell, nyengo, ngakhale kuchokera ku cell kupita ku cell liwiro limatha kusiyana kwambiri chifukwa cha topology yaukonde. Kawirikawiri, ili ndi vuto ndi chiwerengero chachikulu cha zosadziwika, ndipo ndi wogwiritsa ntchito telecom yekha amene angathetsere bwino.

Poyamba, kasitomala amangofuna kuyendetsa mthenga ndi mafoni a oyendetsa, kutenga miyeso mwachindunji pa foni ndiyeno lembani zotsatira za kuyeza liwiro mu kope. Yankho langa poyezera kuthamanga kwa ma network a lte, ngakhale siloyenera, limathetsa vutoli.

Chifukwa chosowa nthawi, ndidapanga zosankha osati mokomera kumasuka kapena kuchitapo kanthu, koma mokomera kufulumira kwachitukuko. Mwachitsanzo, reverse ssh idagwiritsidwa ntchito patali, m'malo mwa VPN yothandiza kwambiri, kuti musunge nthawi pakukhazikitsa seva ndi kasitomala aliyense payekha.

Ntchito yaukadaulo

Monga tanenera m’nkhaniyo Popanda zidziwitso zaukadaulo: chifukwa chiyani kasitomala sakufuna: Osagwira ntchito popanda ukadaulo! Palibe, kulikonse!

Ntchito yaukadaulo inali yosavuta, ndikukulitsa pang'ono kuti ndimvetsetse wogwiritsa ntchito. Kusankhidwa kwa mayankho aukadaulo ndi zida zidanenedwa ndi kasitomala. Choncho, specifications palokha, pambuyo kuvomereza zonse:

Kutengera pa bolodi limodzi kompyuta vim2 pangani liwiro loyesa kulumikizana kwa lte kudzera pa ma modemu a Hmauwei e3372h - 153 Ogwiritsa ntchito ma telecom angapo (kuyambira imodzi mpaka n). Ndikofunikiranso kulandira zolumikizira kuchokera ku cholandila GPS cholumikizidwa kudzera pa UART. Pangani miyeso ya liwiro pogwiritsa ntchito ntchitoyi www., mikwapire.com ndi kuziyika mu gome monga:

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Table mu mtundu wa csv. Kenako tumizani chizindikirochi pa imelo maola 6 aliwonse. Pakachitika zolakwika, tsegulani ma LED omwe alumikizidwa ndi GPIO.

Ndinafotokozera zaumisiri mu mawonekedwe aulere, pambuyo pa zivomerezo zambiri. Koma tanthauzo la ntchitoyi likuwonekera kale. Sabata inaperekedwa kwa chirichonse. Koma zoona zake n’zakuti zinatha milungu itatu. Izi ndikuganizira mfundo yakuti ndinachita izi pambuyo pa ntchito yanga yaikulu komanso kumapeto kwa sabata.

Apa ine ndikufuna kamodzinso tcheru kuti kasitomala anavomera pasadakhale ntchito liwiro muyeso utumiki ndi hardware, amene kwambiri kuchepetsa mphamvu zanga. Bajetiyo inalinso yochepa, choncho palibe chapadera chomwe chinagulidwa. Choncho tinayenera kusewera motsatira malamulowa.

Zomangamanga ndi chitukuko

Chiwembucho ndi chosavuta komanso chodziwikiratu. Choncho, ndisiya popanda ndemanga zapadera.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Ndinaganiza zogwiritsa ntchito pulojekiti yonseyi mu python, ngakhale kuti ndinalibe chidziwitso chokhazikika m'chinenerochi. Ndinasankha chifukwa panali zitsanzo zokonzeka zopangidwa ndi njira zomwe zingathe kufulumizitsa chitukuko. Chifukwa chake, ndikupempha okonza mapulogalamu onse kuti asadzudzule zomwe ndinakumana nazo koyamba ndikuchita python, ndipo nthawi zonse ndimakhala wokondwa kumva kudzudzulidwa kolimbikitsa kuti ndiwonjezere luso langa.

Komanso m'katimo ndidapeza kuti python ili ndi mitundu iwiri yothamanga 2 ndi 3, chifukwa chake ndidakhazikika pachitatu.

Zida za Hardware

Mbale imodzi vim2

Ndinapatsidwa kompyuta ya bolodi limodzi ngati makina anga aakulu vim2

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Purosesa yabwino kwambiri, yamphamvu yapanyumba yanzeru ndi SMART-TV, koma yosayenera kwambiri pantchitoyi, kapena, tinene, yosayenera. Mwachitsanzo, OS yake yayikulu ndi Android, ndipo Linux ndi OS yachiwiri, ndipo motero palibe amene amatsimikizira magwiridwe antchito apamwamba a node ndi madalaivala onse pansi pa Linux. Ndipo ndikuganiza kuti mavuto ena anali okhudzana ndi madalaivala a USB a nsanja iyi, kotero ma modemu sanagwire ntchito monga momwe amayembekezera pa bolodi ili. Ilinso ndi zolembedwa zosauka komanso zomwazika, kotero kuti ntchito iliyonse idatenga nthawi yayitali kukumba madoko. Ngakhale ntchito wamba ndi GPIO anatenga magazi ambiri. Mwachitsanzo, zinanditengera maola angapo kuti ndikhazikitse LED. Koma, kukhala ndi cholinga, sikunali kofunikira kwenikweni mtundu wa bolodi limodzi, chinthu chachikulu chinali chakuti idagwira ntchito ndipo panali madoko a USB.

Choyamba, m'pofunika kukhazikitsa Linux pa bolodi. Kuti ndisafufuze zolembedwa za aliyense, komanso kwa iwo omwe adzachite ndi dongosolo la bolodi limodzi, ndikulemba mutuwu.

Pali njira ziwiri zoyika Linux: pa SD khadi yakunja kapena pa MMC yamkati. Ndinakhala madzulo ndikuyesera kulingalira momwe ndingagwiritsire ntchito ndi khadi, kotero ndinaganiza zoyiyika pa MMC, ngakhale kuti mosakayikira zingakhale zosavuta kugwira ntchito ndi khadi lakunja.

Za firmware mokhota zanenedwa apa. Ndimamasulira kuchokera kwachilendo kupita ku Chirasha. Kuti muyatse bolodi, ndiyenera kulumikiza UART ya hardware. Analunzanitsa motere.

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

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Pambuyo pake, ndinatsitsa firmware kuchokera pano. Mtundu wokhazikika wa firmware VIM1_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.

Kuti mukweze firmware iyi, ndimafunikira zofunikira. Zambiri za izi apa. Sindinayese kuwunikira pansi pa Windows, koma ndiyenera kukuuzani mawu ochepa okhudza firmware pansi pa Linux. Choyamba, ndikuyika zofunikira malinga ndi malangizo.

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

Aaand... Palibe chimene chimagwira ntchito. Ndidakhala maola angapo ndikusintha zolemba zoyika kuti chilichonse chindiyike bwino. Sindikukumbukira zomwe ndidachita kumeneko, koma panalinso ma circus ndi akavalo. Choncho samalani. Koma popanda zothandizira izi palibe chifukwa chozunza vim2 kupitilira. Ndibwino kuti musamachite naye manyazi!

Pambuyo pa mabwalo asanu ndi awiri a gehena, kasinthidwe ka script ndi kukhazikitsa, ndinalandira phukusi lazinthu zogwirira ntchito. Ndinalumikiza bolodi kudzera pa USB ku kompyuta yanga ya Linux, ndikulumikizanso UART molingana ndi chithunzi pamwambapa.
Ndikukhazikitsa terminal yanga ya minicom yomwe ndimakonda pa liwiro la 115200, popanda kuwongolera zolakwika za hardware ndi mapulogalamu. Ndipo tiyeni tiyambe.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Ndikatsegula VIM2 mu terminal ya UART, ndimakanikiza kiyi, monga spacebar, kuti ndisiye kutsitsa. Pambuyo kuwonekera mzere

kvim2# 

Ndikulowetsa lamulo:

kvim2# run update

Pa gulu lomwe tikutsitsa, ndikuchita:

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

Ndi zimenezo, phew. Ndayang'ana, pali Linux pa bolodi. Login/password khadas:khadas.

Pambuyo pake, zosintha zina zazing'ono zoyambira. Kuti ndipitirize ntchito, ndimayimitsa mawu achinsinsi a sudo (inde, osati otetezeka, koma osavuta).

sudo visudo

Ndimasintha mzere ku fomu ndikusunga

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

Ndiye ndimasintha malo omwe alipo kuti nthawiyo ikhale ku Moscow, mwinamwake ku Greenwich.

sudo timedatectl set-timezone Europe/Moscow

kapena

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

Ngati mukuwona kuti ndizovuta, musagwiritse ntchito bolodi; Raspberry Pi ndiyabwino. Moona mtima.

Modem Huawei e3372h – 153

Modem iyi inali gwero lalikulu la magazi kwa ine, ndipo, kwenikweni, idakhala nkhokwe ya polojekiti yonse. Nthawi zambiri, dzina la "modemu" pazida izi silimawonetsa tanthauzo la ntchitoyi konse: ichi ndi chophatikizira champhamvu, chida ichi chili ndi chipangizo chophatikizika chomwe chimadzinamizira kuti ndi CD-ROM kuti muyike madalaivala, ndiyeno sinthani ku network network mode.

Zomangamanga, kuchokera pakuwona kwa wogwiritsa ntchito Linux, pambuyo pa zoikamo zonse, zikuwoneka ngati izi: nditatha kulumikiza modem, ndili ndi mawonekedwe a eth * network, omwe kudzera pa dhcp amalandira adilesi ya IP 192.168.8.100, ndi chipata chosasinthika. ndi 192.168.8.1.

Ndipo mphindi yofunika kwambiri! Mtundu wa modem uwu sungathe kugwira ntchito mu modem modem, yomwe imayendetsedwa ndi malamulo a AT. Chilichonse chingakhale chosavuta, pangani ma PPP olumikizira pa modemu iliyonse ndikugwira nawo ntchito. Koma kwa ine, "iyemwini" (momwemonso, Linux diver molingana ndi malamulo a udev), amapanga mawonekedwe a eth ndikuwapatsa adilesi ya IP kudzera pa dhcp.

Kuti mupewe kusokonezeka kwina, ndikupempha kuiwala mawu oti "modemu" ndikunena khadi la network ndi chipata, chifukwa kwenikweni, zimakhala ngati kulumikiza khadi latsopano la intaneti ndi chipata.
Pakakhala modemu imodzi, izi sizimayambitsa mavuto apadera, koma ngati pali zambiri, zomwe ndi n-zidutswa, chithunzi chotsatira cha intaneti chikuwonekera.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Ndiko kuti, n makhadi a netiweki, okhala ndi adilesi ya IP yomweyo, iliyonse ili ndi chipata chofanana. Koma kwenikweni, aliyense wa iwo amalumikizidwa ndi woyendetsa wake.

Poyambirira, ndinali ndi yankho losavuta: kugwiritsa ntchito ifconfig kapena ip command, zimitsani zolumikizira zonse ndikungoyatsa imodzi ndikuyesa. Yankho lake linali labwino kwa aliyense, kupatula kuti panthawi yosintha sindinathe kulumikiza ku chipangizocho. Ndipo popeza kusinthaku kumachitika pafupipafupi komanso mwachangu, ndinalibe mwayi wolumikizana konse.

Chifukwa chake, ndidasankha njira yosinthira pamanja ma adilesi a IP a modemu ndikuyendetsa magalimoto pogwiritsa ntchito makonda amayendedwe.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Uku sikunali kutha kwa mavuto anga ndi ma modemu: pakakhala mavuto amagetsi, adagwa, ndipo mphamvu yabwino yokhazikika ku USB hub idafunikira. Ndinathetsa vutoli mwa kulimbitsa mphamvu molunjika ku hub. Vuto lina lomwe ndidakumana nalo ndikuwononga projekiti yonse: mutatha kuyambiranso kapena kuzizira kwa chipangizocho, si ma modemu onse omwe adapezeka ndipo osati nthawi zonse, ndipo sindingathe kudziwa chifukwa chake izi zidachitika komanso ndi ma aligorivimu ati. Koma zinthu zoyamba choyamba.

Kuti modem igwire bwino ntchito, ndinayika phukusi la usb-modeswitch.

sudo apt update
sudo apt install -y usb-modeswitch

Pambuyo pake, mutatha kulumikiza, modem idzazindikiridwa bwino ndikukonzedwa ndi udev subsystem. Ndimayang'ana mwa kungolumikiza modem ndikuwonetsetsa kuti maukonde akuwoneka.
Vuto lina lomwe sindikanatha kulithetsa: ndingapeze bwanji dzina la wogwiritsa ntchito yemwe tikugwira naye ntchito kuchokera ku modemu iyi? Dzina la opareshoni lili mu mawonekedwe a intaneti ya modemu pa 192.168.8.1. Ili ndi tsamba lawebusayiti lomwe limalandira deta kudzera muzopempha za Ajax, kotero kungolemba tsambalo ndi kutchula dzina sikungagwire ntchito. Kotero ndinayamba kuyang'ana momwe ndingapangire tsamba la webusaiti, ndi zina zotero, ndipo ndinazindikira kuti ndikuchita zopanda pake. Zotsatira zake, adalavula, ndipo woyendetsayo adayamba kulandira pogwiritsa ntchito Speedtest API yokha.

Zingakhale zophweka ngati modem ikanakhala ndi mwayi kudzera pa malamulo a AT. Zitha zotheka kuyisinthanso, kupanga kulumikizana kwa ppp, kugawa IP, kupeza wogwiritsa ntchito telecom, ndi zina zambiri. Koma tsoka, ndikugwira ntchito ndi zomwe ndapatsidwa.

GPS

Cholandira GPS chomwe ndinapatsidwa chinali ndi mawonekedwe a UART ndi mphamvu. Ilo silinali yankho labwino kwambiri, koma linali lothekabe komanso losavuta. Wolandirayo adawoneka chonchi.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Kunena zowona, iyi inali nthawi yanga yoyamba kugwira ntchito ndi wolandila GPS, koma monga ndimayembekezera, zonse zidaganiziridwa kwa ife kalekale. Chifukwa chake timangogwiritsa ntchito mayankho okonzeka.

Choyamba, ndimathandizira uart_AO_B (UART_RX_AO_B, UART_TX_AO_B) kulumikiza GPS.

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

Pambuyo pake ndimayang'ana bwino ntchitoyo.

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

Lamuloli mwachiwonekere limasintha devtree pa ntchentche, yomwe ili yabwino kwambiri.

Kuchita bwino kwa ntchitoyi, yambitsaninso ndikuyika daemon ya GPS.

khadas@Khadas:~$ sudo reboot

Kuyika daemon ya GPS. Ndimayika zonse ndikuzidula nthawi yomweyo kuti ndikonzenso.

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

Kusintha zoikamo file.

sudo vim /etc/default/gpsd

Ndikuyika UART pomwe GPS idzalendewera.

DEVICES="/dev/ttyS4"

Kenako timayatsa zonse ndikuyamba.

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

Pambuyo pake, ndikulumikiza GPS.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Waya wa GPS uli m'manja mwanga, mawaya ochotsa UART amawonekera pansi pa zala zanga.

Ndimayambiranso ndikuwunika momwe GPS ikugwirira ntchito pogwiritsa ntchito pulogalamu ya gpsmon.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Simungathe kuwona ma satellites pachithunzichi, koma mutha kuwona kulumikizana ndi wolandila GPS, ndipo izi zikutanthauza kuti zonse zili bwino.

Mu python, ndinayesa njira zambiri zogwirira ntchito ndi daemon iyi, koma ndinakhazikika pa yomwe inagwira ntchito bwino ndi python 3.

Ine kukhazikitsa laibulale zofunika.

sudo -H pip3 install gps3 

Ndipo ndikujambula nambala yantchito.

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

Ngati ndikufunika kupeza ma coordinates, izi zimachitika ndi foni iyi:

longitude, latitude = getPositionData(agps_thread)

Ndipo mkati mwa masekondi 1-10 ndipeza zogwirizanitsa kapena ayi. Inde, ndinali ndikuyesera khumi kuti ndipeze ma coordinates. Osati mulingo woyenera, wokhotakhota komanso wosakhazikika, koma umagwira ntchito. Ndidaganiza zochita izi chifukwa GPS imatha kulandilidwa bwino komanso osalandira deta nthawi zonse. Ngati mudikirira kuti mulandire deta, ndiye ngati mutagwira ntchito m'chipinda chakutali, pulogalamuyi idzaundana pamalo ano. Chifukwa chake, ndidagwiritsa ntchito njira iyi yoyipa.

M'malo mwake, ngati pangakhale nthawi yochulukirapo, zikanakhala zotheka kulandira deta kuchokera ku GPS mwachindunji kudzera ku UART, kugawanitsa mu ulusi wina ndikugwira nawo ntchito. Koma panalibe nthawi nkomwe, motero code yonyansa kwambiri. Ndipo inde, sindichita manyazi.

Kuwala kotulutsa kuwala

Kulumikiza LED kunali kosavuta komanso kovuta nthawi imodzi. Chovuta chachikulu ndi chakuti nambala ya pini mu dongosolo sichigwirizana ndi nambala ya pini pa bolodi komanso chifukwa zolembazo zimalembedwa ndi dzanja lamanzere. Kuti mufananize nambala ya pini ya hardware ndi nambala ya pini mu OS, muyenera kuyendetsa lamulo:

gpio readall

Gome la makalata a pini mu dongosolo ndi pa bolodi lidzawonetsedwa. Pambuyo pake nditha kugwiritsa ntchito pini mu OS yokha. M'malo mwanga LED ikugwirizana ndi GPIOH_5.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Ndimasintha pini ya GPIO kuti ikhale yotulutsa.

gpio -g mode 421 out

Ndikulemba ziro.

gpio -g write 421 0

Ndikulemba chimodzi.

gpio -g write 421 1

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE
Chilichonse chimayaka, mutalemba "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)

Tsopano, pakachitika zolakwika, ndimayitcha error_blink() ndipo ma LED aziwoneka bwino.

Mapulogalamu a mapulogalamu

Speedtest API

Ndizosangalatsa kwambiri kuti ntchito ya speedtest.net ili ndi python-API yake, mutha kuyang'ana Github.

Ubwino wake ndikuti pali ma source code omwe amathanso kuwonedwa. Momwe mungagwiritsire ntchito ndi API iyi (zitsanzo zosavuta) zitha kupezeka mkati gawo loyenera.

Ndimayika laibulale ya python ndi lamulo ili.

sudo -H pip3 install speedtest-cli

Mwachitsanzo, mutha kukhazikitsa choyesa liwiro ku Ubuntu mwachindunji kuchokera pa pulogalamuyo. Uwu ndiye ntchito yomweyo ya python, yomwe imatha kukhazikitsidwa mwachindunji kuchokera ku console.

sudo apt install speedtest-cli -y

Ndipo yesani liwiro la intaneti yanu.

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

Zotsatira zake, monga momwe ndinachitira. Ndinayenera kulowa m'makhodi a gwero la kuyesa liwiro ili kuti ndikwaniritse bwino ntchito yanga. Chimodzi mwazinthu zofunika kwambiri ndikupeza dzina la wogwiritsa ntchito telecom kuti alowe m'malo mwa mbale.

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

Pano, nayenso, chirichonse chinakhala chosavuta, ngakhale chikuwoneka chophweka. Poyamba, magawo a seva anali ofanana ndi [], amati, sankhani seva yabwino kwambiri. Zotsatira zake, ndinali ndi ma seva osadziwika, ndipo, monga momwe mungaganizire, kuthamanga kosinthika. Uwu ndi mutu wovuta kwambiri, kugwiritsa ntchito seva yokhazikika, ngati ndi choncho, yokhazikika kapena yamphamvu, imafuna kafukufuku. Koma nachi chitsanzo cha ma graph oyezera liwiro la woyendetsa Beeline posankha seva yoyeserera ndi yokhazikika.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE
Zotsatira za kuyeza liwiro posankha seva yamphamvu.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE
Zotsatira za kuyesa liwiro, ndi seva imodzi yosankhidwa mosamalitsa.

Pakuyesa, pali "ubweya" m'malo onse awiri, ndipo uyenera kuchotsedwa pogwiritsa ntchito njira za masamu. Koma ndi seva yokhazikika ndiyocheperako pang'ono ndipo matalikidwe ake amakhala okhazikika.
Kawirikawiri, awa ndi malo ofufuza kwambiri. Ndipo ndimayesa liwiro la seva yanga pogwiritsa ntchito chida cha iperf. Koma timamatira kuzinthu zamakono.

Kutumiza makalata ndi zolakwika

Kuti nditumize makalata, ndinayesa njira zingapo zingapo, koma pamapeto pake ndinakhazikika pa zotsatirazi. Ndinalembetsa bokosi la makalata pa Yandex ndiyeno ndinatenga Ichi ndi chitsanzo cha kutumiza makalata. Ndinazifufuza ndikuziyika mu pulogalamuyo. Chitsanzochi chimayang'ana zosankha zosiyanasiyana, kuphatikizapo kutumiza kuchokera ku gmail, ndi zina. Sindinafune kudandaula ndi kukhazikitsa seva yanga yamakalata ndipo ndinalibe nthawi yake, koma monga momwe zinakhalira pambuyo pake, zinali zopanda pake.

Zolembazo zidatumizidwa malinga ndi scheduler, ngati pali mgwirizano, maola 6 aliwonse: 00 koloko, 06 am, 12 koloko ndi 18 pm. Anatumiza motere.

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

Zolakwa zinatumizidwanso poyamba. Poyamba, adasonkhanitsidwa pamndandanda, kenako adatumizidwanso pogwiritsa ntchito ndandanda, ngati pali kulumikizana. Komabe, ndiye mavuto anadza ndi chakuti Yandex ali malire pa chiwerengero cha mauthenga anatumiza patsiku (izi ndi ululu, chisoni ndi manyazi). Popeza pakhoza kukhala zolakwika zambiri ngakhale pamphindi imodzi, tinayenera kusiya kutumiza zolakwika ndi makalata. Chifukwa chake, kumbukirani kuti mukamatumiza zidziwitso zavutoli kudzera pa Yandex.

Ndemanga seva

Kuti ndikhale ndi mwayi wopeza chida chakutali ndikutha kuchisintha ndikuchikonzanso, ndimafunikira seva yakunja. Kawirikawiri, kunena chilungamo, zingakhale zolondola kutumiza deta yonse ku seva ndikumanga ma graph onse okongola pa intaneti. Koma osati zonse mwakamodzi.

Kwa VPS ndinasankha ruvds.com. Mutha kutenga seva yosavuta kwambiri. Ndipo zambiri, pa zolinga zanga izi zingakhale zokwanira. Koma popeza sindinalipire seva kuchokera m'thumba langa, ndinaganiza kuti nditenge ndi kasungidwe kakang'ono kuti zikhale zokwanira ngati titha kuyika mawonekedwe a intaneti, seva yathu ya SMTP, VPN, ndi zina zotero. Kuphatikiza apo, mutha kukhazikitsa bot ya Telegraph ndipo musakhale ndi vuto ndi kutsekedwa. Choncho, ndinasankha Amsterdam ndi magawo otsatirawa.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Monga njira yolumikizirana ndi zida, vim2 idasankha kulumikizana kwa reverse ssh ndipo, monga momwe zawonetsera, si zabwino kwambiri. Ngati kugwirizana kwatayika, seva imakhala ndi doko ndipo sizingatheke kulumikiza kupyoleramo kwa kanthawi. Choncho, ndibwino kugwiritsa ntchito njira zina zolankhulirana, mwachitsanzo VPN. M'tsogolomu ndinkafuna kusintha VPN, koma ndinalibe nthawi.

Sindingafotokoze mwatsatanetsatane kukhazikitsa chozimitsa moto, kuletsa ufulu, kuletsa kulumikizana kwa mizu ya ssh ndi malingaliro ena okhazikitsa VPS. Ndikufuna kukhulupirira kuti mukudziwa kale zonse. Pakulumikiza kwakutali, ndimapanga wosuta watsopano pa seva.

adduser vimssh

Ndimapanga makiyi olumikizira ssh pa hardware yathu.

ssh-keygen

Ndipo ndimakopera ku seva yathu.

ssh-copy-id [email protected]

Pa hardware yathu, ndimapanga cholumikizira cha ssh chosinthira pa boot iliyonse.

[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

Samalani pa doko 8083: imasankha doko lomwe ndigwiritse ntchito kuti ndilumikize kudzera m'mbuyo ssh. Onjezani poyambira ndikuyamba.

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

Mutha kuwona ngakhale mawonekedwe:

sudo systemctl status autossh.service

Tsopano, pa seva yathu ya VPS, ngati tithamanga:

ssh -p 8083 khadas@localhost

Kenako ndimafika pamayeso anga a hardware. Ndipo kuchokera ku hardware ndingathenso kutumiza zipika ndi deta iliyonse kudzera pa ssh ku seva yanga, yomwe ili yabwino kwambiri.

Kuziyika zonse pamodzi

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE
Kuyatsa, tiyeni tiyambe chitukuko ndi kukonza zolakwika

Phew, ndiye, ndidafotokoza ma node onse. Tsopano ndi nthawi yoti tiziyika zonse pamodzi. Mutha kuwona code pomwe pano.

Mfundo yofunika ndi code: Ntchitoyi singayambe motere, chifukwa idapangidwira ntchito inayake, yomangamanga. Ngakhale ndikupereka code source, ndikufotokozerabe zinthu zamtengo wapatali apa, zomwe zili m'malembawo, mwinamwake ndizosamvetsetseka.

Pachiyambi, ndimayambitsa gps, gpio ndikuyambitsa ulusi wosiyana.

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

Wokonzerayo ndi wosavuta: amawoneka kuti awone ngati nthawi yakwana yotumiza mauthenga komanso momwe zolakwika zilili. Ngati pali mbendera yolakwika, ndiye kuti timaphethira ma 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)

Gawo lovuta kwambiri la polojekitiyi ndikusunga kulumikizana kwa reverse ssh pamayeso aliwonse. Kuyesa kulikonse kumaphatikizapo kukonzanso chipata chokhazikika ndi seva ya DNS. Popeza palibe amene amawerenga, dziwani kuti sitimayo sikwera njanji zamatabwa. Amene apeza dzira la Isitala amapeza maswiti.

Kuti ndichite izi, ndimapanga tebulo lapadera -set-mark 0x2 ndi lamulo lowongolera magalimoto.

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

Mutha kudziwa zambiri za momwe zimagwirira ntchito werengani m'nkhaniyi.

Pambuyo pake ndimalowa muzitsulo zopanda malire, kumene nthawi iliyonse timapeza mndandanda wa ma modemu ogwirizana (kuti tipeze ngati kasinthidwe ka intaneti kwasintha mwadzidzidzi).

network_list = getNetworklist()

Kupeza mndandanda wazolumikizana ndi netiweki ndikosavuta.

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

Nditalandira mndandanda, ndidayika ma adilesi a IP pazolumikizana zonse, monga ndidawonetsera pachithunzichi mumutu wokhudza modemu.

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

Kenako ndimangodutsa mawonekedwe aliwonse mozungulira. Ndipo ndimakonza mawonekedwe aliwonse.

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

Ndimayang'ana mawonekedwe a magwiridwe antchito, ngati palibe netiweki, ndiye kuti ndimapanga zolakwika. Ngati pali intaneti, ndiye nthawi yoti muchitepo kanthu!

Pano ndikukonzekera ssh routing ku mawonekedwe awa (ngati sichinachitike), tumizani zolakwika kwa seva ngati nthawi yafika, tumizani zipika ndipo potsiriza muthamangitse mofulumira ndikusunga zipika ku fayilo ya 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()
#и далее тестируем скорость и сохраняем логи. 

Ndikoyenera kutchula ntchito yokhazikitsa reverse 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")

Ndipo, ndithudi, muyenera kuwonjezera kukongola konseku poyambira. Kuti muchite izi, ndimapanga fayilo:

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

Ndipo ine ndikulemba mmenemo:

[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

Ndimayatsa kutsitsa ndikuyamba!

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

Tsopano ndikuwona zolemba zomwe zikuchitika pogwiritsa ntchito lamulo:

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

Zotsatira

Chabwino, tsopano chofunika kwambiri ndicho, chinachitika ndi chiyani? Nawa ma graph angapo omwe ndidatha kujambula panthawi yachitukuko ndi kukonza zolakwika. Ma grafu anamangidwa pogwiritsa ntchito gnuplot ndi malemba otsatirawa.

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

Chochitika choyamba chinali ndi woyendetsa Tele2, yemwe ndidachita kwa masiku angapo.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Apa ndidagwiritsa ntchito seva yoyezera mwamphamvu. Miyezo yothamanga imagwira ntchito, koma imasinthasintha kwambiri, koma mtengo wake wapakati umawonekerabe, ndipo izi zitha kupezeka posefa deta, mwachitsanzo, ndi avareji yosuntha.

Pambuyo pake ndidapanga ma graph angapo a matelefoni ena. Pankhaniyi, panali kale seva imodzi yoyesera, ndipo zotsatira zake zinali zosangalatsa kwambiri.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Monga mukuonera, mutuwu ndi wochuluka kwambiri pakufufuza ndi kukonza deta iyi, ndipo mwachiwonekere sichitha kwa masabata angapo a ntchito. Koma…

Zotsatira za ntchito

Ntchitoyi inatha mwadzidzidzi chifukwa cha zinthu zimene sindikanatha kuzikwanitsa. Chimodzi mwa zofooka za polojekitiyi, m'malingaliro anga omvera, chinali modemu, yomwe sinkafuna kwenikweni kugwira ntchito nthawi imodzi ndi ma modemu ena, ndipo inapanga zidule zotere nthawi iliyonse yomwe imadzaza. Pazifukwa izi, pali mitundu ina yambiri ya ma modemu; nthawi zambiri amakhala mu mtundu wa Mini PCI-e ndipo amayikidwa mkati mwa chipangizocho ndipo ndizosavuta kusintha. Koma imeneyo ndi nkhani yosiyana kotheratu. Ntchitoyi inali yosangalatsa ndipo ndinasangalala kwambiri kuti ndinatha kutenga nawo mbali.

Kuyesa kofulumira munthawi imodzi pamamodemu angapo a LTE

Source: www.habr.com

Kuwonjezera ndemanga