Simultaneus velocissimus in pluribus LTE modernis

Per quarentenam oblatus sum participare evolutionem instrumenti ad celeritatem LTE modemorum mensurae aliquot operariorum cellularum.

Simultaneus velocissimus in pluribus LTE modernis

Lorem velit aestimare celeritatem diversorum telecomium operariorum in diversis locis geographicis ut intellegere possit quem operator cellulosus ei optime esset cum instrumento inaugurando utens nexum LTE, exempli gratia, radiophonicis video. Eodem tempore problema solvendum est quam simpliciter et vilissime sine sumptuoso apparatu.

Ilicet dicam negotium non esse simplicissimum et intensivum, dicam tibi quas difficultates offendi et quomodo eas solvi. Eamus igitur.

illud

Celeritas nexus LTE mensurans materia est valde complexa: debes eligere instrumentum rectum et technicam mensurationem, ac etiam bonam intelligentiam topologiae et operationis retis cellulosi habes. Plus, celeritas a pluribus factoribus affici potest: numerus signatorum in cella, tempestatum, etiam a cellula ad cellulam celeritas ob dramaticam retis topologiam variari potest. In genere, haec quaestio est cum ingenti numero incognitarum, et solum operator telecomatus eam recte solvere potest.

Initio, mos iustus voluit tabellarium cum telephoniis operariis agitare, mensuras rectas in phone capere et celeritas mensurae eventus in libello scribere. Mea solutio ad celeritatem reticulorum mensurandi, etsi non idealis, problema solvit.

Propter temporis defectum, decisiones feci non pro opportunitate vel prudentia, sed pro velocitate progressionis. Exempli gratia, contrarium ssh adhibitum est pro remotis accessibus, pro VPN utiliori, ut tempus conservet in servo et singulis clientibus instituendis.

Technical negotium

Sicut dictum est in articulo Sine technicis specificationibus: quare cliens eam non vult: Sine technicis specificationibus non operantur! Numquam, nusquam!

Munus technicum satis simplex fuit, paulo ad intellectum finis utentis expandam. Optio solutionum technicarum instrumentorumque emptoris dictata est. Itaque, specificatio ipsa technica, post omnes probationes:

Ex una tabula computatrum vim2 celeritas probatorem ad lte hospites per H modemsuawei e3372h - 153 plures telecomes operariorum (ab uno ad n). Oportet etiam coordinatas recipere a receptore GPS per UART connexum. Fac celeritate mensuras utens in servitio www.speedtest.net et pones eas in mensa sicut:

Simultaneus velocissimus in pluribus LTE modernis

Tabula in csv forma. Tunc mittat hoc signum per singulas 6 horas electronicas. In casu errorum, ictu LED qui GPIO coniungitur.

Specificationes technicas in libera forma descripsi, post multas probationes. Sed sensus negotii iam visibilis est. Hebdomada data est omnibus. Sed revera per tres septimanas duravit. Hac ratione habita est quod hoc feci tantum post officium principale et in weekends.

Hic rursus iterum admonere cupimus quod emptori praemissus est de usu celeritatis mensurae servitutis et ferrariae, quae facultates meas valde circumscripsit. Provisiones etiam circumscripta erat, ideo nihil speciale emptum est. His igitur regulis ludere debemus.

Architectura et progressus

Ratio simplex et aperta est. Ideo sine speciali commento eam permitto.

Simultaneus velocissimus in pluribus LTE modernis

In pythone consilium totum efficere decrevi, quamquam experientiam in hac lingua omnino non habui. Id elegi, quia fasciculus exemplorum et solutionum promptorum factae erant quae progressionem accelerare possent. Peto igitur ab omnibus programmatibus professionalibus ne meam primam experientiam evolvendi in pythone obiurgare, et libenter semper libenter audiendi criticam aedificandi ad emendandas artes meas.

Item in processu deprehensus sum pythonem habere duas currentes versiones 2 et 3, consequenter tertiam constitui.

Hardware lymphaticorum

Single-laminam vim2

