Gwajin saurin lokaci guda akan modem LTE da yawa

A lokacin keɓe, an ba ni damar shiga cikin ƙirƙira na'ura don auna saurin modem LTE don yawancin masu sarrafa wayar hannu.

Gwajin saurin lokaci guda akan modem LTE da yawa

Abokin ciniki yana so ya kimanta saurin ma'aikatan sadarwa daban-daban a wurare daban-daban don samun damar fahimtar wace ma'aikacin salula ya fi dacewa da shi lokacin shigar da kayan aiki ta hanyar haɗin LTE, misali, don watsa shirye-shiryen bidiyo. A lokaci guda kuma, dole ne a magance matsalar cikin sauƙi da arha kamar yadda zai yiwu, ba tare da kayan aiki masu tsada ba.

Zan ce nan da nan cewa aikin ba shine mafi sauƙi ba kuma mafi yawan ilimi; Zan gaya muku matsalolin da na fuskanta da kuma yadda na magance su. Don haka, mu tafi.

Примечание

Auna saurin haɗin LTE abu ne mai rikitarwa: kuna buƙatar zaɓar kayan aiki masu dacewa da tsarin aunawa, sannan ku sami kyakkyawar fahimta game da topology da aiki na hanyar sadarwar salula. Bugu da ƙari, saurin yana iya tasiri da abubuwa da yawa: yawan masu biyan kuɗi akan tantanin halitta, yanayin yanayi, har ma daga tantanin halitta zuwa tantanin halitta gudun na iya bambanta da yawa saboda topology na cibiyar sadarwa. Gabaɗaya, wannan matsala ce tare da adadi mai yawa na abubuwan da ba a sani ba, kuma ma'aikacin sadarwa ne kawai zai iya magance shi daidai.

Da farko, abokin ciniki kawai ya so ya tuƙi masinja tare da wayoyin masu aiki, ɗaukar ma'auni kai tsaye akan wayar sannan ya rubuta sakamakon auna saurin a cikin littafin rubutu. Maganina don auna saurin hanyoyin sadarwar lt, kodayake ba daidai ba ne, yana magance matsalar.

Saboda rashin lokaci, na yanke shawara ba don dacewa ko aiki ba, amma don goyon bayan saurin ci gaba. Misali, an yi amfani da reverse ssh don samun dama mai nisa, maimakon VPN mai amfani, don adana lokaci akan saita sabar da kowane abokin ciniki.

Aikin fasaha

Kamar yadda aka fada a cikin labarin Ba tare da ƙayyadaddun fasaha ba: me yasa abokin ciniki baya so: Kada ku yi aiki ba tare da ƙayyadaddun fasaha ba! Ba, a ko'ina!

Ayyukan fasaha ya kasance mai sauƙi, zan faɗaɗa shi kadan don fahimtar mai amfani na ƙarshe. Zaɓin mafita na fasaha da kayan aiki abokin ciniki ne ya umarta. Don haka, ƙayyadaddun fasaha da kanta, bayan duk yarda:

Dangane da kwamfutar allo guda ɗaya vim2 Yi gwajin saurin sauri don haɗin lte ta hanyar modem Huwa e3372h - 153 masu gudanar da tarho da yawa (daga ɗaya zuwa n). Hakanan wajibi ne don karɓar haɗin kai daga mai karɓar GPS da aka haɗa ta UART. Yi ma'aunin sauri ta amfani da sabis www.speedtest.net da kuma sanya su a cikin tebur kamar:

Gwajin saurin lokaci guda akan modem LTE da yawa

Table a cikin tsarin csv. Sannan aika wannan alamar ta e-mail kowane awa 6. Idan akwai kurakurai, lumshe LED ɗin da ke da alaƙa da GPIO.

Na bayyana ƙayyadaddun fasaha a cikin nau'i na kyauta, bayan amincewa da yawa. Amma an riga an ga ma'anar aikin. An ba da mako don komai. Amma a hakikanin gaskiya ya dauki tsawon makonni uku. Wannan yana la'akari da cewa na yi haka ne kawai bayan babban aikina da kuma a karshen mako.

