ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

I ka wā quarantine, ua hāʻawi ʻia iaʻu e komo i ka hoʻomohala ʻana i kahi hāmeʻa no ke ana ʻana i ka wikiwiki o nā modem LTE no kekahi mau mea kelepona.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

Ua makemake ka mea kūʻai e loiloi i ka wikiwiki o nā mea kelepona like ʻole ma nā wahi ʻāina like ʻole i hiki ke hoʻomaopopo i ka mea kelepona ʻoi aku ka maikaʻi loa iā ia i ka wā e hoʻokomo ai i nā lako me ka hoʻohana ʻana i kahi pilina LTE, no ka laʻana, no nā hoʻolaha wikiō. I ka manawa like, pono e hoʻoponopono ʻia ka pilikia e like me ka maʻalahi a me ka maʻalahi e like me ka hiki, me ka ʻole o nā lako makamae.

E ʻōlelo koke wau ʻaʻole ka hana maʻalahi a ʻoi loa ka ʻike; E haʻi wau iā ʻoe i nā pilikia aʻu i hālāwai ai a pehea wau i hoʻoponopono ai. No laila, e hele kāua.

i hoʻopuka

ʻO ke ana ʻana i ka wikiwiki o kahi pilina LTE he mea paʻakikī loa: pono ʻoe e koho i nā mea hana kūpono a me nā ʻenehana ana, a loaʻa pū kekahi ʻike maikaʻi i ka topology a me ka hana o ka pūnaewele kelepona. Eia kekahi, hiki ke hoʻololi ʻia ka wikiwiki e nā mea he nui: ʻo ka helu o nā mea kākau ma ke kelepona, nā kūlana o ka wā, ʻoiai mai ke kelepona a hiki i ke kelepona hiki ke loli ka wikiwiki ma muli o ka topology pūnaewele. Ma keʻano laulā, he pilikia kēia me ka nui o nā mea i ʻike ʻole ʻia, a hiki i ka mea kelepona kelepona ke hoʻoponopono pololei.

I ka hoʻomaka ʻana, makemake wale ka mea kūʻai aku e hoʻokele i ka ʻelele me nā kelepona o nā mea hoʻohana, e lawe pololei i nā ana ma ke kelepona a laila kākau i nā hopena ana wikiwiki i kahi puke. ʻO kaʻu hopena no ke ana ʻana i ka wikiwiki o nā pūnaewele lte, ʻoiai ʻaʻole kūpono, hoʻonā i ka pilikia.

Ma muli o ka nele o ka manawa, ua hoʻoholo wau ʻaʻole i makemake i ka maʻalahi a i ʻole ka pono, akā no ka wikiwiki o ka hoʻomohala ʻana. No ka laʻana, ua hoʻohana ʻia ka reverse ssh no ke komo mamao, ma kahi o ka VPN ʻoi aku ka hana, i mea e mālama ai i ka manawa i ka hoʻonohonoho ʻana i ke kikowaena a me kēlā me kēia mea kūʻai aku.

Hana ʻenehana

E like me ka mea i ʻōlelo ʻia ma ka ʻatikala Me ka ʻole o nā kikoʻī ʻenehana: no ke aha i makemake ʻole ai ka mea kūʻai aku: Mai hana me ka ʻole o nā kikoʻī ʻenehana! ʻAʻole loa, ma nā wahi a pau!

He mea maʻalahi ka hana ʻenehana, e hoʻonui iki wau no ka hoʻomaopopo ʻana i ka mea hoʻohana hope. ʻO ke koho o nā ʻenehana loea a me nā mea hana i kuhikuhi ʻia e ka mea kūʻai. No laila, ʻo ka ʻōlelo kikoʻī ponoʻī, ma hope o nā ʻae ʻia:

Ma muli o ka lolouila papa hoʻokahi vim2 e hana i mea hōʻike wikiwiki no nā pilina lte ma o H modemsuawei e3372h - 153 mau mea lawelawe kelepona (mai kekahi a i n). Pono nō hoʻi e loaʻa nā hoʻonohonoho mai kahi mea hoʻokipa GPS i hoʻopili ʻia ma o UART. Hana i nā ana wikiwiki me ka hoʻohana ʻana i ka lawelawe www.speedtest.net a waiho i loko o ka papaʻaina e like me:

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

Papa ma ke ʻano csv. A laila e hoʻouna i kēia hōʻailona ma ka leka uila i kēlā me kēia 6 hola. Inā he hewa, e kīpī i ke kukui i hoʻopili ʻia me ka GPIO.

Ua wehewehe au i nā kikoʻī ʻenehana ma ke ʻano manuahi, ma hope o nā ʻae he nui. Akā ua ʻike ʻia ke ʻano o ka hana. Hāʻawi ʻia kahi pule no nā mea a pau. Akā ʻo ka ʻoiaʻiʻo ua mau ia no ʻekolu pule. Ke noʻonoʻo nei kēia i kaʻu hana i kēia wale nō ma hope o kaʻu hana nui a i nā hopena pule.

