
顧客ã¯ãããŸããŸãªå°ççäœçœ®ã«ããããããçš®é¡ã®éä¿¡äºæ¥è ã®é床ãè©äŸ¡ããŠããããªãããŒããã£ã¹ããªã©ã®LTEæ¥ç¶ã䜿çšããŠæ©åšãèšçœ®ãããšãã«ãã©ã®æºåž¯äºæ¥è ãæé©ããçè§£ããããšèããŠããŸãããåæã«ãé«äŸ¡ãªèšåã䜿ããã«ãã¿ã¹ã¯ãã§ããã ãç°¡åãã€å®äŸ¡ã«è§£æ±ºããå¿ èŠããããŸããã
ãã®ã¿ã¹ã¯ã¯æãåçŽã§æãç¥èéçŽçã§ã¯ãªãããšãããã«èšã£ãŠããå¿ èŠããããŸããç§ã¯ã©ã®ãããªåé¡ãçºçããã©ã®ããã«è§£æ±ºãããã説æããŸãããããè¡ããã
泚æ
LTEæ¥ç¶ã®éåºŠãæž¬å®ããããšã¯éåžžã«é£ããåé¡ã§ãïŒé©åãªæ©åšãšæž¬å®æ¹æ³ãéžæããå¿ èŠããããã»ã«ã©ãŒãããã¯ãŒã¯ã®ããããžãŒãšéçšã«ã€ããŠãååã«çè§£ããŠããå¿ èŠããããŸããããã«ãé床ã¯ããã€ãã®èŠå ã«ãã£ãŠåœ±é¿ãåããå¯èœæ§ããããŸããã»ã«ããšã®å å ¥è æ°ãæ°è±¡æ¡ä»¶ãããã«ã¯ã»ã«ããšã«ããããã¯ãŒã¯ããããžã«ãã£ãŠé床ãèããç°ãªãå ŽåããããŸããäžè¬ã«ãããã¯æªç¥æ°ãéåžžã«å€ãåé¡ã§ãããéä¿¡äºæ¥è ã ããæ£ãã解決ã§ããŸãã
åœåã顧客ã¯ãªãã¬ãŒã¿ãŒã®é»è©±ã§å® é 䟿ãé転ããé»è©±ã§çŽæ¥æž¬å®ãè¡ããé床枬å®çµæãããŒãããã¯ã«æžãçããããšèããŠããŸããã lteãããã¯ãŒã¯ã®éåºŠãæž¬å®ããããã®ç§ã®ãœãªã¥ãŒã·ã§ã³ã¯ãçæ³çã§ã¯ãããŸããããåé¡ã解決ããŸãã
æéããªããããå©äŸ¿æ§ãå®çšæ§ãåªå ããã®ã§ã¯ãªããéçºã®ã¹ããŒããåªå ããŠæ±ºå®ããŸãããããšãã°ããªã¢ãŒãã¢ã¯ã»ã¹ã®å ŽåããµãŒããŒãšåã ã®ã¯ã©ã€ã¢ã³ããã»ããã¢ããããæéãç¯çŽããããã«ãããå®çšçãªvpnã§ã¯ãªãããªããŒã¹SSHãçºçããŸããã
æè¡çãªã¿ã¹ã¯
èšäºã§è¿°ã¹ãããã«TKããªããïŒã¯ã©ã€ã¢ã³ããæãã§ããªãçç±ïŒTKãªããŠã¯ãªããªãä»äºïŒæ±ºããŠãã©ãã«ãïŒ
æè¡çãªå²ãåœãŠã¯éåžžã«åçŽã§ããããšã³ããŠãŒã¶ãŒãçè§£ããããã«å°ãæ¡åŒµããŸããæè¡çãªãœãªã¥ãŒã·ã§ã³ãšæ©åšã®éžæã¯ãã客æ§ã«ãã£ãŠæ±ºå®ãããŸãããããã§ããã¹ãŠã®æ¿èªåŸã®TKèªäœïŒ
vim2 lte- Huawei e3372h â 153 ( n). GPS-, UART. www.speedtest.net :
![]()
csv. - 6 . , GPIO.
å€ãã®æ¿èªãåŸãåŸãTKãèªç±åœ¢åŒã§èª¬æããŸãããããããã¿ã¹ã¯ã®æå³ã¯ãã§ã«èŠããŠããŸãããã¹ãŠã®ç· ãåãã¯äžé±éã§ãããããããå®éã«ã¯3é±éç¶ããŸãããããã¯ãæ¬æ¥ãçµããŠé±æ«ã«ãããã£ãŠããªãã£ãããšãèžãŸãããã®ã§ãã
ããã§ãã客æ§ã以åã«é床枬å®ãµãŒãã¹ãšããŒããŠã§ã¢ã䜿çšããããšã«åæããŠãããããç§ã®èœåãå€§å¹ ã«å¶éãããŠããããšã«æ³šç®ããŠãã ãããäºç®ãéãããŠããã®ã§ã远å è³Œå ¥ã¯ãããŸããã§ãããã ããç§ã¯ãããã®ã«ãŒã«ãå®ããªããã°ãªããªãã£ãã
ã¢ãŒããã¯ãã£ãšéçº
ã¹ããŒã ã¯ã·ã³ãã«ã§ç°¡åã§ãããããã£ãŠãç¹å¥ãªã³ã¡ã³ãã¯çããŸãã