Una tabula computatrum mihi datum est ut machina principalis vim2

Simultaneus velocissimus in pluribus LTE modernis

Egregia, potens instrumentorum processus pro dolorosa domo et SMART-TV, sed ad hoc negotium perquam ineptum, vel dicamus male idoneum. Exempli gratia, principale suum OS Android est, et Linux secundarium OS est, et proinde nemo princeps qualitatem operationis omnium nodorum et rectorum sub Linux praestat. Et Pono nonnullas difficultates ad USB rectoribus huius suggesti relatas esse, ergo modemi non laborant ut in hac tabula exspectantur. Habet etiam documenta pauperrima et dispersa, ideo singulae operationes multum temporis per navalia fodiendi acceperunt. Etiam opus commune cum GPIO multum sanguinis sumpsit. Exempli causa, aliquot horas me cepit constituere LED. Sed, ut obiectivum esse, fundamentaliter non magni momenti erat quale unius tabulae, summa res fuit quod operabatur et USB portus erant.

Primum, necesse habeo Linux in hac tabula instituere. Ut tesquas documentorum omnibus non percurram, ac etiam iis qui de hac una tabula tractabunt, hoc capite scribo.

Duae sunt optiones Linux ad instituendum: in externa SD card vel interna MMC. Vesperi conabar figurare quomodo opus cum schedula efficeret, itaque MMC instituere decrevi, quamvis sine dubio multo facilius esset cum charta externa laborare.

De firmware male dixit hic. De peregrinis in Russian transfero. Ut tabulam splendeat, ferramenta UART coniungere opus est. Coniuncta est sequitur.

  • Instrumentum Pin GND: <-> Pin17 de VIMs GPIO
  • Instrumentum Pin TXD: <-> Pin18 de VIMs GPIO (Linux_Rx)
  • Instrumentum Pin RXD: <-> Pin19 de VIMs GPIO (Linux_Tx)
  • Instrumentum Pin VCC: <-> Pin20 de VIMs GPIO

Simultaneus velocissimus in pluribus LTE modernis

Post quod firmware posui hic. Imprimis firmware version VIM1_Ubuntu-servi-bionic_Linux-4.9_arm64_EMMC_V20191231.

Ut firmware hoc upload, utilitas eget. Plura de hoc hic. Illud sub Windows micare non conatus sum, sed pauca tibi de firmware sub Linux narrare debeo. Primum, secundum mandatum instituam utilitates.

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

Aaand... Nihil operatur. Horas duas exegi scriptas institutiones edendi ut omnia mihi recte instituerent. Non memini quid ibi egi, sed fuit etiam ille circus cum equis. Cave igitur. Sed sine his nihil est quod torqueat ulterius. Non melius est omnino tatam cum eo!

Post septem circulos inferni, figuram et institutionem scripturus, sarcinam quaestus operandi accepi. Tabulam per USB ad computatorium Linux meum coniunxi, ac etiam UART secundum schema superius contexui.
Meam dilectam minicom terminalem pro velocitate 115200 constituo, sine errore et software potestate. Et abeamus.

Simultaneus velocissimus in pluribus LTE modernis

Cum VIM2 in UART terminali oneratisque, clavis urgeo, ut spatii, oneraturam prohibere. Post lineam videtur

kvim2# 

ineo imperium;

kvim2# run update

Exercitum, unde oneramus, ego fungor;

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

Id, phew. Sedatus sum, ibi Linux in tabula est. Login/password khadas: khadas.

Deinde initiales aliquot minores occasus. Ad ulteriorem laborem, tesseram sudo pro sudo disable (sic, non securam, sed commodam).

sudo visudo

Formam rectam emendare et salvare

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

Deinde loci hodiernam muto ut tempus Moscuae sit, alioquin apud Greenwich erit.

sudo timedatectl set-timezone Europe/Moscow

uel

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

Si difficilem inveneris, hac tabula non uteris: melius est RUBUS IDAEUS PI. Honeste.

Modem Huawei e3372h - 153

