ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ื‘ืขืฉืึทืก ืงืึทืจืึทื ื˜ื™ืŸ, ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืคึฟื™ื ื˜ ืฆื• ืึธื ื˜ื™ื™ืœ ื ืขืžืขืŸ ืื™ืŸ ื“ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ืึท ืžื™ื˜ืœ ืคึฟืึทืจ ืžืขืกื˜ืŸ ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ืœื˜ืข ืžืึธื“ืขืžืก ืคึฟืึทืจ ืขื˜ืœืขื›ืข ืกืขืœื™ืึทืœืขืจ ืึธืคึผืขืจื™ื™ื˜ืขืจื–.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ื“ืขืจ ืงื•ื ื” ื”ืื˜ ื’ืขื•ื•ืืœื˜ ืึธืคึผืฉืึทืฆืŸ ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ืคืึทืจืฉื™ื“ืŸ ื˜ืขืœืขืงืึธื ืึธืคึผืขืจื™ื™ื˜ืขืจื– ืื™ืŸ ืคืึทืจืฉื™ื“ืขื ืข ื“ื–ืฉื™ืึทื’ืจืึทืคื™ืงืึทืœ ืœืึธื•ืงื™ื™ืฉืึทื ื–, ื›ึผื“ื™ ืฆื• ืงืขื ืขืŸ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ืึธืก ืกืขืœื™ืึทืœืขืจ ืึธืคึผืขืจืึทื˜ืึธืจ ืื™ื– ืžืขืจืกื˜ ืึธืคึผื˜ื™ืžืึทืœ ืคึฟืึทืจ ืื™ื ื•ื•ืขืŸ ื™ื ืกื˜ืึธืœื™ื ื’ ื•ื™ืกืจื™ื›ื˜ ื ื™ืฆืŸ ืึท ืœื˜ืข ืงืฉืจ, ืœืžืฉืœ, ืคึฟืึทืจ ื•ื•ื™ื“ืขื ื‘ืจืึธื“ืงืึทืกืฅ. ื’ืœืฒื›ืฆืฒื˜ื™ ืง ื”ื ื˜ ืžืข ืŸ ื’ืขืžื•ื– ื˜ ืœืฒื– ืŸ ื“ ื™ ืคืจืื‘ืœืข ื ืฐ ื™ ืืฒื ืคื ืš ืื• ืŸ ื‘ื™ืœื™ื’ , ื ืŸ ื˜ืฒืขืจ ืข ืขืงื•ื•ื™ืคึผืžืขื ื˜ .

ืื™ืš ื•ื•ืขื˜ ื–ืึธื’ืŸ ื’ืœื™ื™ืš ืึทื– ื“ื™ ืึทืจื‘ืขื˜ ืื™ื– ื ื™ืฉื˜ ื“ื™ ืกื™ืžืคึผืœืึทืกื˜ ืื•ืŸ ืžืขืจืกื˜ ื•ื•ื™ืกืŸ-ืื™ื ื˜ืขื ืกื™ื•ื•ืข; ืื™ืš ื•ื•ืขื˜ ื–ืึธื’ืŸ ืื™ืจ ื•ื•ืึธืก ืคึผืจืึธื‘ืœืขืžืก ืื™ืš ื’ืขืคึผืœืึธื ื˜ืขืจื˜ ืื•ืŸ ื•ื•ื™ ืื™ืš ืกืึทืœื•ื•ื“ ื–ื™ื™. ืึทื–ื•ื™, ืœืึธื–ืŸ ืก ื’ื™ื™ืŸ.

ื˜ืึธืŸ

ืžืขืกื˜ืŸ ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ืึท ืœื˜ืข ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ืื™ื– ืึท ื–ื™ื™ืขืจ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ืขื ื™ืŸ: ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืœื™ื™ึทื‘ืŸ ื“ื™ ืจืขื›ื˜ ื•ื™ืกืจื™ื›ื˜ ืื•ืŸ ืžืขื–ืฉืขืจืžืึทื ื˜ ื˜ืขื›ื ื™ืง, ืื•ืŸ ืื•ื™ืš ื”ืึธื‘ืŸ ืึท ื’ื•ื˜ ืคืืจืฉื˜ืื ื“ ืคื•ืŸ ื“ื™ ื˜ืึทืคึผืึทืœืึทื“ื–ืฉื™ ืื•ืŸ ืึธืคึผืขืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืกืขืœื™ืึทืœืขืจ ื ืขืฅ. ืคึผืœื•ืก, ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื™ื ืคืœื•ืึทื ืกื˜ ื“ื•ืจืš ืขื˜ืœืขื›ืข ืกื™ื‘ื•ืช: ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืื‘ืื ืขื ื˜ืŸ ืื•ื™ืฃ ืึท ืฆืขืœ, ื•ื•ืขื˜ืขืจ ื˜ื ืึธื™ื, ืืคื™ืœื• ืคื•ืŸ ืฆืขืœ ืฆื• ืฆืขืœ, ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ืจืึทืžืึทื˜ื™ืงืœื™ ื‘ื™ื™ึทื˜ืŸ ืจืขื›ื˜ ืฆื• ื“ืขืจ ื ืขืฅ ื˜ืึทืคึผืึทืœืึทื“ื–ืฉื™. ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื“ืึธืก ืื™ื– ืึท ืคึผืจืึธื‘ืœืขื ืžื™ื˜ ืึท ืจื™ื–ื™ืง ื ื•ืžืขืจ ืคื•ืŸ ืื•ืžื‘ืึทืงืึทื ื˜, ืื•ืŸ ื‘ืœื•ื™ื– ืึท ื˜ืขืœืขืงืึธื ืึธืคึผืขืจืึทื˜ืึธืจ ืงืขื ืขืŸ ืกืึธืœื•ื•ืข ืขืก ืจื™ื›ื˜ื™ืง.

ื˜ื›ื™ืœืขืก, ื“ืขืจ ืงื•ื ื” ื ืึธืจ ื’ืขื•ื•ืืœื˜ ืฆื• ืคืึธืจ ื“ื™ ืงืขืจื™ืขืจ ืžื™ื˜ ื“ื™ ืึธืคึผืขืจื™ื™ื˜ืขืจื– 'ืคืึธื ืขืก, ื ืขืžืขืŸ ืžืขื–ืฉืขืจืžืึทื ืฅ ื’ืœื™ื™ึทืš ืื•ื™ืฃ ื“ื™ ื˜ืขืœืขืคืึธืŸ ืื•ืŸ ื“ืขืžืึธืœื˜ ืฉืจื™ื™ึทื‘ืŸ ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืžืขื–ืฉืขืจืžืึทื ื˜ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืื™ืŸ ืึท ื”ืขืคื˜. ืžื™ื™ึทืŸ ืœื™ื™ื–ื•ื ื’ ืคึฟืึทืจ ืžืขืกื˜ืŸ ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ืœื˜ืข ื ืขื˜ื•ื•ืึธืจืงืก, ื›ืึธื˜ืฉ ื ื™ื˜ ื™ื“ืขืึทืœ, ืกืึทืœื•ื•ื– ื“ื™ ืคึผืจืึธื‘ืœืขื.

ืจืขื›ื˜ ืฆื• ืคืขืœืŸ ืคื•ืŸ ืฆื™ื™ื˜, ืื™ืš ื’ืขืžืื›ื˜ ื“ื™ืกื™ื–ืฉืึทื ื– ื ื™ื˜ ืื™ืŸ ื˜ื•ื™ื•ื•ืข ืคื•ืŸ โ€‹โ€‹ืงืึทื ื•ื•ื™ื ื™ืึทื ืก ืึธื“ืขืจ ืคึผืจืึทืงื˜ื™ืงืึทืœืึทื˜ื™, ืึธื‘ืขืจ ืื™ืŸ ื˜ื•ื™ื•ื•ืข ืคื•ืŸ โ€‹โ€‹ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืคืึทืจืงืขืจื˜ ssh ืื™ื– ื’ืขื ื™ืฆื˜ ืคึฟืึทืจ ื•ื•ื™ื™ึทื˜ ืึทืงืกืขืก, ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ื“ื™ ืžืขืจ ืคึผืจืึทืงื˜ื™ืฉ ื•ื•ืคึผืŸ, ืื™ืŸ ืกื“ืจ ืฆื• ืฉืคึผืึธืจืŸ ืฆื™ื™ื˜ ืื•ื™ืฃ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ื™ ืกืขืจื•ื•ืขืจ ืื•ืŸ ื™ืขื“ืขืจ ื™ื—ื™ื“ ืงืœื™ืขื ื˜.

ื˜ืขื›ื ื™ืฉ ืึทืจื‘ืขื˜

ื•ื•ื™ ืกื˜ื™ื™ื˜ื™ื“ ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืึธืŸ ื˜ืขื›ื ื™ืฉ ืกืคึผืขืกืึทืคืึทืงื™ื™ืฉืึทื ื–: ื•ื•ืึธืก ื“ืขืจ ืงืœื™ืขื ื˜ ื˜ื•ื˜ ื ื™ืฉื˜ ื•ื•ืขืœืŸ ืขืก: ื“ื• ื–ืืœืกื˜ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ ืึธืŸ ื˜ืขื›ื ื™ืฉ ืกืคึผืขืกืึทืคืึทืงื™ื™ืฉืึทื ื–! ืงื™ื™ื ืžืึธืœ, ืขืจื’ืขืฅ!