ç§ã¯ãã®èšèªã§ã®éçºçµéšããŸã£ãããªãã£ãã«ãããããããPythonã§ãããžã§ã¯ãå šäœãå®è£ ããããšã«ããŸãããéçºãã¹ããŒãã¢ããã§ããæ¢è£œã®äŸããœãªã¥ãŒã·ã§ã³ããããããã£ãã®ã§ãç§ã¯ãããéžã³ãŸããããããã£ãŠãç§ã¯ãã¹ãŠã®ããã®ããã°ã©ããŒã«ãPythonéçºã®æåã®çµéšãå±ããªãããã«ãé¡ãããŸãããŸããç§ã®ã¹ãã«ãåäžãããããã®å»ºèšçãªæ¹å€ãèããŠãã€ãæºè¶³ããŠããŸãã
ãŸãããã®éçšã§ãpythonã«2ã€ã®ããŒãžã§ã³2ãš3ãå®è¡ãããŠããããšããããããã®çµæã3çªç®ã®ããŒãžã§ã³ã§åæ¢ããŸããã
ããŒããŠã§ã¢ããŒã
ã·ã³ã°ã«ããŒãvim2
ã¡ã€ã³ãã·ã³ãšããŠãã·ã³ã°ã«ããŒãvim2ãäžããããŸãã

ã¹ããŒãããŒã ãšSMART-TVã«ã¯åªãã匷åãªã¡ãã£ã¢ãçµã¿åããããŠããŸããããã®ã¿ã¹ã¯ã«ã¯éåžžã«é©ããŠããŸãããããšãã°ãã¡ã€ã³ã®OSã¯Androidã§ãLinuxã¯åæ ŒOSã§ãããããLinuxã§ãã¹ãŠã®ããŒããšãã©ã€ããŒã®é«å質ãªåäœãä¿èšŒãããã®ã¯ãããŸããããŸããåé¡ã®äžéšã¯ãã®ãã©ãããã©ãŒã ã®USBãã©ã€ããŒã«é¢é£ããŠãããšèããããããããã®ããŒãã§ã¯ã¢ãã ãæåŸ ã©ããã«åäœããŸããã§ããã圌ã¯ãŸããéåžžã«è²§åŒ±ã§æ£åšããããã¥ã¡ã³ããæã£ãŠããã®ã§ãåæäœã¯ããã¯ãæãã®ã«å€ãã®æéãèŠããŸããã GPIOã§ã®éåžžã®äœæ¥ã§ããã倧éã®è¡ã飲ã¿ãŸãããããšãã°ãLEDã䜿çšããäœæ¥ãã»ããã¢ããããã®ã«æ°æéããããŸããããããã客芳çã«èšããšãã©ã®ãããªã·ã³ã°ã«ããŒãããã€ã¹ã§ãããã¯åºæ¬çã«éèŠã§ã¯ãããŸããã§ãããäž»ãªããšã¯ãããã€ã¹ãæ©èœããUSBããŒããåããŠããããšã§ãã
ãŸãããã®ããŒãã«Linuxãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã誰ãããã®ã·ã³ã°ã«ããŒãããã€ã¹ãæ±ã人ã®ããã«ãããã¥ã¡ã³ãã®ãžã£ã³ã°ã«ãæãäžããªãããã«ããããã«ããã®ç« ãæžããŠããŸãã
Linuxã®ã€ã³ã¹ããŒã«ã«ã¯ãå€éšSDã«ãŒããŸãã¯å éšMMCã®2ã€ã®ãªãã·ã§ã³ããããŸããç§ã¯å€æ¹ã«ã«ãŒããšæ Œéãããããåäœãããæ¹æ³ãããããªãã£ãã®ã§ãMMCã«ã€ã³ã¹ããŒã«ããããšã«ããŸããããééããªãå€éšã«ãŒãã䜿çšããæ¹ãã¯ããã«ç°¡åã§ãã
ãã¡ãŒã ãŠã§ã¢ã¯ããã§æ²ãã£ãŠèª¬æãããŠããŸããç§ã¯å¥åŠãªãã®ãããã·ã¢èªã«ç¿»èš³ããŠããŸããããŒãããã©ãã·ã¥ããã«ã¯ãããŒããŠã§ã¢UARTãæ¥ç¶ããå¿ èŠããããŸãã以äžã®ããã«æ¥ç¶ããŸããã
- ããŒã«ãã³GNDïŒ<â> VIMã®GPIOã®ãã³17
- ããŒã«ãã³TXDïŒ<â> VIMã®GPIOã®ãã³18ïŒLinux_RxïŒ
- ããŒã«ãã³RXDïŒ<â> VIMã®GPIOã®Pin19ïŒLinux_TxïŒ
- ããŒã«ãã³VCCïŒ<â> VIMã®GPIOã®Pin20