Hoc modem fons sanguinis mihi notabilis fuit, et re vera facta est totius projecti ampullae. In genere, nomen "modem" pro his machinis essentiam operis omnino non refert: potens est haec coniunctio, hoc ferramentum artificium compositum habet quod CD-ROM fingit esse ut rectores instituant; et virgas ad modum retis card.

Architectura, ex parte usoris Linux, post omnes occasus, hoc modo spectat: cum modem iungo, interfaciem retis habeo eth*, quae per dhcp inscriptionem IP 192.168.8.100 recipit, et portae defectus. eft 192.168.8.1.

Maxime et tempore! Hoc modem exemplar in modem mode operari non potest, qui ab AT imperata refrenat. Omnia multo simpliciora essent, nexus PPP cuiusque modem creandi et cum illis operandi. At me in casu "ipse" (proutius Linux diver secundum udev regulas) eth interfaciem creat et IP oratio ei per dhcp assignat.

Ad ulteriorem confusionem vitandam, admonemus immemores verbi "modem" et schedulam retis et ianuam dicentem, quia in essentia, simile est cum porta retiacula nova coniungens.
Cum unus modus sit, hoc non speciales difficultates causat, sed cum plures plures, nempe n-pieces, sequens pictura network oritur.

Simultaneus velocissimus in pluribus LTE modernis

Hoc est, n schedulae retis, cum IP inscriptione eadem, unaquaeque cum porta eadem default. Sed unaquaeque earum pertinet ad suum operatorem.

Initio solutionem simplicem habui: adhibito praecepto ifconfig vel ip, omnes interfaces averte ac simpliciter in unum converte et illud experire. Solutio omnibus bona fuit, nisi quod in mutationibus momentis machinam coniungere non potui. Et quoniam commutatio crebra et celeris facta est, nulla omnino erat occasio coniungendi.

Iter ergo manually delegi de modorum IP inscriptionibus mutandis et deinde negotiandi utendi fundis fugandis.

Simultaneus velocissimus in pluribus LTE modernis

Hic finis quaestionis meae cum modernis non fuit: in casu problematum potentiarum decidit, et bona stabilis potentia ad centrum USB requiritur. Hanc problema solvi fortiter solidandi potestatem directe ad centrum. Aliam quaestionem quam obviam et quae totum consilium perdideram: post reboot vel frigoris initium notae, non omnes moderni deprehensi sunt nec semper, nec definire potui cur id acciderit, et quid algorithmus. Prima autem.

Pro modem bene operandi, sarcinam usb-modeswitchedae constitui.

sudo apt update
sudo apt install -y usb-modeswitch

Post quae, post connexionem, modernus recte detegatur et configuratur per subsystem udev. Inhibeo simpliciter connectens cum modem ac certo efficiens ut retis apparet.
Alia quaestio quam solvere non potui: quomodo possum nomen operantis qui ab hoc modem laboramus? Auctor nomen in instrumento modem telae modo 192.168.8.1 continetur. Haec pagina dynamica est quae per Aiax petitiones notitias accipit, proinde paginam tantum augens et nomen parsing non laborabit. Itaque inspexi quomodo paginas evolvere, etc., intellexi me quaedam nugae agere. Quam ob rem, exspuit, et auctor utens Celeritate ipsa API recipere coepit.

Multo facilius esset si modus accessus per AT imperata haberet. Fieri potest ut ipsam configurare, nexum ppp creare, IP dare, operarium telecomicum accipere, etc. Sed heu, quod datum est, laboro.

GPS

Receptore GPS datus sum UART interface et potestatem habebat. Non optima solutio, sed adhuc operabilis et simplex fuit. Receptaculum simile hoc vidi.

Simultaneus velocissimus in pluribus LTE modernis

Honestum esse, hoc primum opus fuit cum receptore GPS, sed ut exspectavi, iamdiu nobis omnia excogitata sunt. Ita modo solutionibus paratis utimur.

Primum, uart_AO_B (UART_RX_AO_B, UART_TX_AO_B) coniungere possum GPS.

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

