பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

தனிமைப்படுத்தலின் போது, ​​பல செல்லுலார் ஆபரேட்டர்களுக்கான LTE மோடம்களின் வேகத்தை அளவிடுவதற்கான ஒரு சாதனத்தின் வளர்ச்சியில் பங்கேற்க நான் முன்வந்தேன்.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

LTE இணைப்பைப் பயன்படுத்தி உபகரணங்களை நிறுவும் போது எந்த செல்லுலார் ஆபரேட்டர் தனக்கு மிகவும் உகந்தது என்பதை புரிந்து கொள்ள வாடிக்கையாளர் வெவ்வேறு புவியியல் இடங்களில் உள்ள பல்வேறு தொலைத்தொடர்பு ஆபரேட்டர்களின் வேகத்தை மதிப்பீடு செய்ய விரும்பினார், எடுத்துக்காட்டாக, வீடியோ ஒளிபரப்புகளுக்கு. அதே நேரத்தில், விலையுயர்ந்த உபகரணங்கள் இல்லாமல், சிக்கலை முடிந்தவரை எளிமையாகவும் மலிவாகவும் தீர்க்க வேண்டும்.

பணி எளிமையானது மற்றும் அறிவு-தீவிரமானது அல்ல என்பதை நான் இப்போதே கூறுவேன்; நான் என்ன சிக்கல்களை சந்தித்தேன், அவற்றை எவ்வாறு தீர்த்தேன் என்பதை நான் உங்களுக்கு சொல்கிறேன். எனவே, போகலாம்.

கருத்து

LTE இணைப்பின் வேகத்தை அளவிடுவது மிகவும் சிக்கலான விஷயம்: நீங்கள் சரியான உபகரணங்கள் மற்றும் அளவீட்டு நுட்பத்தைத் தேர்வு செய்ய வேண்டும், மேலும் செல்லுலார் நெட்வொர்க்கின் இடவியல் மற்றும் செயல்பாட்டைப் பற்றி நன்கு புரிந்து கொள்ள வேண்டும். கூடுதலாக, வேகம் பல காரணிகளால் பாதிக்கப்படலாம்: ஒரு கலத்தில் உள்ள சந்தாதாரர்களின் எண்ணிக்கை, வானிலை நிலைமைகள், ஒரு கலத்திலிருந்து செல் வரை கூட நெட்வொர்க் டோபாலஜி காரணமாக வேகம் வியத்தகு முறையில் மாறுபடும். பொதுவாக, இது ஒரு பெரிய எண்ணிக்கையிலான தெரியாதவர்களின் பிரச்சனையாகும், மேலும் ஒரு தொலைதொடர்பு ஆபரேட்டர் மட்டுமே அதை சரியாக தீர்க்க முடியும்.

ஆரம்பத்தில், வாடிக்கையாளர் ஆபரேட்டர்களின் தொலைபேசிகளைக் கொண்டு கூரியரை ஓட்ட விரும்பினார், நேரடியாக தொலைபேசியில் அளவீடுகளை எடுக்கவும், பின்னர் வேக அளவீட்டு முடிவுகளை நோட்புக்கில் எழுதவும் விரும்பினார். lte நெட்வொர்க்குகளின் வேகத்தை அளவிடுவதற்கான எனது தீர்வு, சிறந்ததாக இல்லாவிட்டாலும், சிக்கலை தீர்க்கிறது.

நேரமின்மை காரணமாக, நான் முடிவுகளை எடுத்தது வசதிக்காகவோ அல்லது நடைமுறைக்கு ஆதரவாகவோ அல்ல, மாறாக வளர்ச்சியின் வேகத்திற்கு ஆதரவாக. எடுத்துக்காட்டாக, சேவையகத்தையும் ஒவ்வொரு கிளையண்டையும் அமைப்பதில் நேரத்தை மிச்சப்படுத்த, மிகவும் நடைமுறை VPNக்கு பதிலாக, ரிமோட் அணுகலுக்கு ரிவர்ஸ் ssh பயன்படுத்தப்பட்டது.

தொழில்நுட்ப பணி

என கட்டுரையில் கூறப்பட்டுள்ளது தொழில்நுட்ப விவரக்குறிப்புகள் இல்லாமல்: வாடிக்கையாளர் ஏன் அதை விரும்பவில்லை: தொழில்நுட்ப விவரக்குறிப்புகள் இல்லாமல் வேலை செய்ய வேண்டாம்! ஒருபோதும், எங்கும்!

தொழில்நுட்ப பணி மிகவும் எளிமையானது, இறுதி பயனரின் புரிதலுக்காக அதை சிறிது விரிவாக்குவேன். தொழில்நுட்ப தீர்வுகள் மற்றும் உபகரணங்களின் தேர்வு வாடிக்கையாளரால் கட்டளையிடப்பட்டது. எனவே, தொழில்நுட்ப விவரக்குறிப்பு, அனைத்து ஒப்புதல்களுக்குப் பிறகு:

ஒற்றை பலகை கணினியை அடிப்படையாகக் கொண்டது விம்2 H மோடம்கள் வழியாக lte இணைப்புகளுக்கு வேக சோதனையை உருவாக்கவும்uawei e3372h - 153 பல தொலைத்தொடர்பு ஆபரேட்டர்கள் (ஒன்று முதல் n வரை). UART வழியாக இணைக்கப்பட்ட GPS ரிசீவரிலிருந்து ஆயத்தொலைவுகளைப் பெறுவதும் அவசியம். சேவையைப் பயன்படுத்தி வேக அளவீடுகளைச் செய்யுங்கள் www.speedtest.net மற்றும் அவற்றை ஒரு அட்டவணையில் வைக்கவும்:

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

csv வடிவத்தில் அட்டவணை. பின்னர் ஒவ்வொரு 6 மணி நேரத்திற்கும் இந்த அடையாளத்தை மின்னஞ்சல் மூலம் அனுப்பவும். பிழைகள் ஏற்பட்டால், GPIO உடன் இணைக்கப்பட்டுள்ள LED ஐ சிமிட்டவும்.