ãã®åŸããã¡ããããã¡ãŒã ãŠã§ã¢ãããŠã³ããŒãããŸãããç¹å®ã®ãã¡ãŒã ãŠã§ã¢ããŒãžã§ã³ã¯VIM1_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231ã§ãã
ãã®ãã¡ãŒã ãŠã§ã¢ãã¢ããããŒãããã«ã¯ãç¹å®ã®ãŠãŒãã£ãªãã£ãå¿ èŠã§ãã詳ããã¯ãã¡ããã芧ãã ãããWindowsã§ã¯ãã©ãã·ã¥ã詊ããŠããŸããããLinuxãã¡ãŒã ãŠã§ã¢ã«ã€ããŠç°¡åã«èª¬æããŸããæåã«ãæç€ºã«åŸã£ãŠãŠãŒãã£ãªãã£ãã€ã³ã¹ããŒã«ããŸãã
git clone https://github.com/khadas/utils
cd /path/to/utils
sudo ./INSTALL
Iii ...äœãæ©èœããŸããããã¹ãŠãæ£ããã€ã³ã¹ããŒã«ãããããã«ãç§ã¯æ°æéãããŠã€ã³ã¹ããŒã«ã¹ã¯ãªãããç·šéããŸãããç§ãããã§äœããããèŠããŠããŸãããã銬ãšã®ãµãŒã«ã¹ãããŸãããã®ã§æ³šæããŠãã ããããããããããã®ãŠãŒãã£ãªãã£ããªããã°ãvim2ãããã«æ·åããæå³ã¯ãããŸããã圌ãããããªãã§ãã ããïŒ
å°çãã¹ã¯ãªããã®æ§æãããã³ã€ã³ã¹ããŒã«ã®7ã€ã®åã®åŸã§ãåäœãããŠãŒãã£ãªãã£ã®ããã±ãŒãžãå ¥æããŸãããããŒããLinuxã³ã³ãã¥ãŒã¿ãŒã«USBçµç±ã§æ¥ç¶ãã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
ã¿ãªããããµwãç§ã¯å°ããŸãããããŒãã«ã¯LinuxããããŸãããã°ã€ã³/ãã¹ã¯ãŒãkhadasïŒkhadasã
ãã®åŸãå°ããªåæèšå®ãä»åŸã®äœæ¥ã®ããã«ãsudoã®ãã¹ã¯ãŒããç¡å¹ã«ããŸãïŒã¯ããå®å šã§ã¯ãããŸãããã䟿å©ã§ãïŒã
sudo visudo
è¡ããââã¥ãŒã«ç·šéããŠä¿åããŸã
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
次ã«ãçŸåšã®ãã±ãŒã«ã倿ŽããŠãæå»ãã¢ã¹ã¯ã¯ã«ãªãããã«ããŸãããã以å€ã®å Žåã¯ãGMTã«ãªããŸãã
sudo timedatectl set-timezone Europe/Moscow
ãŸãã¯
ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
é£ãããšæããå Žåã¯ããã®ããŒãã䜿çšããªãã§ãã ãããRaspberryPiãæé©ã§ãããã§ã¢ã
ã¢ãã Huawei e3372h-153
ãã®ã¢ãã ã¯ç§ã®è¡ããã飲ã¿ããããŠå®éãããã¯ãããžã§ã¯ãå šäœã®ããã«ããã¯ã«ãªããŸãããäžè¬ã«ããããã®ããã€ã¹ã®ãã¢ãã ããšããååã¯ãäœæ¥ã®æ¬è³ªããŸã£ããåæ ããŠããŸãããããã¯åŒ·åãªçµã¿åããã§ããããã®ããŒããŠã§ã¢ã®äžéšã«ã¯ããã©ã€ããŒãã€ã³ã¹ããŒã«ããããã«CD-ROMã®ãµããããŠããããã¯ãŒã¯ã«ãŒãã¢ãŒãã«å ¥ãè€åããã€ã¹ããããŸãã
æ§é çã«ã¯ãLinuxãŠãŒã¶ãŒã®èгç¹ããèŠããšããã¹ãŠã®èšå®ãçµãããšã次ã®ããã«ãªããŸããã¢ãã ãæ¥ç¶ãããšãdhcpãä»ããŠIPã¢ãã¬ã¹192.168.8.100ãåä¿¡ããeth *ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ãšãããã©ã«ãã²ãŒããŠã§ã€192.168.8.1ãååŸããŸãã
ãããŠæãéèŠãªãã€ã³ãïŒãã®ã¢ãã ã¢ãã«ã¯ãATã³ãã³ãã«ãã£ãŠå¶åŸ¡ãããã¢ãã ã¢ãŒãã§åäœããæ¹æ³ãèªèããŠããŸãã...ãã¹ãŠãã¯ããã«ç°¡åã«ãªããã¢ãã ããšã«pppæ¥ç¶ãäœæããŠãããããæäœããŸããããããç§ã®å ŽåããèªåãïŒæ£ç¢ºã«ã¯udevã«ãŒã«ã«ããLinuxãã€ããŒïŒãethã€ã³ã¿ãŒãã§ãŒã¹ãäœæããdhcpãä»ããŠããã«ipã¢ãã¬ã¹ãå²ãåœãŠãŸãã
ããã«æ··ä¹±ããªãããã«ããã¢ãã ããšããèšèãå¿ããŠããããã¯ãŒã¯ã«ãŒããšã²ãŒããŠã§ã€ãèšãããšããå§ãããŸããå®éãããã¯æ°ãããããã¯ãŒã¯ã«ãŒããã²ãŒããŠã§ã€ã«æ¥ç¶ãããããªãã®ã§ãã
ã¢ãã ã1å°ã®å Žåãããã¯ç¹å¥ãªåé¡ã®åå ã«ã¯ãªããŸããããã¢ãã ãè€æ°ãã€ãŸãnåã®å Žåã¯ã次ã®ãããã¯ãŒã¯ã®å³ã衚瀺ãããŸãã