Anan ina so in sake jawo hankali ga gaskiyar cewa abokin ciniki ya amince a gaba game da amfani da sabis na auna sauri da kayan aiki, wanda ya iyakance ƙarfina sosai. Kasafin kudin kuma yana da iyaka, don haka babu wani abu na musamman da aka saya. Don haka dole ne mu yi wasa da waɗannan dokokin.

Gine-gine da haɓakawa

Shirin yana da sauƙi kuma a bayyane. Saboda haka, zan bar shi ba tare da wani sharhi na musamman ba.

Gwajin saurin lokaci guda akan modem LTE da yawa

Na yanke shawarar aiwatar da duka aikin a Python, duk da cewa ba ni da gogewa a cikin wannan harshe kwata-kwata. Na zabi shi ne saboda akwai tarin misalai da aka yi da kuma hanyoyin da za su iya hanzarta ci gaba. Don haka, ina roƙon duk ƙwararrun masu shirya shirye-shirye da kada su tsawata wa gwanina na farko na haɓakawa a Python, kuma koyaushe ina farin cikin jin suka mai ma'ana don haɓaka ƙwarewata.

Har ila yau, a cikin tsari na gano cewa python yana da nau'i biyu masu gudana 2 da 3, sakamakon haka na zauna a kan na uku.

Hardware nodes

Farantin karfe vim2

An ba ni kwamfutar allo guda ɗaya a matsayin babbar injina vim2

Gwajin saurin lokaci guda akan modem LTE da yawa

Kyakkyawan na'ura mai mahimmanci mai ƙarfi don gida mai wayo da SMART-TV, amma bai dace da wannan aikin ba, ko, bari mu ce, bai dace ba. Misali, babbar manhajarsa Android ce, kuma Linux OS ce ta biyu, don haka babu wanda ya ba da tabbacin aiki mai inganci na duk nodes da direbobi a karkashin Linux. Kuma ina tsammanin cewa wasu matsalolin suna da alaƙa da direbobin USB na wannan dandali, don haka modem ɗin bai yi aiki kamar yadda ake tsammani a wannan allo ba. Har ila yau, yana da ƙaƙƙarfan bayanai da tarwatsawa, don haka kowane aiki ya ɗauki lokaci mai yawa yana tono ta cikin docks. Ko da aikin yau da kullun tare da GPIO ya ɗauki jini mai yawa. Misali, na ɗauki sa'o'i da yawa don saita LED ɗin. Amma, don zama haƙiƙa, ba mahimmanci ba ne irin nau'in allo guda ɗaya, babban abu shine cewa yana aiki kuma akwai tashoshin USB.

Da farko, Ina buƙatar shigar da Linux akan wannan allo. Don kada in yi la'akari da duk wani nau'i na takardun shaida ga kowa da kowa, da kuma wadanda za su yi aiki da wannan tsarin tsarin mulki guda ɗaya, na rubuta wannan babi.

Akwai zaɓuɓɓuka guda biyu don shigar da Linux: akan katin SD na waje ko akan MMC na ciki. Na yi maraice na ƙoƙarin gano yadda za a yi aiki tare da katin, don haka na yanke shawarar shigar da shi a kan MMC, ko da yake ba tare da shakka ba zai fi sauƙi a yi aiki tare da katin waje.

Game da firmware a karkace aka fada a nan. Ina fassara daga baƙon zuwa Rashanci. Domin kunna allon allo, Ina buƙatar haɗa kayan aikin UART. Haɗa shi ta hanya mai zuwa.

  • GND Kayan aiki: <—> Pin17 na GPIO na VIMs
  • TXD Kayan aiki: <—> Pin18 na GPIO na VIMs (Linux_Rx)
  • RXD Kayan aiki: <—> Pin19 na GPIO na VIMs (Linux_Tx)
  • VCC Pin Tool: <—> Pin20 na GPIO na VIMs

Gwajin saurin lokaci guda akan modem LTE da yawa

Bayan haka, na sauke firmware daga nan. Takamaiman sigar firmware VIM1_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.