பல ஒப்புதல்களுக்குப் பிறகு, தொழில்நுட்ப விவரக்குறிப்புகளை இலவச வடிவத்தில் விவரித்தேன். ஆனால் பணியின் பொருள் ஏற்கனவே தெரியும். எல்லாவற்றுக்கும் ஒரு வாரம் கொடுக்கப்பட்டது. ஆனால் உண்மையில் அது மூன்று வாரங்கள் நீடித்தது. எனது முக்கிய வேலைக்குப் பிறகு மற்றும் வார இறுதி நாட்களில் மட்டுமே இதைச் செய்தேன் என்ற உண்மையை இது கணக்கில் எடுத்துக்கொள்கிறது.

வேக அளவீட்டு சேவை மற்றும் வன்பொருளைப் பயன்படுத்துவதற்கு வாடிக்கையாளர் முன்கூட்டியே ஒப்புக்கொண்டார் என்பதை இங்கே மீண்டும் கவனத்தில் கொள்ள விரும்புகிறேன், இது எனது திறன்களை பெரிதும் மட்டுப்படுத்தியது. பட்ஜெட்டும் குறைவாகவே இருந்ததால், சிறப்பு எதுவும் வாங்கப்படவில்லை. எனவே இந்த விதிகளின்படி நாங்கள் விளையாட வேண்டியிருந்தது.

கட்டிடக்கலை மற்றும் மேம்பாடு

திட்டம் எளிமையானது மற்றும் வெளிப்படையானது. எனவே, எந்த சிறப்புக் கருத்தும் இல்லாமல் விட்டுவிடுகிறேன்.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

இந்த மொழியில் எனக்கு எந்த அனுபவமும் இல்லை என்ற போதிலும், முழு திட்டத்தையும் பைத்தானில் செயல்படுத்த முடிவு செய்தேன். வளர்ச்சியை விரைவுபடுத்தக்கூடிய ஆயத்த எடுத்துக்காட்டுகள் மற்றும் தீர்வுகள் இருப்பதால் நான் அதைத் தேர்ந்தெடுத்தேன். எனவே, பைத்தானில் எனது முதல் அனுபவத்தை கடிந்து கொள்ள வேண்டாம் என்று அனைத்து தொழில்முறை புரோகிராமர்களையும் நான் கேட்டுக்கொள்கிறேன், மேலும் எனது திறன்களை மேம்படுத்துவதற்கான ஆக்கபூர்வமான விமர்சனங்களைக் கேட்பதில் நான் எப்போதும் மகிழ்ச்சியடைகிறேன்.

மேலும் செயல்பாட்டில், பைத்தானில் இரண்டு இயங்கும் பதிப்புகள் 2 மற்றும் 3 இருப்பதைக் கண்டுபிடித்தேன், இதன் விளைவாக நான் மூன்றில் குடியேறினேன்.

வன்பொருள் முனைகள்

ஒற்றைத் தட்டு விம்2

எனது பிரதான இயந்திரமாக ஒற்றை பலகை கணினி வழங்கப்பட்டது விம்2

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

ஸ்மார்ட் ஹோம் மற்றும் ஸ்மார்ட்-டிவிக்கான சிறந்த, சக்திவாய்ந்த மீடியா செயலி, ஆனால் இந்த பணிக்கு மிகவும் பொருத்தமற்றது, அல்லது, மோசமாக பொருத்தமானது என்று சொல்லலாம். எடுத்துக்காட்டாக, அதன் முக்கிய OS ஆண்ட்ராய்டு, மற்றும் லினக்ஸ் ஒரு இரண்டாம் நிலை OS ஆகும், அதன்படி லினக்ஸின் கீழ் உள்ள அனைத்து முனைகள் மற்றும் இயக்கிகளின் உயர்தர செயல்பாட்டிற்கு யாரும் உத்தரவாதம் அளிக்கவில்லை. சில சிக்கல்கள் இந்த இயங்குதளத்தின் யூ.எஸ்.பி டிரைவர்களுடன் தொடர்புடையவை என்று நான் கருதுகிறேன், எனவே இந்த போர்டில் எதிர்பார்த்தபடி மோடம்கள் வேலை செய்யவில்லை. இது மிகவும் மோசமான மற்றும் சிதறிய ஆவணங்களையும் கொண்டுள்ளது, எனவே ஒவ்வொரு செயல்பாடும் கப்பல்துறைகள் மூலம் தோண்டுவதற்கு நிறைய நேரம் எடுத்தது. GPIO உடனான சாதாரண வேலை கூட நிறைய இரத்தத்தை எடுத்தது. எடுத்துக்காட்டாக, எல்இடியை அமைக்க எனக்கு பல மணிநேரம் ஆனது. ஆனால், புறநிலையாக இருக்க, இது எந்த வகையான ஒற்றை-பலகை என்பது அடிப்படையில் முக்கியமல்ல, முக்கிய விஷயம் என்னவென்றால், அது வேலை செய்தது மற்றும் யூ.எஸ்.பி போர்ட்கள் இருந்தன.

முதலில், நான் இந்த போர்டில் லினக்ஸை நிறுவ வேண்டும். எல்லோருக்கும், இந்த ஒற்றைப் பலகை முறையைக் கையாள்பவர்களுக்காகவும் ஆவணங்களைத் தேடாமல் இருப்பதற்காக, நான் இந்த அத்தியாயத்தை எழுதுகிறேன்.

லினக்ஸை நிறுவ இரண்டு விருப்பங்கள் உள்ளன: வெளிப்புற SD கார்டில் அல்லது உள் MMC இல். கார்டுடன் அதை எவ்வாறு வேலை செய்வது என்பதைக் கண்டுபிடிக்க ஒரு மாலை செலவிட்டேன், எனவே அதை எம்எம்சியில் நிறுவ முடிவு செய்தேன், இருப்பினும் சந்தேகத்திற்கு இடமின்றி வெளிப்புற அட்டையுடன் வேலை செய்வது மிகவும் எளிதாக இருக்கும்.

ஃபார்ம்வேர் பற்றி இங்கே வக்கிரமாக சொல்லப்பட்டது. நான் விசித்திரமான மொழியிலிருந்து ரஷ்ய மொழியில் மொழிபெயர்க்கிறேன். போர்டை ப்ளாஷ் செய்ய, நான் வன்பொருள் UART ஐ இணைக்க வேண்டும். அதை இணைத்தார் பின்வருமாறு.

  • கருவி பின் GND: <—> VIMகளின் GPIO இன் பின்17
  • கருவி பின் TXD: <—> VIMகளின் GPIO இன் பின்18 (Linux_Rx)
  • கருவி பின் RXD: <—> VIM களின் GPIO இன் Pin19 (Linux_Tx)
  • கருவி பின் VCC: <—> VIMகளின் GPIO இன் பின்20

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

