Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Panguva yekuvharirwa, ndakapihwa kuti nditore chikamu mukugadzirwa kwemudziyo wekuyera kumhanya kwemamodemu eLTE kune akati wandei ma cellular opareta.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Mutengi aida kuongorora kumhanya kweakasiyana siyana enharembozha munzvimbo dzakasiyana siyana kuitira kuti akwanise kunzwisisa kuti ndeipi nharembozha yainyanya kumunakira pakuisa michina uchishandisa LTE yekubatanidza, semuenzaniso, kutepfenyura kwevhidhiyo. Panguva imwecheteyo, dambudziko racho raifanira kugadziriswa nyore nyore uye zvakachipa sezvinobvira, pasina michina inodhura.

Ini ndichataura ipapo ipapo kuti basa racho harisi iro rakapfava uye rakanyanyisa ruzivo-rakawanda; Ini ndichakuudza kuti ndeapi matambudziko andakasangana nawo uye kuti ndakaagadzirisa sei. Saka, handei.

taura pfungwa

Kuyera kumhanya kwekubatana kweLTE inyaya yakaoma kwazvo: iwe unofanirwa kusarudza iyo yakakodzera michina uye yekuyera maitiro, uye zvakare kuve nekunzwisisa kwakanaka kweiyo topology uye kushanda kweserura network. Uyezve, kumhanya kunogona kupesvedzerwa nezvinhu zvakati wandei: huwandu hwevanyoreri pasero, mamiriro ekunze, kunyangwe kubva pasero kuenda kune sero kumhanya kunogona kusiyanisa zvakanyanya nekuda kwetiweki topology. Kazhinji, iri idambudziko nenhamba huru yezvisingazivikanwe, uye chete telecom opareta anogona kurigadzirisa nemazvo.

Pakutanga, mutengi aingoda kutyaira mutakuri nenhare dzevashandisi, tora zviyero zvakananga parunhare uye wobva wanyora pasi mhedzisiro yekuyerwa kwekumhanya mubhuku rekunyorera. Mhinduro yangu yekuyera kumhanya kwelte network, kunyangwe isiri yakanaka, inogadzirisa dambudziko.

Nekuda kwekushaikwa kwenguva, ndakaita sarudzo kwete dzekuitira nyore kana kuita, asi ndichifarira kukurumidza kwebudiriro. Semuenzaniso, reverse ssh yakashandiswa kuwana kure kure, pane iyo inonyanya kushanda VPN, kuitira kuchengetedza nguva yekumisikidza sevha uye mutengi wega wega.

Basa reunyanzvi

Sezvakataurwa munyaya yacho Pasina maitiro ehunyanzvi: nei mutengi asingadi: Usashande usina hunyanzvi hwekuita! Hapana, chero kupi!

Iro tekinoroji basa raive rakareruka, ini ndichariwedzera zvishoma kuitira kunzwisisa kwekupedzisira mushandisi. Sarudzo yehunyanzvi mhinduro uye midziyo yakarairwa nemutengi. Saka, iyo tekinoroji yakatarwa pachayo, mushure mezvose zvibvumirano:

Kubva pane imwe bhodhi komputa vim2 gadzira yekumhanyisa tester yekubatanidza lte kuburikidza neH modemuawei e3372h - 153 akati wandei telecom operators (kubva kune imwe kusvika n). Izvo zvinodikanwa zvakare kugamuchira marongero kubva kune GPS inogamuchira yakabatana kuburikidza neUART. Ita zviyero zvekumhanya uchishandisa sevhisi www.avapensuit.com wozviisa mutafura sezvizvi:

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Tafura mu csv format. Zvadaro tumira chiratidzo ichi ne-e-mail maawa matanhatu oga oga. Kana paine zvikanganiso, blink iyo LED yakabatana neGPIO.