Postea inhibeo successum operationis.

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

Hoc praeceptum videtur recensere devtree in musca, quod est commodum.

Post successum huius operationis, reboot daemonem GPS niteremur.

khadas@Khadas:~$ sudo reboot

GPS daemonem inaugurari. Omnia instituo et abscindo protinus ad ulteriorem configurationem.

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

Emendo occasus fasciculus.

sudo vim /etc/default/gpsd

Im 'UART inauguro in quo GPS pendent.

DEVICES="/dev/ttyS4"

Et tunc omnia vertimus et committitur.

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

Postea iungo GPS.

Simultaneus velocissimus in pluribus LTE modernis

Filum GPS in manibus meis est, fila debugger UART sub digitis patent.

Ego reboot et deprime GPS operandi utens programmate gpsmon.

Simultaneus velocissimus in pluribus LTE modernis

Satellites in hoc screen iactu videre non potes, sed communicationem cum receptore GPS videre potes, et hoc significat omnia bona esse.

In Pythone multa bene operandi cum daemone isto conabar, sed in eum qui cum Pythone 3 recte laborabat.

Bibliothecam instituo necessariam.

sudo -H pip3 install gps3 

et operis codicem sculpe i.

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

Si opus est ut coordinatas, hoc fit cum vocatione sequenti;

longitude, latitude = getPositionData(agps_thread)

Et infra 1-10 secundas vel coordinatas vel non habebo. Imo decem conatus sum coordinatas obtinere. Non bene, prava et perversa, sed facit. Hoc facere decrevi, quia GPS recipere potest pauperem receptionem et non semper data. Si notitias recipere exspectas, si in cubiculo remoto laboras, ratio in hoc loco congelatur. Ergo hanc inelegantem optionem egi.

In principio, si plus temporis, notitia GPS recta per UART recipere posset, in filo separato parse et cum eo laboret. Nullam sed tempus erat, id tincidunt turpis. Etiam non pudet.

Diode lumen emittens

Connectens LED erat simplex et difficilis simul. Praecipua difficultas est quod clavus numerus in ratis non respondet acus numero in tabula et quia documenta sinistra manu scripta sunt. Ad clavum ferramentorum numerum et acum numerum in OS comparare, imperium currere debes:

gpio readall

Mensa fibularum correspondentia in systemate et in tabula ostendetur. Post quod iam clavum in ipso OS agunt. In casu meo coniungitur LED GPIOH_5.

Simultaneus velocissimus in pluribus LTE modernis

GPIO pin ad output modum vertas.

gpio -g mode 421 out

nulla scribo.

gpio -g write 421 0

Scribo unum.

gpio -g write 421 1

Simultaneus velocissimus in pluribus LTE modernis
Omnia accenduntur, scribens "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)

Nunc, in errorum casu, error_blink() voco et LED connivet pulchre.

Nodi Software

Velocissimus API

Magnum est gaudium quod speedtest.net officium suum python-API habet, intueri potes Github.

Bona res est, quae exstant codices, qui etiam videri possunt. Quomodo operari cum hoc API (exempla simplicia) inveniri potest pertinet sectionem.

Pythonem bibliothecam instituo cum sequenti praecepto.

sudo -H pip3 install speedtest-cli

Exempli gratia, etiam celeritas probator in Ubuntu protinus a programmate instituere potes. Haec eadem pythonis applicatio, quae tum protinus a console deduci potest.

sudo apt install speedtest-cli -y

Et celeritatem tuam interretialem metiaris.

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

Ita fit ut ego. Codices huius celeritatis examinandi principium inire debebam ut ea plenius perficerentur in meum propositum. Unum ex maximis muneribus obtineat nomen operantis telecomes ut illud in laminam substituat.

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

Hic quoque omnia non tam simplicia evaserunt, licet multo simpliciora videantur. Initio ministris parametri erat aequalis []inquiunt, 'optimum servam'. Quam ob rem, servientes temere habui, et, ut coniiceres, celeritas variabilis. Hic locus admodum complexus est, servo certo utens, si ita, static vel dynamico, investigationem requirit. Sed hic exemplum est celeritatis graphae mensurae pro Beeline operator cum dynamice eligens testam ministrantis et stabiliter fixa.