ื“ื™ ื˜ืขื›ื ื™ืฉ ืึทืจื‘ืขื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืึทื ืฅ ืคึผืฉื•ื˜, ืื™ืš ื•ื•ืขืœ ื™ืงืกืคึผืึทื ื“ ืขืก ืึท ื‘ื™ืกืœ ืคึฟืึทืจ ื“ื™ ืคืืจืฉื˜ืื ื“ ืคื•ืŸ ื“ื™ ืกื•ืฃ ื‘ืึทื ื™ืฆืขืจ. ื“ื™ ื‘ืจื™ืจื” ืคื•ืŸ ื˜ืขื›ื ื™ืฉ ืกืึทืœื•ืฉืึทื ื– ืื•ืŸ ื•ื™ืกืจื™ื›ื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ื“ื™ืงื˜ื™ื™ื˜ื™ื“ ื“ื•ืจืš ื“ืขืจ ืงื•ื ื”. ืึทื–ื•ื™, ื“ื™ ื˜ืขื›ื ื™ืฉ ืกืคึผืขืกืึทืคืึทืงื™ื™ืฉืึทื ื– ื–ื™ืš, ื ืึธืš ืึทืœืข ืึทืคึผืจื•ื•ื•ื–:

ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืึท ืื™ื™ืŸ ื‘ืจืขื˜ ืงืึธืžืคึผื™ื•ื˜ืขืจ vim2 ืžืึทื›ืŸ ืึท ื’ื™ื›ืงื™ื™ึทื˜ ื˜ืขืกื˜ืขืจ ืคึฟืึทืจ ืœื˜ืข ืงืึทื ืขืงืฉืึทื ื– ื“ื•ืจืš H ืžืึธื“ืขืžืกื•ื•ื•ื™ื™ ืข3372ื” - 153 ืขื˜ืœืขื›ืข ื˜ืขืœืขืงืึธื ืึธืคึผืขืจื™ื™ื˜ืขืจื– (ืคื•ืŸ ืื™ื™ืŸ ืฆื• n). ืขืก ืื™ื– ืื•ื™ืš ื ื™ื™ื˜ื™ืง ืฆื• ื‘ืึทืงื•ืžืขืŸ ืงืึธื•ืึธืจื“ืึทื ืึทืฅ ืคึฟื•ืŸ ืึท ื’ืคึผืก ื•ืคื ืขืžืขืจ ืงืึธื ื ืขืงื˜ืขื“ ื“ื•ืจืš UART. ืžืึทื›ืŸ ื’ื™ื›ืงื™ื™ึทื˜ ืžืขื–ืฉืขืจืžืึทื ืฅ ื ื™ืฆืŸ ื“ื™ ืกืขืจื•ื•ื™ืก www.speedtest.net ืื•ืŸ ืฉื˜ืขืœืŸ ื–ื™ื™ ืื™ืŸ ืึท ื˜ื™ืฉ ื•ื•ื™:

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ื˜ื™ืฉ ืื™ืŸ ืงืกื•ื• ืคึฟืึธืจืžืึทื˜. ื“ืขืจื ืึธืš ืฉื™ืงืŸ ื“ืขื ืฆื™ื™ื›ืŸ ื“ื•ืจืš E- ืคึผืึธืกื˜ ื™ืขื“ืขืจ 6 ืฉืขื”. ืื™ืŸ ืคืึทืœ ืคื•ืŸ ืขืจืจืึธืจืก, ื‘ืœื™ื ืง ื“ื™ ื’ืขืคื™ืจื˜ ื•ื•ืึธืก ืื™ื– ืงืึธื ื ืขืงื˜ืขื“ ืฆื• ื“ื™ GPIO.

ืื™ืš ื“ื™ืกืงืจื™ื™ื‘ื“ ื“ื™ ื˜ืขื›ื ื™ืฉ ืกืคึผืขืกืึทืคืึทืงื™ื™ืฉืึทื ื– ืื™ืŸ ืคืจื™ื™ ืคืึธืจืขื, ื ืึธืš ืคื™ืœืข ืึทืคึผืจื•ื•ื•ืึทืœื–. ืื‘ืขืจ ื“ืขืจ ื˜ื™ื™ึทื˜ืฉ ืคื•ืŸ ื“ื™ ืึทืจื‘ืขื˜ ืื™ื– ืฉื•ื™ืŸ ืงืขื ื˜ื™ืง. ืคืืจ ืืœืฅ ื”ืื˜ ืžืขืŸ ื’ืขื’ืขื‘ืŸ ื ืฐืืš. ืื‘ืขืจ ืœืžืขืฉื” ื”ืื˜ ืขืก ื’ืขื“ื•ื™ืขืจื˜ ื“ืจื™ื™ ื•ื•ืื›ืŸ. ื“ืึธืก ืื™ื– ื’ืขื ื•ืžืขืŸ ืื™ืŸ ื—ืฉื‘ื•ืŸ ื“ื™ ืคืึทืงื˜ ืึทื– ืื™ืš ื”ืึธื‘ ื“ืึธืก ื‘ืœื•ื™ื– ื ืึธืš ืžื™ื™ืŸ ื”ื•ื™ืคึผื˜ ืึทืจื‘ืขื˜ ืื•ืŸ ืื•ื™ืฃ ื•ื•ื™ืงืขื ื“ื–.

ื“ืึธ ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ื•ื•ื™ื“ืขืจ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืฆื• ื“ื™ ืคืึทืงื˜ ืึทื– ื“ืขืจ ืงื•ื ื” ืžืกื›ื™ื ืื™ืŸ ืฉื˜ื™ื™ึทื’ืŸ ืื•ื™ืฃ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืžืขื–ืฉืขืจืžืึทื ื˜ ื“ื™ื ืกื˜ ืื•ืŸ ื™ื™ึทื–ื ื•ื•ืึทืจื’, ื•ื•ืึธืก ื–ื™ื™ืขืจ ืœื™ืžื™ื˜ืขื“ ืžื™ื™ืŸ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื–. ื“ืขืจ ื‘ื•ื“ื–ืฉืขื˜ ืื™ื– ืื•ื™ืš ื’ืขื•ื•ืขืŸ ื‘ืื’ืจืขื ืขืฆื˜, ืึทื–ื•ื™ ื’ืึธืจื ื™ืฉื˜ ืกืคึผืขืฆื™ืขืœ ืื™ื– ื’ืขืงื•ื™ืคื˜. ืึทื–ื•ื™ ืžื™ืจ ื”ืึธื‘ืŸ ืฆื• ืฉืคึผื™ืœืŸ ื“ื•ืจืš ื“ื™ ื›ึผืœืœื™ื.

ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืื•ืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’

ื“ืขืจ ืกื›ืขืžืข ืื™ื– ืคึผืฉื•ื˜ ืื•ืŸ ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’. ื“ืขืจื™ื‘ืขืจ, ืื™ืš ื•ื•ืขืœ ืœืึธื–ืŸ ืขืก ืึธืŸ ืงื™ื™ืŸ ืกืคึผืขืฆื™ืขืœ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ื“ื™ ื’ืื ืฆืข ืคึผืจื•ื™ืขืงื˜ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ, ื˜ืจืึธืฅ ื“ืขืจ ืคืึทืงื˜ ืึทื– ืื™ืš ื”ืื˜ ืงื™ื™ืŸ ื“ืขืจืคืึทืจื•ื ื’ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืื™ืŸ ื“ืขื ืฉืคึผืจืึทืš. ืื™ืš ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ืขืก ื•ื•ื™ื™ึทืœ ืขืก ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ืึท ื‘ื™ื ื˜ืœ ืคื•ืŸ ืคืึทืจื˜ื™ืง ื‘ื™ื™ืฉืคื™ืœืŸ ืื•ืŸ ืกืึทืœื•ืฉืึทื ื– ื•ื•ืึธืก ืงืขืŸ ืคืึทืจื’ื™ื›ืขืจืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’. ื“ืขืจื™ื‘ืขืจ, ืื™ืš ื‘ืขื˜ืŸ ืึทืœืข ืคืึทื›ืžืึทืŸ ืคึผืจืึธื•ื’ืจืึทืžืขืจื– ื ื™ืฉื˜ ืฆื• ื•ื™ืกืจืขื“ืŸ ืžื™ื™ืŸ ืขืจืฉื˜ืขืจ ื“ืขืจืคืึทืจื•ื ื’ ืคื•ืŸ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ, ืื•ืŸ ืื™ืš ื‘ื™ืŸ ืฉื˜ืขื ื“ื™ืง ืฆื•ืคืจื™ื“ืŸ ืฆื• ื”ืขืจืŸ ืงืึทื ืกื˜ืจืึทืงื˜ื™ื•ื• ืงืจื™ื˜ื™ืง ืฆื• ืคึฟืึทืจื‘ืขืกืขืจืŸ ืžื™ื™ืŸ ืกืงื™ืœื–.

ืื•ื™ืš ืื™ืŸ ื“ืขื ืคึผืจืึธืฆืขืก ืื™ืš ื“ื™ืกืงืึทื•ื•ืขืจื“ ืึทื– ืคึผื™ื˜ื”ืึธืŸ ื”ืื˜ ืฆื•ื•ื™ื™ ืคืœื™ืกื ื“ื™ืง ื•ื•ืขืจืกื™ืขืก 2 ืื•ืŸ 3, ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜ ืื™ืš ื’ืขื–ืขืฆื˜ ืื•ื™ืฃ ื“ื™ ื“ืจื™ื˜.

ื™ื™ึทื–ื ื•ื•ืึทืจื’ ื ืึธื•ื“ื–

ืื™ื™ืŸ-ื˜ืขืœืขืจ ื•ื•ื™ืž2

ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขื’ืขื‘ืŸ ืึท ืื™ื™ืŸ-ื‘ืึธืจื“ ืงืึธืžืคึผื™ื•ื˜ืขืจ ื•ื•ื™ ืžื™ื™ืŸ ื”ื•ื™ืคึผื˜ ืžืึทืฉื™ืŸ vim2

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ืึท ื•ื™ืกื’ืขืฆื™ื™ื›ื ื˜, ืฉื˜ืึทืจืง ืžืขื“ื™ืข ืคึผืจืึทืกืขืกืขืจ ืคึฟืึทืจ ืึท ืงืœื•ื’ ื”ื™ื™ื ืื•ืŸ SMART-TV, ืึธื‘ืขืจ ื’ืึธืจ ื•ืžืคึผืึทืกื™ืง ืคึฟืึทืจ ื“ืขื ืึทืจื‘ืขื˜, ืึธื“ืขืจ, ืœืึธื–ืŸ ืก ื–ืึธื’ืŸ, ืฉื•ื•ืึทืš ืคึผืึทืกื™ืง. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื–ื™ื™ึทืŸ ื”ื•ื™ืคึผื˜ ืึทืก ืื™ื– ืึทื ื“ืจื•ื™ื“, ืื•ืŸ ืœื™ื ื•ืงืก ืื™ื– ืึท ืฆื•ื•ื™ื™ื˜ื™ืง ืึทืก, ืื•ืŸ ืึทืงืึธืจื“ื™ื ื’ืœื™ ืงื™ื™ืŸ ืื™ื™ื ืขืจ ื’ืขืจืึทื ื˜ื™ื– ื“ื™ ื”ื•ื™ืš-ืงื•ื•ืึทืœื™ื˜ืขื˜ ืึธืคึผืขืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ืึทืœืข ื ืึธื•ื“ื– ืื•ืŸ ื“ืจื™ื•ื•ืขืจืก ืื•ื ื˜ืขืจ ืœื™ื ื•ืงืก. ืื•ืŸ ืื™ืš ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคืจืื‘ืœืขืžืขืŸ ื–ืขื ืขืŸ ืคืืจื‘ื•ื ื“ืŸ ืžื™ื˜ ื“ื™ ื•ืกื‘ ื“ืจื™ื•ื•ืขืจืก ืคื•ืŸ ื“ืขื ืคึผืœืึทื˜ืคืึธืจืžืข, ืึทื–ื•ื™ ื“ื™ ืžืึธื“ืขืžืก ื”ืึธื‘ืŸ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ ื•ื•ื™ ื“ืขืจื•ื•ืึทืจื˜ ืื•ื™ืฃ ื“ืขื ื‘ืจืขื˜. ืขืก ืื•ื™ืš ื”ืื˜ ื–ื™ื™ืขืจ ืึธืจืขื ืื•ืŸ ืฆืขื•ื•ืึธืจืคืŸ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ, ืึทื–ื•ื™ ื™ืขื“ืขืจ ืึธืคึผืขืจืึทืฆื™ืข ื”ืื˜ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืฆื™ื™ื˜ ืฆื• ื’ืจืึธื‘ืŸ ื“ื•ืจืš ื“ื™ ื“ืึทืงืก. ืืคื™ืœื• ืคึผืจืึธืกื˜ ืึทืจื‘ืขื˜ ืžื™ื˜ GPIO ื’ืขื ื•ืžืขืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื‘ืœื•ื˜. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืขืก ื’ืขื ื•ืžืขืŸ ืขื˜ืœืขื›ืข ืฉืขื” ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ื’ืขืคื™ืจื˜. ืึธื‘ืขืจ, ืฆื• ื–ื™ื™ืŸ ืึธื‘ื™ืขืงื˜ื™ื•ื•, ืขืก ืื™ื– ืคืึทื ื“ืึทืžืขื ื˜ืึทืœื™ ื ื™ืฉื˜ ื•ื•ื™ื›ื˜ื™ืง ื•ื•ืึธืก ืžื™ืŸ ืคื•ืŸ ืื™ื™ืŸ-ื‘ืึธืจื“ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ, ื“ื™ ื”ื•ื™ืคึผื˜ ื–ืึทืš ืื™ื– ืึทื– ืขืก ืึทืจื‘ืขื˜ ืื•ืŸ ืขืก ื–ืขื ืขืŸ ื•ืกื‘ ืคึผืึธืจืฅ.