Ndakatsanangura maitiro ehunyanzvi mune fomu yemahara, mushure mekubvumidzwa kwakawanda. Asi revo yebasa iri kutooneka. Vhiki yakapihwa zvese. Asi chokwadi chakatora mavhiki matatu. Izvi zviri kurangarira chokwadi chekuti ndakaita izvi chete mushure mebasa rangu guru uye pakupera kwevhiki.

Pano ini ndinoda zvakare kukwevera pfungwa kune chokwadi chekuti mutengi akabvumirana pachine nguva nezve kushandiswa kweyero yekuyeresa sevhisi uye hardware, izvo zvakanyanya kuderedza kugona kwangu. Mari yacho yaingovewo shoma saka hapana chaitengwa. Saka taifanira kutamba tichitevedzera mitemo iyi.

Architecture uye budiriro

Chirongwa chacho chiri nyore uye chiri pachena. Naizvozvo, ini ndichaisiya isina chero yakakosha mhinduro.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Ndakasarudza kuita chirongwa chese mupython, zvisinei nekuti ndakanga ndisina ruzivo rwekuvandudza mumutauro uyu zvachose. Ndakazvisarudza nekuti pakanga paine boka remienzaniso yakagadzirwa-yakagadzirwa uye mhinduro dzaigona kukurumidzira budiriro. Naizvozvo, ndinokumbira vese vanogadzira mapurogiramu kuti vasapopore ruzivo rwangu rwekutanga rwekugadzira python, uye ndinogara ndichifara kunzwa kutsoropodzwa kunovaka kuti ndivandudze hunyanzvi hwangu.

Zvakare mukuita ndakaona kuti python ine maviri anomhanya vhezheni 2 ne3, semhedzisiro ndakagara pane yechitatu.

Hardware nodes

Single-plate vim2

Ndakapihwa komputa ine-bhodhi semuchina wangu mukuru vim2

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Yakanakisa, ine simba midhiya processor yeimba yakangwara uye SMART-TV, asi yakanyanya kusakodzera basa iri, kana, ngatiti, isina kukodzera. Semuenzaniso, iyo huru OS ndeye Android, uye Linux ndeyechipiri OS, uye naizvozvo hapana anovimbisa kushanda kwepamusoro-soro kwemanodhi ose uye vatyairi pasi peLinux. Uye ndinofungidzira kuti mamwe ematambudziko aienderana neiyo USB madhiraivha epuratifomu iyi, saka modem haina kushanda sezvaitarisirwa pabhodhi iri. Iyo ine zvakare yakashata uye yakapararira magwaro, saka kuvhiya kwega kwega kwakatora nguva yakawanda kuchera kuburikidza nemadhokisi. Kunyangwe basa rakajairika neGPIO rakatora ropa rakawanda. Semuenzaniso, zvakanditorera maawa akati wandei kuseta iyo LED. Asi, kuve nechinangwa, zvaive zvisina kukosha kuti yaive yerudzii-bhodhi, chinhu chikuru ndechekuti yakashanda uye pakanga paine USB ports.

Kutanga, ndinofanira kuisa Linux pane iyi bhodhi. Kuti ndisatsvage masango ezvinyorwa zvemunhu wese, uye zvakare kune avo vanozobata neino-bhodhi system, ndiri kunyora chitsauko chino.

Pane nzira mbiri dzekuisa Linux: pane yekunze SD kadhi kana pane yemukati MMC. Ndakapedza manheru ndichiedza kufunga kuti ndingaite sei kuti ishande nekadhi, saka ndakasarudza kuiisa paMMC, kunyange pasina mubvunzo zvingava nyore zvikuru kushanda nekadhi rekunze.

Nezve firmware zvakataurwa apa. Ndinoturikira kubva kusinganzwisisiki kuenda kuRussia. Kuti ndivheneke bhodhi, ini ndinofanira kubatanidza iyo hardware UART. Yakabatanidza nenzira inotevera.

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

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Mushure meizvozvo, ndakadhawunirodha firmware kubva pano. Specific firmware version VIM1_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.

