éé¢äžã«ãç§ã¯ããã€ãã®æºåž¯é»è©±äºæ¥è åãã® LTE ã¢ãã ã®é床ã枬å®ããããã€ã¹ã®éçºã«åå ããããèªãããŸããã
ã客æ§ã¯ãLTE æ¥ç¶ã䜿çšããæ©åš (ãã㪠ãããŒããã£ã¹ããªã©) ãèšçœ®ããéã«ãã©ã®æºåž¯éä¿¡äºæ¥è ãæé©ã§ããããç解ããããã«ãå°ççã«ç°ãªãããŸããŸãªéä¿¡äºæ¥è ã®é床ãè©äŸ¡ããããšèããŠããŸããã åæã«ãé«äŸ¡ãªæ©åšã䜿çšããã«ãã§ããã ãç°¡åãã€å®äŸ¡ã«åé¡ã解決ããå¿ èŠããããŸããã
ãã®äœæ¥ã¯æãåçŽã§ç¥èãå¿
èŠãªäœæ¥ã§ã¯ãªãããšãããã«èšã£ãŠãããŸãããç§ãééããåé¡ãšãããã©ã®ããã«è§£æ±ºããããã話ãããŸãã ãããè¡ããã
泚æ
LTE æ¥ç¶ã®é床ã®æž¬å®ã¯éåžžã«è€éãªåé¡ã§ããé©åãªæ©åšãšæž¬å®ææ³ãéžæããå¿ èŠãããããŸããã»ã«ã©ãŒ ãããã¯ãŒã¯ã®ããããžãšåäœã«ã€ããŠãããç解ããå¿ èŠããããŸãã ããã«ãé床ã¯ããã€ãã®èŠå ã«ãã£ãŠåœ±é¿ãåããå¯èœæ§ããããŸããã»ã«ã®å å ¥è æ°ãæ°è±¡æ¡ä»¶ãããã«ã¯ãããã¯ãŒã¯ ããããžã«ãã£ãŠã»ã«ããšã«é床ãå€§å¹ ã«ç°ãªãå ŽåããããŸãã äžè¬ã«ãããã¯äžæãªç¹ãèšå€§ã«ããåé¡ã§ãããæ£ãã解決ã§ããã®ã¯éä¿¡äºæ¥è ã ãã§ãã
åœåã顧客ã¯ãªãã¬ãŒã¿ãŒã®æºåž¯é»è©±ã§å® é 䟿ãé転ããé»è©±ã§çŽæ¥æž¬å®ããé床ã®æž¬å®çµæãããŒãã«æžãçãããã ãã§ããã LTE ãããã¯ãŒã¯ã®é床ã枬å®ããããã®ç§ã®ãœãªã¥ãŒã·ã§ã³ã¯ãçæ³çã§ã¯ãããŸããããåé¡ã解決ããŸãã
æéããªãã£ãã®ã§ãå©äŸ¿æ§ãå®çšæ§ã§ã¯ãªããéçºã®ã¹ããŒããéèŠããŠææ決å®ãè¡ããŸããã ããšãã°ããµãŒããŒãšåã ã®ã¯ã©ã€ã¢ã³ãã®ã»ããã¢ããæéãç¯çŽããããã«ãããå®çšç㪠VPN ã§ã¯ãªãããªããŒã¹ ssh ããªã¢ãŒã ã¢ã¯ã»ã¹ã«äœ¿çšãããŸããã
åç §æ¡ä»¶
èšäºã«ããããã«
æè¡çãªã¿ã¹ã¯ã¯éåžžã«åçŽã§ãããããšã³ã ãŠãŒã¶ãŒãç解ã§ããããã«å°ãæ¡åŒµããŸãã æè¡çãªãœãªã¥ãŒã·ã§ã³ãšæ©åšã®éžæã¯ã客æ§ã決å®ããŸããã ãããã£ãŠããã¹ãŠã®æ¿èªãçµãæè¡ä»æ§èªäœã¯æ¬¡ã®ããã«ãªããŸãã
ã·ã³ã°ã«ããŒãã³ã³ãã¥ãŒã¿ã«åºã¥ã vim2 H ã¢ãã çµç±ã® LTE æ¥ç¶ã®é床ãã¹ã¿ãŒãäœæããuawei e3372h-153 è€æ°ã®éä¿¡äºæ¥è (XNUMX 人ãã n 人ãŸã§)ã UART çµç±ã§æ¥ç¶ããã GPS åä¿¡æ©ãã座æšãåä¿¡ããããšãå¿ èŠã§ãã ãµãŒãã¹ã䜿çšããŠé床枬å®ãè¡ã
www.speedtest.net ãããŠãããã次ã®ãããªè¡šã«å ¥ããŸãã
CSV圢åŒã®ããŒãã«ã ãã®åŸããã®ãµã€ã³ã 6 æéããšã«é»åã¡ãŒã«ã§éä¿¡ããŸãã ãšã©ãŒãçºçããå Žåã¯ãGPIO ã«æ¥ç¶ãããŠãã LED ãç¹æ» ããŸãã
å€ãã®æ¿èªãåŸãåŸãç§ã¯èªç±åœ¢åŒã§æè¡ä»æ§ãèšè¿°ããŸããã ãããããã®ä»äºã®æå³ã¯ãã§ã«èŠããŠããŸãã ãã¹ãŠã«äžé±éãäžããããŸããã ããããå®éã«ã¯ããã¯XNUMXé±éç¶ããŸããã ããã¯ãæ¬æ¥ã®åŸãšé±æ«ã«ã®ã¿ãããè¡ã£ããšããäºå®ãèæ ®ããŠããŸãã
ããã§ãã客æ§ãé床枬å®ãµãŒãã¹ãšããŒããŠã§ã¢ã®äœ¿çšã«äºåã«åæããŠããããã«ãç§ã®èœåãå€§å¹ ã«å¶éãããŠãããšããäºå®ã«ããäžåºŠæ³šæããŠããã ããããšæããŸãã äºç®ãéãããŠããã®ã§ãç¹å¥ãªãã®ã¯è³Œå ¥ããŸããã§ããã ãããã£ãŠãç§ãã¡ã¯ãããã®ã«ãŒã«ã«åŸã£ãŠãã¬ãŒããå¿ èŠããããŸããã
ã¢ãŒããã¯ãã£ãšéçº
ãã®èšç»ã¯åçŽãã€æçœã§ãã ã§ãã®ã§ãç¹ã«ã³ã¡ã³ãã¯ç¡ããšãããŠããã ããŸãã
ç§ã¯ãã®èšèªã§ã®éçºçµéšããŸã£ãããªãã£ãã«ããããããããããžã§ã¯ãå
šäœã Python ã§å®è£
ããããšã«ããŸããã ãããéžãã ã®ã¯ãéçºãã¹ããŒãã¢ããã§ããæ¢è£œã®ãµã³ãã«ãšãœãªã¥ãŒã·ã§ã³ããããããã£ãããã§ãã ãããã£ãŠãããã®ããã°ã©ããŒã®çããã«ã¯ãPython ã§ã®éçºãšããåããŠã®çµéšãå±ããªãã§ããã ããããšæããŸãããŸããã¹ãã«ãåäžãããããã«å»ºèšçãªæ¹å€ããã€ã§ãåãã§èããŠããŸãã
ãŸãããã®éçšã§ãPython ã«ã¯ããŒãžã§ã³ 2 ãš 3 ã® XNUMX ã€ãå®è¡ãããŠããããšãçºèŠããŸããããã®çµæãXNUMX çªç®ã®ããŒãžã§ã³ã«èœã¡çããŸããã
ããŒããŠã§ã¢ããŒã
ã·ã³ã°ã«ãã¬ãŒã vim2
ã¡ã€ã³ãã·ã³ãšããŠã·ã³ã°ã«ããŒãã³ã³ãã¥ãŒã¿ãäžããããŸãã
ã¹ããŒã ããŒã ã SMART-TV åãã®åªãã匷åãªã¡ãã£ã¢ ããã»ããµã§ããããã®ã¿ã¹ã¯ã«ã¯éåžžã«äžåãããŸãã¯ããŸãé©ããŠããªããšèšããŸãã ããšãã°ãã¡ã€ã³ OS 㯠Android ã§ãLinux ã¯ãµã OS ã§ãããããLinux äžã§ãã¹ãŠã®ããŒããšãã©ã€ããŒãé«å質ã«åäœããããšã¯èª°ãä¿èšŒããŸããã ãããŠãåé¡ã®äžéšã¯ãã®ãã©ãããã©ãŒã ã® USB ãã©ã€ããŒã«é¢é£ããŠãããšæããŸãããã®ãããã¢ãã ã¯ãã®ããŒãã§ã¯æåŸ
ã©ããã«åäœããŸããã§ããã ãŸããããã¥ã¡ã³ããéåžžã«è²§åŒ±ã§æ£åšããŠãããããåæäœã§ããã¯ã調ã¹ãã®ã«å€ãã®æéãããããŸããã GPIO ã䜿ã£ãéåžžã®äœæ¥ã§ãããªãã®åŽåãããããŸããã ããšãã°ãLED ã®ã»ããã¢ããã«ã¯æ°æéããããŸããã ãããã客芳çã«èšããšããããã©ã®ãããªçš®é¡ã®ã·ã³ã°ã«ããŒãã§ãããã¯åºæ¬çã«éèŠã§ã¯ãªããéèŠãªã®ã¯ãããæ©èœããUSB ããŒãããããšããããšã§ããã
ãŸãããã®ããŒãã« Linux ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã ãã¹ãŠã®äººã«ãšã£ãŠããããŠãã®ã·ã³ã°ã«ããŒã ã·ã¹ãã ãæ±ã人ã«ãšã£ãŠããèšå€§ãªããã¥ã¡ã³ããæ¢ãåããªãããã«ããããã«ãç§ã¯ãã®ç« ãæžããŠããŸãã
Linux ãã€ã³ã¹ããŒã«ããã«ã¯ãå€éš SD ã«ãŒããŸãã¯å éš MMC ã® XNUMX ã€ã®ãªãã·ã§ã³ããããŸãã ãã®ã«ãŒããã©ããã£ãŠåäœãããããèãåºãããã«äžæ©è²»ãããã®ã§ãMMC ã«ã€ã³ã¹ããŒã«ããããšã«ããŸããããã ããééããªãå€éšã«ãŒãã䜿çšããæ¹ãã¯ããã«ç°¡åã§ãã
ãã¡ãŒã ãŠã§ã¢ã«ã€ããŠ
- ããŒã« ãã³ GND: <â> VIM ã® GPIO ã®ãã³ 17
- ããŒã« ãã³ TXD: <â> VIM ã® GPIO (Linux_Rx) ã®ãã³ 18
- ããŒã« ãã³ RXD: <â> VIM ã® GPIO (Linux_Tx) ã®ãã³ 19
- ããŒã« ãã³ VCC: <â> VIM ã® GPIO ã®ãã³ 20
ãã®åŸããã¡ãŒã ãŠã§ã¢ãããŠã³ããŒãããŸãã
ãã®ãã¡ãŒã ãŠã§ã¢ãã¢ããããŒãããã«ã¯ããŠãŒãã£ãªãã£ãå¿
èŠã§ãã ããã«ã€ããŠã®è©³çŽ°ã¯
git clone https://github.com/khadas/utils
cd /path/to/utils
sudo ./INSTALL
ãããäœãããŸããããŸããã ãã¹ãŠãæ£ããã€ã³ã¹ããŒã«ãããããã«ãã€ã³ã¹ããŒã« ã¹ã¯ãªããã®ç·šéã«æ°æéãè²»ãããŸããã ããã§äœããããã¯èŠããŠããªããã銬ã䜿ã£ããµãŒã«ã¹ããã£ãã ã®ã§æ³šæããŠãã ããã ãããããããã®ãŠãŒãã£ãªãã£ããªããã°ãvim2 ããã以äžèŠãããŠãæå³ããããŸããã 圌ã«ã¯äžåé¢ãããªãã»ããããã§ããïŒ
ã¹ã¯ãªããã®æ§æãšã€ã³ã¹ããŒã«ãšããå°çã® XNUMX åšã®åŸãç§ã¯åäœãããŠãŒãã£ãªãã£ã®ããã±ãŒãžãåãåããŸããã USB çµç±ã§ããŒãã Linux ã³ã³ãã¥ãŒã¿ãŒã«æ¥ç¶ããäžã®å³ã«åŸã£ãŠ UART ãæ¥ç¶ããŸããã
ç§ã¯ãæ°ã«å
¥ãã® minicom 端æ«ãããŒããŠã§ã¢ããã³ãœãããŠã§ã¢ã®ãšã©ãŒå¶åŸ¡ãªã㧠115200 ã®é床ã«èšå®ããŠããŸãã ããã§ã¯å§ããŸãããã
UART ã¿ãŒããã«ã« VIM2 ãããŒããããšãã«ãã¹ããŒã¹ããŒãªã©ã®ããŒãæŒããŠããŒããåæ¢ããŸãã ç·ã衚瀺ãããåŸ
kvim2#
次ã®ã³ãã³ããå ¥åããŸãã
kvim2# run update
ããŒãå ã®ãã¹ãäžã§æ¬¡ãå®è¡ããŸãã
burn-tool -v aml -b VIM2 -i VIM2_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.img
ããã¯ããã§ãããµãŒã 確èªãããšãããããŒãã« Linux ãæèŒãããŠããŸããã ãã°ã€ã³/ãã¹ã¯ãŒã khadas:khadasã
ãã®åŸãããã€ãã®çŽ°ããåæèšå®ãè¡ããŸãã ãããªãäœæ¥ã®ããã«ãsudo ã®ãã¹ã¯ãŒããç¡å¹ã«ããŸã (ã¯ããå®å šã§ã¯ãããŸãããã䟿å©ã§ã)ã
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
ãã®ã¢ãã ã¯ç§ã«ãšã£ãŠéèŠãªæºã§ãããå®éããããžã§ã¯ãå šäœã®ããã«ããã¯ã«ãªããŸããã äžè¬ã«ããããã®ããã€ã¹ã®ãã¢ãã ããšããååã¯ãäœåã®æ¬è³ªããŸã£ããåæ ããŠããŸãããããã¯åŒ·åãªçµã¿åããã§ããããã®ããŒããŠã§ã¢ã«ã¯ããã©ã€ããŒãã€ã³ã¹ããŒã«ããããã« CD-ROM ã®ãµããããè€åããã€ã¹ãå«ãŸããŠããŸãããããã¯ãŒã¯ã«ãŒãã¢ãŒãã«åãæ¿ãããŸãã
ã¢ãŒããã¯ãã£çã«ã¯ãLinux ãŠãŒã¶ãŒã®èŠ³ç¹ããããã¹ãŠã®èšå®ãå®äºãããšã次ã®ããã«ãªããŸããã¢ãã ãæ¥ç¶ãããšãdhcp çµç±ã§ IP ã¢ãã¬ã¹ 192.168.8.100 ãšããã©ã«ã ã²ãŒããŠã§ã€ãåãåã eth* ãããã¯ãŒã¯ ã€ã³ã¿ãŒãã§ã€ã¹ãåŸãããŸãã 192.168.8.1ã§ãã
ãããŠæãéèŠãªç¬éïŒ ãã®ã¢ãã ã¢ãã«ã¯ãAT ã³ãã³ãã«ãã£ãŠå¶åŸ¡ãããã¢ãã ã¢ãŒãã§ã¯åäœã§ããŸãããã ãã¹ãŠã¯ã¯ããã«åçŽã§ãåã¢ãã ã«å¯Ÿã㊠PPP æ¥ç¶ãäœæããããããæäœããã ãã§ãã ããããç§ã®å Žåãã圌èªèº«ãïŒããæ£ç¢ºã«ã¯ãudev ã«ãŒã«ã«åŸã£ã Linux ãã€ããŒïŒã eth ã€ã³ã¿ãŒãã§ã€ã¹ãäœæããdhcp çµç±ã§ããã« IP ã¢ãã¬ã¹ãå²ãåœãŠãŸãã
ãã以äžã®æ··ä¹±ãé¿ããããã«ããã¢ãã ããšããèšèãå¿ããŠããããã¯ãŒã¯ ã«ãŒããšã²ãŒããŠã§ã€ãšåŒã¶ããšããå§ãããŸããæ¬è³ªçã«ã¯ãæ°ãããããã¯ãŒã¯ ã«ãŒããã²ãŒããŠã§ã€ã«æ¥ç¶ãããããªãã®ã ããã§ãã
ã¢ãã ã XNUMX å°ã®å Žåã¯ç¹ã«åé¡ãããŸããããè€æ°ãã€ãŸã n å°ããå Žåã次ã®ãããªãããã¯ãŒã¯å³ã«ãªããŸãã
ã€ãŸããn æã®ãããã¯ãŒã¯ ã«ãŒããåã IP ã¢ãã¬ã¹ãæã¡ããããããåãããã©ã«ã ã²ãŒããŠã§ã€ãæã¡ãŸãã ãããå®éã«ã¯ããããã¯ããããç¬èªã®ãªãã¬ãŒã¿ãŒã«æ¥ç¶ãããŠããŸãã
åœåãç§ã¯åçŽãªè§£æ±ºçãèããŠããŸãããifconfig ãŸã㯠ip ã³ãã³ãã䜿çšããŠããã¹ãŠã®ã€ã³ã¿ãŒãã§ã€ã¹ããªãã«ããŠãXNUMX ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹ãé çªã«ãªã³ã«ããŠãã¹ãããã ãã§ãã ãã®è§£æ±ºçã¯èª°ã«ãšã£ãŠãè¯ããã®ã§ããããåãæ¿ãã®ç¬éã«ããã€ã¹ã«æ¥ç¶ã§ããªãã£ãããšã¯äŸå€ã§ããã ãããŠåãæ¿ããé »ç¹ãã€æ©ããããå®éã«ã¯å šãæ¥ç¶ããæ©äŒããããŸããã§ããã
ãããã£ãŠãã¢ãã ã® IP ã¢ãã¬ã¹ãæåã§å€æŽããã«ãŒãã£ã³ã°èšå®ã䜿çšããŠãã©ãã£ãã¯ãå¶åŸ¡ããæ¹æ³ãéžæããŸããã
ã¢ãã ã«é¢ããåé¡ã¯ããã§çµããã§ã¯ãããŸããã§ãããé»æºã®åé¡ãçºçããå Žåãã¢ãã ãèœã¡ãŠããŸããUSB ãããžã®å®å®ããé»æºäŸçµŠãå¿
èŠã§ããã ç§ã¯é»æºãããã«çŽæ¥ã¯ãã ä»ãããããšã§ãã®åé¡ã解決ããŸããã ç§ãééãããã XNUMX ã€ã®åé¡ã¯ããããžã§ã¯ãå
šäœãå°ç¡ãã«ããŸãããããã€ã¹ã®åèµ·åãŸãã¯ã³ãŒã«ã ã¹ã¿ãŒãåŸããã¹ãŠã®ã¢ãã ãæ€åºãããããã§ã¯ãªããåžžã«æ€åºãããããã§ã¯ãããŸããã§ããããªããããèµ·ãã£ãã®ããã©ã®ãããªã¢ã«ãŽãªãºã ã«ãã£ãŠèµ·ãã£ãã®ããå€æã§ããŸããã§ããã ãããããŸãæåã«ã
ã¢ãã ãæ£ããåäœãããããã«ãusb-modeswitch ããã±ãŒãžãã€ã³ã¹ããŒã«ããŸããã
sudo apt update
sudo apt install -y usb-modeswitch
ãã®åŸãæ¥ç¶åŸãã¢ãã 㯠udev ãµãã·ã¹ãã ã«ãã£ãŠæ£ããæ€åºãããèšå®ãããŸãã ã¢ãã ãæ¥ç¶ãããããã¯ãŒã¯ã衚瀺ãããããšã確èªããã ãã§ç¢ºèªããŸãã
ç§ã解決ã§ããªãã£ããã 192.168.8.1 ã€ã®åé¡ã¯ããã®ã¢ãã ãã䜿çšããŠãããªãã¬ãŒã¿ãŒã®ååãã©ããã£ãŠååŸã§ããããšããããšã§ãã ãªãã¬ãŒã¿åã¯ãXNUMX ã®ã¢ãã Web ã€ã³ã¿ãŒãã§ã€ã¹ã«å«ãŸããŠããŸãã ãã㯠Ajax ãªã¯ãšã¹ããéããŠããŒã¿ãåãåãåç Web ããŒãžã§ãããããåã«ããŒãžãååŸããŠååã解æããã ãã§ã¯æ©èœããŸããã ããã§ãWeb ããŒãžã®éçºæ¹æ³ãªã©ã調ã¹å§ããŸããããããçš®ã®ãã³ã»ã³ã¹ãªããšãããŠããããšã«æ°ã¥ããŸããã ãã®çµæã圌ã¯åŸãåãããªãã¬ãŒã¿ãŒã¯Speedtest APIèªäœã䜿çšããŠåä¿¡ãéå§ããŸããã
ã¢ãã ã AT ã³ãã³ãçµç±ã§ã¢ã¯ã»ã¹ã§ããã°ãã¯ããã«ç°¡åã«ãªããŸãã åæ§æãppp æ¥ç¶ã®äœæãIP ã®å²ãåœãŠãéä¿¡äºæ¥è ã®ååŸãªã©ãå¯èœã«ãªããŸãã ãããæ²ããããšã«ãç§ã¯äžãããããã®ã䜿ã£ãŠä»äºãããŠããŸãã
GPS
ç§ãäžãããã GPS åä¿¡æ©ã«ã¯ UART ã€ã³ã¿ãŒãã§ã€ã¹ãšé»æºãä»ããŠããŸããã ããã¯æè¯ã®è§£æ±ºçã§ã¯ãããŸããã§ããããããã§ãå®è¡å¯èœã§ã·ã³ãã«ã§ããã åä¿¡æ©ã¯ãããªæãã§ããã
å®ã¯GPSåä¿¡æ©ãæ±ãã®ã¯åããŠã§ãããããã¯ããã¹ãŠæããèããããŠããããšãªãã§ãã ãããã£ãŠãæ¢è£œã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããã ãã§ãã
ãŸãã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
ãã®ã³ãã³ãã¯ããã®å Žã§ devtree ãç·šéããããã§ãéåžžã«äŸ¿å©ã§ãã
ãã®æäœãæåããããåèµ·åã㊠GPS ããŒã¢ã³ãã€ã³ã¹ããŒã«ããŸãã
khadas@Khadas:~$ sudo reboot
GPS ããŒã¢ã³ãã€ã³ã¹ããŒã«ããŸãã ãã¹ãŠãã€ã³ã¹ããŒã«ãããããªãæ§æã®ããã«ããã«åæããŸãã
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
GPS ããã³ã°ãã UART ãã€ã³ã¹ããŒã«ããŠããŸãã
DEVICES="/dev/ttyS4"
ãããŠãã¹ãŠã®é»æºãå ¥ããŠéå§ããŸãã
/* GPS daemon enable/start */
sudo systemctl enable gpsd.socket
sudo systemctl start gpsd.socket
ãã®åŸãGPSãæ¥ç¶ããŸãã
GPS ã¯ã€ã€ãŒã¯ç§ã®æã®äžã«ãããUART ãããã¬ãŒã®ã¯ã€ã€ãŒã¯æã®äžã«èŠããŸãã
åèµ·åããgpsmon ããã°ã©ã ã䜿çšã㊠GPS ã®åäœã確èªããŸãã
ãã®ã¹ã¯ãªãŒã³ã·ã§ããã§ã¯è¡æã¯èŠããŸããããGPS åä¿¡æ©ãšã®éä¿¡ã確èªã§ããŸããããã¯ããã¹ãŠãæ£åžžã§ããããšãæå³ããŸãã
Python ã§ã¯ããã®ããŒã¢ã³ãæäœããããã«å€ãã®ãªãã·ã§ã³ãè©ŠããŸããããPython 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 ç§ä»¥å ã«ã座æšãååŸã§ãããã©ãããããããŸãã ã¯ãã座æšãååŸããã®ã« XNUMX åè©Šã¿ãŸããã æé©ã§ã¯ãªããæ²ãã£ãŠããŠãæªãã§ããŸãããæ©èœããŸãã GPS ã¯åä¿¡ç¶æ ãæªããåžžã«ããŒã¿ãåä¿¡ã§ãããšã¯éããªãããããããè¡ãããšã«ããŸããã ããŒã¿ã®åä¿¡ãåŸ ã£ãŠãããšãé¢ããéšå±ã§äœæ¥ããŠãããšããã®å Žæã§ããã°ã©ã ãããªãŒãºããŸãã ãããã£ãŠããã®ç¡ç²ãªãªãã·ã§ã³ãå®è£ ããŸããã
åççã«ã¯ããã£ãšæéãããã°ãUART çµç±ã§ GPS ããçŽæ¥ããŒã¿ãåä¿¡ãããããå¥ã®ã¹ã¬ããã§è§£æããŠæäœããããšãå¯èœã«ãªããŸãã ãããæéããŸã£ãããªãã£ãã®ã§ãã²ã©ãéãã³ãŒããã§ããŸããã ãããŠãã¯ããæ¥ãããããªãã§ãã
LED
LEDã®æ¥ç¶ã¯ç°¡åã§ãããšåæã«é£ããã£ãã§ãã äž»ãªåé¡ã¯ãã·ã¹ãã ã®ãã³çªå·ãããŒãäžã®ãã³çªå·ã«å¯Ÿå¿ããŠããªãããšãšãããã¥ã¡ã³ããå·Šæã§æžãããŠããããšã§ãã ããŒããŠã§ã¢ã®ãã³çªå·ãš OS ã®ãã³çªå·ãæ¯èŒããã«ã¯ã次ã®ã³ãã³ããå®è¡ããå¿ èŠããããŸãã
gpio readall
ã·ã¹ãã ãšããŒãäžã®ãã³å¯Ÿå¿è¡šã衚瀺ãããŸãã ãã®åŸãOSèªäœã§ãã³ãæäœã§ããããã«ãªããŸãã ç§ã®å ŽåãLEDã¯ã«æ¥ç¶ãããŠããŸã GPIOH_5.
GPIOãã³ãåºåã¢ãŒãã«åãæ¿ããŸãã
gpio -g mode 421 out
ãŒããæžããŸãã
gpio -g write 421 0
äžã€æžããŸãã
gpio -g write 421 1
ã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 ãçŸããç¹æ» ããŸãã
ãœãããŠã§ã¢ããŒã
ã¹ããŒããã¹ãAPI
Speedtest.net ãµãŒãã¹ã«ç¬èªã® Python API ãããã®ã¯éåžžã«åã°ããããšã§ãã
è¯ãã®ã¯ããœãŒã¹ã³ãŒãã衚瀺ã§ããããšã§ãã ãã® API ã®æäœæ¹æ³ (ç°¡åãªäŸ) ã¯ã次ã®å Žæã«ãããŸãã
以äžã®ã³ãã³ãã§Pythonã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããŸãã
sudo -H pip3 install speedtest-cli
ããšãã°ããœãããŠã§ã¢ããçŽæ¥ Ubuntu ã«ã¹ããŒã ãã¹ã¿ãŒãã€ã³ã¹ããŒã«ããããšãã§ããŸãã ããã¯åã Python ã¢ããªã±ãŒã·ã§ã³ã§ãããã³ã³ãœãŒã«ããçŽæ¥èµ·åã§ããŸãã
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
çµæçã«ã¯ç§ãšåãããã«ã ãããžã§ã¯ãã«ããã«å®å šã«å®è£ ããã«ã¯ããã®ã¹ããŒã ãã¹ãã®ãœãŒã¹ ã³ãŒãã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸããã æãéèŠãªäœæ¥ã® XNUMX ã€ã¯ããã¬ãŒãã«çœ®ãæããããã«éä¿¡äºæ¥è ã®ååãååŸããããšã§ãã
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"
#ÑÑÑ ÐžÐŽÐµÑ Ð·Ð°Ð¿ÐžÑÑ Ð² Ñайл лПгПв
ããã§ããã¯ããã«åçŽã«èŠãããããããŸãããããã¹ãŠãããã»ã©åçŽã§ã¯ãªãããšãå€æããŸããã åœåãservers ãã©ã¡ãŒã¿ã¯æ¬¡ãšåçã§ããã []ãæé©ãªãµãŒããŒãéžæããå¿ èŠããããšèšãããŠããŸãã ãã®çµæããµãŒããŒã¯ã©ã³ãã ã«ãªãããæ³åã®ãšãããé床ãå¯å€ã«ãªããŸããã ããã¯éåžžã«è€éãªãããã¯ã§ãããåºå®ãµãŒããŒã䜿çšããå ŽåãéçãµãŒããŒãŸãã¯åçãµãŒããŒã䜿çšããå Žåã¯èª¿æ»ãå¿ èŠã§ãã ãã ããããã§ã¯ãBeeline ãªãã¬ãŒã¿ãŒããã¹ã ãµãŒããŒãåçã«éžæããå Žåãšéçã«åºå®ããããµãŒããŒãéžæããå Žåã®é床枬å®ã°ã©ãã®äŸã瀺ããŸãã
åçãµãŒããŒãéžæããå Žåã®é床ã枬å®ããçµæã
å³éžããXNUMXå°ã®ãµãŒããŒã«ããé床ãã¹ãã®çµæã
ãã¹ãäžã¯äž¡æ¹ã®å Žæã«ãæ¯ãããããæ°åŠçææ³ã䜿çšããŠé€å»ããå¿
èŠããããŸãã ããããåºå®ãµãŒããŒã䜿çšãããšãæ¯å¹
ããããã«å°ãããªããæ¯å¹
ãããå®å®ããŸãã
äžè¬çã«ãããã¯çŽ æŽãããç 究ã®å Žã§ãã ãããŠã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ã«ã¯XNUMXæ¥ã«éä¿¡ãããã¡ãã»ãŒãžã®æ°ã«å¶éããããšããäºå®ã§åé¡ãçºçããŸããïŒããã¯çã¿ãæ²ãã¿ãå±èŸ±ã§ãïŒã XNUMX åãããã§ãèšå€§ãªæ°ã®ãšã©ãŒãçºçããå¯èœæ§ããããããã¡ãŒã«ã§ã®ãšã©ãŒéä¿¡ã¯æ念ããããåŸãŸããã§ããã ãã®ãããYandex ãµãŒãã¹ãéããŠãã®ãããªåé¡ã«é¢ããæ å ±ãèªåçã«éä¿¡ããå Žåã¯æ³šæããŠãã ããã
ãã£ãŒãããã¯ãµãŒããŒ
ãªã¢ãŒãã®ããŒããŠã§ã¢ã«ã¢ã¯ã»ã¹ããŠã«ã¹ã¿ãã€ãºããã³åæ§æã§ããããã«ããã«ã¯ãå€éšãµãŒããŒãå¿ èŠã§ããã äžè¬ã«ãå ¬å¹³ãæãããã«èšãã°ããã¹ãŠã®ããŒã¿ããµãŒããŒã«éä¿¡ãããã¹ãŠã®çŸããã°ã©ãã Web ã€ã³ã¿ãŒãã§ã€ã¹ã§æ§ç¯ããã®ãæ£ããã§ãããã ããããäžåºŠã«å šéšã§ã¯ãããŸããã
ç§ãéžãã VPSã¯
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 çµç±ã§ãã°ãããŒã¿ããµãŒããŒã«éä¿¡ããããšãã§ããã®ã§ãéåžžã«äŸ¿å©ã§ãã
ããããŸãšããŠ
ã¹ã€ãããå
¥ããŠãéçºãšãããã°ãå§ããŸããã
ãµãŒããããã§ãã¹ãŠã®ããŒãã«ã€ããŠèª¬æããŸããã ããããã¹ãŠããŸãšããŠã¿ãŸãããã ã³ãŒããèŠãããšãã§ããŸã
ã³ãŒãã«é¢ããéèŠãªç¹: ãã®ãããžã§ã¯ãã¯ãç¹å®ã®ã¢ãŒããã¯ãã£ã®ç¹å®ã®ã¿ã¹ã¯ã«åãããŠèª¿æŽãããŠããããããã®ããã«ã¯éå§ã§ããªãå¯èœæ§ããããŸãã ãœãŒã¹ã³ãŒãã瀺ããŠããŸãããæãéèŠãªããšã¯æ¬æã§èª¬æããŸããããããªããšå®å šã«ç解ã§ããŸããã
æåã«ãgpsãgpio ãåæåããå¥ã®ã¹ã±ãžã¥ãŒã©ãŒ ã¹ã¬ãããèµ·åããŸãã
#запÑÑк пПÑПка плаМОÑПвÑОка
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 æ¥ç¶ãç¶æããããšã§ãã åãã¹ãã«ã¯ãããã©ã«ã ã²ãŒããŠã§ã€ãš DNS ãµãŒããŒã®åæ§æãå«ãŸããŸãã ãšã«ãã誰ãæ¬ãèªãŸãªãã®ã§ãé»è»ã¯æšè£œã®ã¬ãŒã«ã®äžãèµ°ãããã§ã¯ãªãããšãç¥ã£ãŠãããŠãã ããã ã€ãŒã¹ã¿ãŒãšãã°ãèŠã€ãã人ã«ã¯ãã£ã³ãã£ãŒãããããŸãã
ãããè¡ãã«ã¯ãå¥ã®ã«ãŒãã£ã³ã° ããŒãã« -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
ãªã¹ããåãåã£ãåŸãã¢ãã ã«é¢ããç« ã®å³ã«ç€ºããããã«ããã¹ãŠã®ã€ã³ã¿ãŒãã§ã€ã¹ã« IP ã¢ãã¬ã¹ãèšå®ããŸãã
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"
æåã®çµéšã¯ Tele2 ãªãã¬ãŒã¿ãŒãšã®ããšã§ãããç§ã¯ãããæ°æ¥éå®æœããŸããã
ããã§ã¯åç枬å®ãµãŒããŒã䜿çšããŸããã é床枬å®ã¯æ©èœããŸãããéåžžã«å€åããŸãããããçšåºŠã®å¹³åå€ã¯äŸç¶ãšããŠè¡šç€ºãããŠãããããã¯ãããšãã°ç§»åå¹³åã䜿çšããŠããŒã¿ããã£ã«ã¿ãªã³ã°ããããšã«ãã£ãŠååŸã§ããŸãã
ãã®åŸãä»ã®éä¿¡äºæ¥è åãã«ããã€ãã®ã°ã©ããäœæããŸããã ãã®å Žåããã§ã« XNUMX å°ã®ãã¹ã ãµãŒããŒãããããã®çµæãéåžžã«èå³æ·±ããã®ã§ããã
ã芧ã®ãšããããã®ããŒã¿ã®ç 究ãšåŠçã§ã¯ããã®ããŒãã¯éåžžã«åºç¯ã§ãããæããã« XNUMX é±éã®äœæ¥ã§çµãããã®ã§ã¯ãããŸããã ãããâŠ
ä»äºã®çµæ
ç§ã®æã«è² ããªãç¶æ³ã«ããããã®ä»äºã¯çªç¶å®äºããŸããã ç§ã®äž»èŠ³çãªæèŠã§ã¯ããã®ãããžã§ã¯ãã®åŒ±ç¹ã® XNUMX ã€ã¯ãã¢ãã ã§ãããã¢ãã ã¯ä»ã®ã¢ãã ãšåæã«åäœããããšãããŸãæãã§ããããããŒãããããã³ã«ãã®ãããªããªãã¯ãè¡ã£ãŠããŸããã ãããã®ç®çã®ããã«ãä»ã«ãèšå€§ãªæ°ã®ã¢ãã ã¢ãã«ãååšããŸããéåžžããããã¯æ¢ã« Mini PCI-e ãã©ãŒãããã«ãªã£ãŠãããããã€ã¹å ã«ã€ã³ã¹ããŒã«ãããŠãããèšå®ãã¯ããã«ç°¡åã§ãã ããããããã¯å šãå¥ã®è©±ã§ãã ãšãŠãèå³æ·±ãäŒç»ã ã£ãã®ã§åå ã§ããŠæ¬åœã«è¯ãã£ããšæããŸãã
åºæïŒ habr.com