அதன் பிறகு, நான் ஃபார்ம்வேரை பதிவிறக்கம் செய்தேன் இங்கிருந்து. குறிப்பிட்ட ஃபார்ம்வேர் பதிப்பு VIM1_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.

இந்த ஃபார்ம்வேரைப் பதிவேற்ற, எனக்கு பயன்பாடுகள் தேவை. இதைப் பற்றிய கூடுதல் விவரங்கள் இங்கே. நான் அதை விண்டோஸின் கீழ் ஒளிரச் செய்ய முயற்சிக்கவில்லை, ஆனால் லினக்ஸின் கீழ் ஃபார்ம்வேரைப் பற்றி சில வார்த்தைகளை நான் உங்களுக்குச் சொல்ல வேண்டும். முதலில், நான் அறிவுறுத்தல்களின்படி பயன்பாடுகளை நிறுவுவேன்.

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

ஆன்ட்... எதுவும் வேலை செய்யாது. நிறுவல் ஸ்கிரிப்ட்களைத் திருத்துவதற்கு இரண்டு மணிநேரம் செலவழித்தேன், அதனால் எல்லாம் எனக்கு சரியாக நிறுவப்படும். நான் அங்கு என்ன செய்தேன் என்று எனக்கு நினைவில் இல்லை, ஆனால் குதிரைகளுடன் அந்த சர்க்கஸ் இருந்தது. எனவே கவனமாக இருங்கள். ஆனால் இந்த பயன்பாடுகள் இல்லாமல் vim2 ஐ மேலும் சித்திரவதை செய்வதில் எந்த அர்த்தமும் இல்லை. அவருடன் குழப்பமடையாமல் இருப்பது நல்லது!

நரகத்தின் ஏழு வட்டங்கள், ஸ்கிரிப்ட் உள்ளமைவு மற்றும் நிறுவலுக்குப் பிறகு, வேலை செய்யும் பயன்பாடுகளின் தொகுப்பைப் பெற்றேன். எனது லினக்ஸ் கணினியுடன் USB வழியாக போர்டை இணைத்தேன், மேலும் மேலே உள்ள வரைபடத்தின்படி UART ஐ இணைத்தேன்.
வன்பொருள் மற்றும் மென்பொருள் பிழைக் கட்டுப்பாடு இல்லாமல் 115200 வேகத்தில் எனக்குப் பிடித்த மினிகாம் டெர்மினலை அமைக்கிறேன். மற்றும் ஆரம்பிக்கலாம்.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

UART முனையத்தில் VIM2 ஐ ஏற்றும்போது, ​​ஏற்றுவதை நிறுத்த ஸ்பேஸ்பார் போன்ற விசையை அழுத்துகிறேன். வரி தோன்றிய பிறகு

kvim2# 

நான் கட்டளையை உள்ளிடுகிறேன்:

kvim2# run update

நாங்கள் ஏற்றும் ஹோஸ்டில், நான் செயல்படுத்துகிறேன்:

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

அவ்வளவுதான், ஐயா. நான் சோதித்தேன், போர்டில் லினக்ஸ் உள்ளது. உள்நுழைவு/கடவுச்சொல் khadas:khadas.

அதன் பிறகு, சில சிறிய ஆரம்ப அமைப்புகள். மேலும் வேலைக்காக, நான் சூடோவுக்கான கடவுச்சொல்லை முடக்குகிறேன் (ஆம், பாதுகாப்பானது அல்ல, ஆனால் வசதியானது).

sudo visudo

படிவத்தில் வரியைத் திருத்தி சேமிக்கிறேன்

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

பின்னர் நான் தற்போதைய இடத்தை மாற்றுகிறேன், அதனால் நேரம் மாஸ்கோவில் இருக்கும், இல்லையெனில் அது கிரீன்விச்சில் இருக்கும்.

sudo timedatectl set-timezone Europe/Moscow

அல்லது

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

உங்களுக்கு கடினமாக இருந்தால், இந்த பலகையைப் பயன்படுத்த வேண்டாம்; ராஸ்பெர்ரி பை சிறந்தது. நேர்மையாக.

Modem Huawei e3372h – 153

இந்த மோடம் எனக்கு இரத்தத்தின் குறிப்பிடத்தக்க ஆதாரமாக இருந்தது, உண்மையில், இது முழு திட்டத்திற்கும் இடையூறாக மாறியது. பொதுவாக, இந்த சாதனங்களுக்கான "மோடம்" என்ற பெயர் வேலையின் சாரத்தை பிரதிபலிக்காது: இது ஒரு சக்திவாய்ந்த கலவையாகும், இந்த வன்பொருளில் ஒரு கூட்டு சாதனம் உள்ளது, இது இயக்கிகளை நிறுவும் பொருட்டு CD-ROM போல் பாசாங்கு செய்கிறது, பின்னர் பிணைய அட்டை பயன்முறைக்கு மாறுகிறது.

கட்டடக்கலை ரீதியாக, லினக்ஸ் பயனரின் பார்வையில், அனைத்து அமைப்புகளுக்கும் பிறகு, இது போல் தெரிகிறது: மோடத்தை இணைத்த பிறகு, என்னிடம் ஒரு eth* நெட்வொர்க் இடைமுகம் உள்ளது, இது dhcp வழியாக IP முகவரி 192.168.8.100 மற்றும் இயல்புநிலை நுழைவாயிலைப் பெறுகிறது. 192.168.8.1 ஆகும்.

மற்றும் மிக முக்கியமான தருணம்! இந்த மோடம் மாதிரியானது மோடம் பயன்முறையில் வேலை செய்ய முடியாது, இது AT கட்டளைகளால் கட்டுப்படுத்தப்படுகிறது. எல்லாம் மிகவும் எளிமையானதாக இருக்கும், ஒவ்வொரு மோடத்திற்கும் PPP இணைப்புகளை உருவாக்கி, பின்னர் அவற்றுடன் செயல்படும். ஆனால் என் விஷயத்தில், "அவரே" (இன்னும் துல்லியமாக, udev விதிகளின்படி ஒரு லினக்ஸ் டைவர்), ஒரு eth இடைமுகத்தை உருவாக்கி அதற்கு dhcp வழியாக ஒரு IP முகவரியை ஒதுக்குகிறார்.