Simultaneus velocissimus in pluribus LTE modernis
Effectus mensurae velocitatis cum servo dynamico eligendo.

Simultaneus velocissimus in pluribus LTE modernis
Proventus velocitatis probatio, uno servo stricte selecto.

In probatione utrobique est "pilum", et adhibitis mathematicis modis removeri debet. Sed fixo servo paulo minor est et amplitudo stabilior.
Fere hic locus est magnae inquisitionis. Et volo metior celeritas servo meo utendi iperf utilitate. Sed adhaeremus technicis rationibus.

Mittens mail erroresque

Epistulas mittere, compluribus duodenis diversis optionibus conabar, sed in fine sequentis decrevi. Ego descripserunt in Yandex et mailbox Hoc est exemplum mittens mail. Compressi eam et in programmatis implevit. Hoc exemplum varias optiones examinat, etiam a Gmail invenias, etc. Nolui molestare cum servo meo electronico constituendo nec tempus ei habui, sed cum postea evenit, etiam frustra fuit.

Tigna missa sunt iuxta schedula; si nexum est, singulis 6 horis: 00 hora, 06 am, 12 meridiem et 18 pm. Missus est sic.

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

Errores etiam initio missi sunt. In primis cumulata sunt in indice ac deinde etiam schedula utens, si nexus erat. Sed tunc orta sunt questiones cum eo, quod Yandex habet terminum in numero nuntiorum per diem missis (hoc est dolor, tristitia et humiliatio). Cum ingens numerus errorum etiam per minutas esse posset, errores per epistulas mittendos deserere debebamus. Ita meminerimus statim informationes mittens de tali problemate per officia Yandex.

Feedback servo

Ut aditus ad remotam ferramentorum partem ac eam mos ac reconfigurare possit, servo externo indigui. In universum, ut pulchra sit, recte omnia notitias ministranti mittere et omnia graphia pulcherrima in interreti interreti construere. Sed non omnes simul.

Nam VPS elegi ruvds.com. Servum simplicissimum potuisti. Et generaliter ad propositum meum hoc satis esset. Sed quia servo e proprio sinu non solvi, cum parva subsidia id sumere decrevi ut satis esset si interfacem, nostrum ESMTP servo, VPN, etc. Plus, telegram bot constituere poteris nec difficultates cum eo interclusus habere. Ideo Amstelodamum elegi et ambitum sequentes.

Simultaneus velocissimus in pluribus LTE modernis

Ut methodus communicationis cum ferramentis vim2 adversam ssh connexionem elegit et, ut praxis ostendit, non optima est. Si nexus amittitur, server portum tenet et per eam aliquo tempore coniungi impossibile est. Ideo melius est ut aliis rationibus communicationis uti, verbi gratia VPN. In futuro VPN commutare volui, sed tempus non erat.

Non ingrediar in singularia ut fire vallum erigendi, iura restricta, inactivare nexus radicis ssh et alia truismata erigendi VPS. Tu velim credas iam omnia scire. Ad nexum remotam, novum usorem in calculonis efficio.

adduser vimssh

I ssh connexionem generare claves in ferramentis nostris.

ssh-keygen

Quos servo nostro transcribo.

ssh-copy-id [email protected]

In nostris ferramentis, automatice vicissim efficio nexum ssh ad singulas tabernus.