Domin loda wannan firmware, ina buƙatar kayan aiki. Karin bayani game da wannan a nan. Ban yi ƙoƙarin walƙiya shi a ƙarƙashin Windows ba, amma ina buƙatar gaya muku ƴan kalmomi game da firmware a ƙarƙashin Linux. Da farko, zan shigar da kayan aiki bisa ga umarnin.

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

Aaand... Ba abin da ke aiki. Na shafe sa'o'i biyu na gyara rubutun shigarwa ta yadda komai zai shigar da ni daidai. Ban tuna abin da na yi a can ba, amma akwai kuma dawaki da dawakai. Don haka a kula. Amma idan ba tare da waɗannan abubuwan amfani ba, babu ma'ana a ci gaba da azabtar da vim2. Gara kar a yi masa rikici kwata-kwata!

Bayan da'irori bakwai na jahannama, daidaitawar rubutun da shigarwa, na sami kunshin kayan aikin aiki. Na haɗa allon ta USB zuwa kwamfuta ta Linux, kuma na haɗa UART bisa ga zanen da ke sama.
Ina kafa tashar minicom da na fi so don gudun 115200, ba tare da sarrafa kuskuren hardware da software ba. Kuma mu fara.

Gwajin saurin lokaci guda akan modem LTE da yawa

Lokacin loda VIM2 a cikin tashar UART, Ina danna maɓalli, kamar mashigin sarari, don dakatar da lodi. Bayan layin ya bayyana

kvim2# 

Na shigar da umarni:

kvim2# run update

Akan rundunar da muke lodawa, ina aiwatar da:

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

Shi ke nan, phhh. Na duba, akwai Linux akan allo. Login/Password khadas:khadas.

Bayan haka, wasu ƙananan saitunan farko. Don ƙarin aiki, Ina kashe kalmar sirri don sudo (e, ba amintacce ba, amma dacewa).

sudo visudo

Na gyara layi zuwa tsari kuma na ajiye

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

Sa'an nan na canza wurin na yanzu don lokaci ya kasance a Moscow, in ba haka ba zai kasance a cikin Greenwich.

sudo timedatectl set-timezone Europe/Moscow

ko

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

Idan kuna da wahala, to kar ku yi amfani da wannan allon; Rasberi Pi ya fi kyau. Gaskiya.

Modem Huawei e3372h-153

Wannan modem ya kasance mahimmin tushen jini a gare ni, kuma, a zahiri, ya zama ginshiƙin aikin gaba ɗaya. Gabaɗaya, sunan “modem” na waɗannan na'urori ba ya nuna ainihin aikin kwata-kwata: wannan haɗakarwa ce mai ƙarfi, wannan kayan aikin yana da na'urar da aka haɗa da ita kamar CD-ROM don shigar da direbobi. sannan ya juya zuwa yanayin katin sadarwa.

A tsarin gine-gine, daga ra'ayi na mai amfani da Linux, bayan duk saitunan, yana kama da haka: bayan haɗa modem, Ina da hanyar sadarwa ta eth *, wanda ta hanyar dhcp yana karɓar adireshin IP 192.168.8.100, da tsohuwar ƙofar shiga. shine 192.168.8.1.