மேலும் குழப்பத்தைத் தவிர்ப்பதற்கு, "மோடம்" என்ற வார்த்தையை மறந்துவிட்டு, நெட்வொர்க் கார்டு மற்றும் கேட்வே என்று சொல்ல நான் பரிந்துரைக்கிறேன், ஏனெனில் சாராம்சத்தில், இது ஒரு புதிய நெட்வொர்க் கார்டை நுழைவாயிலுடன் இணைப்பது போன்றது.
ஒரு மோடம் இருக்கும் போது, ​​இது எந்த சிறப்புச் சிக்கலையும் ஏற்படுத்தாது, ஆனால் ஒன்றுக்கும் மேற்பட்ட, அதாவது n-துண்டுகள் இருக்கும்போது, ​​பின்வரும் பிணையப் படம் எழுகிறது.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

அதாவது, n நெட்வொர்க் கார்டுகள், அதே IP முகவரியுடன், ஒவ்வொன்றும் ஒரே இயல்புநிலை நுழைவாயில். ஆனால் உண்மையில், அவை ஒவ்வொன்றும் அதன் சொந்த ஆபரேட்டருடன் இணைக்கப்பட்டுள்ளன.

ஆரம்பத்தில், என்னிடம் ஒரு எளிய தீர்வு இருந்தது: ifconfig அல்லது ip கட்டளையைப் பயன்படுத்தி, அனைத்து இடைமுகங்களையும் அணைத்துவிட்டு, ஒன்றை இயக்கி அதைச் சோதிக்கவும். தீர்வு அனைவருக்கும் நன்றாக இருந்தது, மாற்றும் தருணங்களில் என்னால் சாதனத்துடன் இணைக்க முடியவில்லை. மாறுதல் அடிக்கடி மற்றும் வேகமாக இருப்பதால், உண்மையில் இணைக்க எனக்கு வாய்ப்பு இல்லை.

எனவே, மோடம்களின் ஐபி முகவரிகளை கைமுறையாக மாற்றி, ரூட்டிங் அமைப்புகளைப் பயன்படுத்தி போக்குவரத்தை இயக்கும் பாதையைத் தேர்ந்தெடுத்தேன்.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

மோடம்களுடனான எனது சிக்கல்கள் இது முடிவடையவில்லை: மின் சிக்கல்கள் ஏற்பட்டால், அவை விழுந்துவிட்டன, மேலும் USB மையத்திற்கு நல்ல நிலையான மின்சாரம் தேவைப்பட்டது. சக்தியை நேரடியாக மையத்திற்கு கடின சாலிடரிங் செய்வதன் மூலம் இந்த சிக்கலை நான் தீர்த்தேன். நான் எதிர்கொண்ட மற்றும் முழு திட்டத்தையும் அழித்த மற்றொரு சிக்கல்: சாதனத்தின் மறுதொடக்கம் அல்லது குளிர்ந்த தொடக்கத்திற்குப் பிறகு, எல்லா மோடம்களும் கண்டறியப்படவில்லை, எப்போதும் இல்லை, இது ஏன் நடந்தது, எந்த வழிமுறை மூலம் என்னால் தீர்மானிக்க முடியவில்லை. ஆனால் முதல் விஷயங்கள் முதலில்.

மோடம் சரியாக வேலை செய்ய, நான் usb-modeswitch தொகுப்பை நிறுவினேன்.

sudo apt update
sudo apt install -y usb-modeswitch

அதன் பிறகு, இணைத்த பிறகு, மோடம் சரியாகக் கண்டறியப்பட்டு udev துணை அமைப்பால் கட்டமைக்கப்படும். மோடத்தை இணைப்பதன் மூலம் சரிபார்க்கிறேன் மற்றும் நெட்வொர்க் தோன்றுகிறதா என்பதை உறுதிசெய்கிறேன்.
என்னால் தீர்க்க முடியாத மற்றொரு சிக்கல்: இந்த மோடமில் இருந்து நாங்கள் பணிபுரியும் ஆபரேட்டரின் பெயரை எவ்வாறு பெறுவது? ஆபரேட்டர் பெயர் மோடம் இணைய இடைமுகத்தில் 192.168.8.1 இல் உள்ளது. இது அஜாக்ஸ் கோரிக்கைகள் மூலம் தரவைப் பெறும் டைனமிக் வலைப்பக்கமாகும், எனவே வெறுமனே பக்கத்தை wget செய்து பெயரைப் பாகுபடுத்துவது வேலை செய்யாது. எனவே நான் ஒரு வலைப்பக்கத்தை எவ்வாறு உருவாக்குவது போன்றவற்றைப் பார்க்க ஆரம்பித்தேன், நான் ஒருவித முட்டாள்தனத்தை செய்கிறேன் என்பதை உணர்ந்தேன். இதன் விளைவாக, அவர் துப்பினார், மேலும் ஆபரேட்டர் Speedtest API ஐப் பயன்படுத்தி பெறத் தொடங்கினார்.

AT கட்டளைகள் வழியாக மோடமிற்கு அணுகல் இருந்தால் மிகவும் எளிதாக இருக்கும். அதை மறுகட்டமைப்பது, பிபிபி இணைப்பை உருவாக்குவது, ஐபியை ஒதுக்குவது, டெலிகாம் ஆபரேட்டரைப் பெறுவது போன்றவை சாத்தியமாகும். ஆனால் ஐயோ, எனக்கு வழங்கப்பட்டதை வைத்து வேலை செய்கிறேன்.

ஜிபிஎஸ்

எனக்கு வழங்கப்பட்ட GPS ரிசீவரில் UART இடைமுகமும் சக்தியும் இருந்தது. இது சிறந்த தீர்வு அல்ல, ஆனால் அது இன்னும் வேலை செய்யக்கூடியதாகவும் எளிமையாகவும் இருந்தது. ரிசீவர் இப்படி இருந்தது.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

உண்மையைச் சொல்வதென்றால், ஜிபிஎஸ் ரிசீவருடன் பணிபுரிவது இதுவே எனது முதல் முறை, ஆனால் நான் எதிர்பார்த்தபடி, எல்லாம் நீண்ட காலத்திற்கு முன்பே எங்களுக்காக சிந்திக்கப்பட்டது. எனவே நாங்கள் ஆயத்த தீர்வுகளைப் பயன்படுத்துகிறோம்.