Kuti ndiise iyi firmware, ndinoda zvekushandisa. Mamwe mashoko pamusoro peizvi pano. Handina kuedza kuipenya pasi peWindows, asi ndinoda kukuudza mazwi mashomanana nezve firmware pasi peLinux. Kutanga, ini ndichaisa zvishandiso zvinoenderana nemirairo.

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

Aaand... Hapana chinoshanda. Ndakaita maawa mashoma ndichigadzirisa zvinyorwa zvekuisa kuti zvese zvindiisire nemazvo. Handiyeuke zvandakaita ikoko, asi paivawo nesekisi yaiva nemabhiza. Saka chenjera. Asi pasina izvi zvinoshandiswa hapana chikonzero chekutambudza vim2 mberi. Zviri nani kuti usambokanganisika naye zvachose!

Mushure memadenderedzwa manomwe egehena, script gadziriso uye kuisirwa, ndakagamuchira pasuru yezvishandiso zvekushanda. Ini ndakabatanidza bhodhi kuburikidza ne USB kune yangu Linux komputa, uye zvakare ndakabatanidza iyo UART zvinoenderana nedhirowa riri pamusoro.
Ndiri kuseta yangu yandinoda minicom terminal yekumhanyisa ye115200, isina hardware uye software kukanganisa kutonga. Uye ngatitangei.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Pakurodha VIM2 muUART terminal, ndinodzvanya kiyi, senge spacebar, kuti ndimise kurodha. Mushure memutsara unooneka

kvim2# 

Ini ndinoisa murairo:

kvim2# run update

Pamugadziri watiri kurodha, ini ndinoisa:

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

Ndizvozvo, phew. Ndakatarisa, pane Linux pabhodhi. Login/password khadas:khadas.

Mushure meizvozvo, mamwe madiki ekutanga marongero. Kuti uwedzere basa, ndinodzima password ye sudo (hongu, isina kuchengetedzeka, asi iri nyore).

sudo visudo

Ini ndinogadzirisa mutsara kune fomu uye chengetedza

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

Zvadaro ndinoshandura nzvimbo yazvino kuitira kuti nguva iri muMoscow, kana zvisina kudaro ichava muGreenwich.

sudo timedatectl set-timezone Europe/Moscow

kana

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

Kana iwe ukaona zvakaoma, saka usashandise bhodhi iri; Raspberry Pi iri nani. Honestly.

Modem Huawei e3372h - 153

Iyi modem yaive sosi yakakosha yeropa kwandiri, uye, chokwadi, yakave iyo bhodhoro reprojekiti yese. Kazhinji, zita rekuti "modemu" yezvishandiso izvi hariratidzi chinangwa chebasa zvachose: iyi isanganiswa ine simba, iyi chidimbu chehardware ine mudziyo unoumbwa unonyepedzera kunge CD-ROM kuitira kuisa madhiraivha, uye wozochinja kune network kadhi modhi.

Architecturally, kubva pakuona kwemushandisi weLinux, mushure mezvirongwa zvose, zvinoratidzika sezvizvi: mushure mekubatanidza modem, ndine eth * network interface, iyo kuburikidza ne dhcp inogamuchira IP kero 192.168.8.100, uye gedhi rakagadziriswa. is 192.168.8.1.

Uye nguva inonyanya kukosha! Iyi modem modhi haigone kushanda mune modem mode, iyo inodzorwa neAT mirairo. Zvese zvingave zviri nyore, gadzira PPP yekubatanidza kune yega modem uye wobva washanda navo. Asi mune yangu, "iye" (chaizvoizvo, Linux diver maererano nemitemo yeudev), inogadzira eth interface uye inopa IP kero kwairi kuburikidza nedhcp.

Kuti udzivise kuwedzera kuvhiringidzika, ndinokurudzira kukanganwa izwi rekuti "modem" uye kutaura kadhi network uye gedhi, nekuti muchidimbu, zvakafanana nekubatanidza kadhi retiweki nyowani negedhi.
Kana pane modem imwe chete, izvi hazvikonzeri matambudziko akakosha, asi kana paine anopfuura imwe, iyo n-zvidimbu, inotevera network inobuda.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Kureva, n makadhi etiweki, ane kero yeIP yakafanana, imwe neimwe ine gedhi rakafanana. Asi muchokwadi, imwe neimwe yadzo yakabatana kune yayo opareta.