Maanei, makemake wau e huki hou i ka manaʻo i ka ʻae ʻana o ka mea kūʻai aku ma mua o ka hoʻohana ʻana i ka lawelawe ana o ka wikiwiki a me ka lako, kahi i kaupalena ʻia ai koʻu hiki. Ua kaupalena ʻia ke kālā, no laila ʻaʻohe mea kūikawā i kūʻai ʻia. No laila pono mākou e pāʻani i kēia mau lula.

Hoʻolālā a me ka hoʻomohala ʻana

He maʻalahi a maopopo ka papahana. No laila, e waiho wau me ka ʻole o nā manaʻo kūikawā.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

Ua hoʻoholo wau e hoʻokō i ka papahana holoʻokoʻa ma ka python, ʻoiai ʻaʻohe oʻu ʻike i ka hoʻomohala ʻana i kēia ʻōlelo. Ua koho au iā ia no ka mea he pūʻulu o nā hiʻohiʻona mākaukau a me nā hoʻonā e hiki ai ke wikiwiki i ka hoʻomohala ʻana. No laila, ke noi aku nei au i nā mea papahana ʻoihana a pau ʻaʻole e ʻāhewa i koʻu ʻike mua o ka hoʻomohala ʻana i ka python, a hauʻoli mau wau i ka lohe ʻana i nā ʻōlelo hoʻohewa e hoʻomaikaʻi ai i koʻu mau mākau.

I loko o ke kaʻina hana ua ʻike au he ʻelua mau mana holo ʻana o ka python 2 a me 3, no laila ua hoʻoholo wau i ke kolu.

Nā pūnaehana lako

Vim2 pā hoʻokahi

Ua hāʻawi ʻia iaʻu he kamepiula papa hoʻokahi e like me kaʻu mīkini nui vim2

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

ʻO kahi mea hoʻolaha media maikaʻi a ikaika no ka home akamai a me SMART-TV, akā kūpono ʻole no kēia hana, a i ʻole, e ʻōlelo mākou, kūpono ʻole. No ka laʻana, ʻo Android kāna OS nui, a ʻo Linux kahi OS lua, a no laila ʻaʻohe mea e hōʻoiaʻiʻo i ka hana kiʻekiʻe o nā nodes a me nā mea hoʻokele ma lalo o Linux. A ke manaʻo nei au ua pili kekahi o nā pilikia i nā mea hoʻokele USB o kēia kahua, no laila ʻaʻole i hana nā modem e like me ka mea i manaʻo ʻia ma kēia papa. Loaʻa iā ia nā palapala ʻilihune a hoʻopuehu, no laila ua lōʻihi ka manawa o kēlā me kēia hana i ka ʻeli ʻana i nā pahu. ʻO ka hana maʻamau me GPIO i lawe nui i ke koko. No ka laʻana, ua lawe iaʻu i mau hola e hoʻonohonoho i ka LED. Akā, ʻo ka pahuhopu, ʻaʻole ia he mea koʻikoʻi ke ʻano o ka papa hoʻokahi, ʻo ka mea nui ʻo ia ka hana a aia nā awa USB.

ʻO ka mea mua, pono wau e hoʻokomo i Linux ma kēia papa. I ʻole e ʻimi i ka ʻāhiu o nā palapala no nā mea a pau, a no ka poʻe hoʻi e pili ana i kēia ʻōnaehana papa hoʻokahi, ke kākau nei au i kēia mokuna.

ʻElua mau koho e hoʻokomo iā Linux: ma kahi kāleka SD waho a i ʻole ma kahi MMC kūloko. Ua hoʻohana wau i kahi ahiahi e ho'āʻo nei e noʻonoʻo pehea e hana ai me ke kāleka, no laila ua hoʻoholo wau e hoʻokomo iā ia ma ka MMC, ʻoiai me ke kānalua ʻole ʻoi aku ka maʻalahi o ka hana ʻana me kahi kāleka waho.

E pili ana i ka firmware olelo kekee maanei. Unuhi au mai kahi ʻano ʻē i ka Lūkini. I mea e 'ālohilohi ai i ka papa, pono au e hoʻohui i ka UART lako. Hoʻohui ʻia penei.

  • Mea Hana Pin GND: <—> Pin17 o VIM's GPIO
  • Mea Hana Pin TXD: <—> Pin18 o VIM's GPIO (Linux_Rx)
  • Mea Hana Pin RXD: <—> Pin19 o VIM's GPIO (Linux_Tx)
  • Mea Hana Pin VCC: <—> Pin20 o VIM's GPIO

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

Ma hope o kēlā, hoʻoiho wau i ka firmware mai kēia wahi. Manaʻo firmware kikoʻī VIM1_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.