முதலில், GPS ஐ இணைக்க uart_AO_B (UART_RX_AO_B, UART_TX_AO_B) ஐ இயக்குகிறேன்.

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

பின்னர் நான் அறுவை சிகிச்சையின் வெற்றியை சரிபார்க்கிறேன்.

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

இந்த கட்டளையானது டெவ்ட்ரீயை பறக்கும்போது திருத்துகிறது, இது மிகவும் வசதியானது.

இந்த செயல்பாட்டின் வெற்றிக்குப் பிறகு, ஜிபிஎஸ் டீமானை மறுதொடக்கம் செய்து நிறுவவும்.

khadas@Khadas:~$ sudo reboot

ஜிபிஎஸ் டீமானை நிறுவுகிறது. நான் எல்லாவற்றையும் நிறுவி, மேலும் உள்ளமைவுக்காக உடனடியாக துண்டிக்கிறேன்.

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

அமைப்புகள் கோப்பைத் திருத்துகிறது.

sudo vim /etc/default/gpsd

நான் UART ஐ நிறுவுகிறேன், அதில் GPS தொங்கும்.

DEVICES="/dev/ttyS4"

பின்னர் எல்லாவற்றையும் இயக்கி தொடங்குவோம்.

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

அதன் பிறகு, நான் ஜிபிஎஸ் இணைக்கிறேன்.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

GPS கம்பி என் கைகளில் உள்ளது, UART பிழைத்திருத்த கம்பிகள் என் விரல்களுக்குக் கீழே தெரியும்.

நான் gpsmon நிரலைப் பயன்படுத்தி ஜிபிஎஸ் செயல்பாட்டை மறுதொடக்கம் செய்து சரிபார்க்கிறேன்.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

இந்த ஸ்கிரீன்ஷாட்டில் நீங்கள் செயற்கைக்கோள்களைப் பார்க்க முடியாது, ஆனால் நீங்கள் ஜிபிஎஸ் ரிசீவருடன் தொடர்பு கொள்ள முடியும், இதன் பொருள் எல்லாம் நன்றாக இருக்கிறது.

பைத்தானில், இந்த டீமானுடன் பணிபுரிவதற்கான பல விருப்பங்களை நான் முயற்சித்தேன், ஆனால் பைதான் 3 உடன் சரியாக வேலை செய்யும் ஒன்றைத் தீர்த்தேன்.

தேவையான நூலகத்தை நிறுவுகிறேன்.

sudo -H pip3 install gps3 

நான் வேலைக் குறியீட்டை செதுக்குகிறேன்.

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

நான் ஆயத்தொலைவுகளைப் பெற வேண்டும் என்றால், இது பின்வரும் அழைப்பின் மூலம் செய்யப்படுகிறது:

longitude, latitude = getPositionData(agps_thread)

மேலும் 1-10 வினாடிகளுக்குள் நான் ஒருங்கிணைப்பைப் பெறுவேன் அல்லது இல்லை. ஆம், ஆயத்தொலைவுகளைப் பெற எனக்கு பத்து முயற்சிகள் இருந்தன. உகந்ததாக இல்லை, வளைந்த மற்றும் வளைந்திருக்கும், ஆனால் அது வேலை செய்கிறது. ஜி.பி.எஸ்.க்கு மோசமான வரவேற்பு இருப்பதால் எப்போதும் டேட்டாவைப் பெற முடியாது என்பதால் இதைச் செய்ய முடிவு செய்தேன். தரவைப் பெற நீங்கள் காத்திருந்தால், நீங்கள் தொலைதூர அறையில் பணிபுரிந்தால், நிரல் இந்த இடத்தில் முடக்கப்படும். எனவே, நான் இந்த நேர்த்தியான விருப்பத்தை செயல்படுத்தினேன்.

கொள்கையளவில், அதிக நேரம் இருந்தால், UART வழியாக நேரடியாக GPS இலிருந்து தரவைப் பெற முடியும், அதை ஒரு தனி நூலில் அலசவும் மற்றும் அதனுடன் வேலை செய்யவும். ஆனால் நேரம் இல்லை, எனவே கொடூரமான அசிங்கமான குறியீடு. ஆம், நான் வெட்கப்படவில்லை.

ஒளி உமிழும் டையோடு

எல்.ஈ.டி இணைப்பது எளிமையானது மற்றும் அதே நேரத்தில் கடினமாக இருந்தது. முக்கிய சிரமம் என்னவென்றால், கணினியில் உள்ள பின் எண் போர்டில் உள்ள பின் எண்ணுடன் ஒத்துப்போவதில்லை மற்றும் ஆவணங்கள் இடது கையால் எழுதப்பட்டதால். OS இல் உள்ள வன்பொருள் பின் எண் மற்றும் பின் எண்ணை ஒப்பிட, நீங்கள் கட்டளையை இயக்க வேண்டும்:

gpio readall

கணினி மற்றும் போர்டில் உள்ள முள் கடித அட்டவணை காட்டப்படும். அதன் பிறகு நான் ஏற்கனவே OS இல் பின்னை இயக்க முடியும். என் விஷயத்தில் LED இணைக்கப்பட்டுள்ளது GPIOH_5.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

நான் GPIO பின்னை வெளியீட்டு பயன்முறைக்கு மாற்றுகிறேன்.

gpio -g mode 421 out

நான் பூஜ்ஜியத்தை எழுதுகிறேன்.

gpio -g write 421 0

ஒன்றை எழுதுகிறேன்.

gpio -g write 421 1

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை
"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)

இப்போது, ​​​​பிழைகள் ஏற்பட்டால், நான் error_blink() என்று அழைக்கிறேன் மற்றும் LED அழகாக ஒளிரும்.

மென்பொருள் முனைகள்

Speedtest API

speedtest.net சேவைக்கு அதன் சொந்த python-API உள்ளது என்பது ஒரு பெரிய மகிழ்ச்சி, நீங்கள் பார்க்கலாம் கிட்ஹப்.

நல்ல விஷயம் என்னவென்றால், மூலக் குறியீடுகளும் பார்க்கக்கூடியவை. இந்த API உடன் எவ்வாறு வேலை செய்வது (எளிய எடுத்துக்காட்டுகள்) இல் காணலாம் தொடர்புடைய பிரிவு.