Pakutanga, ini ndaive nemhinduro yakapusa: kushandisa ifconfig kana ip kuraira, dzima zvese zvinopindirana uye ingobatidza imwe nekuiedza. Mhinduro yaive yakanaka kune wese munhu, kunze kwekunge panguva yekuchinja ini handina kukwanisa kubatana kune mudziyo. Uye sezvo kuchinjika kuchiwanzo uye nekukurumidza, ini ndakanga ndisina mukana wekubatana zvachose.

Naizvozvo, ini ndakasarudza nzira yekuchinja nemaoko kero dzeIP dzemodemu uyezve kutyaira traffic uchishandisa marongero enzira.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Uku kwakanga kusiri kuguma kwematambudziko angu nemamodemu: kana matambudziko emagetsi, akadonha, uye simba rakanaka rakagadzika remagetsi ku USB hub raidiwa. Ndakagadzirisa dambudziko iri nekuomesa simba rakananga kune hub. Rimwe dambudziko randakasangana naro uye rakaparadza purojekiti yese: mushure mekutangazve kana kutonhora kutanga kwechigadzirwa, kwete ese modem akaonekwa uye kwete nguva dzose, uye ini handina kukwanisa kuona kuti nei izvi zvakaitika uye nei algorithm. Asi zvinhu zvekutanga kutanga.

Kuti modem ishande nemazvo, ndakaisa iyo usb-modeswitch package.

sudo apt update
sudo apt install -y usb-modeswitch

Mushure meizvozvo, mushure mekubatanidza, iyo modem inozoonekwa uye nekugadziriswa neiyo udev subsystem. Ndinotarisa nekungobatanidza modem uye kuona kuti network inoonekwa.
Rimwe dambudziko randakanga ndisingakwanisi kugadzirisa: ndingawana sei zita remushandisi watiri kushanda naye kubva modem iyi? Zita remushandisi ririmomodemu web interface pa192.168.8.1. Iri peji rewebhu rine simba rinogashira data kuburikidza neAjax zvikumbiro, saka kungo wgeta peji uye kupatsanura zita hazvishande. Saka ndakatanga kutarisa magadzirirwo ewebhu peji, nezvimwe, uye ndakaona kuti ndanga ndichiita zvimwe zvisina maturo. Nekuda kweizvozvo, akapfira mate, uye mushandisi akatanga kugamuchira achishandisa Speedtest API pachayo.

Zvakawanda zvingave nyore kana modem yakawana kuburikidza neAT mirairo. Zvingave zvichigoneka kuigadzirisa zvakare, kugadzira ppp yekubatanidza, kugovera IP, kuwana telecom opareta, nezvimwe. Asi shuwa, ndiri kushanda nezvandakapihwa.

GPS

GPS inogamuchira yandakapihwa yaive neUART interface uye simba. Yakanga isiri iyo yakanakisa mhinduro, asi yaive ichiri kushanda uye iri nyore. Mugamuchiri aitarisa zvakadai.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Kutaura chokwadi, iyi yaive nguva yangu yekutanga kushanda neGPS inogamuchira, asi sezvandaitarisira, zvinhu zvose zvakafungwa kwatiri kare kare. Saka isu tinongoshandisa yakagadzirira-yakagadzirwa mhinduro.

Kutanga, ndinogonesa uart_AO_B (UART_RX_AO_B, UART_TX_AO_B) kubatanidza GPS.

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

Mushure mezvo ndinoongorora kubudirira kwekushanda.

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

Uyu murairo sezviri pachena unogadzirisa devtree panhunzi, iyo iri nyore kwazvo.

Mushure mekubudirira kwekuita uku, tangazve uye isa iyo GPS daemon.

khadas@Khadas:~$ sudo reboot