No ka hoʻouka ʻana i kēia firmware, pono wau i nā pono. Nā kikoʻī hou aku e pili ana i kēia maanei. ʻAʻole wau i hoʻāʻo e hoʻolohi iā ia ma lalo o Windows, akā pono wau e haʻi iā ʻoe i kekahi mau huaʻōlelo e pili ana i ka firmware ma lalo o Linux. ʻO ka mea mua, e hoʻokomo wau i nā pono hana e like me nā kuhikuhi.

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

Aaand... ʻAʻohe mea hana. Ua hoʻohana au i ʻelua mau hola i ka hoʻoponopono ʻana i nā palapala hoʻonohonoho i hoʻokomo pono nā mea āpau iaʻu. ʻAʻole wau i hoʻomanaʻo i kaʻu mea i hana ai ma laila, akā aia nō kēlā circus me nā lio. No laila e akahele. Akā me ka ʻole o kēia mau pono, ʻaʻohe kumu o ka hoʻomāinoino ʻana iā vim2. ʻOi aku ka maikaʻi ʻaʻole e huikau me ia!

Ma hope o ʻehiku pōʻai o Gehena, ka hoʻonohonoho ʻana a me ka hoʻonohonoho ʻana, ua loaʻa iaʻu kahi pūʻolo o nā pono hana. Hoʻohui au i ka papa ma o USB i kaʻu kamepiula Linux, a hoʻohui pū i ka UART e like me ke kiʻi ma luna.
Ke hoʻonohonoho nei au i kaʻu pahu minicom punahele no ka wikiwiki o 115200, me ka ʻole o ka mana hewa a me ka lako polokalamu. A e hoʻomaka kāua.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

I ka hoʻouka ʻana i ka VIM2 i ka pahu UART, kaomi wau i kahi kī, e like me ke ākea, e hoʻōki i ka hoʻouka ʻana. Ma hope o ka puka ʻana o ka laina

kvim2# 

Hoʻokomo wau i ke kauoha:

kvim2# run update

Ma luna o ka mea hoʻokipa a mākou e hoʻouka nei, hoʻokō wau:

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

ʻO ia nō, phew. Ua nānā au, aia ʻo Linux ma ka papa. E komo i ka ʻōlelo huna khadas:khadas.

Ma hope o kēlā, kekahi mau hoʻonohonoho mua liʻiliʻi. No ka hana hou aku, hoʻopau wau i ka ʻōlelo huna no sudo (ʻae, ʻaʻole paʻa, akā kūpono).

sudo visudo

Hoʻoponopono wau i ka laina i ke ʻano a mālama

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

A laila hoʻololi wau i ka wahi o kēia manawa i hiki i ka manawa ma Moscow, inā ʻaʻole ia ma Greenwich.

sudo timedatectl set-timezone Europe/Moscow

ai ole ia,

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

Inā pilikia ʻoe, mai hoʻohana i kēia papa; ʻoi aku ka maikaʻi o Raspberry Pi. ʻOiaʻiʻo.

Modem Huawei e3372h – 153

He kumu koko koʻikoʻi kēia modem noʻu, a, ʻoiaʻiʻo, ua lilo ia i bottleneck o ka papahana holoʻokoʻa. Ma keʻano laulā, ʻaʻole i hōʻike ʻia ka inoa "modem" no kēia mau mea i ke ʻano o ka hana: he hui ikaika kēia, aia kēia ʻāpana o ka lako i kahi mea hana i hoʻohālike ʻia he CD-ROM i mea e hoʻokomo ai i nā mea hoʻokele. a laila hoʻololi i ke ʻano kāleka pūnaewele.

ʻO Architecturally, mai ka manaʻo o ka mea hoʻohana Linux, ma hope o nā hoʻonohonoho āpau, ua like ia me kēia: ma hope o ka hoʻopili ʻana i ka modem, loaʻa iaʻu kahi eth* network interface, ma o dhcp e loaʻa ai ka IP address 192.168.8.100, a me ka puka paʻamau. ʻo 192.168.8.1.

A ʻo ka manawa nui loa! ʻAʻole hiki ke hana i kēia ʻano modem ma ke ʻano modem, i hoʻomalu ʻia e nā kauoha AT. E maʻalahi nā mea a pau, e hana i nā pilina PPP no kēlā me kēia modem a laila hana pū me lākou. Akā i koʻu hihia, "ʻo ia iho" (ʻoi aku ka pololei, he mea hoʻoheheʻe Linux e like me nā lula udev), hana i kahi interface eth a hāʻawi i kahi IP address iā ia ma o dhcp.