நான் பின்வரும் கட்டளையுடன் பைதான் நூலகத்தை நிறுவுகிறேன்.

sudo -H pip3 install speedtest-cli

எடுத்துக்காட்டாக, மென்பொருளிலிருந்து நேரடியாக உபுண்டுவில் வேக சோதனையாளரை நிறுவலாம். இது அதே பைதான் பயன்பாடாகும், இது கன்சோலில் இருந்து நேரடியாக தொடங்கப்படலாம்.

sudo apt install speedtest-cli -y

உங்கள் இணைய வேகத்தை அளவிடவும்.

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

இதன் விளைவாக, நான் செய்ததைப் போலவே. இந்த வேகச் சோதனையின் மூலக் குறியீடுகளை எனது திட்டத்தில் முழுமையாகச் செயல்படுத்த, அவற்றை நான் பெற வேண்டியிருந்தது. மிக முக்கியமான பணிகளில் ஒன்று, டெலிகாம் ஆபரேட்டரின் பெயரைத் தட்டில் மாற்றுவதற்காகப் பெறுவது.

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

இங்கே, எல்லாம் மிகவும் எளிமையானதாகத் தோன்றினாலும், எல்லாம் அவ்வளவு எளிதல்ல. ஆரம்பத்தில், சேவையக அளவுரு சமமாக இருந்தது [], அவர்கள் சொல்கிறார்கள், சிறந்த சேவையகத்தைத் தேர்வுசெய்க. இதன் விளைவாக, நான் சீரற்ற சேவையகங்களைக் கொண்டிருந்தேன், நீங்கள் யூகித்தபடி, மாறி வேகம். இது மிகவும் சிக்கலான தலைப்பு, நிலையான சேவையகத்தைப் பயன்படுத்தினால், நிலையான அல்லது மாறும், ஆராய்ச்சி தேவை. ஆனால் ஒரு சோதனை சேவையகத்தையும் நிலையான ஒன்றையும் மாறும் வகையில் தேர்ந்தெடுக்கும் போது பீலைன் ஆபரேட்டருக்கான வேக அளவீட்டு வரைபடங்களின் உதாரணம் இங்கே உள்ளது.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை
டைனமிக் சர்வரைத் தேர்ந்தெடுக்கும்போது வேகத்தை அளவிடுவதன் விளைவு.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை
ஒரு கண்டிப்பாக தேர்ந்தெடுக்கப்பட்ட ஒரு சேவையகத்துடன் வேக சோதனையின் முடிவு.

சோதனையின் போது, ​​இரண்டு இடங்களிலும் "ஃபர்" உள்ளது, மேலும் அது கணித முறைகளைப் பயன்படுத்தி அகற்றப்பட வேண்டும். ஆனால் ஒரு நிலையான சேவையகத்துடன் இது சற்று குறைவாக உள்ளது மற்றும் வீச்சு மிகவும் நிலையானது.
பொதுவாக, இது ஒரு பெரிய ஆராய்ச்சி இடம். மேலும் iperf பயன்பாட்டைப் பயன்படுத்தி எனது சேவையகத்தின் வேகத்தை அளவிடுவேன். ஆனால் நாங்கள் தொழில்நுட்ப விவரக்குறிப்புகளுக்கு ஒட்டிக்கொள்கிறோம்.

மின்னஞ்சல் அனுப்புதல் மற்றும் பிழைகள்

அஞ்சல் அனுப்ப, நான் பல டஜன் வெவ்வேறு விருப்பங்களை முயற்சித்தேன், ஆனால் இறுதியில் நான் பின்வருவனவற்றைச் செய்தேன். நான் Yandex இல் ஒரு அஞ்சல் பெட்டியை பதிவு செய்தேன், பின்னர் எடுத்தேன் அஞ்சல் அனுப்புவதற்கு இது ஒரு எடுத்துக்காட்டு. நான் அதை சரிபார்த்து அதை நிரலில் செயல்படுத்தினேன். இந்த உதாரணம் ஜிமெயிலில் இருந்து அனுப்புதல் உள்ளிட்ட பல்வேறு விருப்பங்களை ஆராய்கிறது. எனது அஞ்சல் சேவையகத்தை அமைப்பதில் நான் கவலைப்பட விரும்பவில்லை, அதற்கு நேரமும் இல்லை, ஆனால் அது பின்னர் மாறியது போல், அதுவும் வீணானது.

அட்டவணையின்படி பதிவுகள் அனுப்பப்பட்டன, ஒரு இணைப்பு இருந்தால், ஒவ்வொரு 6 மணி நேரத்திற்கும்: 00 மணி, 06 காலை, 12 மற்றும் 18 மணி. அதை பின்வருமாறு அனுப்பினார்.

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

பிழைகளும் ஆரம்பத்தில் அனுப்பப்பட்டன. தொடங்குவதற்கு, அவை பட்டியலில் குவிக்கப்பட்டன, பின்னர் இணைப்பு இருந்தால், திட்டமிடலைப் பயன்படுத்தி அனுப்பப்படும். இருப்பினும், ஒரு நாளைக்கு அனுப்பப்படும் செய்திகளின் எண்ணிக்கையில் யாண்டெக்ஸ் வரம்பைக் கொண்டிருப்பதால் சிக்கல்கள் எழுந்தன (இது வலி, சோகம் மற்றும் அவமானம்). ஒரு நிமிடத்திற்கு கூட அதிக எண்ணிக்கையிலான பிழைகள் இருக்கக்கூடும் என்பதால், அஞ்சல் மூலம் பிழைகளை அனுப்புவதை நாங்கள் கைவிட வேண்டியிருந்தது. எனவே Yandex சேவைகள் மூலம் அத்தகைய பிரச்சனை பற்றிய தகவலை தானாகவே அனுப்பும் போது நினைவில் கொள்ளுங்கள்.

கருத்து சேவையகம்

தொலைதூர வன்பொருளுக்கான அணுகலைப் பெறுவதற்கும், அதைத் தனிப்பயனாக்கி மறுகட்டமைப்பதற்கும், எனக்கு வெளிப்புற சேவையகம் தேவைப்பட்டது. பொதுவாக, சரியாகச் சொல்வதானால், எல்லா தரவையும் சேவையகத்திற்கு அனுப்புவதும், வலை இடைமுகத்தில் அனைத்து அழகான வரைபடங்களையும் உருவாக்குவதும் சரியாக இருக்கும். ஆனால் ஒரே நேரத்தில் அல்ல.