ืขืจืฉื˜ืขืจ, ืื™ืš ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืœื™ื ื•ืงืก ืื•ื™ืฃ ื“ืขื ื‘ืจืขื˜. ื›ื“ ื™ ื ื™ืฉ ื˜ ืืคืฆื•ืฉืจืฒื‘ ืŸ ื“ ื™ ืฐื™ืœื“ ืข ื“ืืงื•ืžืขื ื˜ืืฆื™ืข ืก ืคื ืจ ืืœืขืžืขืŸ , ืื• ืŸ ืื•ื™ ืš ื“ ื™ ืฐื ืก ืฐืขืœ ืŸ ื–ื™ ืš ืคืืจื ืขืžืข ืŸ ืžื™ ื˜ ื“ืข ืจ ื“ืื–ื™ืงืข ืจ ืืฒื ืฆื™ืงึพื‘ืื•ืจื“ึพืกื™ืกื˜ืขื , ืฉืจื™ ื‘ ืื™ ืš ื“ื ื ืงืืคื™ื˜ืœ .

ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ืึธืคึผืฆื™ืขืก ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืœื™ื ื•ืงืก: ืื•ื™ืฃ ืึท ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืกื“ ืงืึธืจื˜ ืึธื“ืขืจ ืื•ื™ืฃ ืึทืŸ ื™ื ืขืจืœืขืš MMC. ืื™ืš ืคืืจื‘ืจืื›ื˜ ืึท ืึธื•ื•ื ื˜ ื˜ืจื™ื™ื ื’ ืฆื• ืจืขื›ืขื ืขืŸ ืื•ื™ืก ื•ื•ื™ ืฆื• ืžืึทื›ืŸ ืขืก ืึทืจื‘ืขื˜ ืžื™ื˜ ื“ื™ ืงืึธืจื˜, ืึทื–ื•ื™ ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืขืก ืื•ื™ืฃ ื“ื™ MMC, ื›ืึธื˜ืฉ ืึธืŸ ืฆื•ื•ื™ื™ืคืœ ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืคื™ืœ ื’ืจื™ื ื’ืขืจ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืงืึธืจื˜.

ื•ื•ืขื’ืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืงืจื•ื ื“ืขืจืฆืฒืœื˜ ื“ื. ืื™ืš ืื™ื‘ืขืจื–ืขืฆืŸ ืคื•ืŸ ืžืึธื“ื ืข ืื•ื™ืฃ ืจื•ืกื™ืฉ. ืื™ืŸ ืกื“ืจ ืฆื• ื‘ืœื™ืฅ ื“ื™ ื‘ืจืขื˜, ืื™ืš ื“ืึทืจืคึฟืŸ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ื™ื™ึทื–ื ื•ื•ืึทืจื’ UART. ืงืึธื ื ืขืงื˜ืขื“ ืขืก ืื•ื™ืฃ ื“ื™ ืคืืœื’ืขื ื“ืข ื•ื•ืขื’.

  • Tool Pin GND: <โ€”> Pin17 ืคื•ืŸ VIMs GPIO
  • Tool Pin TXD: <โ€”> Pin18 ืคื•ืŸ VIMs GPIO (Linux_Rx)
  • Tool Pin RXD: <โ€”> Pin19 ืคื•ืŸ VIMs GPIO (Linux_Tx)
  • Tool Pin VCC: <โ€”> Pin20 ืคื•ืŸ VIMs GPIO

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ื ืึธืš ื•ื•ืึธืก, ืื™ืš ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข ืคื•ื  ื“ืึทื ืขื˜. ืกืคึผืขืฆื™ืขืœืข ืคื™ืจืžื•ื•ืึทืจืข ื•ื•ืขืจืกื™ืข VIM1_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.

ืื™ืŸ ืกื“ืจ ืฆื• ืฆื•ืคึฟืขืœื™ืงืขืจ ื“ืขื ืคื™ืจืžื•ื•ืึทืจืข, ืื™ืš ื“ืึทืจืคึฟืŸ ื™ื•ื˜ื™ืœืึทื˜ื™ื–. ืžืขืจ ื“ืขื˜ืึทื™ืœืก ื•ื•ืขื’ืŸ ื“ืขื ื“ืึธ. ืื™ืš ื”ืื‘ ื ื™ืฉื˜ ื’ืขืคืจื•ื•ื•ื˜ ืคืœืึทืฉื™ื ื’ ืขืก ืื•ื ื˜ืขืจ Windows, ืึธื‘ืขืจ ืื™ืš ื“ืึทืจืคึฟืŸ ืฆื• ื–ืึธื’ืŸ ืื™ืจ ืึท ื‘ื™ืกืœ ื•ื•ืขืจื˜ืขืจ ื•ื•ืขื’ืŸ ืคื™ืจืžื•ื•ืึทืจืข ืื•ื ื˜ืขืจ ืœื™ื ื•ืงืก. ืขืจืฉื˜ืขืจ, ืื™ืš ื•ื•ืขื˜ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ื™ื•ื˜ื™ืœืึทื˜ื™ื– ืœื•ื™ื˜ ื“ื™ ื™ื ืกื˜ืจืึทืงืฉืึทื ื–.

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

Aaand... ื’ืึธืจื ื™ืฉื˜ ืึทืจื‘ืขื˜. ืื™ืš ืคืืจื‘ืจืื›ื˜ ืึท ืคึผืึธืจ ืคื•ืŸ ืฉืขื” ืฆื• ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ื™ื ืกื˜ืึทืœื™ืจื•ื ื’ ืกืงืจื™ืคึผืก ืึทื–ื•ื™ ืึทื– ืึทืœืฅ ื–ืึธืœ ื–ื™ื™ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืจื™ื›ื˜ื™ืง ืคึฟืึทืจ ืžื™ืจ. ืื™ืš ื’ืขื“ืขื ืง ื ื™ืฉื˜ ื•ื•ืืก ืื™ืš ื”ืื‘ ื“ืืจื˜ ื’ืขื˜ื•ืŸ, ืื‘ืขืจ ืขืก ืื™ื– ืื•ื™ืš ื’ืขื•ื•ืขืŸ ื™ืขื ืขื ืฆื™ืจืง ืžื™ื˜ ืคืขืจื“. ืึทื–ื•ื™ ื–ื™ื™ืŸ ืึธืคึผื’ืขื”ื™ื˜. ืึธื‘ืขืจ ืึธืŸ ื“ื™ ื™ื•ื˜ื™ืœืึทื˜ื™ื– ืขืก ืื™ื– ืงื™ื™ืŸ ืคื•ื ื˜ ืฆื• ื˜ืึธืจื˜ืฉืขืจื™ื ื’ ื•ื•ื™ืž2 ื•ื•ื™ื™ึทื˜ืขืจ. ืก'ืื™ื– ื‘ืขืกืขืจ ื ื™ืฉื˜ ืฆื• ื˜ืฉืขืคืขืŸ ื–ื™ืš ืžื™ื˜ ืื™ื!

ื ืึธืš ื–ื™ื‘ืŸ ืงืจื™ื™ื–ืŸ ืคื•ืŸ ื’ืขื ืขื, ืฉืจื™ืคื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื•ืŸ ื™ื ืกื˜ืึทืœื™ืจื•ื ื’, ืื™ืš ื‘ืืงื•ืžืขืŸ ืึท ืคึผืขืงืœ ืคื•ืŸ ืืจื‘ืขื˜ืŸ ื™ื•ื˜ื™ืœืึทื˜ื™ื–. ืื™ืš ืงืึธื ื ืขืงื˜ืขื“ ื“ืขื ื‘ืจืขื˜ ื“ื•ืจืš ื•ืกื‘ ืฆื• ืžื™ื™ืŸ ืœื™ื ื•ืงืก ืงืึธืžืคึผื™ื•ื˜ืขืจ, ืื•ืŸ ืื•ื™ืš ืคืืจื‘ื•ื ื“ืŸ ื“ื™ UART ืœื•ื™ื˜ ื“ื™ ื“ื™ืึทื’ืจืึทืžืข ืื•ื™ื‘ืŸ.
ืื™ืš ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืžื™ื™ืŸ ื‘ืึทืœื™ื‘ืกื˜ืข ืžื™ื ื™ืงืึธื ื•ื•ืึธืงื–ืึทืœ ืคึฟืึทืจ ืึท ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ 115200, ืึธืŸ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืื•ืŸ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ื˜ืขื•ืช ืงืึธื ื˜ืจืึธืœ. ืื•ืŸ ืœืืžื™ืจ ื–ื™ืš ืื ื”ื™ื™ื‘ืŸ.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ื•ื•ืขืŸ ืœืึธื•ื“ื™ื ื’ 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 ืื™ื– ื‘ืขืกืขืจ. ื”ืึธื ืขืกื˜ืœื™.

ืžืึธื“ืขื ื”ื•ืึทื•ื•ืขื™ ืข3372ื” - 153