I mea e pale aku ai i ka huikau, manaʻo wau e hoʻopoina i ka huaʻōlelo "modem" a me ka ʻōlelo ʻana i ke kāleka pūnaewele a me ka ʻīpuka, no ka mea ma ke ʻano, ua like ia me ka hoʻopili ʻana i kahi kāleka pūnaewele hou me kahi ʻīpuka.
Ke loaʻa hoʻokahi modem, ʻaʻole ia he pilikia kūikawā, akā inā ʻoi aku ka nui ma mua o hoʻokahi, ʻo ia hoʻi nā ʻāpana n, e kū mai ke kiʻi pūnaewele ma lalo.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

ʻO ia hoʻi, n kāleka pūnaewele, me ka helu IP like, kēlā me kēia me ka ʻīpuka paʻamau. Akā i ka ʻoiaʻiʻo, pili kēlā me kēia o lākou i kāna mea hoʻohana ponoʻī.

I ka hoʻomaka ʻana, loaʻa iaʻu kahi hopena maʻalahi: me ka hoʻohana ʻana i ke kauoha ifconfig a ip paha, e hoʻopau i nā interface āpau a hoʻohuli wale i hoʻokahi a hoʻāʻo. Ua maikaʻi ka hopena no nā mea a pau, koe wale nō i ka wā o ka hoʻololi ʻana ʻaʻole hiki iaʻu ke hoʻopili i ka hāmeʻa. A ma muli o ka pinepine a me ka wikiwiki o ka hoʻololi ʻana, ʻaʻohe oʻu manawa e hoʻopili ai.

No laila, ua koho au i ke ala o ka hoʻololi lima ʻana i nā helu IP o nā modem a laila hoʻokele kaʻa me ka hoʻohana ʻana i nā hoʻonohonoho ala.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

ʻAʻole kēia ka pau ʻana o kaʻu mau pilikia me nā modem: inā pilikia ka mana, hāʻule lākou, a ua koi ʻia kahi lako mana paʻa i ka USB hub. Ua hoʻoholo wau i kēia pilikia ma ka hoʻopaʻa ʻana i ka mana pololei i ka hub. ʻO kahi pilikia ʻē aʻe aʻu i ʻike ai a ua hōʻino i ka papahana holoʻokoʻa: ma hope o ka hoʻomaka hou ʻana a i ʻole ka hoʻomaka ʻana o ka hāmeʻa, ʻaʻole ʻike ʻia nā modem āpau a ʻaʻole i nā manawa a pau, a ʻaʻole hiki iaʻu ke hoʻoholo i ke kumu i hana ai kēia a me ka algorithm. Akā ʻo ka mea mua.

No ka hana pono o ka modem, ua hoʻokomo au i ka pūʻolo usb-modeswitch.

sudo apt update
sudo apt install -y usb-modeswitch

Ma hope o ka hoʻohui ʻana, e ʻike pono ʻia ka modem a hoʻonohonoho ʻia e ka subsystem udev. Ke nānā nei au ma ka hoʻopili wale ʻana i ka modem a me ka hōʻoia ʻana e ʻike ʻia ka pūnaewele.
ʻO kekahi pilikia ʻaʻole hiki iaʻu ke hoʻoponopono: pehea e loaʻa ai iaʻu ka inoa o ka mea hana a mākou e hana nei me kēia modem? Aia ka inoa o ka mea hoʻohana ma ke kikowaena pūnaewele modem ma 192.168.8.1. He ʻaoʻao pūnaewele ikaika kēia e loaʻa ai ka ʻikepili ma o nā noi Ajax, no laila ʻaʻole e holo ka wgeting i ka ʻaoʻao a me ka paʻi ʻana i ka inoa. No laila ua hoʻomaka wau e nānā i ke ʻano o ka hoʻomohala ʻana i kahi ʻaoʻao pūnaewele, a me nā mea ʻē aʻe, a ʻike wau e hana nei au i kekahi ʻano mea lapuwale. ʻO ka hopena, kuha ʻo ia, a hoʻomaka ka mea hoʻohana e hoʻohana i ka Speedtest API ponoʻī.

ʻOi aku ka maʻalahi inā loaʻa ka modem ma o nā kauoha AT. Hiki iā ia ke hoʻonohonoho hou iā ia, hana i kahi pili ppp, hāʻawi i kahi IP, loaʻa i kahi mea kelepona telecom, etc. Akā naʻe, ke hana nei au me ka mea i hāʻawi ʻia iaʻu.

GPS

ʻO ka mea hoʻokipa GPS i hāʻawi ʻia iaʻu he UART a me ka mana. ʻAʻole ʻo ia ka hopena maikaʻi loa, akā hiki ke hana a maʻalahi. Ua like ke ano me keia.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

ʻO kaʻoiaʻiʻo, ʻo kēia kaʻu manawa mua e hana me kahi mea hoʻokipa GPS, akā e like me kaʻu i manaʻo ai, ua noʻonoʻo ʻia nā mea āpau no mākou i ka wā ma mua. No laila, hoʻohana wale mākou i nā hoʻonā i hana ʻia.