VPSக்கு நான் தேர்ந்தெடுத்தேன் ruvds.com. நீங்கள் எளிமையான சேவையகத்தை எடுத்துக் கொள்ளலாம். பொதுவாக, எனது நோக்கங்களுக்காக இது போதுமானதாக இருக்கும். ஆனால் நான் எனது சொந்த பாக்கெட்டிலிருந்து சேவையகத்திற்கு பணம் செலுத்தாததால், அதை ஒரு சிறிய இருப்புடன் எடுக்க முடிவு செய்தேன், இதனால் நாங்கள் ஒரு வலை இடைமுகம், எங்கள் சொந்த SMTP சேவையகம், VPN போன்றவற்றை வரிசைப்படுத்தினால் போதும். கூடுதலாக, டெலிகிராம் போட்டை அமைக்க முடியும் மற்றும் அது தடுக்கப்படுவதில் சிக்கல் இல்லை. எனவே, நான் ஆம்ஸ்டர்டாம் மற்றும் பின்வரும் அளவுருக்களை தேர்ந்தெடுத்தேன்.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

வன்பொருளுடன் தொடர்புகொள்வதற்கான ஒரு முறையாக, vim2 ஒரு தலைகீழ் ssh இணைப்பைத் தேர்ந்தெடுத்தது, நடைமுறையில் காட்டப்பட்டுள்ளபடி, இது சிறந்ததல்ல. இணைப்பு துண்டிக்கப்பட்டால், சேவையகம் போர்ட்டை வைத்திருக்கிறது மற்றும் சிறிது நேரம் அதன் மூலம் இணைக்க இயலாது. எனவே, மற்ற தொடர்பு முறைகளைப் பயன்படுத்துவது இன்னும் சிறந்தது, எடுத்துக்காட்டாக VPN. எதிர்காலத்தில் நான் VPNக்கு மாற விரும்பினேன், ஆனால் நேரமில்லை.

ஃபயர்வாலை அமைப்பது, உரிமைகளை கட்டுப்படுத்துவது, ரூட் ssh இணைப்புகளை முடக்குவது மற்றும் VPS அமைப்பதற்கான பிற உண்மைகள் பற்றிய விவரங்களுக்கு நான் செல்லமாட்டேன். உங்களுக்கு ஏற்கனவே எல்லாம் தெரியும் என்று நான் நம்ப விரும்புகிறேன். ரிமோட் இணைப்புக்காக, சர்வரில் புதிய பயனரை உருவாக்குகிறேன்.

adduser vimssh

நான் எங்கள் வன்பொருளில் ssh இணைப்பு விசைகளை உருவாக்குகிறேன்.

ssh-keygen

நான் அவற்றை எங்கள் சேவையகத்திற்கு நகலெடுக்கிறேன்.

ssh-copy-id [email protected]

எங்கள் வன்பொருளில், ஒவ்வொரு துவக்கத்திலும் ஒரு தானியங்கி தலைகீழ் ssh இணைப்பை உருவாக்குகிறேன்.