ã€ãŸããnåã®ãããã¯ãŒã¯ã«ãŒãã§ãIPã¢ãã¬ã¹ãåãã§ããããããããã©ã«ãã²ãŒããŠã§ã€ãåãã§ããããããå®éã«ã¯ããããããç¬èªã®ãªãã¬ãŒã¿ãŒã«æ¥ç¶ãããŠããŸãã
æåã¯ç°¡åãªè§£æ±ºçããããŸãããifconfigãŸãã¯ipã³ãã³ãã䜿çšããŠãã¹ãŠã®ã€ã³ã¿ãŒãã§ã€ã¹ãæ¶ãã1ã€ãã€é çªã«ãªã³ã«ããŠãã¹ãããŸããããœãªã¥ãŒã·ã§ã³ã¯ãåãæ¿ãã®ç¬éã«ããã€ã¹ã«æ¥ç¶ã§ããªãã£ãããšãé€ããŠããã¹ãŠã®äººã«é©ããŠããŸããããŸããåãæ¿ããé »ç¹ãã€é«éã§ãããããå®éã«ã¯æ¥ç¶ããæ©äŒããŸã£ãããããŸããã§ããã
ãããã£ãŠãã¢ãã ã®IPã¢ãã¬ã¹ããæåã§ã倿Žããã«ãŒãã£ã³ã°èšå®ã䜿çšããŠãã©ãã£ãã¯ãé§åãç¶ããæ¹æ³ãéžæããŸããã