ʻO ka mea mua, hiki iaʻu ke hoʻohui i ka uart_AO_B (UART_RX_AO_B, UART_TX_AO_B) i ka GPS.

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

Ma hope, nānā au i ka holomua o ka hana.

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

Hoʻoponopono kēia kauoha i ka devtree ma ka lele, kahi kūpono loa.

Ma hope o ka holomua o kēia hana, hoʻomaka hou a hoʻokomo i ka daemon GPS.

khadas@Khadas:~$ sudo reboot

Ke kau nei i ka daemon GPS. Hoʻokomo wau i nā mea āpau a ʻoki koke no ka hoʻonohonoho hou.

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

Ke hoʻoponopono nei i ka faila hoʻonohonoho.

sudo vim /etc/default/gpsd

Ke kau nei au i UART kahi e kau ai ka GPS.

DEVICES="/dev/ttyS4"

A laila hoʻohuli mākou i nā mea a pau a hoʻomaka.

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

Ma hope o kēlā, hoʻopili wau i ka GPS.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

Aia ka uwea GPS ma ko'u mau lima, ua ikeia na uwea debugger UART ma lalo o ko'u mau manamana lima.

Hoʻomaka hou wau a nānā i ka hana GPS me ka hoʻohana ʻana i ka polokalamu gpsmon.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

ʻAʻole hiki iā ʻoe ke ʻike i nā satelite ma kēia kiʻi kiʻi, akā hiki iā ʻoe ke ʻike i ke kamaʻilio me ka mea hoʻokipa GPS, a ʻo ia hoʻi ua maikaʻi nā mea a pau.

I ka python, ua hoʻāʻo au i nā koho he nui no ka hana ʻana me kēia daemon, akā ua hoʻoholo wau i ka mea i hana pololei me ka python 3.

Hoʻokomo au i ka waihona pono.

sudo -H pip3 install gps3 

A kālai wau i ke code hana.

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

Inā makemake wau e kiʻi i nā hoʻonohonoho, hana ʻia kēia me kēia kelepona:

longitude, latitude = getPositionData(agps_thread)

A i loko o 1-10 kekona e loaʻa iaʻu ka coordinate a i ʻole. ʻAe, ua loaʻa iaʻu he ʻumi mau hoʻāʻo e kiʻi i nā hoʻonohonoho. ʻAʻole maikaʻi loa, kekee a me ka piʻi, akā hana ia. Ua hoʻoholo wau e hana i kēia no ka mea hiki ke loaʻa i ka GPS ka hoʻokipa maikaʻi ʻole a ʻaʻole loaʻa mau ka ʻikepili. Inā kali ʻoe i ka loaʻa ʻana o ka ʻikepili, a laila inā ʻoe e hana ma kahi lumi mamao, e maloʻo ka papahana ma kēia wahi. No laila, ua hoʻokō wau i kēia koho inelegant.

Ma ke kumu, inā nui ka manawa, hiki ke loaʻa ka ʻikepili mai ka GPS ma o UART, e hoʻokaʻawale iā ia i kahi kaula kaʻawale a hana pū me ia. Akā ʻaʻohe manawa i loaʻa, no laila ke code brutally ʻino. A ʻae, ʻaʻole oʻu hilahila.

ʻO LED

He maʻalahi a paʻakikī ka hoʻohui ʻana i ka LED i ka manawa like. ʻO ka paʻakikī nui, ʻaʻole pili ka helu pine i ka ʻōnaehana me ka helu pine ma ka papa a no ka mea ua kākau ʻia nā palapala me ka lima hema. No ka hoʻohālikelike ʻana i ka helu pin hardware a me ka helu pine i ka OS, pono ʻoe e holo i ke kauoha:

gpio readall

E hōʻike ʻia kahi papa o nā leka pine ma ka ʻōnaehana a ma ka papa. A laila hiki iaʻu ke hana i ka pine i loko o ka OS ponoʻī. I koʻu hihia, pili ka LED GPIOH_5.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

Hoʻololi au i ka pine GPIO i ke ʻano puka.

gpio -g mode 421 out

Kākau wau i ka zero.

gpio -g write 421 0

Kākau wau i hoʻokahi.

gpio -g write 421 1

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE
Hoʻomālamalama ʻia nā mea a pau, ma hope o ke kākau ʻana iā "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)

I kēia manawa, inā he hewa, kāhea wau iā error_blink() a e ʻoni nani ka LED.

Nodes lako polokalamu

API no ka wikiwiki loa

He hauʻoli nui ka loaʻa ʻana o ka lawelawe speedtest.net i kāna python-API, hiki iā ʻoe ke nānā Github.

ʻO ka mea maikaʻi, aia nā kumu kumu i hiki ke nānā ʻia. Pehea e hana ai me kēia API (nā hiʻohiʻona maʻalahi) hiki ke loaʻa ma pauku pili.

Hoʻokomo wau i ka waihona python me kēia kauoha.