Kuma mafi mahimmanci lokacin! Wannan samfurin modem ba zai iya aiki a yanayin modem ba, wanda umarnin AT ke sarrafawa. Komai zai zama mafi sauƙi, ƙirƙirar haɗin PPP don kowane modem sannan kuyi aiki tare da su. Amma a cikin yanayina, "da kansa" (mafi daidai, mai nutsewa na Linux bisa ga ka'idodin udev), yana ƙirƙira ƙirar ƙira kuma ya sanya adireshin IP zuwa gare shi ta hanyar dhcp.

Don guje wa ƙarin ruɗani, ina ba da shawarar manta kalmar “modem” da faɗin katin cibiyar sadarwa da ƙofa, domin a zahiri, yana kama da haɗa sabon katin cibiyar sadarwa tare da ƙofa.
Idan aka sami modem guda ɗaya, wannan baya haifar da wata matsala ta musamman, amma idan akwai fiye da ɗaya, wato n-pieces, hoton cibiyar sadarwar yana tasowa.

Gwajin saurin lokaci guda akan modem LTE da yawa

Wato, n katunan cibiyar sadarwa, tare da adireshin IP iri ɗaya, kowannensu yana da ƙofa guda ɗaya. Amma a zahiri, kowannensu yana da alaƙa da ma'aikacin nasa.

Da farko, Ina da mafita mai sauƙi: ta amfani da umarnin ifconfig ko ip, kashe duk musaya kuma kawai kunna ɗaya bi da bi kuma gwada shi. Maganin yana da kyau ga kowa da kowa, sai dai a lokacin lokacin sauyawa ban iya haɗawa da na'urar ba. Kuma tun da sauyawa ya kasance akai-akai da sauri, a zahiri ba ni da damar haɗi kwata-kwata.

Don haka, na zaɓi hanyar canza adiresoshin IP na modem da hannu sannan na tuƙi zirga-zirga ta amfani da saitunan tuƙi.

Gwajin saurin lokaci guda akan modem LTE da yawa

Wannan ba shine ƙarshen matsalolina da modem ba: idan akwai matsalolin wutar lantarki, sun faɗi, kuma ana buƙatar ingantaccen samar da wutar lantarki zuwa cibiyar USB. Na magance wannan matsalar ta hanyar siyar da wutar lantarki kai tsaye zuwa cibiya. Wata matsalar da na ci karo da ita kuma wacce ta lalata dukkan aikin: bayan sake kunnawa ko farawar sanyi na na'urar, ba duk modem ɗin ba ne aka gano kuma ba koyaushe ba, kuma ba zan iya tantance dalilin da yasa wannan ya faru da menene algorithm ba. Amma abubuwa na farko.

Domin modem ɗin yayi aiki daidai, Na shigar da kunshin usb-modeswitch.

sudo apt update
sudo apt install -y usb-modeswitch

Bayan haka, bayan haɗawa, za a gano modem daidai kuma a daidaita shi ta hanyar tsarin udev. Ina duba ta hanyar haɗa modem ɗin kawai kuma tabbatar da cewa cibiyar sadarwar ta bayyana.
Wata matsalar da na kasa magancewa: ta yaya zan iya samun sunan ma'aikacin da muke aiki da shi daga wannan modem? Sunan mai aiki yana ƙunshe a cikin mahaɗin yanar gizo na modem a 192.168.8.1. Wannan shafin yanar gizon mai ƙarfi ne wanda ke karɓar bayanai ta hanyar buƙatun Ajax, don haka kawai wgeting shafin da yin la'akari da sunan ba zai yi aiki ba. Don haka sai na fara duban yadda ake haɓaka shafin yanar gizon, da sauransu, kuma na gane cewa ina yin wani nau'in shirme. Sakamakon haka, sai ya tofa albarkacin bakinsa, kuma ma’aikacin ya fara karba ta hanyar amfani da Speedtest API kanta.

Zai fi sauƙi idan modem ya sami dama ta umarnin AT. Zai yiwu a sake saita shi, ƙirƙirar haɗin ppp, sanya IP, samun afaretan sadarwa, da sauransu. Amma kash, ina aiki da abin da aka ba ni.

GPS

Mai karɓar GPS da aka ba ni yana da haɗin UART da ƙarfi. Ba shine mafi kyawun mafita ba, amma har yanzu yana da aiki kuma mai sauƙi. Mai karɓa yayi kama da haka.

Gwajin saurin lokaci guda akan modem LTE da yawa

A gaskiya, wannan shi ne karo na farko da na yi aiki tare da mai karɓar GPS, amma kamar yadda na yi tsammani, an yi tunanin komai a gare mu tuntuni. Don haka kawai mu yi amfani da shirye-shiryen mafita.

Na farko, na kunna uart_AO_B (UART_RX_AO_B, UART_TX_AO_B) don haɗa GPS.

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

Bayan haka ina duba nasarar aikin.

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

Wannan umarnin a fili yana gyara devtree akan tashi, wanda ya dace sosai.

Bayan nasarar wannan aiki, sake yi kuma shigar da daemon GPS.

khadas@Khadas:~$ sudo reboot

Shigar da daemon GPS. Na shigar da komai kuma na yanke shi nan da nan don ƙarin daidaitawa.

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

Gyara fayil ɗin saituna.

sudo vim /etc/default/gpsd

Ina shigar da UART wanda GPS zai rataya akansa.

DEVICES="/dev/ttyS4"

Sannan mu kunna komai mu fara.

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

Bayan haka, na haɗa GPS.

Gwajin saurin lokaci guda akan modem LTE da yawa

Wayar GPS tana hannuna, ana iya ganin wayoyi masu lalata UART a ƙarƙashin yatsuna.

Na sake kunnawa da duba aikin GPS ta amfani da shirin gpmon.

Gwajin saurin lokaci guda akan modem LTE da yawa

Ba za ku iya ganin tauraron dan adam a cikin wannan hoton ba, amma kuna iya ganin sadarwa tare da mai karɓar GPS, kuma wannan yana nufin cewa komai yana da kyau.

A cikin Python, na gwada zaɓuɓɓuka da yawa don aiki tare da wannan daemon, amma na daidaita akan wanda yayi aiki daidai da Python 3.

Na shigar da laburaren da ake bukata.

sudo -H pip3 install gps3 

Kuma na sassaka lambar aikin.

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

Idan ina buƙatar samun haɗin kai, ana yin wannan tare da kira mai zuwa:

longitude, latitude = getPositionData(agps_thread)

Kuma a cikin dakika 1-10 zan ko dai samun haɗin kai ko a'a. Ee, na yi ƙoƙari goma don samun haɗin kai. Ba mafi kyau duka, karkatacce kuma askew, amma yana aiki. Na yanke shawarar yin haka saboda GPS na iya samun mara kyau mara kyau kuma ba koyaushe karɓar bayanai ba. Idan kun jira don karɓar bayanai, to, idan kuna aiki a cikin daki mai nisa, shirin zai daskare a wannan wuri. Saboda haka, na aiwatar da wannan zaɓi mara kyau.

A ka'ida, idan akwai ƙarin lokaci, zai yiwu a sami bayanai daga GPS kai tsaye ta hanyar UART, rarraba shi a cikin wani zaren daban kuma aiki tare da shi. Amma babu wani lokaci kwata-kwata, saboda haka lambar mummuna mai muni. Kuma eh banji kunya ba.

Haske mai fitar da haske

Haɗa LED ɗin ya kasance mai sauƙi kuma mai wahala a lokaci guda. Babban wahalar ita ce lambar fil ɗin da ke cikin tsarin ba ta dace da lambar fil ɗin da ke kan allo ba kuma saboda an rubuta takaddun da hannun hagu. Don kwatanta lambar fil ɗin hardware da lambar fil a cikin OS, kuna buƙatar gudanar da umarni:

gpio readall

Za a nuna tebur na wasiƙun fil a cikin tsarin da kan allo. Bayan haka, na riga na iya aiki da fil a cikin OS kanta. A cikin yanayina an haɗa LED zuwa GPIOH_5.

Gwajin saurin lokaci guda akan modem LTE da yawa

Ina canza fil ɗin GPIO zuwa yanayin fitarwa.

gpio -g mode 421 out

Na rubuta sifili.

gpio -g write 421 0

Na rubuta daya.

gpio -g write 421 1

Gwajin saurin lokaci guda akan modem LTE da yawa
Komai yana haskakawa, bayan rubuta "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)

Yanzu, idan akwai kurakurai, na kira error_blink() kuma LED ɗin zai lumshe da kyau.

Software nodes

API ɗin Speedtest

Abin farin ciki ne cewa sabis na speedtest.net yana da nasa python-API, za ku iya dubawa Github.

Abu mai kyau shi ne cewa akwai lambobin tushe waɗanda kuma za a iya gani. Yadda ake aiki tare da wannan API (misali masu sauƙi) ana iya samun su a ciki sashen da ya dace.

Na shigar da ɗakin karatu na Python tare da umarni mai zuwa.

sudo -H pip3 install speedtest-cli

Misali, za ka iya har shigar da na'urar gwajin sauri a cikin Ubuntu kai tsaye daga software. Wannan shine aikace-aikacen Python iri ɗaya, wanda za'a iya ƙaddamar da shi kai tsaye daga na'urar bidiyo.

sudo apt install speedtest-cli -y

Kuma auna saurin Intanet ɗinku.

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

A sakamakon haka, kamar yadda na yi. Dole ne in shiga cikin lambobin tushen wannan gwajin gudun don in ƙara aiwatar da su cikin aikina. Ɗaya daga cikin muhimman ayyuka shine samun sunan ma'aikacin sadarwa don musanya shi a cikin faranti.

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

Anan ma, komai ya juya bai zama mai sauƙi ba, ko da yake zai yi kama da sauƙi. Da farko, sigar sabobin ya yi daidai da [], sun ce, zaɓi mafi kyawun uwar garken. Sakamakon haka, ina da sabar bazuwar, kuma, kamar yadda zaku iya tsammani, saurin canzawa. Wannan batu ne mai rikitarwa, ta amfani da kafaffen uwar garken, idan haka ne, a tsaye ko mai ƙarfi, yana buƙatar bincike. Amma a nan akwai misalin jadawali na auna saurin ga ma'aikacin Beeline lokacin da zabar sabar gwaji da tsayayyen tsari.

Gwajin saurin lokaci guda akan modem LTE da yawa
Sakamakon auna gudu lokacin zabar sabar mai ƙarfi.

Gwajin saurin lokaci guda akan modem LTE da yawa
Sakamakon gwajin saurin gudu, tare da sabar sabar da aka zaɓa sosai.

A lokacin gwaji, akwai "fur" a wurare biyu, kuma yana buƙatar cire shi ta amfani da hanyoyin lissafi. Amma tare da kafaffen uwar garken yana da ɗan ƙasa kaɗan kuma girman ya fi kwanciyar hankali.
Gabaɗaya, wannan wuri ne na babban bincike. Kuma zan auna saurin sabar ta ta amfani da kayan aikin iperf. Amma mun tsaya ga ƙayyadaddun fasaha.

Aika wasiku da kurakurai

Don aika wasiku, na gwada zaɓuɓɓukan dozin da yawa, amma a ƙarshe na daidaita akan waɗannan abubuwa. Na yi rajistar akwatin wasiku akan Yandex sannan na ɗauka Wannan misali ne na aika wasiku. Na duba shi kuma na aiwatar da shi a cikin shirin. Wannan misalin yana nazarin zaɓuɓɓuka daban-daban, gami da aikawa daga gmail, da sauransu. Ba na so in damu da kafa sabar saƙo na kuma ba ni da lokaci don shi, amma kamar yadda ya faru daga baya, shi ma a banza.

An aika da rajistan ayyukan bisa ga jadawalin, idan akwai alaka, kowane awa 6: a karfe 00, 06 na safe, 12 na rana da 18 na yamma. Aiko kamar haka.

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

An kuma aiko da kurakurai da farko. Da farko, an tattara su a cikin jerin, sannan kuma a aika su ta amfani da mai tsarawa, idan akwai haɗi. Duk da haka, matsalolin sun taso tare da gaskiyar cewa Yandex yana da iyaka akan adadin saƙonnin da aka aika kowace rana (wannan shine zafi, bakin ciki da wulakanci). Tun da za a iya samun adadi mai yawa na kurakurai ko da minti daya, dole ne mu yi watsi da aika kurakurai ta hanyar wasiku. Don haka ku tuna lokacin aika bayanai ta atomatik game da irin wannan matsala ta ayyukan Yandex.

uwar garken martani

Domin samun damar zuwa wani yanki na kayan aiki mai nisa kuma in sami damar keɓancewa da sake daidaita shi, Ina buƙatar sabar waje. Gabaɗaya, don yin adalci, zai zama daidai don aika duk bayanan zuwa uwar garken kuma gina duk kyawawan hotuna a cikin haɗin yanar gizo. Amma ba lokaci guda ba.

Don VPS na zaɓa ruvds.com. Kuna iya ɗaukar uwar garken mafi sauƙi. Kuma gabaɗaya, don dalilai na wannan zai isa. Amma da yake ban biya kudin uwar garken daga cikin aljihuna ba, sai na yanke shawarar ɗaukar shi da ɗan ƙaramin ajiya don ya isa idan za mu tura hanyar sadarwa ta yanar gizo, uwar garken SMTP namu, VPN, da sauransu. Ƙari ga haka, sami damar saita bot ɗin Telegram kuma kada ku sami matsala tare da toshe shi. Saboda haka, na zaɓi Amsterdam da sigogi masu zuwa.

Gwajin saurin lokaci guda akan modem LTE da yawa

A matsayin hanyar sadarwa tare da hardware, vim2 ya zaɓi haɗin ssh baya kuma, kamar yadda aikin ya nuna, ba shine mafi kyau ba. Idan haɗin ya ɓace, uwar garken yana riƙe da tashar jiragen ruwa kuma ba zai yiwu a haɗa ta ta wani lokaci ba. Saboda haka, yana da kyau a yi amfani da wasu hanyoyin sadarwa, misali VPN. A nan gaba ina so in canza zuwa VPN, amma ba ni da lokaci.

Ba zan shiga cikin cikakkun bayanai na kafa Tacewar zaɓi ba, ƙuntata haƙƙin haƙƙin haƙƙin haƙƙin haƙƙin tushen tushen ssh da sauran gaskiyar kafa VPS. Ina so in yarda cewa kun riga kun san komai. Don haɗin nesa, na ƙirƙiri sabon mai amfani akan sabar.

adduser vimssh

Ina samar da maɓallan haɗin ssh akan kayan aikin mu.

ssh-keygen

Kuma ina kwafa su zuwa uwar garken mu.

ssh-copy-id [email protected]

A kan kayan aikin mu, Ina ƙirƙirar haɗin ssh ta atomatik a kowane taya.

[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

Kula da tashar jiragen ruwa 8083: yana ƙayyade ko wane tashar jiragen ruwa zan yi amfani da shi don haɗawa ta hanyar ssh baya. Ƙara shi zuwa farawa kuma farawa.

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

Kuna iya ma ganin matsayin:

sudo systemctl status autossh.service

Yanzu, akan uwar garken VPS ɗinmu, idan muka gudu:

ssh -p 8083 khadas@localhost

Daga nan na isa wurin gwajin kayan aikina. Kuma daga hardware kuma zan iya aika rajistan ayyukan da kowane bayanai ta hanyar ssh zuwa sabar na, wanda ya dace sosai.

Saka shi duka tare

Gwajin saurin lokaci guda akan modem LTE da yawa
Kunnawa, bari mu fara haɓakawa da gyara kuskure

Phew, da kyau, shi ke nan, Na bayyana duk nodes. Yanzu lokaci ya yi da za a haɗa su duka. Kuna iya ganin lambar dama a nan.

Wani muhimmin batu tare da lambar: Wannan aikin bazai fara haka ba, saboda an keɓe shi don wani aiki na musamman, na ƙayyadaddun gine-gine. Ko da yake ina ba da lambar tushe, zan yi bayanin abubuwa mafi mahimmanci a nan, daidai a cikin rubutu, in ba haka ba yana da cikakkiyar fahimta.

A farkon, na fara gps, gpio kuma na ƙaddamar da zaren tsarawa daban.

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

Mai tsara jadawalin abu ne mai sauƙi: yana duban idan lokacin aika saƙonni ya yi da menene matsayin kuskure na yanzu. Idan akwai alamar kuskure, to, muna lumshe 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)

Babban ɓangaren wannan aikin shine kiyaye haɗin ssh na baya don kowane gwaji. Kowane gwaji ya ƙunshi sake saita tsohuwar ƙofar da uwar garken DNS. Tun da babu wanda ya karanta ta wata hanya, ku sani cewa jirgin kasa ba ya hau kan katako. Duk wanda ya sami kwan Easter ya sami ɗan alewa.

Don yin wannan, Na ƙirƙiri wani keɓaɓɓen tebur na tuƙi -set-mark 0x2 da ka'ida don tura zirga-zirga.

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

Kuna iya ƙarin koyo game da yadda yake aiki karanta a cikin wannan labarin.

Bayan haka zan shiga cikin madauki mara iyaka, inda a duk lokacin da muka sami jerin abubuwan haɗin da aka haɗa (don gano ko saitin hanyar sadarwa ya canza ba zato ba tsammani).

network_list = getNetworklist()

Samun jerin hanyoyin sadarwa na cibiyar sadarwa abu ne mai sauƙi.

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

Bayan karɓar jerin, na saita adiresoshin IP zuwa duk musaya, kamar yadda na nuna a cikin hoto a cikin babi game da 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")

Sa'an nan kawai zan bi ta kowace hanya a cikin madauki. Kuma ina saita kowace dubawa.

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

Ina duba dubawa don aiki, idan babu hanyar sadarwa, to ina haifar da kurakurai. Idan akwai hanyar sadarwa, to lokaci yayi da za a yi aiki!

Anan na saita ssh routing zuwa wannan dubawa (idan ba a yi shi ba), aika kurakurai zuwa uwar garken idan lokaci ya yi, aika rajistan ayyukan kuma a ƙarshe gudanar da gwajin sauri kuma ajiye rajistan ayyukan zuwa fayil 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()
#и далее тестируем скорость и сохраняем логи. 

Yana da daraja ambaton aikin kafa 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")

Kuma ba shakka, kuna buƙatar ƙara duk wannan kyakkyawa don farawa. Don yin wannan, na ƙirƙiri fayil:

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

Kuma na rubuta a cikinsa:

[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

Na kunna autoloading na fara!

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

Yanzu ina iya ganin rajistan ayyukan abin da ke faruwa ta amfani da umarnin:

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

Результаты

To, yanzu abin da ya fi muhimmanci shi ne, me ya faru a sakamakon haka? Anan akwai ƴan jadawali waɗanda na yi nasarar ɗauka yayin aiwatar da haɓakawa da aiwatarwa. An gina jadawali ta amfani da gnuplot tare da rubutun mai zuwa.

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

Kwarewar farko ta kasance tare da ma'aikacin Tele2, wanda na gudanar da kwanaki da yawa.

Gwajin saurin lokaci guda akan modem LTE da yawa

Anan na yi amfani da sabar aunawa mai ƙarfi. Ma'auni na sauri yana aiki, amma yana canzawa sosai, amma wasu matsakaicin darajar har yanzu suna bayyane, kuma ana iya samun wannan ta hanyar tace bayanai, alal misali, tare da matsakaicin motsi.

Daga baya na gina jadawali da dama ga sauran ma'aikatan sadarwa. A wannan yanayin, an riga an sami uwar garken gwaji guda ɗaya, kuma sakamakon ya kasance mai ban sha'awa sosai.

Gwajin saurin lokaci guda akan modem LTE da yawa

Gwajin saurin lokaci guda akan modem LTE da yawa

Gwajin saurin lokaci guda akan modem LTE da yawa

Gwajin saurin lokaci guda akan modem LTE da yawa

Kamar yadda kuke gani, batun yana da yawa don bincike da sarrafa waɗannan bayanan, kuma a fili ba ya ɗaukar makonni biyu na aiki. Amma…

Sakamakon aikin

An kammala aikin ba zato ba tsammani saboda yanayi da ya wuce ikona. Ɗaya daga cikin raunin wannan aikin, a cikin ra'ayi na, shi ne modem, wanda ba ya so ya yi aiki tare da sauran modem, kuma yana yin irin wannan dabaru a duk lokacin da aka ɗora shi. Don waɗannan dalilai, akwai adadi mai yawa na sauran nau'ikan modem; yawanci sun riga sun kasance cikin tsarin Mini PCI-e kuma an shigar dasu cikin na'urar kuma suna da sauƙin daidaitawa. Amma wannan labari ne kwata-kwata. Aikin ya kasance mai ban sha'awa kuma na yi farin ciki sosai da na sami damar shiga cikinsa.

Gwajin saurin lokaci guda akan modem LTE da yawa

source: www.habr.com

Add a comment