ื“ืขืจ ืžืึธื“ืขื ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื‘ืึทื˜ื™ื™ื˜ื™ืง ืžืงื•ืจ ืคื•ืŸ ื‘ืœื•ื˜ ืคึฟืึทืจ ืžื™ืจ, ืื•ืŸ, ืื™ืŸ ืคืึทืงื˜, ืขืก ืื™ื– ื’ืขื•ื•ืืจืŸ ื“ื™ ื‘ืึทื˜ืึทืœื ืขืง ืคื•ืŸ ื“ื™ ื’ืื ืฆืข ืคึผืจื•ื™ืขืงื˜. ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื“ืขืจ ื ืึธืžืขืŸ "ืžืึธื“ืขื" ืคึฟืึทืจ ื“ื™ ื“ืขื•ื•ื™ืกืขืก ืื™ื– ื ื™ืฉื˜ ืคืึทืจื˜ืจืึทื›ื˜ื  ื–ื™ืš ื“ื™ ืขืกืึทื ืก ืคื•ืŸ ื“ื™ ืึทืจื‘ืขื˜: ื“ืึธืก ืื™ื– ืึท ืฉื˜ืึทืจืง ืคืึทืจื‘ื™ื ื“ืŸ, ื“ืขื ืฉื˜ื™ืง ืคื•ืŸ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ื”ืื˜ ืึท ืงืึธืžืคึผืึธืกื™ื˜ืข ืžื™ื˜ืœ ื•ื•ืึธืก ืคึผืจื™ื˜ืขื ื“ื– ืฆื• ื–ื™ื™ืŸ ืึท ืกื™-ืจืึทื ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ืจื™ื•ื•ืขืจืก, ืื•ืŸ ื“ืขืžืึธืœื˜ ืกื•ื•ื™ื˜ืฉื™ื– ืฆื• ื ืขืฅ ืงืึธืจื˜ ืžืึธื“ืข.

ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจืึทืœื™, ืคึฟื•ืŸ ื“ื™ ืคื•ื ื˜ ืคื•ืŸ ืžื™ื™ื ื•ื ื’ ืคื•ืŸ ืึท ืœื™ื ื•ืงืก ื‘ืึทื ื™ืฆืขืจ, ื ืึธืš ืึทืœืข ื“ื™ ืกืขื˜ื˜ื™ื ื’ืก, ืขืก ืงื•ืงื˜ ื•ื•ื™ ื“ืึธืก: ื ืึธืš ืงืึทื ืขืงื˜ื™ื ื’ ื“ื™ ืžืึธื“ืขื, ืื™ืš ื”ืึธื‘ืŸ ืึทืŸ eth * ื ืขืฅ ืฆื•ื‘ื™ื ื“, ื•ื•ืึธืก ื“ื•ืจืš dhcp ื‘ืืงื•ืžื˜ ื“ื™ IP ืึทื“ืจืขืก 192.168.8.100, ืื•ืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ื’ื™ื™ื˜ื•ื•ื™ื™ ืื™ื– 192.168.8.1.

ืื•ืŸ ื“ื™ ืžืขืจืกื˜ ื•ื•ื™ื›ื˜ื™ืง ืžืึธืžืขื ื˜! ื“ืขืจ ืžืึธื“ืขื ืžืึธื“ืขืœ ืงืขืŸ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ ืื™ืŸ ืžืึธื“ืขื ืžืึธื“ืข, ื•ื•ืึธืก ืื™ื– ืงืึทื ื˜ืจืึธื•ืœื“ ื“ื•ืจืš AT ืงืึทืžืึทื ื“ื–. ืึทืœืฅ ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืคื™ืœ ืกื™ืžืคึผืœืขืจ, ืฉืึทืคึฟืŸ ืคึผืคึผืคึผ ืงืึทื ืขืงืฉืึทื ื– ืคึฟืึทืจ ื™ืขื“ืขืจ ืžืึธื“ืขื ืื•ืŸ ื“ืขืžืึธืœื˜ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื–ื™ื™. ืึธื‘ืขืจ ืื™ืŸ ืžื™ื™ืŸ ืคืึทืœ, "ื–ื™ืš" (ืžืขืจ ื’ืขื ื•ื™, ืึท ืœื™ื ื•ืงืก ื“ื™ื™ื•ื•ืขืจ ืœื•ื™ื˜ ื“ื™ ื•ื“ืขื•ื• ื›ึผืœืœื™ื), ืงืจื™ื™ื™ืฅ ืึทืŸ ืขื˜ื” ืฆื•ื‘ื™ื ื“ ืื•ืŸ ืึทืกื™ื™ื ื– ืึทืŸ IP ืึทื“ืจืขืก ืฆื• ืขืก ื“ื•ืจืš ื“ื”ืงืคึผ.

ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ื•ื•ื™ื™ึทื˜ืขืจ ืฆืขืžื™ืฉื•ื ื’, ืื™ืš ืคึฟืึธืจืฉืœืึธื’ืŸ ืฆื• ืคืึทืจื’ืขืกืŸ ื“ื™ ื•ื•ืึธืจื˜ "ืžืึธื“ืขื" ืื•ืŸ ื–ืึธื’ืŸ ื ืขืฅ ืงืึธืจื˜ ืื•ืŸ ื’ื™ื™ื˜ื•ื•ื™ื™, ื•ื•ื™ื™ึทืœ ืื™ืŸ ืขืกืึทื ืก, ืขืก ืื™ื– ื•ื•ื™ ืงืึทื ืขืงื˜ื™ื ื’ ืึท ื ื™ื™ึท ื ืขืฅ ืงืึธืจื˜ ืžื™ื˜ ืึท ื’ื™ื™ื˜ื•ื•ื™ื™.
ื•ื•ืขืŸ ืขืก ืื™ื– ืื™ื™ืŸ ืžืึธื“ืขื, ื“ืึธืก ื˜ื•ื˜ ื ื™ืฉื˜ ืคืึทืจืฉืึทืคืŸ ืงื™ื™ืŸ ืกืคึผืขืฆื™ืขืœืข ืคืจืื‘ืœืขืžืขืŸ, ืึธื‘ืขืจ ื•ื•ืขืŸ ืขืก ืื™ื– ืžืขืจ ื•ื•ื™ ืื™ื™ืŸ, ื ื™ื™ืžืœื™ N-pieces, ื“ื™ ืคืืœื’ืขื ื“ืข ื ืขืฅ ื‘ื™ืœื“ ืขืจื™ื™ื–ืึทื–.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ืึทื– ืื™ื–, n ื ืขืฅ ืงืึทืจื“ืก, ืžื™ื˜ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ IP ืึทื“ืจืขืก, ื™ืขื“ืขืจ ืžื™ื˜ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืคืขืœื™ืงื™ื™ึทื˜ ื’ื™ื™ื˜ื•ื•ื™ื™. ืื‘ืขืจ ืื™ืŸ ืคืึทืงื˜, ื™ืขื“ืขืจ ืคื•ืŸ ื–ื™ื™ ืื™ื– ืคืืจื‘ื•ื ื“ืŸ ืฆื• ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืึธืคึผืขืจืึทื˜ืึธืจ.

ื˜ื›ื™ืœืขืก, ืื™ืš ื’ืขื”ืื˜ ืึท ืคึผืฉื•ื˜ ืœื™ื™ื–ื•ื ื’: ื ื™ืฆืŸ ื“ื™ ifconfig ืึธื“ืขืจ ip ื‘ืึทืคึฟืขืœ, ืงืขืจ ืึทื•ื•ืขืง ืึทืœืข ื™ื ื˜ืขืจืคื™ื™ืกื™ื– ืื•ืŸ ืคืฉื•ื˜ ืงืขืจ ืื•ื™ืฃ ืื™ื™ื ืขืจ ืื™ืŸ ืงืขืจ ืื•ืŸ ืคึผืจื•ื‘ื™ืจืŸ ืขืก. ื“ื™ ืœื™ื™ื–ื•ื ื’ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ื•ื˜ ืคึฟืึทืจ ืึทืœืขืžืขืŸ, ืึทื—ื•ืฅ ืึทื– ื‘ืขืฉืึทืก ื“ื™ ืกื•ื•ื™ื˜ืฉื™ื ื’ ืžืึธื•ืžืึทื ืฅ ืื™ืš ืงืขืŸ ื ื™ืฉื˜ ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ื“ื™ ืžื™ื˜ืœ. ืื•ืŸ ื–ื™ื ื˜ ื“ื™ ืกื•ื•ื™ื˜ืฉื™ื ื’ ืื™ื– ืึธืคื˜ ืื•ืŸ ืฉื ืขืœ, ืื™ืš ืคืืงื˜ื™ืฉ ื”ืื˜ ืงื™ื™ืŸ ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ.

ื“ืขืจื™ื‘ืขืจ, ืื™ืš ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ื“ืขืจ ื“ืจืš ืคื•ืŸ ืžืึทื ื™ื•ืึทืœื™ ื˜ืฉืึทื ื’ื™ื ื’ ื“ื™ IP ืึทื“ืจืขืกืขืก ืคื•ืŸ ื“ื™ ืžืึธื“ืขืžืก ืื•ืŸ ื“ืึทืŸ ื“ืจื™ื™ื•ื•ื™ื ื’ ืคืึทืจืงืขืจ ืžื™ื˜ ืจื•ื˜ื™ื ื’ ืกืขื˜ื˜ื™ื ื’ืก.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื“ืขืจ ืกื•ืฃ ืคื•ืŸ ืžื™ื™ืŸ ืคืจืื‘ืœืขืžืขืŸ ืžื™ื˜ ืžืึธื“ืขืžืก: ืื™ืŸ ืคืึทืœ ืคื•ืŸ ืžืึทื›ื˜ ืคึผืจืึธื‘ืœืขืžืก, ื–ื™ื™ ื’ืขืคืืœืŸ ืึทื•ื•ืขืง, ืื•ืŸ ืึท ื’ื•ื˜ ืกื˜ืึทื‘ื™ืœ ืžืึทื›ื˜ ืฆื•ืฉื˜ืขืœืŸ ืฆื• ื“ื™ ื•ืกื‘ ื›ืึทื‘ ืื™ื– ืคืืจืœืื ื’ื˜. ืื™ืš ืกืึทืœื•ื•ื“ ื“ืขื ืคึผืจืึธื‘ืœืขื ื“ื•ืจืš ืฉื•ื•ืขืจ ืกืึทื“ืขืจื™ื ื’ ื“ื™ ืžืึทื›ื˜ ื’ืœื™ื™ึทืš ืฆื• ื“ื™ ื›ืึทื‘. ืืŸ ืื ื“ืขืจ ืคึผืจืึธื‘ืœืขื ื•ื•ืึธืก ืื™ืš ื’ืขืคึผืœืึธื ื˜ืขืจื˜ ืื•ืŸ ื•ื•ืึธืก ืจื•ื™ื ื“ ื“ื™ ื’ืื ืฆืข ืคึผืจื•ื™ืขืงื˜: ื ืึธืš ืึท ืจืขื‘ืึธืึธื˜ ืึธื“ืขืจ ืงืึทืœื˜ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ื™ ืžื™ื˜ืœ, ื ื™ื˜ ืึทืœืข ืžืึธื“ืขืžืก ื–ืขื ืขืŸ ื“ื™ื˜ืขืงื˜ืึทื“ ืื•ืŸ ื ื™ื˜ ืฉื˜ืขื ื“ื™ืง, ืื•ืŸ ืื™ืš ืงืขืŸ ื ื™ืฉื˜ ื‘ืึทืฉืœื™ืกืŸ ื•ื•ืึธืก ื“ืึธืก ื’ืขื˜ืจืืคืŸ ืื•ืŸ ืžื™ื˜ ื•ื•ืึธืก ืึทืœื’ืขืจื™ื“ืึทื. ืื‘ืขืจ ืขืจืฉื˜ืขืจ ื–ืื›ืŸ ืขืจืฉื˜ืขืจ.

ืคึฟืึทืจ ื“ื™ ืžืึธื“ืขื ืฆื• ืึทืจื‘ืขื˜ืŸ ืจื™ื›ื˜ื™ืง, ืื™ืš ืื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ื•ืกื‘-ืžืึธื“ืขืกื•ื•ื™ื˜ืฉ ืคึผืขืงืœ.

sudo apt update
sudo apt install -y usb-modeswitch