sudo -H pip3 install speedtest-cli

No ka laʻana, hiki iā ʻoe ke hoʻokomo i kahi hōʻike wikiwiki ma Ubuntu pololei mai ka polokalamu. ʻO kēia ka noi python like, a laila hiki ke hoʻokuʻu pololei ʻia mai ka console.

sudo apt install speedtest-cli -y

A e ana i kou wikiwiki pūnaewele.

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

ʻO ka hopena, e like me kaʻu i hana ai. Pono wau e komo i nā code kumu o kēia ho'āʻo wikiwiki i mea e hoʻokō pono ai i kaʻu papahana. ʻO kekahi o nā hana koʻikoʻi ʻo ka loaʻa ʻana o ka inoa o ka mea lawelawe kelepona i mea e hoʻololi ai i loko o ka pā.

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

Eia kekahi, ʻaʻole maʻalahi nā mea a pau, ʻoiai ʻoi aku ka maʻalahi. I ka hoʻomaka ʻana, ua like nā kikowaena kikowaena me [], ʻōlelo lākou, koho i ka kikowaena maikaʻi loa. ʻO ka hopena, ua loaʻa iaʻu nā kikowaena maʻamau, a, e like me kāu e manaʻo ai, hiki ke loli ka wikiwiki. He kumuhana paʻakikī kēia, me ka hoʻohana ʻana i kahi kikowaena paʻa, inā pēlā, static a dynamic paha, pono e noiʻi. Eia naʻe kahi laʻana o nā kiʻi ana wikiwiki no ka mea hoʻohana Beeline i ke koho ʻana i kahi kikowaena hoʻāʻo a me kahi kikowaena statically.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE
ʻO ka hopena o ke ana ʻana i ka wikiwiki i ke koho ʻana i kahi kikowaena dynamic.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE
ʻO ka hopena o ka hoʻāʻo wikiwiki ʻana, me kahi kikowaena i koho pono ʻia.

I ka wā o ka hoʻāʻo ʻana, aia ka "fur" ma nā wahi ʻelua, a pono e wehe ʻia me ka hoʻohana ʻana i nā ʻano matematika. Akā me kahi kikowaena paʻa he emi iki a ʻoi aku ka paʻa o ka amplitude.
Ma keʻano laulā, he wahi noiʻi nui kēia. A e ana au i ka wikiwiki o kaʻu kikowaena me ka hoʻohana ʻana i ka pono iperf. Akā pili mākou i nā kikoʻī loea.

Ka hoʻouna ʻana i ka leka a me nā hewa

No ka hoʻouna ʻana i ka leka uila, ua hoʻāʻo wau i nā ʻano koho like ʻole, akā i ka hopena ua hoʻoholo wau i kēia. Ua hoʻopaʻa inoa wau i kahi pahu leka ma Yandex a laila lawe He laʻana kēia o ka hoʻouna leka. Ua nānā au a hoʻokomo i loko o ka papahana. Ke nānā nei kēia hiʻohiʻona i nā koho like ʻole, me ka hoʻouna ʻana mai gmail, etc. ʻAʻole wau i makemake e pilikia i ka hoʻonohonoho ʻana i kaʻu kikowaena leka uila a ʻaʻohe manawa no ia mea, akā e like me ka mea i ʻike ʻia ma hope, ua makehewa.

Ua hoʻouna ʻia nā moʻolelo e like me ka mea hoʻonohonoho, ina he pili, i kēlā me kēia 6 hola: ma ka hola 00, 06 am, 12 awakea a me 18 pm. Hoʻouna ʻia penei.

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

Ua hoʻouna mua ʻia nā hewa. I ka hoʻomaka ʻana, ua hōʻiliʻili ʻia lākou i ka papa inoa, a laila hoʻouna pū ʻia me ka hoʻohana ʻana i ka mea hoʻonohonoho, inā he pili. Eia naʻe, ua ala mai nā pilikia me ka loaʻa ʻana o Yandex i ka palena o ka helu o nā leka i hoʻouna ʻia i kēlā me kēia lā (ʻo kēia ka ʻeha, ke kaumaha a me ka hoʻohaʻahaʻa). Ma muli o ka nui o nā hewa i kēlā me kēia minuke, pono mākou e haʻalele i ka hoʻouna ʻana i nā hewa ma ka leka uila. No laila e hoʻomanaʻo i ka hoʻouna ʻana i ka ʻike e pili ana i ia pilikia ma o nā lawelawe Yandex.

kikowaena manaʻo

I mea e hiki ai ke komo i kahi ʻāpana mamao a hiki ke hoʻonohonoho a hoʻonohonoho hou iā ia, pono wau i kahi kikowaena waho. Ma keʻano laulā, no ka pololei, pono e hoʻouna i nāʻikepili a pau i ke kikowaena a kūkulu i nā kiʻi nani a pau ma ka pūnaewele pūnaewele. ʻAʻole naʻe i ka manawa hoʻokahi.