ããã¯ç§ã®ã¢ãã ã®åé¡ã®çµããã§ã¯ãããŸããã§ããïŒé»æºã®åé¡ãçºçããå Žåããããã¯èœã¡ãUSBãããžã®é©åãªå®å®ãã黿ºãå¿ èŠã§ããããã®åé¡ã¯ã黿ºãããã«çŽæ¥ããŒãã¯ãã ä»ãããããšã§è§£æ±ºããŸãããç§ãçŽé¢ãããããžã§ã¯ãå šäœãå°ç¡ãã«ããå¥ã®åé¡ïŒããã€ã¹ã®åèµ·åãŸãã¯ã³ãŒã«ãã¹ã¿ãŒãã®åŸããã¹ãŠã®ã¢ãã ãæ€åºãããããã§ã¯ãªããåžžã«æ€åºãããããã§ã¯ãããŸããããããçºçããçç±ãšãã€ã³ã¹ããŒã«ã§ããªãã£ãã¢ã«ãŽãªãºã ããããããŸãæåã«ã
ã¢ãã ãæ£ããæ©èœããããã«ãusb-modeswitchããã±ãŒãžãã€ã³ã¹ããŒã«ããŸããã
sudo apt update
sudo apt install -y usb-modeswitch
ãã®åŸãæ¥ç¶åŸã®ã¢ãã ã¯udevãµãã·ã¹ãã ã«ãã£ãŠæ£ããæ€åºããã³æ§æãããŸããã¢ãã ãæ¥ç¶ããŠããããã¯ãŒã¯ã皌åããŠããããšã確èªããŸãã
ç§ã解決ã§ããªãã£ããã1ã€ã®åé¡ïŒãã®ã¢ãã ãããæäœãããªãã¬ãŒã¿ãŒã®ååãååŸããæ¹æ³ã¯ïŒãªãã¬ãŒã¿ãŒã®ååã¯ãã¢ãã ã®Webã€ã³ã¿ãŒãã§ãŒã¹ã®192.168.8.1ã«å«ãŸããŠããŸããããã¯ajaxãªã¯ãšã¹ããä»ããŠããŒã¿ãåä¿¡ããåçãªWebããŒãžãªã®ã§ãããŒãžãååŸããŠååãè§£æããããšã¯ã§ããŸãããããã§ãWebããŒãžã®äœãæ¹ãªã©ãæ€èšãå§ããŠããªãããã³ã»ã³ã¹ãªããšããã£ãŠããããšã«æ°ã¥ããŸããããã®çµæã圌ã¯åŸãåããSpeedtestèªäœã®APIã䜿çšããŠãªãã¬ãŒã¿ãŒãåãå ¥ãå§ããŸããã
ATã³ãã³ããä»ããŠã¢ãã ã«ã¢ã¯ã»ã¹ã§ããã°ãå€ãã®ããšãç°¡åã«ãªããŸããåæ§æãpppæ¥ç¶ã®äœæãIPã®å²ãåœãŠããã£ãªã¢ã®ååŸãªã©ãå¯èœã§ããããããæ²ããããªãç§ã¯èªåãäžãããã®ã§äœæ¥ããŸãã
GPS
ç§ã«äžããããGPSåä¿¡æ©ã¯ãUARTã€ã³ã¿ãŒãã§ãŒã¹ãšé»æºãåããŠããŸãããããã¯æåã®è§£æ±ºçã§ã¯ãããŸããã§ããããããã§ãæ©èœããã·ã³ãã«ã§ãããåä¿¡æ©ã¯ãããªæãã§ããã

æ£çŽãªãšãããããã¯åããŠGPSã¬ã·ãŒããŒã䜿çšããäœæ¥ã§ãããäºæ³ã©ããããã¹ãŠããã£ãšåã«çºæãããŸãããã€ãŸããæ¢è£œã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããã ãã§ãã
ãŸããUART_AO_BïŒUART_RX_AO_BãUART_TX_AO_BïŒããªã³ã«ããŠGPSãæ¥ç¶ããŸãã
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ç§ä»¥å ã«ã座æšãååŸãããã©ãããæ±ºå®ããŸããã¯ãã座æšãååŸããããã«10å詊è¡ããŸãããæé©ã§ã¯ãªããæ²ãã£ãŠãããæãã§ãããæ©èœããŸããGPSãååã«ææã§ãããåžžã«ããŒã¿ãåä¿¡ã§ããããã§ã¯ãªãããããããè¡ãããšã«ããŸãããããŒã¿ãåä¿¡ãããã®ãåŸ ã£ãŠããå Žåããªã¢ãŒãã«ãŒã ã§äœæ¥ããŠãããšãããã°ã©ã ã¯ãã®å Žæã§ããªãŒãºããŸãããããã£ãŠãç§ã¯ãã®ãããªãšã¬ã¬ã³ãã§ã¯ãªããªãã·ã§ã³ãå®è£ ããŸããã
ååãšããŠããã£ãšæéããããUARTãä»ããŠGPSããçŽæ¥ããŒã¿ãåä¿¡ããå¥ã®ã¹ããªãŒã ã§ããããè§£æããŠãããããæäœããããšãå¯èœã§ãããããããŸã£ããæéããªãã£ããããéåžžã«éãã³ãŒãã§ãããããŠãã¯ããç§ã¯æ¥ããŠããŸããã
çºå ãã€ãªãŒã
LEDã®æ¥ç¶ã¯ããã¹ãŠã·ã³ãã«ãã€è€éã§ãããäž»ãªåé¡ã¯ãã·ã¹ãã ã®ãã³çªå·ãããŒãã®ãã³çªå·ã«å¯Ÿå¿ããŠããªãããšãšãããã¥ã¡ã³ããå·ŠããŒã«ã§æžãããŠããããã§ããããŒããŠã§ã¢ã®ãã³çªå·ãšOSã®ãã³çªå·ãäžèŽãããã«ã¯ã次ã®ã³ãã³ããå®è¡ããå¿ èŠããããŸãã
gpio readall
ã·ã¹ãã ãšããŒãäžã®ãã³ã®å¯Ÿå¿è¡šã衚瀺ãããŸãããã®åŸãOSèªäœã§æ¢ã«ãã³ãæäœã§ããŸããç§ã®å ŽåãLEDã¯GPIOH_5ã«æ¥ç¶ãããŠããŸãã