[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 க்கு கவனம் செலுத்துங்கள்: ரிவர்ஸ் ssh வழியாக இணைக்க நான் எந்த போர்ட்டைப் பயன்படுத்துவேன் என்பதை இது தீர்மானிக்கிறது. அதை தொடக்கத்தில் சேர்த்து தொடங்கவும்.

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

நீங்கள் நிலையைக் கூட பார்க்கலாம்:

sudo systemctl status autossh.service

இப்போது, ​​எங்கள் VPS சர்வரில், நாம் இயக்கினால்:

ssh -p 8083 khadas@localhost

பின்னர் நான் எனது சோதனை வன்பொருளுக்கு வருகிறேன். வன்பொருளில் இருந்து நான் பதிவுகள் மற்றும் எந்த தரவையும் ssh வழியாக எனது சேவையகத்திற்கு அனுப்ப முடியும், இது மிகவும் வசதியானது.

இது அனைத்தையும் ஒன்றாக இணைக்கிறது

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை
மாறுகிறது, மேம்பாடு மற்றும் பிழைத்திருத்தத்தைத் தொடங்குவோம்

ப்யூ, சரி, அவ்வளவுதான், நான் எல்லா முனைகளையும் விவரித்தேன். இப்போது அனைத்தையும் ஒன்றாக இணைக்க வேண்டிய நேரம் இது. நீங்கள் குறியீட்டைக் காணலாம் சரி இங்கே.

குறியீடுடன் ஒரு முக்கியமான விஷயம்: இந்தத் திட்டம் இப்படித் தொடங்காமல் இருக்கலாம், ஏனெனில் இது ஒரு குறிப்பிட்ட கட்டிடக்கலையின் குறிப்பிட்ட பணிக்காக வடிவமைக்கப்பட்டது. நான் மூலக் குறியீட்டைக் கொடுத்தாலும், மிகவும் மதிப்புமிக்க விஷயங்களை இங்கே உரையில் விளக்குகிறேன், இல்லையெனில் அது முற்றிலும் புரிந்துகொள்ள முடியாதது.

ஆரம்பத்தில், நான் gps, gpio ஐ துவக்கி ஒரு தனி அட்டவணை நூலை தொடங்குகிறேன்.

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

திட்டமிடல் மிகவும் எளிமையானது: செய்திகளை அனுப்புவதற்கான நேரம் வந்துவிட்டதா மற்றும் தற்போதைய பிழையின் நிலை என்ன என்பதைப் பார்க்கிறது. பிழைக் கொடி இருந்தால், எல்.ஈ.டியை ஒளிரச் செய்கிறோம்.

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

இந்தத் திட்டத்தின் மிகவும் கடினமான பகுதி ஒவ்வொரு சோதனைக்கும் தலைகீழ் ssh இணைப்பைப் பராமரிப்பதாகும். ஒவ்வொரு சோதனையும் இயல்புநிலை நுழைவாயில் மற்றும் DNS சேவையகத்தை மீண்டும் கட்டமைப்பதை உள்ளடக்கியது. எப்படியும் யாரும் படிக்காததால், மரத்தடி தண்டவாளத்தில் ரயில் ஓடாது என்பதை அறிந்து கொள்ளுங்கள். ஈஸ்டர் முட்டையைக் கண்டறிபவருக்கு மிட்டாய் கிடைக்கும்.

இதைச் செய்ய, நான் ஒரு தனி ரூட்டிங் அட்டவணையை உருவாக்குகிறேன் -செட்-மார்க் 0x2 மற்றும் போக்குவரத்தைத் திருப்பிவிட ஒரு விதி.

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

இது எவ்வாறு செயல்படுகிறது என்பதைப் பற்றி மேலும் அறியலாம் இந்த கட்டுரையில் படிக்கவும்.

அதன் பிறகு நான் ஒரு முடிவற்ற வளையத்திற்குச் செல்கிறேன், ஒவ்வொரு முறையும் இணைக்கப்பட்ட மோடம்களின் பட்டியலைப் பெறுகிறோம் (நெட்வொர்க் உள்ளமைவு திடீரென்று மாறியதா என்பதைக் கண்டறிய).

network_list = getNetworklist()

பிணைய இடைமுகங்களின் பட்டியலைப் பெறுவது மிகவும் எளிது.

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

பட்டியலைப் பெற்ற பிறகு, மோடம் பற்றிய அத்தியாயத்தில் படத்தில் காட்டியபடி, அனைத்து இடைமுகங்களுக்கும் ஐபி முகவரிகளை அமைத்தேன்.

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

பின்னர் நான் ஒவ்வொரு இடைமுகத்தையும் ஒரு சுழற்சியில் செல்கிறேன். நான் ஒவ்வொரு இடைமுகத்தையும் கட்டமைக்கிறேன்.

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

செயல்பாட்டிற்கான இடைமுகத்தை நான் சரிபார்க்கிறேன், நெட்வொர்க் இல்லை என்றால், நான் பிழைகளை உருவாக்குகிறேன். நெட்வொர்க் இருந்தால், செயல்பட வேண்டிய நேரம் இது!

இங்கே நான் இந்த இடைமுகத்திற்கு ssh ரூட்டிங் கட்டமைக்கிறேன் (அது செய்யப்படவில்லை என்றால்), நேரம் வந்துவிட்டால் சேவையகத்திற்கு பிழைகளை அனுப்பவும், பதிவுகளை அனுப்பவும் மற்றும் இறுதியாக ஒரு வேக சோதனையை இயக்கவும் மற்றும் பதிவுகளை 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()
#и далее тестируем скорость и сохраняем логи. 

தலைகீழ் 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")

நிச்சயமாக, இந்த அழகை நீங்கள் தொடக்கத்தில் சேர்க்க வேண்டும். இதைச் செய்ய, நான் ஒரு கோப்பை உருவாக்குகிறேன்:

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

நான் அதில் எழுதுகிறேன்:

[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

நான் ஆட்டோலோடிங்கை ஆன் செய்து தொடங்குகிறேன்!

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

கட்டளையைப் பயன்படுத்தி என்ன நடக்கிறது என்பதற்கான பதிவுகளை இப்போது நான் பார்க்க முடியும்:

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

Результаты

சரி, இப்போது மிக முக்கியமான விஷயம் என்னவென்றால், இதன் விளைவாக என்ன நடந்தது? மேம்பாடு மற்றும் பிழைத்திருத்தச் செயல்பாட்டின் போது நான் கைப்பற்றிய சில வரைபடங்கள் இங்கே உள்ளன. வரைபடங்கள் பின்வரும் ஸ்கிரிப்டுடன் gnuplot ஐப் பயன்படுத்தி கட்டப்பட்டன.

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

முதல் அனுபவம் டெலி2 ஆபரேட்டருடன், நான் பல நாட்கள் நடத்தியது.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

இங்கே நான் டைனமிக் அளவீட்டு சேவையகத்தைப் பயன்படுத்தினேன். வேக அளவீடுகள் வேலை செய்கின்றன, ஆனால் மிகவும் ஏற்ற இறக்கமாக இருக்கும், ஆனால் சில சராசரி மதிப்பு இன்னும் தெரியும், மேலும் இது தரவை வடிகட்டுவதன் மூலம் பெறலாம், எடுத்துக்காட்டாக, நகரும் சராசரியுடன்.

பிற டெலிகாம் ஆபரேட்டர்களுக்காக பல வரைபடங்களை உருவாக்கினேன். இந்த வழக்கில், ஏற்கனவே ஒரு சோதனை சேவையகம் இருந்தது, மேலும் முடிவுகள் மிகவும் சுவாரஸ்யமாக இருந்தன.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

நீங்கள் பார்க்கிறபடி, இந்தத் தரவை ஆராய்ச்சி செய்வதற்கும் செயலாக்குவதற்கும் தலைப்பு மிகவும் விரிவானது, மேலும் இரண்டு வார வேலைகளுக்கு தெளிவாக நீடிக்காது. ஆனாலும்…

வேலையின் விளைவு

என் கட்டுப்பாட்டிற்கு அப்பாற்பட்ட சூழ்நிலையால் வேலை திடீரென்று முடிந்தது. இந்த திட்டத்தின் பலவீனங்களில் ஒன்று, எனது அகநிலை கருத்தில், மற்ற மோடம்களுடன் ஒரே நேரத்தில் வேலை செய்ய விரும்பாத மோடம், ஒவ்வொரு முறையும் ஏற்றப்படும்போது இதுபோன்ற தந்திரங்களைச் செய்தது. இந்த நோக்கங்களுக்காக, ஏராளமான பிற மோடம் மாடல்கள் உள்ளன; வழக்கமாக அவை ஏற்கனவே மினி பிசிஐ-இ வடிவத்தில் உள்ளன மற்றும் சாதனத்தில் நிறுவப்பட்டுள்ளன மற்றும் கட்டமைக்க மிகவும் எளிதானது. ஆனால் அது முற்றிலும் மாறுபட்ட கதை. திட்டம் சுவாரஸ்யமாக இருந்தது, அதில் என்னால் பங்கேற்க முடிந்ததில் நான் மிகவும் மகிழ்ச்சியடைந்தேன்.

பல LTE மோடம்களில் ஒரே நேரத்தில் வேக சோதனை

ஆதாரம்: www.habr.com

கருத்தைச் சேர்