ื ืึธืš ื•ื•ืึธืก, ื ืึธืš ืงืึทื ืขืงื˜ื™ื ื’, ื“ื™ ืžืึธื“ืขื ื•ื•ืขื˜ ื–ื™ื™ืŸ ืจื™ื›ื˜ื™ืง ื“ื™ื˜ืขืงื˜ืึทื“ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื“ ื“ื•ืจืš ื“ื™ udev ืกืึทื‘ืกื™ืกื˜ืึทื. ืื™ืš ื˜ืฉืขืง ื“ื•ืจืš ืคืฉื•ื˜ ืงืึทื ืขืงื˜ื™ื ื’ ื“ื™ ืžืึธื“ืขื ืื•ืŸ ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– ื“ื™ ื ืขืฅ ืื™ื– ืืจื•ื™ืก.
ืืŸ ืื ื“ืขืจ ืคึผืจืึธื‘ืœืขื ื•ื•ืึธืก ืื™ืš ืงืขืŸ ื ื™ืฉื˜ ืกืึธืœื•ื•ืข: ื•ื•ื™ ืงืขืŸ ืื™ืš ื‘ืึทืงื•ืžืขืŸ ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ืขืจ ืึธืคึผืขืจืึทื˜ืึธืจ ืžื™ื˜ ื•ื•ืึธืก ืžื™ืจ ืึทืจื‘ืขื˜ืŸ ืคึฟื•ืŸ ื“ืขื ืžืึธื“ืขื? ื“ืขืจ ืึธืคึผืขืจืึทื˜ืึธืจ ื ืึธืžืขืŸ ืื™ื– ืงืึทื ื˜ื™ื™ื ื“ ืื™ืŸ ื“ื™ ืžืึธื“ืขื ื•ื•ืขื‘ ืฆื•ื‘ื™ื ื“ ืื™ืŸ 192.168.8.1. ื“ืึธืก ืื™ื– ืึท ื“ื™ื ืึทืžื™ืฉ ื•ื•ืขื‘ ื‘ืœืึทื˜ ื•ื•ืึธืก ื‘ืืงื•ืžื˜ ื“ืึทื˜ืŸ ื“ื•ืจืš Ajax ืจื™ืงื•ื•ืขืก, ืึทื–ื•ื™ ืขืก ื•ื•ืขื˜ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ ืฆื• ืคืฉื•ื˜ ื•ื•ื™ื™ื–ืŸ ื“ืขื ื‘ืœืึทื˜ ืื•ืŸ ืคึผืึทืจืกื™ื ื’ ื“ืขื ื ืึธืžืขืŸ. ื“ืขืจืคืืจ ื”ืื‘ ืื™ืš ืื ื’ืขื”ื•ื™ื‘ืŸ ืงื•ืงืŸ ื•ื•ื™ ืื–ื•ื™ ืžืขืŸ ืื ื˜ื•ื•ื™ืงืœื˜ ื ื•ื•ืขื‘ ื‘ืœืื˜ ื•ื›ื“ื•ืžื”, ืื•ืŸ ืื™ืš ื”ืื‘ ืื™ื™ื ื’ืขื–ืขืŸ ืื– ืื™ืš ื˜ื• ื ืžื™ืŸ ืฉื˜ื•ืชื™ื. ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืขืจ ืงืึทืžืึทืฉ, ืื•ืŸ ื“ืขืจ ืึธืคึผืขืจืึทื˜ืึธืจ ืื ื’ืขื”ื•ื™ื‘ืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื ื™ืฆืŸ ื“ื™ ืกืคึผื™ื“ื˜ืขืกื˜ ืึทืคึผื™ ื–ื™ืš.

ืคื™ืœ ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื’ืจื™ื ื’ืขืจ ืื•ื™ื‘ ื“ื™ ืžืึธื“ืขื ื”ืื˜ ืึทืงืกืขืก ื“ื•ืจืš AT ืงืึทืžืึทื ื“ื–. ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืžืขื’ืœืขืš ืฆื• ืจื™ืงืึทื ืคื™ื’ื™ืขืจ ืขืก, ืฉืึทืคึฟืŸ ืึท ืคึผืคึผืคึผ ืงืฉืจ, ื‘ืึทืฉื˜ื™ืžืขืŸ ืึทืŸ IP, ื‘ืึทืงื•ืžืขืŸ ืึท ื˜ืขืœืขืงืึธื ืึธืคึผืขืจืึทื˜ืึธืจ, ืขื˜ืง. ืึธื‘ืขืจ ื•ื•ื™ื™, ืื™ืš ืึทืจื‘ืขื˜ ืžื™ื˜ ื•ื•ืึธืก ืื™ืš ื•ื•ืข ื’ืขื’ืขื‘ืŸ.

ื’ืคึผืก

ื“ื™ ื’ืคึผืก ื•ืคื ืขืžืขืจ ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขื’ืขื‘ืŸ ื”ืื˜ ืึท UART ืฆื•ื‘ื™ื ื“ ืื•ืŸ ืžืึทื›ื˜. ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื ื™ื˜ ื“ืขืจ ื‘ืขืกื˜ืขืจ ืœื™ื™ื–ื•ื ื’, ืึธื‘ืขืจ ืขืก ืื™ื– ื ืึธืš ื•ื•ืขืจืงืึทื‘ืึทืœ ืื•ืŸ ืคึผืฉื•ื˜. ื“ืขืจ ื•ืคื ืขืžืขืจ ื”ืื˜ ืขืคืขืก ืื–ื•ื™ ืื•ื™ืกื’ืขื–ืขืŸ.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ืฆื• ื–ื™ื™ืŸ ืขืจืœืขืš, ื“ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ืžื™ื™ืŸ ืขืจืฉื˜ืขืจ ืžืึธืœ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ื’ืคึผืก ื•ืคื ืขืžืขืจ, ืึธื‘ืขืจ ื•ื•ื™ ืื™ืš ื“ืขืจื•ื•ืึทืจื˜, ืึทืœืฅ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขื“ืึทื ืง ืคึฟืึทืจ ืื•ื ื“ื– ืึท ืœืึทื ื’ ืฆื™ื™ึทื˜ ืฆื•ืจื™ืง. ืึทื–ื•ื™ ืžื™ืจ ื ืึธืจ ื ื•ืฆืŸ ืคืึทืจื˜ื™ืง ืกืึทืœื•ืฉืึทื ื–.

ืขืจืฉื˜ืขืจ, ืื™ืš ื’ืขื‘ืŸ 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

ื ืึธืš ื“ืขื, ืื™ืš ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ื’ืคึผืก.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ื“ื™ ื’ืคึผืก ื“ืจืึธื˜ ืื™ื– ืื™ืŸ ืžื™ื™ืŸ ื”ืขื ื˜, ื“ื™ UART ื“ื™ื‘ื•ื’ื’ืขืจ ื•ื•ื™ืจืขืก ื–ืขื ืขืŸ ืงืขื ื˜ื™ืง ืื•ื ื˜ืขืจ ืžื™ื™ืŸ ืคื™ื ื’ืขืจ.

ืื™ืš ืจืขื‘ืึธืึธื˜ ืื•ืŸ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ื’ืคึผืก ืึธืคึผืขืจืึทืฆื™ืข ื ื™ืฆืŸ ื“ื™ gpsmon ืคึผืจืึธื’ืจืึทื.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ืื™ืจ ืงืขื ื˜ ื ื™ืฉื˜ ื–ืขืŸ ื“ื™ ืกืึทื˜ืึทืœื™ื™ืฅ ืื™ืŸ ื“ืขื ืกืงืจืขืขื ืฉืึธื˜, ืึธื‘ืขืจ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืžื™ื˜ ื“ื™ ื’ืคึผืก ื•ืคื ืขืžืขืจ, ืื•ืŸ ื“ืึธืก ืžื™ื˜ืœ ืึทื– ืึทืœืฅ ืื™ื– ื’ื•ื˜.

ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ, ืื™ืš ื’ืขืคืจื•ืื•ื•ื˜ ืคื™ืœืข ืึธืคึผืฆื™ืขืก ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ืขื ื“ื™ื™ืžืึทืŸ, ืึธื‘ืขืจ ืื™ืš ื’ืขื–ืขืฆื˜ ืื•ื™ืฃ ื“ืขืจ ืื™ื™ื ืขืจ ื•ื•ืึธืก ื’ืขืืจื‘ืขื˜ ืจื™ื›ื˜ื™ืง ืžื™ื˜ ืคึผื™ื˜ื”ืึธืŸ 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, ืคึผืึทืจืก ืขืก ืื™ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืคืึธื“ืขื ืื•ืŸ ืึทืจื‘ืขื˜ ืžื™ื˜ ืื™ื. ืื‘ืขืจ ืขืก ืื™ื– ืงื™ื™ืŸ ืฆื™ื™ึทื˜ ื‘ื™ื™ึท ืึทืœืข, ื“ืขืจืคืืจ ื“ื™ ื‘ืจื•ื˜ืึทืœื™ ืžื™ืขืก ืงืึธื“. ืื•ืŸ ื™ืึธ, ืื™ืš ืฉืขืžืขืŸ ื–ื™ืš ื ื™ืฉื˜.

ืœื™ื›ื˜ ื™ืžื™ื˜ื™ื ื’ ื“ื™ื™ืึธื•ื“

ืงืึทื ืขืงื˜ื™ื ื’ ื“ื™ ื’ืขืคื™ืจื˜ ืื™ื– ืคึผืฉื•ื˜ ืื•ืŸ ืฉื•ื•ืขืจ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ึทื˜. ื“ื™ ื”ื•ื™ืคึผื˜ ืฉื•ื•ืขืจื™ืงื™ื™ื˜ ืื™ื– ืึทื– ื“ื™ ืฉื˜ื™ืคื˜ ื ื•ืžืขืจ ืื™ืŸ ื“ื™ ืกื™ืกื˜ืขื ืฉื˜ื™ืžืขืŸ ื ื™ืฉื˜ ืฆื• ื“ื™ ืฉื˜ื™ืคื˜ ื ื•ืžืขืจ ืื•ื™ืฃ ื“ื™ ื‘ืจืขื˜ ืื•ืŸ ื•ื•ื™ื™ึทืœ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืžื™ื˜ ื“ื™ ืœื™ื ืงืก ื”ืึทื ื˜. ืฆื• ืคืึทืจื’ืœื™ื™ึทื›ืŸ ื“ื™ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืฉื˜ื™ืคื˜ ื ื•ืžืขืจ ืื•ืŸ ื“ื™ ืฉื˜ื™ืคื˜ ื ื•ืžืขืจ ืื™ืŸ ื“ื™ ืึทืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื•ื™ืคืŸ ื“ื™ ื‘ืึทืคึฟืขืœ:

gpio readall