Kuisa iyo GPS daemon. Ini ndinoisa zvese uye ndozvicheka nekukasira kuti ndiwedzere kugadzirisa.

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

Kugadzirisa faira rezvigadziriso.

sudo vim /etc/default/gpsd

Ndiri kuisa UART iyo GPS icharembera.

DEVICES="/dev/ttyS4"

Uye zvino tinobatidza zvese uye totanga.

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

Mushure meizvozvo, ini ndinobatanidza iyo GPS.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Iyo GPS waya iri mumaoko angu, iyo UART debugger waya inoonekwa pasi peminwe yangu.

Ini ndinotangazve uye ndinotarisa kushanda kweGPS ndichishandisa chirongwa chegpsmon.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Iwe haugone kuona ma satellite mune ino skrini, asi iwe unogona kuona kutaurirana neGPS inogamuchira, uye izvi zvinoreva kuti zvese zvakanaka.

Mupython, ndakaedza sarudzo dzakawanda dzekushanda nedaemon iyi, asi ndakagara pane iyo yakashanda nemazvo nepython 3.

Ndinoisa raibhurari inodiwa.

sudo -H pip3 install gps3 

Uye ndinoveza kodhi yebasa.

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

Kana ndichida kuwana marongero, izvi zvinoitwa nekufona kunotevera:

longitude, latitude = getPositionData(agps_thread)

Uye mukati me1-10 masekondi ini ndichawana iyo kurongeka kana kwete. Hongu, ndakaedza gumi kuti ndiwane zvinorongeka. Haisi yakakwana, yakakombama uye yakashata, asi inoshanda. Ndakafunga kuita izvi nekuti GPS inogona kusatambira zvakanaka uye isingagamuchire data. Kana iwe ukamirira kuti ugamuchire data, saka kana ukashanda mukamuri iri kure, chirongwa chinotonhora munzvimbo ino. Naizvozvo, ndakashandisa iyi inelegant sarudzo.

Muchidimbu, kana paine nguva yakawanda, zvaizogoneka kugashira data kubva kuGPS zvakananga kuburikidza neUART, patsanura mune imwe shinda uye kushanda nayo. Asi pakanga pasina nguva zvachose, saka kodhi ine hutsinye yakashata. Uye hongu, handinyare.

Chiedza-chinoburitsa diode

Kubatanidza LED kwaive nyore uye kwakaoma panguva imwe chete. Dambudziko guru nderekuti nhamba yepini muhurongwa haienderane nenhamba yepini pabhodhi uye nekuti zvinyorwa zvakanyorwa neruboshwe. Kuti uenzanise nhamba yepini yehardware uye nhamba yepini muOS, unofanirwa kumhanya kuraira:

gpio readall

Tafura yepini inonyorerana muhurongwa uye pabhodhi icharatidzwa. Mushure mezvo ini ndinogona kutoshandisa pini muOS pachayo. Mune mhaka yangu iyo LED yakabatana ne GPIOH_5.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Ini ndinoshandura iyo GPIO pini kune inobuda maitiro.

gpio -g mode 421 out

Ndinonyora pasi zero.

gpio -g write 421 0

Ndinonyora pasi imwe.

gpio -g write 421 1

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem
Zvese zvakavhenekerwa, mushure mekunyora "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)

Zvino, kana paine zvikanganiso, ini ndinodaidza error_blink() uye iyo LED inopenya zvinoyevedza.

Software nodes

Speedtest API

Mufaro mukuru kuti iyo speedtest.net sevhisi ine yayo python-API, unogona kutarisa Github.

Chinhu chakanaka ndechekuti kune masource code anogonawo kutariswa. Maitiro ekushanda neiyi API (mienzaniso yakapusa) inogona kuwanikwa mukati chikamu chakakodzera.

Ini ndinoisa raibhurari yepython nemurairo unotevera.

sudo -H pip3 install speedtest-cli