GPIOãã³ãåºåã¢ãŒãã«è»¢éããŸãã
gpio -g mode 421 out
ãŒããæžãçããŸãã
gpio -g write 421 0
1ã€æžãçããŸãã
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ãé©åã«ç¹æ» ããŸãã
ãœãããŠã§ã¢ããŒã
Speedtest API
ããã¯speedtest.netãµãŒãã¹ã¯ãç¬èªã®python-APIãæã£ãŠãããããªãã¯äžã§ãããèŠãããšãã§ãããšãã倧ããªåã³ã ã®Githubã
è¯ããã¥ãŒã¹ã¯ã衚瀺ã§ãããœãŒã¹ã³ãŒããããããšã§ãããã®APIã®æäœæ¹æ³ïŒæãåçŽãªäŸïŒã¯ã察å¿ããã»ã¯ã·ã§ã³ã«ãããŸãã
次ã®ã³ãã³ãã§pythonã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããŸãã
sudo -H pip3 install speedtest-cli
ããšãã°ãæ åœè ããçŽæ¥Ubuntuã«ã¹ããŒããã¹ã¿ãŒãã€ã³ã¹ããŒã«ããããšãã§ããŸããããã¯ãã³ã³ãœãŒã«ããçŽæ¥å®è¡ã§ããã®ãšåãPythonã¢ããªã±ãŒã·ã§ã³ã§ãã
sudo apt install speedtest-cli -y
ãããŠãããªãã®ã€ã³ã¿ãŒãããã®éåºŠãæž¬å®ããŸãã ãã®çµæãç§ãããããã«ãç§ã®ãããžã§ã¯ãã«ããããããå®å šã«å®è£ ããããã«ããã®ã¹ããŒããã¹ãã®ãœãŒã¹ã³ãŒããæãäžããå¿ èŠããããŸãããæãéèŠãªã¿ã¹ã¯ã®1ã€ã¯ãéä¿¡äºæ¥è ã®ååãååŸããŠããã¬ãŒãã§çœ®ãæããããšã§ãã
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"
#
ããã§ãããã¹ãŠãããã»ã©åçŽã§ã¯ãªãããšãããããŸããããã¯ããã«ç°¡åã«æããŸããæåã¯ãserversãã©ã¡ãŒã¿ã¯[]ã§ããããšåœŒãã¯èšããŸãããã®çµæãã©ã³ãã ãªãµãŒããŒãããããæ³åã®ãšãããæµ®åé床ã§ãããããã¯ããªãè€éãªãããã¯ã§ãããåºå®ãµãŒããŒã䜿çšããŠããå ŽåãéçãŸãã¯åçã®å Žåã調æ»ãå¿ èŠã§ããããããããã¯ããã¹ããµãŒããŒãšéçã«åºå®ããããµãŒããŒãåçã«éžæããŠãBeelineãªãã¬ãŒã¿ãŒã®éåºŠãæž¬å®ããããã®ã°ã©ãã®äŸã§ãã

åçãµãŒããŒãéžæãããšãã«éåºŠãæž¬å®ããçµæã