ื ื˜ื™ืฉ ืคื•ืŸ ืฉื˜ื™ืคื˜ ืงืึธืจืขืกืคึผืึธื ื“ืขื ืฅ ืื™ืŸ ื“ื™ ืกื™ืกื˜ืขื ืื•ืŸ ืื•ื™ืฃ ื“ื™ ื‘ืจืขื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื–ืŸ. ื ืึธืš ื•ื•ืึธืก ืื™ืš ืงืขื ืขืŸ ืฉื•ื™ืŸ ืึทืจื‘ืขื˜ืŸ ื“ื™ ืฉื˜ื™ืคื˜ ืื™ืŸ ื“ื™ ืึทืก ื–ื™ืš. ืื™ืŸ ืžื™ื™ืŸ ืคืึทืœ ื“ื™ ื’ืขืคื™ืจื˜ ืื™ื– ืงืึธื ื ืขืงื˜ืขื“ ืฆื• 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 () ืื•ืŸ ื“ื™ ื’ืขืคื™ืจื˜ ื•ื•ืขื˜ ื‘ืœื™ื ืง ื‘ื™ื•ื˜ืึทืคืœื™.

ื•ื•ื™ื™ื›ื•ื•ืืจื’ ื ืึธื•ื“ื–

ืกืคึผื™ื“ื˜ืขืกื˜ ืึทืคึผื™

ืขืก ืื™ื– ืึท ื’ืจื•ื™ืก ืคืจื™ื™ื“ ืึทื– ื“ื™ speedtest.net ืกืขืจื•ื•ื™ืก ื”ืื˜ ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืคึผื™ื˜ื”ืึธืŸ-ืึทืคึผื™, ืื™ืจ ืงืขื ื˜ ื–ืขืŸ ื’ื™ื˜ื”ื•ื‘.

ื“ื™ ื’ื•ื˜ืข ื–ืึทืš ืื™ื– ืึทื– ืขืก ื–ืขื ืขืŸ ืžืงื•ืจ ืงืึธื•ื“ื– ื•ื•ืึธืก ืงืขื ืขืŸ ืื•ื™ืš ื–ื™ื™ืŸ ื•ื•ื™ื•ื“. ื•ื•ื™ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ืขื ืึทืคึผื™ (ืคึผืฉื•ื˜ ื‘ื™ื™ืฉืคื™ืœืŸ) ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื™ืŸ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืึธืคึผื˜ื™ื™ืœื•ื ื’.

ืื™ืš ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ืคึผื™ื˜ื”ืึธืŸ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืžื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ.

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"
#ั‚ัƒั‚ ะธะดะตั‚ ะทะฐะฟะธััŒ ะฒ ั„ะฐะนะป ะปะพะณะพะฒ

ืื•ื™ืš ื“ืึธ ื”ืึธื˜ ื–ื™ืš ืึทืœืฅ ืึทืจื•ื™ืกื’ืขื•ื•ื™ื–ืŸ ื ื™ืฉื˜ ืึทื–ื•ื™ ืคึผืฉื•ื˜, ื›ืึธื˜ืฉ ืขืก ื•ื•ืึธืœื˜ ืื•ื™ืกื’ืขื–ืขืŸ ืึท ืกืš ืกื™ืžืคึผืœืขืจ. ื˜ื›ื™ืœืขืก, ื“ื™ ืกืขืจื•ื•ืขืจืก ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ื’ืœื™ื™ึทืš ืฆื• [], ื–ื™ื™ ื–ืึธื’ืŸ, ืงืœื™ื™ึทื‘ืŸ ื“ื™ ื‘ืขืกื˜ืขืจ ืกืขืจื•ื•ืขืจ. ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืื™ืš ื’ืขื”ืื˜ ื˜ืจืึทืค ืกืขืจื•ื•ืขืจืก, ืื•ืŸ, ื•ื•ื™ ืื™ืจ ืงืขืŸ ื˜ืจืขืคืŸ, ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ื’ื™ื›ืงื™ื™ึทื˜. ื“ืึธืก ืื™ื– ื’ืึทื ืฅ ืึท ืงืึธืžืคึผืœืขืงืก ื˜ืขืžืข, ื ื™ืฆืŸ ืึท ืคืึทืจืคืขืกื˜ื™ืงื˜ ืกืขืจื•ื•ืขืจ, ืื•ื™ื‘ ืึทื–ื•ื™, ืกื˜ืึทื˜ื™ืง ืึธื“ืขืจ ื“ื™ื ืึทืžื™ืฉ, ืจื™ืงื•ื•ื™ื™ืขืจื– ืคืึธืจืฉื•ื ื’. ืึธื‘ืขืจ ื“ืึธ ืื™ื– ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ื’ื™ื›ืงื™ื™ึทื˜ ืžืขื–ืฉืขืจืžืึทื ื˜ ื’ืจืึทืคืก ืคึฟืึทืจ ืึท ื‘ืขืขืœื™ื ืข ืึธืคึผืขืจืึทื˜ืึธืจ ื•ื•ืขืŸ ื“ื™ื ืึทืžื™ืงืึทืœืœื™ ืกืขืœืขืงื˜ื™ืจืŸ ืึท ืคึผืจืึธื‘ืข ืกืขืจื•ื•ืขืจ ืื•ืŸ ืึท ืกื˜ืึทื˜ื™ืงืœื™ ืคืึทืจืคืขืกื˜ื™ืงื˜.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก
ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ืžืขืกื˜ืŸ ื’ื™ื›ืงื™ื™ึทื˜ ื•ื•ืขืŸ ื˜ืฉื•ื–ื™ื ื’ ืึท ื“ื™ื ืึทืžื™ืฉ ืกืขืจื•ื•ืขืจ.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก
ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื’ื™ื›ืงื™ื™ึทื˜ ื˜ืขืกื˜ื™ื ื’, ืžื™ื˜ ืึท ืฉื˜ืจืขื ื’ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ืื™ื™ืŸ ืกืขืจื•ื•ืขืจ.

ื‘ืขืฉืึทืก ื˜ืขืกื˜ื™ื ื’, ืขืก ืื™ื– "ืคื•ื˜ืขืจ" ืื™ืŸ ื‘ื™ื™ื“ืข ืขืจื˜ืขืจ, ืื•ืŸ ืขืก ื“ืึทืจืฃ ื–ื™ื™ืŸ ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ ืžื™ื˜ ืžืึทื˜ืึทืžืึทื˜ื™ืงืึทืœ ืžืขื˜ื”ืึธื“ืก. ืึธื‘ืขืจ ืžื™ื˜ ืึท ืคืึทืจืคืขืกื˜ื™ืงื˜ ืกืขืจื•ื•ืขืจ ืขืก ืื™ื– ืึท ื‘ื™ืกืœ ื•ื•ื™ื™ื ื™ืงืขืจ ืื•ืŸ ื“ื™ ืึทืžืคึผืœื™ื˜ื•ื“ ืื™ื– ืžืขืจ ืกื˜ืึทื‘ื™ืœ.
ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื“ืึธืก ืื™ื– ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื’ืจื•ื™ืก ืคืึธืจืฉื•ื ื’. ืื•ืŸ ืื™ืš ื•ื•ืึธืœื˜ ืžืขืกื˜ืŸ ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ืžื™ื™ืŸ ืกืขืจื•ื•ืขืจ ื ื™ืฆืŸ ื“ื™ iperf ื ื•ืฆืŸ. ืึธื‘ืขืจ ืžื™ืจ ื”ืึทืœื˜ืŸ ื–ื™ืš ืฆื• ื“ื™ ื˜ืขื›ื ื™ืฉ ืกืคึผืขืกืึทืคืึทืงื™ื™ืฉืึทื ื–.

ืฉื™ืงื˜ ืคึผืึธืกื˜ ืื•ืŸ ืขืจืจืึธืจืก

ืฆื• ืฉื™ืงืŸ ืคึผืึธืกื˜, ืื™ืš ื’ืขืคืจื•ื•ื•ื˜ ืขื˜ืœืขื›ืข ื˜ื•ืฅ ืคืึทืจืฉื™ื“ืขื ืข ืึธืคึผืฆื™ืขืก, ืึธื‘ืขืจ ืื™ืŸ ื“ื™ ืกื•ืฃ ืื™ืš ื’ืขื–ืขืฆื˜ ืื•ื™ืฃ ื“ื™ ืคืืœื’ืขื ื“ืข. ืื™ืš ืจืขื’ื™ืกื˜ืจื™ืจื˜ ืึท ื‘ืจื™ื•ื•ืงืึทืกื˜ืŸ ืื•ื™ืฃ ื™ืึทื ื“ืขืงืก ืื•ืŸ ื“ืขืžืึธืœื˜ ื’ืขื ื•ืžืขืŸ ื“ืึธืก ืื™ื– ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ืฉื™ืงืŸ ืคึผืึธืกื˜. ืื™ืš ืึธืคึผื’ืขืฉื˜ืขืœื˜ ืขืก ืื•ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืขืก ืื™ืŸ ื“ื™ ืคึผืจืึธื’ืจืึทื. ื“ืขืจ ื‘ื™ื™ืฉืคึผื™ืœ ื™ื’ื–ืึทืžืึทื ื– ืคืึทืจืฉื™ื“ืŸ ืึธืคึผืฆื™ืขืก, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืฉื™ืงืŸ ืคึฟื•ืŸ Gmail, ืขื˜ืง. ืื™ืš ื”ืึธื‘ ื ื™ืฉื˜ ื’ืขื•ื•ืึธืœื˜ ืึทืจืŸ ืžื™ื˜ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืžื™ื™ืŸ ืคึผืึธืกื˜ ืกืขืจื•ื•ืขืจ ืื•ืŸ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืฆื™ื™ื˜ ืคึฟืึทืจ ื“ืขื, ืึธื‘ืขืจ ื•ื•ื™ ืขืก ืคืืจืงืขืจื˜ ืื•ื™ืก ืฉืคึผืขื˜ืขืจ, ืขืก ืื™ื– ืื•ื™ืš ืึทืจื•ื™ืกื’ืขื•ื•ืึธืจืคืŸ.

ื“ื™ ืœืึธื’ืก ื–ืขื ืขืŸ ื’ืขืฉื™ืงื˜ ืœื•ื™ื˜ ื“ื™ ืกืงืขื“ื–ืฉื•ืœืขืจ, ืื•ื™ื‘ ืขืก ืื™ื– ืึท ืงืฉืจื™ืขื“ืขืจ 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