No VPS au i koho ai ruvds.com. Hiki iā ʻoe ke lawe i ke kikowaena maʻalahi. A ma ka laulā, no kaʻu mau kumu e lawa kēia. Akā, no ka mea ʻaʻole wau i uku no ka server mai kaʻu ʻeke ponoʻī, ua hoʻoholo wau e lawe me kahi ʻāpana liʻiliʻi i lawa ia inā mākou e kau i kahi kikowaena pūnaewele, kā mākou kikowaena SMTP ponoʻī, VPN, etc. Eia hou, hiki iā ʻoe ke hoʻonohonoho i kahi bot Telegram a ʻaʻohe pilikia me ka pāpā ʻia. No laila, ua koho wau iā Amsterdam a me kēia mau ʻāpana.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

Ma ke ʻano o ke kamaʻilio ʻana me ka hāmeʻa, ua koho ʻo vim2 i kahi pilina ssh hoʻohuli a, e like me ka hana i hōʻike ʻia, ʻaʻole ia ka mea maikaʻi loa. Inā nalowale ka pilina, paʻa ke kikowaena i ke awa a ʻaʻole hiki ke hoʻohui ʻia ma o ia no kekahi manawa. No laila, ʻoi aku ka maikaʻi o ka hoʻohana ʻana i nā ala kamaʻilio ʻē aʻe, no ka laʻana VPN. I ka wā e hiki mai ana ua makemake au e hoʻololi i VPN, akā ʻaʻohe manawa.

ʻAʻole wau e hele i nā kikoʻī o ka hoʻonohonoho ʻana i kahi pā ahi, kaohi ʻana i nā kuleana, ka hoʻopau ʻana i nā pilina ssh aʻa a me nā ʻano ʻē aʻe o ka hoʻonohonoho ʻana i kahi VPS. Makemake wau e manaʻoʻiʻo ua ʻike mua ʻoe i nā mea āpau. No kahi pilina mamao, hana wau i mea hoʻohana hou ma ke kikowaena.

adduser vimssh

Hoʻopuka wau i nā kī pili ssh ma kā mākou lako.

ssh-keygen

A kope wau iā lākou i kā mākou kikowaena.

ssh-copy-id [email protected]

Ma kā mākou hāmeʻa, hana wau i kahi pilina ssh hoʻohuli ma kēlā me kēia pahu.

[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

E hoʻolohe i ka port 8083: hoʻoholo ia i ke awa aʻu e hoʻohana ai e hoʻopili ai ma o ka ssh reverse. Hoʻohui i ka hoʻomaka a hoʻomaka.

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

Hiki iā ʻoe ke ʻike i ke kūlana:

sudo systemctl status autossh.service

I kēia manawa, ma kā mākou kikowaena VPS, inā mākou e holo:

ssh -p 8083 khadas@localhost

A laila hele wau i kaʻu ʻāpana hoʻāʻo o ka lako. A mai ka lakohana hiki iaʻu ke hoʻouna aku i nā lāʻau a me nā ʻikepili ma o ssh i kaʻu kikowaena, he mea maʻalahi loa ia.

Hoʻohui pū ʻia

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE
Ke hoʻololi nei, e hoʻomaka kākou i ka hoʻomohala ʻana a me ka debugging

Phew, ʻo ia, ua wehewehe wau i nā nodes a pau. ʻO ka manawa kēia e hui pū ai. Hiki iā ʻoe ke ʻike i ke code Aia maanei.

ʻO kahi mea koʻikoʻi me ke code: ʻAʻole paha e hoʻomaka kēia papahana e like me kēia, no ka mea, ua hana ʻia no kahi hana kikoʻī, o kahi hoʻolālā kikoʻī. ʻOiai ke hāʻawi nei au i ke kumu kumu, e wehewehe mau wau i nā mea waiwai nui ma ʻaneʻi, pololei ma ka kikokikona, inā ʻaʻole hiki ke hoʻomaopopo ʻia.

I ka hoʻomaka, hoʻomaka wau i ka gps, gpio a hoʻomaka i kahi pae hoʻonohonoho kaʻawale.

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

He mea maʻalahi ka mea hoʻonohonoho: ʻike ia e ʻike inā ua hiki mai ka manawa e hoʻouna ai i nā leka a me ke ʻano o ke kūlana hewa o kēia manawa. Inā loaʻa kahi hae hewa, a laila e hoʻomoe mākou i ka 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)

ʻO ka ʻāpana paʻakikī loa o kēia papahana ka mālama ʻana i ka pilina ssh hope no kēlā me kēia hoʻāʻo. Hoʻopili ʻia kēlā me kēia hoʻāʻo i ka hoʻonohonoho hou ʻana i ka ʻīpuka paʻamau a me ka server DNS. No ka mea, ʻaʻohe mea heluhelu, e ʻike ʻoe ʻaʻole holo ke kaʻaahi ma luna o ke kaʻa lāʻau. ʻO ka mea i loaʻa ka hua Easter e loaʻa i ka lole.