å³å¯ã«éžæããã1ã€ã®ãµãŒããŒã䜿çšããé床ãã¹ãã®çµæã
ãã¹ãäžã®ããŠãŒã«ãã¯ãã¡ãã¡ã«ãããæ°åŠçãªæ¹æ³ã§åãé€ãå¿ èŠããããŸããããããåºå®ãµãŒããŒã§ã¯ãããã¯ãããã«å°ãªããªããæ¯å¹ ã¯ããå®å®ããŸãã
äžè¬çã«ãããã¯çŽ æŽãããç ç©¶ã®å Žæã§ãããããŠãiperfãŠãŒãã£ãªãã£ã䜿çšããŠãµãŒããŒãžã®éåºŠãæž¬å®ããŸããããããTKã«åºå·ããŸãã
ã¡ãŒã«ã®éä¿¡ãšãšã©ãŒ
ç§ã¯ã¡ãŒã«ãéä¿¡ããããã«æ°åã®ç°ãªããªãã·ã§ã³ã詊ããŠã¿ãŸãããããã®çµæãç§ã¯ä»¥äžã«èœã¡çããŸãããç§ã¯yandexã«ã¡ãŒã«ããã¯ã¹ãç»é²ããŠããããã®ã¡ãŒã«éä¿¡ã®äŸãåãäžããŸãããç§ã¯ããããã§ãã¯ããããã°ã©ã ã«å®è£ ããŸããããã®äŸã§ã¯ãGmailããã®éä¿¡ãªã©ãããŸããŸãªãªãã·ã§ã³ã«ã€ããŠèª¬æããŸããç§ã¯ã¡ãŒã«ãµãŒããŒãå¢ããããšã«ç ©ããããããªãã£ããããããè¡ãæéããããŸããã§ããããåŸã§å€æããããã«ããããç¡é§ã§ããã
ãã°ã¯ãã¹ã±ãžã¥ãŒã©ãŒã«åŸã£ãŠãæ¥ç¶ããã£ãå Žåã6æéããšã«éä¿¡ãããŸããïŒ00æéãåå6æãæ£åãååŸ18æã以äžã®ããã«éããŸããã
from send_email import *
...
message_log = " â1"
EmailForSend = ["dlinyj@trololo.ru", "pupkin@trololo.ru"]
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
ãšã©ãŒãæåã«éä¿¡ãããŸããããŸãããããã¯ãªã¹ãã«èç©ãããæ¥ç¶ãããå Žåã¯ã¹ã±ãžã¥ãŒã©ã䜿çšããŠéä¿¡ããŸããããããããã®åŸãã€ã³ããã¯ã¹ã1æ¥ã«éä¿¡ããã¡ãã»ãŒãžã®æ°ã«å¶éããããšããåé¡ããããŸããïŒããã¯ãçã¿ãæ²ãã¿ãå±èŸ±ã§ãïŒã1åã§ãèšå€§ãªæ°ã®ãšã©ãŒãçºçããå¯èœæ§ããããããã¡ãŒã«ã«ãããšã©ãŒã®éä¿¡ãæåŠããå¿ èŠããããŸããããã®ããããã®ãããªåé¡ã«ã€ããŠYandexãµãŒãã¹ãèªåçã«éä¿¡ããå Žåã¯æ³šæããŠãã ããã
ãã£ãŒãããã¯ãµãŒããŒ
ãªã¢ãŒãã®ããŒããŠã§ã¢ã«ã¢ã¯ã»ã¹ãã調æŽããŠåæ§æã§ããããã«ããã«ã¯ãå€éšãµãŒããŒãå¿ èŠã§ãããäžè¬çã«ãå ¬å¹³ãæããŠããã¹ãŠã®ããŒã¿ããµãŒããŒã«éä¿¡ããWebã€ã³ã¿ãŒãã§ãŒã¹ã§ãã¹ãŠã®çŸããã°ã©ããäœæããã®ãæ£ããã§ããããããããäžåºŠã«ãã¹ãŠã§ã¯ãããŸããã
VPSã«ã¯ruvds.comãéžã³ãŸãããæãåçŽãªãµãŒããŒã䜿çšã§ããŸãããããŠãäžè¬çã«ãç§ã®ç®çã§ã¯ãããã§ååã§ããããããç§ã¯ãµãŒããŒã®ä»£éãæãå¿ èŠããªãã£ãã®ã§ãå°ãäœè£ãæã£ãŠãããæ¡çšããããšã«ããŸããããã®ãããWebã€ã³ã¿ãŒãã§ã€ã¹ãSMTPãµãŒããŒãvpnãªã©ãå±éããã ãã§ååã§ããããã«ãTelegramããããã»ããã¢ããããŠãããããããã¯ããåé¡ããªãããã«ããããšãã§ããŸãããããã£ãŠãã¢ã ã¹ãã«ãã ãšä»¥äžã®ãã©ã¡ãŒã¿ãŒãéžæããŸããã

ããŒããŠã§ã¢ã®äžéšãšéä¿¡ããæ¹æ³ãšããŠãvim2ã¯ãªããŒã¹sshæ¥ç¶ãéžæããŸããããå®éã«ç€ºãããŠããããã«ãããã¯æåã§ã¯ãããŸãããæ¥ç¶ãåæãããå ŽåããµãŒããŒã¯ããŒããä¿æããŠããããã°ããã®éãããä»ããŠæ¥ç¶ããããšã¯äžå¯èœã§ãããããã£ãŠãvpnãªã©ã®ä»ã®éä¿¡æ¹æ³ã䜿çšããããšããå§ãããŸããå°æ¥ã¯vpnã«åãæ¿ãããã£ãã®ã§ãããæéããããŸããã§ããã
ãã¡ã€ã¢ãŠã©ãŒã«ã®èšå®ãæš©éã®å¶éãSSHã«ãŒãæ¥ç¶ã®ç¡å¹åãããã³VPSèšå®ã®ãã®ä»ã®äžè¬çãªçå®ã®è©³çްã«ã¯è§ŠããŸãããç§ã¯ããªãããã§ã«ãã¹ãŠãç¥ã£ãŠãããšä¿¡ããããšæããŸãããªã¢ãŒãæ¥ç¶ã®å ŽåããµãŒããŒã«æ°ãããŠãŒã¶ãŒãäœæããŸãã
adduser vimssh
ç§ãã¡ã®ããŒããŠã§ã¢ã§ã¯ãsshæ¥ç¶ããŒãçæããŸãã
ssh-keygen
ãããŠããããããµãŒããŒã«ã³ããŒããŸãã
ssh-copy-id vimssh@host.com
ç§ãã¡ã®ããŒããŠã§ã¢ã§ã¯ãèµ·åã®ãã³ã«ãªããŒã¹SSHã®èªåæ¥ç¶ãäœæããŸãã ããŒã8083ã«æ³šæããŠãã ããããªããŒã¹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 vimssh@host.com
RestartSec=5
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl enable autossh.service
sudo systemctl start autossh.service
ã¹ããŒã¿ã¹ã確èªã§ããŸãã
sudo systemctl status autossh.service
次ã«ãVPSãµãŒããŒã§ã次ã®ã³ãã³ããå®è¡ããå ŽåïŒ
ssh -p 8083 khadas@localhost
ããããç§ã¯ç§ã®ãã¹ãããŒã¹ã«è¡ããŸãããããŠãéçããããã°ãšãã¹ãŠã®ããŒã¿ãsshçµç±ã§ãµãŒããŒã«éä¿¡ããããšãã§ããŸããããã¯éåžžã«äŸ¿å©ã§ãã
ãã¹ãŠãäžç·ã«å ¥ããŠ