[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

8083 portum attende: quem portum utar ad coniungere via adversa ssh determinat. Adde illud incipere et incipere.

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

Etiam statum videre potes;

sudo systemctl status autossh.service

Nunc, in VPS servo nostro, si curritur:

ssh -p 8083 khadas@localhost

Deinde ad meum experiendi fragmen odio. Et ex ferramentis etiam ligna et quaelibet notitia per ssh servo meo mittere possum, quod est commodum.

Ponatur enim una omnium

Simultaneus velocissimus in pluribus LTE modernis
Commutatione, progressionem et debugging scriptor satus

Phew, bene est, omnes nodos descripsi. Nunc tempus est ut omnia simul. Potes videre codice hic.

Magni momenti punctum cum codice: Hoc propositum non potest sic incipere, quia ad certum munus formandam, architecturae specificae. Etsi fontem codicem dedero, adhuc pretiosiora hic exponam, recte in textu, aliter omnino incomprehensibilis est.

In principio, initialize gps, gpio et separatim stamina schedula immitto.

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

Tabularium schedula plane simplex est: spectat videre si tempus venerit ad mittendas nuntios et quid status hic error sit. Si vexillum est error, tunc nos connivemus 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)

Difficillima pars huius consilii sustinet nexum contrarium ssh pro singulis test. Singula test involvit re-configurans portae defaltam et DNS ministrantem. Cum nemo usquam legit, scito tramen ligneis cancellis non vehi. Quicumque ovum paschale reperit, aliquod Candium accipit.

Ad hoc faciendum, singulas tabulas excitandas -set-marcam 0x2 condo ac regulam ad mercaturam redirectam.

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

Plus discere potes quomodo operatur legitur in hoc articulo.

Post quem in ansam infinitam ingredior, ubi singulis diebus indicem modernorum connexarum accipimus (ut cognoscamus si configuratione retis repente mutata est).

network_list = getNetworklist()

Questus index interfaces retis est simplex.

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

Accepto indice, IP inscriptiones posui omnibus interfaces, ut in tabula in capite de modo monstravi.

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

Tunc simpliciter pertranseo per singulas interfaces in ansa. Et ego interfaciem configuramus.

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

Interfacem in officiando, si retis deest, inspicio, tunc errores generabo. Si retis est, tempus agere est!

Hic figuram ssh ad hoc interfaciem excitandas (si factum non est), errores servo mitto, si tempus venerit, ligna mittas et tandem celerrimam curram et ligna ad tabulam csv servandam.

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

Munus memorabile est constituendi vicissim 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")

Et sane haec pulchritudo addere debes startup. Ut hoc faciam, limam creo:

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

Et in ea scribo;

[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

Et conversus sum in autoloading et satus!

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

Nunc videre tigna quae eveniunt utens imperio;

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

Результаты

Illud, quod primum est, quid inde? Hic paucae graphae sunt, quas in evolutione et processu debugging capere potui. Graphiae per gnuplot cum sequenti scripto aedificatae sunt.

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

Prima experientia fuit cum operator Tele2, quam per aliquot dies gessi.

Simultaneus velocissimus in pluribus LTE modernis

Hic usus sum servo dynamico mensurae. Celeritas mensurae laborant, sed valde fluctuant, sed aliqua valor mediocris adhuc visus est, et hoc per eliquationem notitiarum obtineri potest, exempli gratia, cum mediocris movens.

Postea complura graphas aedificavi pro aliis operariis telecomatis. In hoc casu iam unus erat cultor exertus, et eventus etiam valde iucundus fuit.

Simultaneus velocissimus in pluribus LTE modernis

Simultaneus velocissimus in pluribus LTE modernis

Simultaneus velocissimus in pluribus LTE modernis

Simultaneus velocissimus in pluribus LTE modernis

Ut videre potes, locus amplissimus est ad investigationes et processus huius notitiae, et plane per duos hebdomades laboris non durat. Sed…

Exitus operis

Opus abrupto tempore temporis extra potestatem. Una ex infirmitatibus huius propositi, mea sententia subiectiva, erat moderna, quae simul cum aliis modernis laborare nolebat, et talibus dolis omni tempore oneratus erat. Ad haec, ingens numerus aliorum exemplorum modernorum exstant, plerumque iam in formato Mini PCI-e sunt et intra machinam instituuntur et multo facilius configurantur. Sed haec omnino alia fabula est. Cogitatum erat interesting et valde gaudeo me participare potui.

Simultaneus velocissimus in pluribus LTE modernis

Source: www.habr.com

Add a comment