Semuenzaniso, iwe unogona kunyange kuisa yekumhanyisa tester muUbuntu zvakananga kubva kune software. Iyi ndiyo yakafanana python application, iyo inogona kubva yatangwa yakananga kubva kune console.

sudo apt install speedtest-cli -y

Uye kuyera kumhanya kwako kweInternet.

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

Somugumisiro, sezvandakaita. Ini ndaifanira kupinda mumakodhi makodhi eiyi yekumhanyisa bvunzo kuti ndiwedzere kuishandisa zvizere muprojekiti yangu. Rimwe remabasa akanyanya kukosha kuwana zita reiyo telecom operator kuitira kuritsiva mundiro.

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, zvakare, zvese zvakazove zvisiri nyore, kunyangwe zvingaite sezviri nyore. Pakutanga, maseva parameter yaive yakaenzana ne [], vanodaro, sarudza yakanakisa server. Nekuda kweizvozvo, ini ndaive nemasevha asina kujairika, uye, sezvaungafungidzira, kukurumidza kushanduka. Iyi inyaya yakaoma kunzwisisa, uchishandisa yakagadziriswa sevha, kana zvirizvo, static kana simba, inoda kutsvagisa. Asi heino muenzaniso wekumhanyisa kuyerwa magirafu kune Beeline opareta kana uchisarudza zvine simba sevha yekuyedza uye yakagadziriswa yakamira.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem
Mhedzisiro yekuyera kumhanya kana uchisarudza ine simba server.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem
Mhedzisiro yekumhanyisa kuyedzwa, neimwe yakanyatsosarudzwa imwe sevha.

Panguva yekuedzwa, kune "fur" munzvimbo mbiri, uye inoda kubviswa uchishandisa nzira dzemasvomhu. Asi nesevha yakagadziriswa ishoma zvishoma uye amplitude yakanyanya kugadzikana.
Kazhinji, iyi inzvimbo yekutsvakurudza kukuru. Uye ini ndaizoyera kumhanya kweseva yangu ndichishandisa iperf utility. Asi isu tinonamatira kune tekinoroji yakatarwa.

Kutumira tsamba uye kukanganisa

Kuti nditumire tsamba, ndakaedza gumi nemaviri sarudzo dzakasiyana, asi pakupedzisira ndakagadzirisa pane zvinotevera. Ndakanyoresa bhokisi retsamba paYandex ndokubva ndatora Uyu muenzaniso wekutumira tsamba. Ndakaitarisa uye ndakaiisa muchirongwa. Uyu muenzaniso unoongorora sarudzo dzakasiyana siyana, kusanganisira kutumira kubva kugmail, nezvimwe. Ndakanga ndisingadi kunetseka nekugadzirisa mail server yangu uye ndakanga ndisina nguva yacho, asi sezvazvakazoitika gare gare, zvakanga zvisina maturo.

matanda acho akatumirwa zvichienderana neanoronga, kana paine kubatana, maawa matanhatu oga oga: na6 o'clock, 00 am, 06 masikati uye 12 pm. Akaitumira sezvizvi.

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

Mhosho dzakatumirwawo pakutanga. Kutanga, ivo vakaunganidzwa mune rondedzero, vozotumirwa zvakare vachishandisa scheduler, kana paine chinongedzo. Zvisinei, ipapo matambudziko akamuka nechokwadi chokuti Yandex ine muganhu pahuwandu hwemashoko anotumirwa pazuva (izvi zvinorwadza, kusuruvara uye kunyadziswa). Sezvo paigona kuve nenhamba huru yekukanganisa kunyangwe paminiti, taifanira kusiya kutumira zvikanganiso netsamba. Saka ramba uchifunga kana uchingotumira ruzivo nezve dambudziko rakadaro kuburikidza neYandex masevhisi.

Feedback server

Kuti ndikwanise kuwana chidimbu chiri kure chehardware uye kukwanisa kuigadzirisa uye kuigadzirisa zvakare, ndaida sevha yekunze. Kazhinji, kuve kwakanaka, zvingave zvakanaka kutumira data rese kune server uye kuvaka ese akanaka magirafu muwebhu interface. Asi kwete zvose panguva imwe chete.