ãªã³ã«ãããšã
Fuhã®éçºãšãããã°ãéå§ããŸãããŸãããã¹ãŠããã¹ãŠã®ããŒããèšè¿°ããŠããããã§ãããã¹ãŠããŸãšããæãæ¥ãŸãããã³ãŒãã¯ããã§èŠãããšãã§ããŸãã
ã³ãŒãã®éèŠãªãã€ã³ãïŒãã®ãvlobãã®ãããªãã®ãããžã§ã¯ãã¯ãç¹å®ã®ã¢ãŒããã¯ãã£ãŒã®ç¹å®ã®ã¿ã¹ã¯ã§åŒ·åããããããéå§ãããªãå¯èœæ§ããããŸããç§ã¯ãœãŒã¹ã³ãŒããæäŸããŸãããããã§ãããã¹ãã§æã䟡å€ã®ãããã®ãåæããŸãããã以å€ã®å Žåã¯ãå®å šã«çè§£ã§ããŸããã
æåã¯ã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ã«ãŒãã£ã³ã°ãèšå®ãïŒå®äºããŠããªãå ŽåïŒããµãŒããŒã«ãšã©ãŒãéä¿¡ããæéãçµéããå Žåã¯ãã°ãéä¿¡ããæåŸã«speedtestãå®è¡ããŠãã°ã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ã§ããã

ããã§ã¯åçèšæž¬ãµãŒããŒã䜿çšããŸãããé床枬å®ã¯æ©èœããŸãããéåžžã«å€åããŸãããäžéšã®å¹³åå€ã¯è¡šç€ºããããŸãŸã§ãããããšãã°ç§»åå¹³åã§ããŒã¿ããã£ã«ã¿ãªã³ã°ããããšã§ååŸã§ããŸãã
ãã®åŸãä»ã®éä¿¡äºæ¥è ã®ããã«äžé£ã®ã°ã©ããäœæããŸããããã®å Žåããã§ã«1ã€ã®ãã¹ããµãŒããŒããããçµæãéåžžã«è峿·±ããã®ã§ãã




ã芧ã®ããã«ããã®ãããã¯ã¯ãã®ããŒã¿ã®èª¿æ»ãšåŠçã«éåžžã«åºç¯å²ã§ãããæããã«æ°é±éã®äœæ¥ãç¶ãããã§ã¯ãããŸãããã ãâŠ
ä»äºã®çµæ
ç§ã®æã«è² ããªãç¶æ³ã®ãããäœæ¥ã¯çªç¶å®äºããŸããããã®ãããžã§ã¯ãã®åŒ±ç¹ã®1ã€ã¯ãç§ã®äž»èгçãªæèŠã§ã¯ãã¢ãã ã§ãããã¢ãã ã¯ãä»ã®ã¢ãã ãšåæã«ã¯åäœããããªããèµ·åãããã³ã«ãã®ãããªããªãã¯ãäœããŸããããããã®ç®çã®ããã«ãéåžžã«å€ãã®ä»ã®ã¢ãã«ã®ã¢ãã ããããéåžžããããã¯ãã§ã«Mini PCI-eãã©ãŒããããåããŠãããããã€ã¹å ã«ã€ã³ã¹ããŒã«ãããæ§æãã¯ããã«ç°¡åã§ããããããããã¯ãŸã£ããå¥ã®è©±ã§ãããã®ãããžã§ã¯ãã¯é¢çœãã£ããããªããšãåå ã§ããŠããã£ãã