ืขืจืจืึธืจืก ื–ืขื ืขืŸ ืื•ื™ืš ื’ืขืฉื™ืงื˜ ื˜ื›ื™ืœืขืก. ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜, ื–ื™ื™ ื–ืขื ืขืŸ ืึทืงื™ื•ืžื™ืึทืœื™ื™ื˜ื™ื“ ืื™ืŸ ื“ืขืจ ืจืฉื™ืžื”, ืื•ืŸ ื“ืขืžืึธืœื˜ ื’ืขืฉื™ืงื˜ ืื•ื™ืš ื ื™ืฆืŸ ื“ื™ ืกืงืขื“ื–ืฉื•ืœืขืจ, ืื•ื™ื‘ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ืงืฉืจ. ืึธื‘ืขืจ, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืคึผืจืึธื‘ืœืขืžืก ืžื™ื˜ ื“ื™ ืคืึทืงื˜ ืึทื– ื™ืึทื ื“ืขืงืก ื”ืื˜ ืึท ืฉื™ืขื•ืจ ืื•ื™ืฃ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืึทืจื˜ื™ืงืœืขืŸ ื’ืขืฉื™ืงื˜ ืคึผืขืจ ื˜ืึธื’ (ื“ืึธืก ืื™ื– ื•ื•ื™ื™ื˜ื™ืง, ื•ืžืขื˜ ืื•ืŸ ื–ื™ืœื–ืœ). ื–ื™ื ื˜ ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืึท ืจื™ื–ื™ืง ื ื•ืžืขืจ ืคื•ืŸ ืขืจืจืึธืจืก ืืคื™ืœื• ืคึผืขืจ ืžื™ื ื•ื˜, ืžื™ืจ ื”ืึธื‘ืŸ ืฆื• ืคืึทืจืœืึธื–ืŸ ืฉื™ืงืŸ ืขืจืจืึธืจืก ื“ื•ืจืš ืคึผืึธืกื˜. ืึทื–ื•ื™ ื”ืึทืœื˜ืŸ ืื™ืŸ ืžื™ื™ื ื•ื ื’ ื•ื•ืขืŸ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืฉื™ืงื˜ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ืึทื–ืึท ืึท ืคึผืจืึธื‘ืœืขื ื“ื•ืจืš ื™ืึทื ื“ืขืงืก ื‘ืึทื“ื™ื ื•ื ื’ืก.

ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ืกืขืจื•ื•ืขืจ

ืื™ืŸ ืกื“ืจ ืฆื• ื”ืึธื‘ืŸ ืฆื•ื˜ืจื™ื˜ ืฆื• ืึท ื•ื•ื™ื™ึทื˜ ืฉื˜ื™ืง ืคื•ืŸ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืื•ืŸ ืงืขื ืขืŸ ืฆื• ืงืึทืกื˜ืึทืžื™ื™ื– ืื•ืŸ ืจื™ืงืึทื ืคื™ื’ื™ืขืจ ืขืก, ืื™ืš ื“ืืจืฃ ืึท ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืกืขืจื•ื•ืขืจ. ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืฆื• ื–ื™ื™ืŸ ืฉื™ื™ืŸ, ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืจื™ื›ื˜ื™ืง ืฆื• ืฉื™ืงืŸ ืึทืœืข ื“ื™ ื“ืึทื˜ืŸ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ืื•ืŸ ื‘ื•ื™ืขืŸ ืึทืœืข ื“ื™ ืฉื™ื™ืŸ ื’ืจืึทืคืก ืื™ืŸ ื“ื™ ื•ื•ืขื‘ ืฆื•ื‘ื™ื ื“. ืึธื‘ืขืจ ื ื™ื˜ ืึทืœืข ืื™ืŸ ืึทืžืึธืœ.

ืคึฟืึทืจ VPS ืื™ืš ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ruvds.com. ืื™ืจ ืงืขืŸ ื ืขืžืขืŸ ื“ื™ ืกื™ืžืคึผืœืึทืกื˜ ืกืขืจื•ื•ืขืจ. ืื•ืŸ ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืคึฟืึทืจ ืžื™ื™ืŸ ืฆื•ื•ืขืงืŸ ื“ืึธืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื’ืขื ื•ื’. ืึธื‘ืขืจ ื–ื™ื ื˜ ืื™ืš ื”ืึธื‘ ื ื™ืฉื˜ ื‘ืึทืฆืึธืœื˜ ืคึฟืึทืจ ื“ื™ ืกืขืจื•ื•ืขืจ ืคึฟื•ืŸ ืžื™ื™ืŸ ืื™ื™ื’ืขื ืข ืงืขืฉืขื ืข, ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ื ืขืžืขืŸ ืขืก ืžื™ื˜ ืึท ืงืœื™ื™ืŸ ืจืขื–ืขืจื•ื• ืึทื–ื•ื™ ืึทื– ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื’ืขื ื•ื’ ืื•ื™ื‘ ืžื™ืจ ื•ื•ืขืœืŸ ืฆืขื•ื•ื™ืงืœืขืŸ ืึท ื•ื•ืขื‘ ืฆื•ื‘ื™ื ื“, ืื•ื ื“ื–ืขืจ ืื™ื™ื’ืขื ืข SMTP ืกืขืจื•ื•ืขืจ, VPN, ืขื˜ืง. ืคึผืœื•ืก, ืื™ืจ ืงืขื ืขืŸ ืฉื˜ืขืœืŸ ืึท ื˜ืขืœืขื’ืจืึทื ื‘ืึธื˜ ืื•ืŸ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืคึผืจืึธื‘ืœืขืžืก ืžื™ื˜ ืขืก ื‘ืœืึทืงื˜. ื“ืขืจื™ื‘ืขืจ, ืื™ืš ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ืืžืกื˜ืขืจื“ืื ืื•ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืคึผืึทืจืึทืžืขื˜ืขืจืก.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ื•ื•ื™ ืึท ืื•ืคึฟืŸ ืคื•ืŸ ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืžื™ื˜ ื“ื™ ื™ื™ึทื–ื ื•ื•ืึทืจื’, vim2 ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ืึท ืคืึทืจืงืขืจื˜ ssh ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ืื•ืŸ, ื•ื•ื™ ืคื™ืจ ื”ืื˜ ื’ืขื•ื•ื™ื–ืŸ, ืขืก ืื™ื– ื ื™ืฉื˜ ื“ืขืจ ื‘ืขืกื˜ืขืจ. ืื•ื™ื‘ ื“ืขืจ ืงืฉืจ ืื™ื– ืคืึทืจืคืึทืœืŸ, ื“ืขืจ ืกืขืจื•ื•ืขืจ ื”ืืœื˜ ื“ื™ ืคึผืึธืจื˜ ืื•ืŸ ืขืก ืื™ื– ืื•ืžืžืขื’ืœืขืš ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืขืก ืคึฟืึทืจ ืขื˜ืœืขื›ืข ืžืึธืœ. ื“ืขืจื™ื‘ืขืจ, ืขืก ืื™ื– ื ืึธืš ื‘ืขืกืขืจ ืฆื• ื ื•ืฆืŸ ืื ื“ืขืจืข ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืžืขื˜ื”ืึธื“ืก, ืœืžืฉืœ VPN. ืื™ืŸ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜ ืื™ืš ื’ืขื•ื•ืืœื˜ ืฆื• ื‘ืึทืฉื˜ื™ืžืขืŸ ืฆื• ื•ื•ืคึผืŸ, ืึธื‘ืขืจ ืื™ืš ื”ืึธื‘ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืฆื™ื™ื˜.

ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ื’ื™ื™ืŸ ืื™ืŸ ื“ืขื˜ืึทื™ืœืก ืคื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึท ืคื™ื™ืจื•ื•ืึทืœ, ื‘ืึทื’ืจืขื ืขืฆืŸ ืจืขื›ื˜, ื“ื™ืกื™ื™ื‘ืึทืœื™ื ื’ ื•ื•ืึธืจืฆืœ ืกืฉ ืงืึทื ืขืงืฉืึทื ื– ืื•ืŸ ืื ื“ืขืจืข ื˜ืจื•ื™ืžื– ืคื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึท ื•ื•ืคึผืก. ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ื’ืœื•ื™ื‘ืŸ ืึทื– ืื™ืจ ื•ื•ื™ืกืŸ ืฉื•ื™ืŸ ืึทืœืฅ. ืคึฟืึทืจ ืึท ื•ื•ื™ื™ึทื˜ ืงืฉืจ, ืื™ืš ืžืึทื›ืŸ ืึท ื ื™ื™ึทืข ื‘ืึทื ื™ืฆืขืจ ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ.

adduser vimssh

ืื™ืš ื“ื–ืฉืขื ืขืจื™ื™ื˜ ssh ืงืฉืจ ืฉืœื™ืกืœืขืŸ ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื™ื™ึทื–ื ื•ื•ืึทืจื’.

ssh-keygen

ืื•ืŸ ืื™ืš ื ืึธื›ืžืึทื›ืŸ ื–ื™ื™ ืฆื• ืื•ื ื“ื–ืขืจ ืกืขืจื•ื•ืขืจ.

ssh-copy-id [email protected]

ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื™ื™ึทื–ื ื•ื•ืึทืจื’, ืื™ืš ืžืึทื›ืŸ ืึทืŸ ืึธื˜ืึทืžืึทื˜ื™ืง ืคืึทืจืงืขืจื˜ ืกืฉ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ื‘ื™ื™ ื™ืขื“ืขืจ ืฉื˜ื™ื•ื•ืœ.

[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: ืขืก ื“ื™ื˜ืขืจืžืึทื ื– ื•ื•ืึธืก ืคึผืึธืจื˜ ืื™ืš ื•ื•ืขืœ ื ื•ืฆืŸ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื“ื•ืจืš ืคืึทืจืงืขืจื˜ ืกืฉ. ืœื™ื™ื’ ืขืก ืฆื• ืกื˜ืึทืจื˜ืึทืคึผ ืื•ืŸ ืึธื ื”ื™ื™ื‘.

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

ืื™ืจ ืงืขื ื˜ ืืคื™ืœื• ื–ืขืŸ ื“ืขื ืกื˜ืึทื˜ื•ืก:

sudo systemctl status autossh.service

ืื™ืฆื˜, ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื•ื•ืคึผืก ืกืขืจื•ื•ืขืจ, ืื•ื™ื‘ ืžื™ืจ ืœื•ื™ืคืŸ:

ssh -p 8083 khadas@localhost

ื“ืขืจื ืึธืš ืื™ืš ื‘ืึทืงื•ืžืขืŸ ืฆื• ืžื™ื™ืŸ ืคึผืจื•ื‘ื™ืจืŸ ืฉื˜ื™ืง ืคื•ืŸ ื™ื™ึทื–ื ื•ื•ืึทืจื’. ืื•ืŸ ืคึฟื•ืŸ ื“ื™ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืื™ืš ืงืขื ืขืŸ ืื•ื™ืš ืฉื™ืงืŸ ืœืึธื’ืก ืื•ืŸ ืงื™ื™ืŸ ื“ืึทื˜ืŸ ื“ื•ืจืš ssh ืฆื• ืžื™ื™ืŸ ืกืขืจื•ื•ืขืจ, ื•ื•ืึธืก ืื™ื– ื–ื™ื™ืขืจ ื‘ืึทืงื•ื•ืขื.

ืคึผืึทื˜ื™ื ื’ ืขืก ืึทืœืข ืฆื•ื–ืึทืžืขืŸ

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก
ื‘ืึทืฉื˜ื™ืžืขืŸ ืื•ื™ืฃ, ืœืึธื–ืŸ ืื•ื ื“ื– ืึธื ื”ื™ื™ื‘ืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื•ืŸ ื“ื™ื‘ืึทื’ื™ื ื’

ืคื™ื™, ื ื•, ื“ืึธืก ืื™ื– ืขืก, ืื™ืš ื“ื™ืกืงืจื™ื™ื‘ื“ ืึทืœืข ื“ื™ ื ืึธื•ื“ื–. ืื™ืฆื˜ ืขืก ืื™ื– ืฆื™ื™ึทื˜ ืฆื• ืฉื˜ืขืœืŸ ืขืก ืึทืœืข ืฆื•ื–ืึทืžืขืŸ. ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ืงืึธื“ ื“ืึธ.

ืึท ื•ื•ื™ื›ื˜ื™ืง ืคื•ื ื˜ ืžื™ื˜ ื“ื™ ืงืึธื“: ื“ืขืจ ืคึผืจื•ื™ืขืงื˜ ืงืขืŸ ื ื™ืฉื˜ ืึธื ื”ื™ื™ื‘ืŸ ืึทื–ื•ื™, ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื˜ื™ื™ืœืขืจื“ ืคึฟืึทืจ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืึทืจื‘ืขื˜, ืคื•ืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ. ื›ืึธื˜ืฉ ืื™ืš ื’ืขื‘ืŸ ื“ื™ ืžืงื•ืจ ืงืึธื“, ืื™ืš ื•ื•ืขื˜ ื ืึธืš ื“ืขืจืงืœืขืจืŸ ื“ื™ ืžืขืจืกื˜ ื•ื•ืขืจื˜ืคื•ืœ ื–ืื›ืŸ ื“ืึธ, ืจืขื›ื˜ ืื™ืŸ ื“ืขื ื˜ืขืงืกื˜, ืึทื ื“ืขืจืฉ ืขืก ืื™ื– ื’ืึธืจ ื™ื ื’ืงืึทืžืคึผืจืึทื›ืขื ืกื™ื‘ืึทืœ.

ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘, ืื™ืš ื™ื ื™ืฉืึทืœื™ื™ื– ื’ืคึผืก, 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)