No ka hana ʻana i kēia, hana wau i kahi papa hoʻokele kaʻawale -set-mark 0x2 a me kahi lula e hoʻohuli hou i ke kaʻa.

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

Hiki iā ʻoe ke aʻo hou e pili ana i ka hana ʻana heluhelu i kēia ʻatikala.

Ma hope o koʻu hele ʻana i kahi loop pau ʻole, kahi i loaʻa iā mākou kahi papa inoa o nā modem pili (e ʻike inā ua loli koke ka hoʻonohonoho pūnaewele).

network_list = getNetworklist()

He mea maʻalahi loa ka loaʻa ʻana o ka papa inoa o nā kikowaena pūnaewele.

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

Ma hope o ka loaʻa ʻana o ka papa inoa, hoʻonoho wau i nā helu IP i nā interface āpau, e like me kaʻu i hōʻike ai ma ke kiʻi ma ka mokuna e pili ana i ka 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")

A laila hele wale wau i kēlā me kēia interface i kahi loop. A hoʻonohonoho wau i kēlā me kēia 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'")

Nānā wau i ka interface no ka hana, inā ʻaʻohe pūnaewele, a laila hana wau i nā hewa. Inā loaʻa kahi pūnaewele, a laila ua hiki i ka manawa e hana ai!

Maʻaneʻi wau e hoʻonohonoho i ka routing ssh i kēia interface (inā ʻaʻole i hana ʻia), e hoʻouna i nā hewa i ke kikowaena inā hiki mai ka manawa, e hoʻouna i nā lāʻau a hope loa e holo i ka wikiwiki a mālama i nā lāʻau i kahi faila 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()
#и далее тестируем скорость и сохраняем логи. 

Pono e haʻi i ka hana o ka hoʻonohonoho ʻana i ka ssh reverse.

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

A ʻoiaʻiʻo, pono ʻoe e hoʻohui i kēia nani a pau i ka hoʻomaka. No ka hana ʻana i kēia, hana wau i kahi faila:

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

A ke kākau nei au i loko:

[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

Huli au i ka hoʻouka ʻana a hoʻomaka!

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

I kēia manawa hiki iaʻu ke ʻike i nā lāʻau o ka mea e hana nei me ka hoʻohana ʻana i ke kauoha:

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

Nā hualoaʻa

ʻAe, ʻo ka mea nui loa, he aha ka hopena? Eia kekahi mau kiʻi i hiki iaʻu ke hopu i ka wā o ka hoʻomohala ʻana a me ka hana debugging. Ua kūkulu ʻia nā kiʻi me ka gnuplot me kēia ʻatikala.

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

ʻO ka ʻike mua me ka mea hoʻohana Tele2, aʻu i alakaʻi ai no kekahi mau lā.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

Maʻaneʻi ua hoʻohana au i kahi kikowaena ana dynamic. Hana nā ana wikiwiki, akā loli nui, akā ʻike ʻia kekahi waiwai awelika, a hiki ke loaʻa kēia ma ke kānana ʻana i ka ʻikepili, no ka laʻana, me ka neʻe ʻana.

Ma hope aku ua kūkulu au i kekahi mau kiʻi no nā mea lawelawe kelepona ʻē aʻe. I kēia hihia, ua loaʻa hoʻokahi kikowaena hoʻāʻo, a he hoihoi loa nā hopena.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

E like me kāu e ʻike ai, paʻa loa ke kumuhana no ka noiʻi a me ka hoʻoili ʻana i kēia ʻikepili, a maopopo ʻaʻole e mau no nā pule ʻelua o ka hana. Akā…

Ka hopena o ka hana

Ua hoʻopau koke ʻia ka hana ma muli o nā kūlana ma waho o koʻu mana. ʻO kekahi o nā nāwaliwali o kēia papahana, i koʻu manaʻo kumuhana, ʻo ia ka modem, ʻaʻole makemake maoli e hana like me nā modem ʻē aʻe, a hana i kēlā mau hana hoʻopunipuni i kēlā me kēia manawa i hoʻouka ʻia. No kēia mau kumu, nui ka nui o nā hiʻohiʻona modem ʻē aʻe; ʻo ka mea maʻamau aia lākou i ka ʻano Mini PCI-e a hoʻokomo ʻia i loko o ka hāmeʻa a ʻoi aku ka maʻalahi o ka hoʻonohonoho ʻana. Akā, he moʻolelo ʻokoʻa loa kēlā. Ua hoihoi ka papahana a ua hauʻoli loa au i ka hiki iaʻu ke komo i loko.

ʻO ka hoʻāʻo wikiwiki ʻana ma kekahi mau modem LTE

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka