በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

በኳራንቲን ጊዜ ለብዙ ሴሉላር ኦፕሬተሮች የLTE ሞደሞችን ፍጥነት ለመለካት መሳሪያ ሲሰራ እንድሳተፍ ተሰጠኝ።

በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

ደንበኛው የኤልቲኢ ግንኙነትን ተጠቅሞ መሳሪያዎችን ሲጭን ለምሳሌ ለቪዲዮ ስርጭቶች የትኛው ሴሉላር ኦፕሬተር ለእሱ በጣም ጥሩ እንደሆነ ለመረዳት በተለያዩ የቴሌኮም ኦፕሬተሮችን ፍጥነት በተለያዩ የጂኦግራፊያዊ አካባቢዎች ለመገምገም ፈልጎ ነበር። በተመሳሳይ ጊዜ, ችግሩ ውድ የሆኑ መሳሪያዎች ሳይኖር በተቻለ መጠን ቀላል እና ርካሽ በሆነ መንገድ መፍታት ነበረበት.

ወዲያውኑ እናገራለሁ, ስራው በጣም ቀላል እና እውቀት-ተኮር አይደለም, ምን ችግሮች እንዳጋጠሙኝ እና እንዴት እንደፈታኋቸው እነግራችኋለሁ. ስለዚህ እንሂድ።

አመለከተ

የ LTE ግንኙነትን ፍጥነት መለካት በጣም የተወሳሰበ ጉዳይ ነው፡ ትክክለኛውን መሳሪያ እና የመለኪያ ቴክኒክ መምረጥ አለቦት እንዲሁም ስለ ሴሉላር አውታር ቶፖሎጂ እና አሠራር ጥሩ ግንዛቤ ይኑርዎት። በተጨማሪም ፍጥነቱ በብዙ ምክንያቶች ተጽዕኖ ሊያሳድር ይችላል፡ በሴል ላይ ያሉ የተመዝጋቢዎች ብዛት፣ የአየር ሁኔታ ሁኔታዎች፣ ከሴል ወደ ሴል እንኳን ፍጥነቱ በኔትወርክ ቶፖሎጂ ምክንያት በከፍተኛ ሁኔታ ሊለያይ ይችላል። በአጠቃላይ ይህ እጅግ በጣም ብዙ የማይታወቁ ችግሮች ናቸው, እና የቴሌኮም ኦፕሬተር ብቻ በትክክል ሊፈታው ይችላል.

መጀመሪያ ላይ ደንበኛው ተጓዡን ከኦፕሬተሮች ስልኮች ጋር ለመንዳት ብቻ ነው, በቀጥታ በስልኩ ላይ መለኪያዎችን ይውሰዱ እና ከዚያም የፍጥነት መለኪያ ውጤቶችን በማስታወሻ ደብተር ውስጥ ይፃፉ. የ lt ኔትወርኮችን ፍጥነት ለመለካት የእኔ መፍትሄ ምንም እንኳን ተስማሚ ባይሆንም ችግሩን ይፈታል.

በጊዜ እጥረት ምክንያት ውሳኔዎችን ያደረግሁት ለምቾት ወይም ለተግባራዊነት ሳይሆን ለዕድገት ፍጥነት ነው. ለምሳሌ፣ አገልጋዩን እና እያንዳንዱን ደንበኛ ለማዋቀር ጊዜን ለመቆጠብ ከተጨማሪ ተግባራዊ ቪፒኤን ይልቅ reverse ssh ለርቀት መዳረሻ ጥቅም ላይ ውሏል።

ቴክኒካዊ ተግባር

በአንቀጹ ላይ እንደተገለጸው ያለ ቴክኒካዊ ዝርዝሮች: ለምን ደንበኛው የማይፈልገው: ያለ ቴክኒካዊ ዝርዝሮች አይሰሩ! በጭራሽ ፣ የትም!

የቴክኒካዊ ስራው በጣም ቀላል ነበር, ለዋና ተጠቃሚው ግንዛቤ ትንሽ እሰፋዋለሁ. የቴክኒካዊ መፍትሄዎች እና መሳሪያዎች ምርጫ በደንበኛው የታዘዘ ነው. ስለዚህ ፣ ቴክኒካዊ መግለጫው ራሱ ፣ ከሁሉም ማፅደቆች በኋላ

በአንድ የቦርድ ኮምፒዩተር ላይ የተመሰረተ vim2 በH modems በኩል ለ lt ግንኙነቶች የፍጥነት ሞካሪ ያድርጉuawei e3372h - 153 በርካታ የቴሌኮም ኦፕሬተሮች (ከአንድ እስከ n). እንዲሁም በ UART በኩል ከተገናኘ የጂፒኤስ መቀበያ መጋጠሚያዎችን መቀበል አስፈላጊ ነው. አገልግሎቱን በመጠቀም የፍጥነት መለኪያዎችን ያድርጉ www.speedtest.net እና እንደዚህ ባለው ጠረጴዛ ውስጥ አስቀምጣቸው-

በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

ሠንጠረዥ በ csv ቅርጸት። ከዚያም ይህን ምልክት በየ6 ሰዓቱ በኢሜል ይላኩ። ስህተቶች ካሉ ከ GPIO ጋር የተገናኘውን ኤልኢዲ ብልጭ ድርግም ይበሉ።

ከብዙ ማፅደቆች በኋላ ቴክኒካዊ ዝርዝሮችን በነፃ ገለፅኩ ። ነገር ግን የተግባሩ ትርጉም አስቀድሞ ይታያል. ለሁሉም ነገር አንድ ሳምንት ተሰጥቷል. ግን በእውነቱ ለሦስት ሳምንታት ቆይቷል. ይህ ከዋና ሥራዬ በኋላ እና ቅዳሜና እሁድን ብቻ ​​ያደረግኩትን እውነታ ግምት ውስጥ በማስገባት ነው.

እዚህ ላይ ደንበኛው የፍጥነት መለኪያ አገልግሎትን እና ሃርድዌርን ለመጠቀም አስቀድሞ መስማማቱን እንደገና ትኩረት መሳብ እፈልጋለሁ ፣ ይህም አቅሜን በእጅጉ ይገድባል። በጀቱም የተገደበ ስለነበር ምንም የተለየ ነገር አልተገዛም። ስለዚህ በእነዚህ ህጎች መጫወት ነበረብን።

አርክቴክቸር እና ልማት

መርሃግብሩ ቀላል እና ግልጽ ነው. ስለዚህ, ያለ ምንም ልዩ አስተያየት እተወዋለሁ.

በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

ምንም እንኳን በዚህ ቋንቋ የማሳደግ ልምድ ባይኖረኝም ሙሉውን ፕሮጀክት በፓይቶን ውስጥ ለመተግበር ወሰንኩ. እኔ የመረጥኩት ልማትን ሊያፋጥኑ የሚችሉ ዝግጁ የሆኑ ምሳሌዎች እና መፍትሄዎች ስለነበሩ ነው። ስለዚህ ሁሉም ፕሮፌሽናል ፕሮግራመሮች በፓይቶን ውስጥ የማደግ የመጀመሪያ ልምዴን እንዳይነቅፉ እጠይቃለሁ ፣ እና ችሎታዬን ለማሻሻል ገንቢ ትችቶችን በመስማቴ ሁል ጊዜ ደስተኛ ነኝ።

እንዲሁም በሂደቱ ውስጥ ፓይቶን ሁለት አሂድ ስሪቶች 2 እና 3 እንዳለው ተገነዘብኩ ፣ በዚህ ምክንያት በሦስተኛው ላይ ተቀመጥኩ።

የሃርድዌር አንጓዎች

ነጠላ-ጠፍጣፋ vim2

እንደ ዋና ማሽን አንድ ነጠላ ሰሌዳ ኮምፒውተር ተሰጠኝ። vim2

በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

ለስማርት ቤት እና ለ SMART-TV በጣም ጥሩ፣ ኃይለኛ የሚዲያ ፕሮሰሰር፣ ነገር ግን ለዚህ ተግባር እጅግ በጣም ተስማሚ ያልሆነ፣ ወይም እንበል፣ በጣም ተስማሚ አይደለም። ለምሳሌ, ዋናው ስርዓተ ክወናው አንድሮይድ ነው, እና ሊኑክስ ሁለተኛ ደረጃ ስርዓተ ክወና ነው, እና በዚህ መሰረት ማንም ሰው በሊኑክስ ስር ያሉትን ሁሉንም አንጓዎች እና አሽከርካሪዎች ከፍተኛ ጥራት ያለው አሠራር ዋስትና አይሰጥም. እና አንዳንድ ችግሮች ከዚህ የመሳሪያ ስርዓት የዩኤስቢ ነጂዎች ጋር የተገናኙ ናቸው ብዬ እገምታለሁ, ስለዚህ ሞደሞቹ በዚህ ሰሌዳ ላይ እንደተጠበቀው አልሰሩም. በተጨማሪም በጣም ደካማ እና የተበታተኑ ሰነዶች አሉት, ስለዚህ እያንዳንዱ ቀዶ ጥገና በዶክተሮች ውስጥ ለመቆፈር ብዙ ጊዜ ወስዷል. ከ GPIO ጋር ያለው ተራ ሥራ እንኳን ብዙ ደም ወስዷል. ለምሳሌ, LED ን ለማዘጋጀት ብዙ ሰዓታት ፈጅቶብኛል. ነገር ግን, ተጨባጭ ለመሆን, በመሠረቱ, ምን ዓይነት ነጠላ-ቦርድ እንደነበረ አስፈላጊ አልነበረም, ዋናው ነገር መስራቱ እና የዩኤስቢ ወደቦች ነበሩ.

በመጀመሪያ, በዚህ ሰሌዳ ላይ ሊኑክስን መጫን አለብኝ. ለሁሉም ሰው እና እንዲሁም ይህንን ነጠላ-ቦርድ ስርዓትን ለሚመለከቱ ሁሉ የሰነድ ዱርን ላለማየት ፣ ይህንን ምዕራፍ እጽፋለሁ ።

ሊኑክስን ለመጫን ሁለት አማራጮች አሉ፡ በውጫዊ ኤስዲ ካርድ ወይም በውስጣዊ ኤምኤምሲ ላይ። ከካርዱ ጋር እንዴት እንደሚሰራ ለማወቅ አንድ ምሽት አሳለፍኩ, ስለዚህ በኤምኤምሲ ላይ ለመጫን ወሰንኩኝ, ምንም እንኳን ያለ ጥርጥር ከውጭ ካርድ ጋር መስራት በጣም ቀላል ይሆናል.

ስለ firmware እዚህ ላይ በጠማማነት ተነግሯል።. እንግዳ ከሆነው ወደ ሩሲያኛ ተርጉሜአለሁ። ሰሌዳውን ለማብረቅ, የሃርድዌር UART ን ማገናኘት አለብኝ. አያይዘውታል። በሚከተለው መንገድ.

  • የመሳሪያ ፒን ጂኤንዲ፡ <—> ፒን17 የቪኤምኤስ GPIO
  • የመሳሪያ ፒን TXD፡ <—> ፒን18 የቪኤምኤስ GPIO (Linux_Rx)
  • የመሳሪያ ፒን RXD፡ <—> ፒን19 የቪኤምኤስ GPIO (Linux_Tx)
  • የመሳሪያ ፒን ቪሲሲ፡ <—> ፒን20 የቪኤምኤስ GPIO

በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

ከዚያ በኋላ, firmware ን አውርጃለሁ እዚህ. የተወሰነ የጽኑ ትዕዛዝ ስሪት VIM1_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.

ይህን ፈርምዌር ለመስቀል፣ መገልገያዎች ያስፈልጉኛል። ስለዚህ ጉዳይ ተጨማሪ ዝርዝሮች እዚህ. በዊንዶውስ ስር ብልጭ ድርግም ለማድረግ አልሞከርኩም, ነገር ግን በሊኑክስ ስር ስለ firmware ጥቂት ቃላትን ልነግርዎ እፈልጋለሁ. በመጀመሪያ በመመሪያው መሰረት መገልገያዎቹን እጭናለሁ.

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

አአአድ... ምንም አይሰራም። ሁሉም ነገር በትክክል እንዲጭንልኝ የመጫኛ ስክሪፕቶችን በማስተካከል ለሁለት ሰዓታት አሳለፍኩ። እዚያ ያደረግኩትን አላስታውስም ፣ ግን ፈረሶች ያሉት ሰርከስ እንዲሁ ነበር። ስለዚህ ተጠንቀቅ. ነገር ግን ያለ እነዚህ መገልገያዎች ቪም2ን የበለጠ ማሰቃየት ምንም ፋይዳ የለውም። ከሱ ጋር ጨርሶ አለመናድ ይሻላል!

ከሰባት የሲኦል ክበቦች በኋላ፣ የስክሪፕት ውቅር እና ጭነት፣ የስራ መገልገያዎች ጥቅል ደረሰኝ። ሰሌዳውን በዩኤስቢ በኩል ከሊኑክስ ኮምፒውተሬ ጋር አገናኘሁት፣ እና ደግሞ ዩአርትን ከዚህ በላይ ባለው ስእል መሰረት አገናኘሁት።
የምወደውን ሚኒኮም ተርሚናል ለ115200 ፍጥነት እያዘጋጀሁ ነው፣ ያለ ሃርድዌር እና ሶፍትዌር ስህተት ቁጥጥር። እና እንጀምር።

በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

VIM2ን በ UART ተርሚናል ላይ ስጭን መጫኑን ለማቆም እንደ የጠፈር አሞሌ ያለ ቁልፍ እጫለሁ። መስመሩ ከታየ በኋላ

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

አስቸጋሪ ሆኖ ካገኙት, ይህን ሰሌዳ አይጠቀሙ, Raspberry Pi የተሻለ ነው. በታማኝነት።

ሞደም Huawei e3372h - 153

ይህ ሞደም ለእኔ ጉልህ የሆነ የደም ምንጭ ነበር፣ እና እንዲያውም የፕሮጀክቱ ማነቆ ሆነ። በአጠቃላይ ለእነዚህ መሳሪያዎች "ሞደም" የሚለው ስም ጨርሶ የስራውን ዋና ነገር አያሳይም: ይህ ኃይለኛ ጥምረት ነው, ይህ የሃርድዌር ቁራጭ ሾፌሮችን ለመጫን ሲዲ-ሮምን ለማስመሰል የተዋሃደ መሳሪያ አለው. እና ከዚያ ወደ የአውታረ መረብ ካርድ ሁነታ ይቀየራል.

በሥነ-ሕንፃ ፣ ከሊኑክስ ተጠቃሚ እይታ ፣ ከሁሉም ቅንጅቶች በኋላ ፣ ይህ ይመስላል-ሞደምን ካገናኙ በኋላ ፣ እኔ የኤት * አውታረ መረብ በይነገጽ አለኝ ፣ በ dhcp በኩል የአይፒ አድራሻ 192.168.8.100 ይቀበላል ፣ እና ነባሪ መግቢያ በር 192.168.8.1 ነው.

እና በጣም አስፈላጊው ጊዜ! ይህ ሞደም ሞዴል በ AT ትዕዛዞች ቁጥጥር በሚደረግበት በሞደም ሞድ ውስጥ ሊሠራ አይችልም. ሁሉም ነገር በጣም ቀላል ይሆናል, ለእያንዳንዱ ሞደም የ PPP ግንኙነቶችን ይፍጠሩ እና ከዚያ ከእነሱ ጋር ይስሩ. ግን በእኔ ሁኔታ ፣ “እራሱ” (በይበልጥ በትክክል ፣ በ udev ህጎች መሠረት የሊኑክስ ጠላቂ) የኢት በይነገጽ ይፈጥራል እና የአይፒ አድራሻን በdhcp ይመድባል።

ተጨማሪ ግራ መጋባትን ለማስወገድ "ሞደም" የሚለውን ቃል መርሳት እና የኔትወርክ ካርድ እና ጌትዌይ ለማለት ሀሳብ አቀርባለሁ, ምክንያቱም በመሠረቱ, አዲስ የኔትወርክ ካርድን ከጌትዌይ ጋር እንደ ማገናኘት ነው.
አንድ ሞደም ሲኖር, ይህ ምንም ልዩ ችግር አይፈጥርም, ነገር ግን ከአንድ በላይ, ማለትም n-pieces ሲኖር, የሚከተለው የአውታረ መረብ ምስል ይነሳል.

በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

ማለትም፣ n የኔትወርክ ካርዶች፣ ከተመሳሳይ አይፒ አድራሻ ጋር፣ እያንዳንዱም ተመሳሳይ ነባሪ መግቢያ በር ያለው። ግን በእውነቱ, እያንዳንዳቸው ከራሳቸው ኦፕሬተር ጋር የተገናኙ ናቸው.

መጀመሪያ ላይ አንድ ቀላል መፍትሄ ነበረኝ፡ የifconfig ወይም ip ትዕዛዝን በመጠቀም ሁሉንም በይነገጾች ያጥፉ እና በቀላሉ አንዱን በየተራ ያብሩትና ይሞክሩት። በመቀያየር ጊዜ ከመሳሪያው ጋር መገናኘት አልቻልኩም ካልሆነ በስተቀር መፍትሄው ለሁሉም ሰው ጥሩ ነበር። እና መቀየሪያው ተደጋጋሚ እና ፈጣን ስለሆነ፣ በእርግጥ ለመገናኘት ምንም እድል አልነበረኝም።

ስለዚህ የሞደሞቹን አይፒ አድራሻዎች በእጅ የመቀየር እና የማዘዋወር ቅንብሮችን በመጠቀም ትራፊክ የመንዳት መንገድን መርጫለሁ።

በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

ከሞደሞች ጋር ያጋጠሙኝ ችግሮች በዚህ አላበቁም: በኃይል ችግሮች ውስጥ, ወደቁ, እና ለዩኤስቢ መገናኛ ጥሩ የተረጋጋ የኃይል አቅርቦት ያስፈልጋል. ይህንን ችግር ኃይሉን በቀጥታ ወደ መገናኛው በመሸጥ ፈታሁት። ሌላው ያጋጠመኝ እና አጠቃላይ ፕሮጄክቱን ያበላሸው-የመሳሪያው ዳግም ማስነሳት ወይም ቀዝቃዛ ከጀመረ በኋላ ሁሉም ሞደሞች አልተገኙም እና ሁልጊዜ አይደሉም ፣ እና ይህ ለምን እንደተከሰተ እና በምን ስልተ ቀመር መወሰን አልቻልኩም። ግን መጀመሪያ ነገሮች መጀመሪያ።

ሞደም በትክክል እንዲሰራ የ usb-modeswitch ጥቅልን ጫንኩኝ.

sudo apt update
sudo apt install -y usb-modeswitch

ከዚያ በኋላ, ከተገናኘ በኋላ, ሞደም በትክክል ተገኝቷል እና በ udev ንዑስ ስርዓት የተዋቀረ ይሆናል. ሞደምን በቀላሉ በማገናኘት እና አውታረ መረቡ መታየቱን በማረጋገጥ አረጋግጣለሁ።
ሌላ መፍታት ያልቻልኩት ችግር፡- ከዚህ ሞደም የምንሰራውን ኦፕሬተር ስም እንዴት ማግኘት እችላለሁ? የኦፕሬተሩ ስም በሞደም ድር በይነገጽ 192.168.8.1 ላይ ይገኛል። ይህ በአጃክስ ጥያቄዎች በኩል ውሂብ የሚቀበል ተለዋዋጭ ድረ-ገጽ ነው፣ ስለዚህ በቀላሉ ገጹን መጨናነቅ እና ስሙን መተንተን አይሰራም። ስለዚህ ድህረ ገጽን እንዴት ማዳበር እና የመሳሰሉትን ማየት ጀመርኩ እና የሆነ የማይረባ ነገር እየሰራሁ እንደሆነ ተረዳሁ። በውጤቱም, እሱ ምራቁን, እና ኦፕሬተሩ የ Speedtest API እራሱን በመጠቀም መቀበል ጀመረ.

ሞደም በ AT ትዕዛዞች በኩል መዳረሻ ቢኖረው በጣም ቀላል ይሆናል. እሱን እንደገና ማዋቀር፣ ፒፒፒ ግንኙነት መፍጠር፣ አይፒን መመደብ፣ የቴሌኮም ኦፕሬተር ማግኘት፣ ወዘተ. ግን ወዮ ፣ ከተሰጠኝ ጋር እየሰራሁ ነው።

አቅጣጫ መጠቆሚያ

የተሰጠኝ የጂፒኤስ መቀበያ UART በይነገጽ እና ሃይል ነበረው። ከሁሉ የተሻለው መፍትሔ አልነበረም፣ ግን አሁንም ሊሠራ የሚችል እና ቀላል ነበር። ተቀባዩ ይህን ይመስላል።

በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

እውነቱን ለመናገር ከጂፒኤስ መቀበያ ጋር ስሰራ የመጀመሪያዬ ነበር ነገርግን እንደጠበቅኩት ሁሉም ነገር ከረጅም ጊዜ በፊት ታስቦልን ነበር። ስለዚህ ዝግጁ የሆኑ መፍትሄዎችን ብቻ እንጠቀማለን.

በመጀመሪያ ጂፒኤስን ለማገናኘት 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 እየጫንኩ ነው።

DEVICES="/dev/ttyS4"

እና ከዚያ ሁሉንም ነገር አብራ እና እንጀምራለን.

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

ከዚያ በኋላ ጂፒኤስን እገናኛለሁ.

በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

የጂፒኤስ ሽቦ በእጄ ውስጥ ነው፣ የ UART አራሚ ሽቦዎች በጣቶቼ ስር ይታያሉ።

ዳግም አስነሳለሁ እና የጂፒኤስን ኦፕሬሽን የጂፒኤስሞን ፕሮግራም አረጋግጣለሁ።

በብዙ 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 በኩል ውሂብ መቀበል, በተለየ ክር ውስጥ መተንተን እና ከእሱ ጋር መስራት ይቻል ነበር. ነገር ግን ምንም ጊዜ አልነበረም, ስለዚህ በጭካኔ አስቀያሚው ኮድ. እና አዎ አላፍርም።

LED

LEDን ማገናኘት ቀላል እና በተመሳሳይ ጊዜ አስቸጋሪ ነበር. ዋናው ችግር በሲስተሙ ውስጥ ያለው የፒን ቁጥር በቦርዱ ላይ ካለው የፒን ቁጥር ጋር አይዛመድም እና ሰነዱ በግራ እጁ የተፃፈ ስለሆነ ነው. በስርዓተ ክወናው ውስጥ ያለውን የሃርድዌር ፒን ቁጥር እና የፒን ቁጥሩን ለማነፃፀር ትዕዛዙን ማስኬድ ያስፈልግዎታል:

gpio readall

በስርዓቱ እና በቦርዱ ላይ የፒን ደብዳቤዎች ሰንጠረዥ ይታያል. ከዚያ በኋላ ፒኑን በራሱ በስርዓተ ክወናው ውስጥ መሥራት እችላለሁ። በእኔ ሁኔታ 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)

አሁን፣ ስህተቶች ካሉ፣ ስህተት_ብሊንክ() እደውላለሁ እና ኤልኢዲው በሚያምር ሁኔታ ብልጭ ድርግም ይላል።

የሶፍትዌር አንጓዎች

የፍጥነት ሙከራ ኤፒአይ

የ Speedtest.net አገልግሎት የራሱ የሆነ python-API ስላለው በጣም ደስ ይላል፣ እርስዎ መመልከት ይችላሉ። የፊልሙ.

ጥሩው ነገር ሊታዩ የሚችሉ የምንጭ ኮዶች መኖራቸው ነው። ከዚህ ኤፒአይ ጋር እንዴት መስራት እንደሚቻል (ቀላል ምሳሌዎች) በ ውስጥ ይገኛሉ ተዛማጅ ክፍል.

የ Python ቤተ-መጽሐፍትን በሚከተለው ትዕዛዝ እጭነዋለሁ.

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 ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ
የፍጥነት ሙከራ ውጤት ፣ ከአንድ በጥብቅ ከተመረጠ አንድ አገልጋይ ጋር።

በፈተና ወቅት, በሁለቱም ቦታዎች "ፉር" አለ, እና የሂሳብ ዘዴዎችን በመጠቀም ማስወገድ ያስፈልገዋል. ነገር ግን በቋሚ አገልጋይ በመጠኑ ያነሰ እና ስፋቱ የበለጠ የተረጋጋ ነው።
በአጠቃላይ ይህ በጣም ጥሩ ምርምር ቦታ ነው. እና የአይፐርፍ መገልገያውን በመጠቀም የአገልጋዬን ፍጥነት እለካለሁ። ግን በቴክኒካዊ ዝርዝሮች ላይ እንጣበቃለን.

ደብዳቤ እና ስህተቶች በመላክ ላይ

ደብዳቤ ለመላክ፣ ብዙ ደርዘን የሚሆኑ የተለያዩ አማራጮችን ሞክሬ ነበር፣ ግን በመጨረሻ በሚከተለው ላይ ወሰንኩ። በ Yandex ላይ የመልእክት ሳጥን ተመዝግቤያለሁ እና ከዚያ ወሰድኩ። ይህ ደብዳቤ የመላክ ምሳሌ ነው።. ፈትሼ ወደ ፕሮግራሙ ተግባራዊ አድርጌዋለሁ። ይህ ምሳሌ ከጂሜይል መላክን ጨምሮ የተለያዩ አማራጮችን ይመረምራል። የመልእክት አገልጋዬን በማዘጋጀት መጨነቅ አልፈለኩም እና ለእሱ ጊዜ አልነበረኝም ፣ ግን በኋላ እንደታየው ፣ እሱ እንዲሁ በከንቱ ነበር።

መዝገቦቹ በጊዜ ሰሌዳው መሠረት ተልከዋል. ግንኙነት ካለበየ 6 ሰዓቱ፡ በ00፡06፡12፡18፡XNUMX፡XNUMX እና XNUMX፡XNUMX። እንደሚከተለው ልኳል።

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 በቀን የሚላኩ መልዕክቶች ብዛት ላይ ገደብ እንዳለው (ይህ ህመም, ሀዘን እና ውርደት ነው) ችግሮች ተፈጠሩ. በደቂቃ እንኳን እጅግ በጣም ብዙ ስህተቶች ሊኖሩ ስለሚችሉ በፖስታ መላክን መተው ነበረብን። ስለዚህ በ Yandex አገልግሎቶች በኩል ስለ እንደዚህ አይነት ችግር መረጃን በራስ-ሰር ሲልኩ ያስታውሱ.

ግብረ መልስ አገልጋይ

የርቀት ሃርድዌር ለማግኘት እና እሱን ማበጀት እና እንደገና ማዋቀር እንድችል የውጭ አገልጋይ ያስፈልገኝ ነበር። በአጠቃላይ, ፍትሃዊ ለመሆን, ሁሉንም ውሂብ ወደ አገልጋዩ መላክ እና በድር በይነገጽ ውስጥ ሁሉንም የሚያምሩ ግራፎችን መገንባት ትክክል ይሆናል. ግን ሁሉም በአንድ ጊዜ አይደለም.

ለ VPS እኔ መርጫለሁ ruvds.com. በጣም ቀላሉን አገልጋይ መውሰድ ይችላሉ። እና በአጠቃላይ ፣ ለእኔ ዓላማ ይህ በቂ ነው። ነገር ግን ለአገልጋዩ ከኪሴ ስላልከፈልኩኝ፣ የድር በይነገጽን፣ የራሳችንን SMTP አገልጋይ፣ ቪፒኤን፣ ወዘተ ብናሰማራ በቂ ይሆን ዘንድ በትንሽ መጠባበቂያ ለመውሰድ ወሰንኩ። በተጨማሪም፣ የቴሌግራም ቦት ማዘጋጀት መቻል እና መታገድ ላይ ችግር አይኖርብዎትም። ስለዚህ, አምስተርዳምን እና የሚከተሉትን መለኪያዎች መርጫለሁ.

በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

ከሃርድዌር ጋር የመገናኘት ዘዴ, vim2 የተገላቢጦሽ ssh ግንኙነትን መርጧል እና እንደ ልምምድ እንደሚያሳየው, በጣም ጥሩ አይደለም. ግንኙነቱ ከጠፋ, አገልጋዩ ወደቡን ይይዛል እና በእሱ በኩል ለተወሰነ ጊዜ መገናኘት አይቻልም. ስለዚህ አሁንም ቢሆን ሌሎች የመገናኛ ዘዴዎችን ለምሳሌ ቪፒኤን መጠቀም የተሻለ ነው. ወደፊት ወደ ቪፒኤን መቀየር ፈልጌ ነበር፣ ግን ጊዜ አልነበረኝም።

ፋየርዎልን ስለማዋቀር፣መብቶችን ስለመገደብ፣ root ssh ግንኙነቶችን ስለማሰናከል እና ቪፒኤስን ስለማዋቀር ሌሎች እውነታዎች በዝርዝር አልገባም። ሁሉንም ነገር አስቀድመው እንደሚያውቁ ማመን እፈልጋለሁ. ለርቀት ግንኙነት፣ በአገልጋዩ ላይ አዲስ ተጠቃሚ እፈጥራለሁ።

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 ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ
በማብራት ላይ፣ ልማት እና ማረም እንጀምር

Phew, ደህና, ያ ነው, ሁሉንም አንጓዎች ገለጽኩኝ. ሁሉንም አንድ ላይ ለማጣመር ጊዜው አሁን ነው። ኮዱን ማየት ይችላሉ። እዚሁ.

ከኮዱ ጋር አንድ አስፈላጊ ነጥብ፡ ይህ ፕሮጀክት እንደዚህ ላይጀምር ይችላል፣ ምክንያቱም እሱ ለአንድ የተወሰነ ተግባር፣ ለአንድ የተወሰነ አርክቴክቸር ተዘጋጅቷል። ምንም እንኳን የመነሻ ኮድን እየሰጠሁ ቢሆንም, እዚህ በጣም ጠቃሚ የሆኑትን ነገሮች በትክክል በጽሁፉ ውስጥ እገልጻለሁ, አለበለዚያ ግን ሙሉ በሙሉ ለመረዳት የማይቻል ነው.

መጀመሪያ ላይ ጂፒኤስን፣ ጂፒኦን አስጀምሪያለሁ እና የተለየ የጊዜ መርሐግብር አስነሳለሁ።

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

መርሐግብር አውጪው በጣም ቀላል ነው፡ መልዕክቶችን ለመላክ ጊዜው እንደደረሰ እና አሁን ያለው የስህተት ሁኔታ ምን እንደሆነ ለማየት ይመስላል። የስህተት ባንዲራ ካለ, ከዚያም 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)

የዚህ ፕሮጀክት በጣም አስቸጋሪው ክፍል ለእያንዳንዱ ሙከራ የተገላቢጦሽ ssh ግንኙነትን መጠበቅ ነው። እያንዳንዱ ሙከራ ነባሪ መግቢያ ዌይ እና ዲ ኤን ኤስ አገልጋይን እንደገና ማዋቀርን ያካትታል። ለማንኛውም ማንም ስለማያነብ ባቡሩ በእንጨት ሀዲድ ላይ እንደማይጋልብ እወቅ። የትንሳኤውን እንቁላል ያገኘ ሰው ጥቂት ከረሜላ ያገኛል።

ይህንን ለማድረግ የተለየ የማዞሪያ ሠንጠረዥ -set-mark 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")

ከዚያም እኔ በቀላሉ አንድ loop ውስጥ እያንዳንዱ በይነገጽ በኩል ማለፍ. እና እያንዳንዱን በይነገጽ አዋቅራለሁ።

	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 ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

እንደሚመለከቱት ፣ ርዕሱ ለዚህ መረጃ ምርምር እና ሂደት በጣም ሰፊ ነው ፣ እና በግልፅ ለሁለት ሳምንታት ሥራ አይቆይም። ግን…

የሥራ ውጤት

ከአቅሜ በላይ በሆኑ ሁኔታዎች ስራው በድንገት ተጠናቀቀ። የዚህ ፕሮጀክት አንዱ ድክመቶች, በእኔ ተጨባጭ አስተያየት, ሞደም ነበር, እሱም ከሌሎች ሞደሞች ጋር በአንድ ጊዜ መስራት የማይፈልግ እና በተጫነ ቁጥር እንደዚህ አይነት ዘዴዎችን ሠራ. ለእነዚህ ዓላማዎች፣ እጅግ በጣም ብዙ የሆኑ ሌሎች የሞደም ሞዴሎች አሉ፤ ብዙውን ጊዜ በ Mini PCI-e ቅርጸት ውስጥ ያሉ እና በመሳሪያው ውስጥ የተጫኑ እና ለማዋቀር በጣም ቀላል ናቸው። ግን ያ ፈጽሞ የተለየ ታሪክ ነው። ፕሮጀክቱ አስደሳች ነበር እናም በዚህ ውስጥ መሳተፍ በመቻሌ በጣም ተደስቻለሁ።

በብዙ LTE ሞደሞች ላይ በተመሳሳይ ጊዜ የፍጥነት ሙከራ

ምንጭ: hab.com

አስተያየት ያክሉ