ZveVPS ndakasarudza ruvds.com. Unogona kutora iri nyore sevha. Uye kazhinji, nekuda kwezvinangwa zvangu izvi zvingave zvakakwana. Asi sezvo ndisina kubhadhara sevha kubva muhomwe yangu, ndakasarudza kuitora nediki rekuchengetedza kuitira kuti zvive zvakakwana kana taizoshandisa web interface, yedu SMTP server, VPN, nezvimwe. Uyezve, kwanisa kuseta Telegraph bot uye usave nematambudziko nekuvharirwa kwayo. Naizvozvo, ndakasarudza Amsterdam uye zvinotevera paramita.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Senzira yekutaurirana nehardware, vim2 yakasarudza reverse ssh yekubatanidza uye, sekuratidzira kwakaratidza, haisi iyo yakanyanya kunaka. Kana iyo yekubatanidza ikarasika, sevha inobata chiteshi uye hazvibviri kubatana kuburikidza nayo kwenguva yakati. Naizvozvo, zvichiri nani kushandisa dzimwe nzira dzekukurukurirana, semuenzaniso VPN. Mune ramangwana ndaida kuchinjira kuVPN, asi ndakanga ndisina nguva.

Ini handisi kuzopinda muzvinyorwa zvekumisikidza firewall, kudzora kodzero, kudzima midzi ssh kubatana uye mamwe matruisms ekumisikidza VPS. Ndinoda kutenda kuti iwe unotoziva zvese. Kune yekubatanidza kure, ini ndinogadzira mushandisi mutsva pane server.

adduser vimssh

Ini ndinogadzira ssh makiyi ekubatanidza pane yedu Hardware.

ssh-keygen

Uye ini ndinozvikopa kune yedu server.

ssh-copy-id [email protected]

Pane yedu hardware, ini ndinogadzira otomatiki reverse ssh yekubatanidza pabhoti yega yega.

[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

Teerera kuchiteshi 8083: inosarudza kuti ndechipi chiteshi chandichashandisa kubatanidza kuburikidza nereverse ssh. Wedzera iyo kune yekutanga uye tanga.

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

Unogona kuona chimiro:

sudo systemctl status autossh.service

Zvino, pane yedu VPS server, kana tikamhanya:

ssh -p 8083 khadas@localhost

Ndobva ndasvika kune yangu yekuyedza chidimbu chehardware. Uye kubva kune Hardware ini ndinogona zvakare kutumira matanda uye chero data kuburikidza ne ssh kune yangu server, iyo iri nyore kwazvo.

Kuisa zvose pamwe chete

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem
Kubatidza, ngatitange kusimudzira uye kugadzirisa

Phew, ndizvozvo, ndakatsanangura node dzese. Iye zvino yave nguva yekuisa zvese pamwe chete. Iwe unogona kuona iyo kodhi pano pano.

Chinhu chakakosha chine kodhi: Iyi purojekiti inogona kusatanga sezvizvi, nekuti yakarongedzerwa kune rimwe basa, reimwe dhizaini. Kunyange zvazvo ini ndichipa kodhi yekodhi, ndicharamba ndichitsanangura zvinhu zvakakosha pano, mumashoko chaiwo, kana zvisina kudaro hazvinzwisisi zvachose.

Pakutanga, ini ndinotangisa gps, gpio uye kuvhura yakaparadzana scheduler tambo.

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

Iyo scheduler iri nyore: inotarisa kuona kana nguva yasvika yekutumira mameseji uye kuti chii chazvino chikanganiso chimiro. Kana paine chikanganiso mureza, ipapo isu blink 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)

Chikamu chakanyanya kuoma chechirongwa ichi kuchengetedza reverse ssh yekubatanidza kune yega bvunzo. Muedzo wega wega unosanganisira kugadzirisa zvakare gedhi rekutanga uye DNS server. Sezvo pasina anoverenga zvakadaro, ziva kuti chitima hachikwiri pamatanda emapuranga. Ani nani anowana zai reIsita anowana zvihwitsi.