ื“ื™ ืžืขืจืกื˜ ืฉื•ื•ืขืจ ื˜ื™ื™ืœ ืคื•ืŸ ื“ืขื ืคึผืจื•ื™ืขืงื˜ ืื™ื– ืฆื• ื”ืึทืœื˜ืŸ ื“ื™ ืคืึทืจืงืขืจื˜ ืกืฉ ืงืฉืจ ืคึฟืึทืจ ื™ืขื“ืขืจ ืคึผืจืึธื‘ืข. ื™ืขื“ืขืจ ืคึผืจืึธื‘ืข ื™ื ื•ื•ืึทืœื•ื•ื– ืฉื™ื™ึทืขืš-ืงืึทื ืคื™ื’ื™ืขืจื™ื ื’ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ื’ื™ื™ื˜ื•ื•ื™ื™ ืื•ืŸ ื“ื ืก ืกืขืจื•ื•ืขืจ. ื–ื™ื ื˜ ืงื™ื™ื ืขืจ ืœื™ื™ืขื ื˜ ืกื™ื™ึท ื•ื•ื™ ืกื™ื™ึท, ื•ื•ื™ืกืŸ ืึทื– ื“ื™ ื‘ืึทืŸ ืคืึธืจ ื ื™ืฉื˜ ืื•ื™ืฃ ื•ื•ื•ื“ืึทืŸ ืจืขืœืก. ื•ื•ืขืจ ืขืก ื˜ืจืขืคื˜ ื“ื™ ื™ืกื˜ืขืจ ื™ื™, ื‘ืืงื•ืžื˜ ื–ื™ืกื•ื•ืึทืจื’.

ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืื™ืš ืžืึทื›ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืจื•ื˜ื™ื ื’ ื˜ื™ืฉ -ืกืขื˜-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 ืจื•ื˜ื™ื ื’ ืฆื• ื“ืขื ืฆื•ื‘ื™ื ื“ (ืื•ื™ื‘ ืขืก ืื™ื– ื ื™ืฉื˜ ื’ืขื˜ืืŸ), ืฉื™ืงืŸ ืขืจืจืึธืจืก ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ืื•ื™ื‘ ื“ื™ ืฆื™ื™ื˜ ืื™ื– ื’ืขืงื•ืžืขืŸ, ืฉื™ืงืŸ ืœืึธื’ืก ืื•ืŸ ืœืขืกืึธืฃ ืœื•ื™ืคืŸ ืึท ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ืŸ ืจืึทื˜ืขื•ื•ืขืŸ ื“ื™ ืœืึธื’ืก ืฆื• ืึท ืงืกื•ื• ื˜ืขืงืข.

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

ืจืขื–ื•ืœื˜ืึทื˜ืŸ

ื ื•, ืื™ืฆื˜ ื“ื™ ืžืขืจืกื˜ ื•ื•ื™ื›ื˜ื™ืง ื–ืึทืš ืื™ื–, ื•ื•ืึธืก ื’ืขื˜ืจืืคืŸ ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜? ื“ืึธ ื–ืขื ืขืŸ ืึท ื‘ื™ืกืœ ื’ืจืึทืคืก ื•ื•ืึธืก ืื™ืš ื’ืขืจืื˜ืŸ ืฆื• ื›ืึทืคึผืŸ ื‘ืขืฉืึทืก ื“ื™ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื•ืŸ ื“ื™ื‘ืึทื’ื™ื ื’ ืคึผืจืึธืฆืขืก. ื“ื™ ื’ืจืึทืคืก ื–ืขื ืขืŸ ื’ืขื‘ื•ื™ื˜ ืžื™ื˜ ื’ื ื•ืคึผืœืึธืฅ ืžื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืฉืจื™ืคื˜.

#! /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 ืึธืคึผืขืจืึทื˜ืึธืจ, ื•ื•ืึธืก ืื™ืš ื’ืขืคื™ืจื˜ ืคึฟืึทืจ ืขื˜ืœืขื›ืข ื˜ืขื’.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ื“ืึธ ืื™ืš ื’ืขื•ื•ื™ื™ื ื˜ ืึท ื“ื™ื ืึทืžื™ืฉ ืžืขืกื˜ืŸ ืกืขืจื•ื•ืขืจ. ืกืคึผื™ื“ ืžืขื–ืฉืขืจืžืึทื ืฅ ืึทืจื‘ืขื˜, ืึธื‘ืขืจ ื•ื•ืึทืงืœืขื  ื–ื™ืš ื–ื™ื™ืขืจ ืคื™ืœ, ืึธื‘ืขืจ ืขื˜ืœืขื›ืข ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ื•ื•ืขืจื˜ ืื™ื– ื ืึธืš ืงืขื ื˜ื™ืง, ืื•ืŸ ื“ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืืงื•ืžืขืŸ ื“ื•ืจืš ืคื™ืœื˜ืขืจื™ื ื’ ื“ื™ ื“ืึทื˜ืŸ, ืœืžืฉืœ, ืžื™ื˜ ืึท ืžืึธื•ื•ื™ื ื’ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš.

ืฉืคึผืขื˜ืขืจ ืื™ืš ื’ืขื‘ื•ื™ื˜ ืึท ื ื•ืžืขืจ ืคื•ืŸ ื’ืจืึทืคืก ืคึฟืึทืจ ืื ื“ืขืจืข ื˜ืขืœืขืงืึธื ืึธืคึผืขืจื™ื™ื˜ืขืจื–. ืื™ืŸ ื“ืขื ืคืึทืœ, ืขืก ืื™ื– ืฉื•ื™ืŸ ืื™ื™ืŸ ื˜ืขืกื˜ื™ื ื’ ืกืขืจื•ื•ืขืจ, ืื•ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ื–ืขื ืขืŸ ืื•ื™ืš ื–ื™ื™ืขืจ ื˜ืฉื™ืงืึทื•ื•ืข.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ, ื“ื™ ื˜ืขืžืข ืื™ื– ื–ื™ื™ืขืจ ื‘ืจื™ื™ื˜ ืคึฟืึทืจ ืคืึธืจืฉื•ื ื’ ืื•ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืคื•ืŸ ื“ื™ ื“ืึทื˜ืŸ, ืื•ืŸ ืงืœืืจ ื ื™ืฉื˜ ืœืขืฆื˜ืข ืคึฟืึทืจ ืึท ืคึผืึธืจ ืคื•ืŸ ื•ื•ืึธื›ืŸ ืคื•ืŸ ืึทืจื‘ืขื˜. ืึธื‘ืขืจโ€ฆ

ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื“ืขืจ ืึทืจื‘ืขื˜

ื“ื™ ืึทืจื‘ืขื˜ ืื™ื– ืคึผืœื•ืฆืœื™ื ื’ ื’ืขืขื ื“ื™ืงื˜ ืจืขื›ื˜ ืฆื• ืฆื•ืฉื˜ืื ื“ืŸ ืื•ื™ืกืขืจ ืžื™ื™ืŸ ืงืึธื ื˜ืจืึธืœ. ืื™ื™ื ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืฉื•ื•ืึทื›ืงื™ื™ื˜ืŸ ืคื•ืŸ ื“ืขื ืคึผืจืึธื™ืขืงื˜, ืœื•ื™ื˜ ืžื™ื™ืŸ ืกืึทื‘ื“ื–ืฉืขืงื˜ื™ื•ื• ืžื™ื™ื ื•ื ื’, ืื™ื– ื’ืขื•ื•ืขืŸ ื“ืขืจ ืžืึธื“ืขื, ื•ื•ืึธืก ื”ืื˜ ื ื™ืฉื˜ ื˜ืึทืงืข ื•ื•ื™ืœืŸ ืฆื• ืึทืจื‘ืขื˜ืŸ ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืกืœื™ ืžื™ื˜ ืื ื“ืขืจืข ืžืึธื“ืขืžืก, ืื•ืŸ ื’ืขืžืื›ื˜ ืึทื–ืึท ื˜ืจื™ืงืก ื™ืขื“ืขืจ ืžืึธืœ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืœืึธื•ื“ื™ื“. ืคึฟืึทืจ ื“ื™ ืฆื•ื•ืขืงืŸ, ืขืก ื–ืขื ืขืŸ ืึท ืจื™ื–ื™ืง ื ื•ืžืขืจ ืคื•ืŸ ืื ื“ืขืจืข ืžืึธื“ืขื ืžืึธื“ืขืœืก; ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื–ื™ื™ ื–ืขื ืขืŸ ืฉื•ื™ืŸ ืื™ืŸ ื“ื™ Mini PCI-e ืคึฟืึธืจืžืึทื˜ ืื•ืŸ ื–ืขื ืขืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ื™ืŸ ื“ื™ ืžื™ื˜ืœ ืื•ืŸ ื–ืขื ืขืŸ ืคื™ืœ ื’ืจื™ื ื’ืขืจ ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ. ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื’ืึธืจ ืึทืŸ ืึทื ื“ืขืจ ื’ืขืฉื™ื›ื˜ืข. ื“ืขืจ ืคืจืื™ืขืงื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ืื™ื ื˜ืขืจืขืกืื ื˜ ืื•ืŸ ืื™ืš ื‘ื™ืŸ ื’ืขื•ื•ืขืŸ ื–ื™ื™ืขืจ ืฆื•ืคืจื™ื“ืŸ ืื– ืื™ืš ื”ืื‘ ื’ืขืงืขื ื˜ ืื ื˜ื™ื™ืœื ืขืžืขืŸ ืื™ืŸ ืื™ื.

ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืกืคึผื™ื“ื˜ืขืกื˜ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืœื˜ืข ืžืึธื“ืขืžืก

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’