Kuti ndiite izvi, ini ndinogadzira yakaparadzana tafura tafura -set-maka 0x2 uye mutemo wekutungamira traffic.

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

Unogona kudzidza zvakawanda nezvekuti inoshanda sei verenga mune ino chinyorwa.

Mushure mezvo ini ndinopinda mune isingaperi loop, apo nguva imwe neimwe yatinowana rondedzero yeakabatana modem (kuti tizive kana network configuration yakangoerekana yachinja).

network_list = getNetworklist()

Kuwana rondedzero yetiweki interfaces kuri nyore.

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

Mushure mekugamuchira rondedzero, ndinoisa IP kero kune ese mainterfaces, sezvandakaratidza mumufananidzo muchitsauko nezve 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")

Ipapo ini ndinongo pfuura neimwe interface mune loop. Uye ini ndinogadzirisa imwe neimwe 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'")

Ini ndinotarisa iyo interface yekushanda, kana pasina network, ini ndinoburitsa zvikanganiso. Kana pane network, inguva yekuita!

Pano ini ndinogadzirisa ssh routing kune iyi interface (kana isati yaitwa), tumira zvikanganiso kune sevha kana nguva yasvika, tumira matanda uye pakupedzisira mhanya nekukurumidza uye chengetedza matanda kune csv faira.

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()
#и далее тестируем скорость и сохраняем логи. 

Zvakakodzera kutaura basa rekumisikidza 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")

Uye zvechokwadi, iwe unofanirwa kuwedzera kunaka uku kwekutanga. Kuti ndiite izvi, ndinogadzira faira:

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

Uye ndinonyora mairi:

[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

Ini ndinobatidza autoloading ndotanga!

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

Ikozvino ndiri kuona matanda ezviri kuitika ndichishandisa murairo:

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

Mhinduro

Zvakanaka, zvino chinonyanya kukosha ndechekuti, chii chakaitika semugumisiro? Heano mashoma magirafu andakakwanisa kutora panguva yekuvandudza uye kugadzirisa maitiro. Iwo magirafu akavakwa pachishandiswa gnuplot ine script inotevera.

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

Chiitiko chekutanga chaive neTele2 opareta, yandakaita kwemazuva akati wandei.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Pano ndakashandisa dhizaini yekuyera server. Yekumhanyisa kuyerwa kunoshanda, asi kuchinjika zvakanyanya, asi imwe avhareji kukosha ichiri kuoneka, uye izvi zvinogona kuwanikwa nekusefa iyo data, semuenzaniso, neavhareji inofamba.

Gare gare ndakagadzira akati wandei magirafu evamwe vafambisi venhare. Muchiitiko ichi, pakanga patova nesevha imwe yekuedza, uye migumisiro yacho yainakidzawo.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Sezvauri kuona, musoro wacho wakakura kwazvo pakutsvaga nekugadziriswa kweiyi data, uye zvakajeka haigare kwemavhiki mashoma ebasa. Asi…

Mhedzisiro yebasa

Basa racho rakangoerekana rapera nekuda kwemamiriro ezvinhu andakanga ndisingakwanisi kuita. Imwe yehutera hwepurojekiti iyi, mumaonero angu, yaive modem, iyo yaisanyatsoda kushanda panguva imwe chete nemamwe modem, uye yaiita matipi akadaro pese payaiiswa. Nezvinangwa izvi, kune nhamba huru yemamwe mamodemu modhi; kazhinji anenge atove muMini PCI-e fomati uye akaiswa mukati memudziyo uye ari nyore kugadzirisa. Asi iyo inyaya yakasiyana zvachose. Basa racho rainakidza uye ndakafara zvikuru kuti ndakakwanisa kutora chikamu mariri.

Panguva imwe chete yekumhanyisa kuyedza pane akati wandei LTE modem

Source: www.habr.com

Voeg