ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

На ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π΅ ΠΌΠ½Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ ΠΏΠΎΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ устройства измСрСния скорости LTE-ΠΌΠΎΠ΄Π΅ΠΌΠΎΠ² для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² сотовой связи.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ Ρ…ΠΎΡ‚Π΅Π» ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ всСвозмоТных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² связи Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… гСографичСских Ρ‚ΠΎΡ‡ΠΊΠ°Ρ…, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сотовой связи Π΅ΠΌΡƒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ ΠΏΡ€ΠΈ установкС оборудования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ LTE-соСдинСниС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для видСотрансляций. ΠŸΡ€ΠΈ этом Π·Π°Π΄Π°Ρ‡Ρƒ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ максимально просто ΠΈ дСшСво, Π±Π΅Π· дорогостоящСго оборудования.

Π‘Ρ€Π°Π·Ρƒ скаТу, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ самая простая ΠΈ наукоСмкая, расскаТу, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠ½Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ»ΠΈΡΡŒ ΠΈ ΠΊΠ°ΠΊ я ΠΈΡ… Ρ€Π΅ΡˆΠ°Π». Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ΅Ρ…Π°Π»ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ скорости LTE-соСдинСниС Π΄Π΅Π»ΠΎ вСсьма слоТноС: Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ оборудования ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ измСрСния, Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡŽ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ сотовой сСти. Плюс Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ нСсколько Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ²: количСство Π°Π±ΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π° сотС, ΠΏΠΎΠ³ΠΎΠ΄Π½Ρ‹Π΅ условия, Π΄Π°ΠΆΠ΅ ΠΎΡ‚ соты ΠΊ сотС ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ сСти. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, эта Π·Π°Π΄Π°Ρ‡Π° с ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ количСством нСизвСстных, ΠΈ Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ связи.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ Ρ…ΠΎΡ‚Π΅Π» просто Π³ΠΎΠ½ΡΡ‚ΡŒ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π° с Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ измСрСния прямо Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅ ΠΈ Π΄Π°Π»Π΅Π΅ Π² Ρ‚Π΅Ρ‚Ρ€Π°Π΄ΠΊΡƒ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ измСрСния скорости. МоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ измСрСния скорости сСтСй lte, Ρ…ΠΎΡ‚ΡŒ Π½Π΅ идСально, Π½ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ.

Из-Π·Π° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, я ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π» Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ удобства ΠΈΠ»ΠΈ практичности, Π° Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ скорости Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. НапримСр, для ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ доступа поднимался ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ssh, вмСсто Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ vpn, Ρ€Π°Π΄ΠΈ экономии Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° настройку сСрвСра ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

ВСхничСскоС Π·Π°Π΄Π°Π½ΠΈΠ΅

Как сказано Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π‘Π΅Π· Π’Π—: ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ Ρ…ΠΎΡ‡Π΅Ρ‚ Π΅Π³ΠΎ: НС Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ Π±Π΅Π· Π’Π—! Никогда, Π½ΠΈΠ³Π΄Π΅!

ВСхничСскоС Π·Π°Π΄Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ достаточно простоС, я Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡŽ для понимания ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’Ρ‹Π±ΠΎΡ€ тСхничСских Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈ оборудования Π±Ρ‹Π» ΠΏΡ€ΠΎΠ΄ΠΈΠΊΡ‚ΠΎΠ²Π°Π½ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠΌ. Π˜Ρ‚Π°ΠΊ, само Π’Π—, послС всСх согласований:

На Π±Π°Π·Π΅ ΠΎΠ΄Π½ΠΎΠΏΠ»Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° vim2 ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ тСстСр скорости lte-соСдинСния Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΎΠ΄Π΅ΠΌΡ‹ Huawei e3372h β€” 153 Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² связи (ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎ n). Π’Π°ΠΊ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ с GPS-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ UART. Π—Π°ΠΌΠ΅Ρ€Ρ‹ скорости ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСрвиса www.speedtest.net ΠΈ ΡΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²ΠΈΠ΄Π°:

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

Π’Π°Π±Π»ΠΈΡ†Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ csv. ПослС Ρ‡Π΅Π³ΠΎ ΠΎΡ‚ΡΡ‹Π»Π°Ρ‚ΡŒ Π½Π° Π΅-ΠΌΠ°ΠΉΠ» ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 6 часов Π΄Π°Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΡƒ. Π’ случаС возникновСния ошибок ΠΌΠΈΠ³Π°Ρ‚ΡŒ свСтодиодом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ GPIO.

Π’Π— я описал Π² вольной Ρ„ΠΎΡ€ΠΌΠ΅, послС мноТСства согласований. Но смысл Π·Π°Π΄Π°Ρ‡ΠΈ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π½. Π‘Ρ€ΠΎΠΊ Π½Π° всС ΠΏΡ€ΠΎ всС Π±Ρ‹Π» Π΄Π°Π½ нСдСля. Но Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ½ растянулся Π½Π° Ρ‚Ρ€ΠΈ Π½Π΅Π΄Π΅Π»ΠΈ. Π­Ρ‚ΠΎ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ я Π΄Π΅Π»Π°Π» это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС основной Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ.

Π—Π΄Π΅ΡΡŒ я Ρ…ΠΎΡ‡Ρƒ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠΌ Π±Ρ‹Π»ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠ³ΠΎΠ²ΠΎΡ€Π΅Π½ΠΎ использованиС сСрвиса измСрСния скорости ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ обСспСчСниС, Ρ‡Ρ‚ΠΎ сильно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ»ΠΎ ΠΌΠΎΠΈ возмоТности. Π‘Ρ‹Π» Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚, поэтому особо Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠΊΡƒΠΏΠ°Π»ΠΎΡΡŒ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ.

АрхитСктура ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π‘Ρ…Π΅ΠΌΠ° проста ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΡΡ‚Π°Π²Π»ΡŽ Π΅Π΅ Π±Π΅Π· особых ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

Π’Π΅ΡΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ€Π΅ΡˆΠΈΠ» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° python, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° этом языкС Ρƒ мСня Π½Π΅ Π±Ρ‹Π»ΠΎ совсСм. Π’Ρ‹Π±Ρ€Π°Π» Π΅Π³ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π±Ρ‹Π»Π° ΠΊΡƒΡ‡Π° Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΏΡ€ΠΎΡˆΡƒ всСх ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… программистов Π½Π΅ Ρ€ΡƒΠ³Π°Ρ‚ΡŒ ΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° python, ΠΈ всСгда с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ Π³ΠΎΡ‚ΠΎΠ² ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒ, для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ своСго скилла.

Π’Π°ΠΊΠΆΠ΅ Π² процСссС ΠΎΡ‚ΠΊΡ€Ρ‹Π», Ρ‡Ρ‚ΠΎ python ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ Ρ…ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ вСрсии 2 ΠΈ 3, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ остановился Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ.

АппаратныС ΡƒΠ·Π»Ρ‹

ΠžΠ΄Π½ΠΎΠΏΠ»Π°Ρ‚Π½ΠΈΠΊ vim2

Π’ качСствС основной ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΌΠ½Π΅ Π±Ρ‹Π» Π΄Π°Π½ ΠΎΠ΄Π½ΠΎΠΏΠ»Π°Ρ‚Π½ΠΈΠΊ vim2

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ, ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΌΠ΅Π΄ΠΈΠ°ΠΊΠΎΠΌΠ±Π°ΠΉΠ½ для ΡƒΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ° ΠΈ SMART-TV, Π½ΠΎ Π½Π° Ρ€Π΅Π΄ΠΊΠΎΡΡ‚ΡŒ нСподходящий для Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈΠ»ΠΈ скаТСм Ρ‚Π°ΠΊ, слабо подходящий. НапримСр, Π΅Π³ΠΎ главная ОБ β€” это Android, Π° Linux β€” это попутная ОБ, ΠΈ соотвСтствСнно Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ качСствСнной Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСх ΡƒΠ·Π»ΠΎΠ² ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ΄ Linux. И я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π±Ρ‹Π»Π° связана с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ USB Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, поэтому ΠΌΠΎΠ΄Π΅ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Π΅ Π½Π΅ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π». Π’Π°ΠΊ ΠΆΠ΅ Ρƒ Π½Π΅Π³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ плохая ΠΈ разрознСнная докумСнтация, поэтому каТдая опСрация Π·Π°Π½ΠΈΠΌΠ°Π»Π° ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ копания Π² Π΄ΠΎΠΊΠ°Ρ…. Π”Π°ΠΆΠ΅ рядовая Ρ€Π°Π±ΠΎΡ‚Π° с GPIO ΠΏΠΎΠΏΠΈΠ»Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡ€ΠΎΠ²ΠΈ. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ со свСтодиодом, ΠΌΠ½Π΅ понадобилось нСсколько часов. Но, Ссли Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ, Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π° ΠΎΠ΄Π½ΠΎΠΏΠ»Π°Ρ‚Π½ΠΈΠΊ, Π³Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΈ Π±Ρ‹Π»ΠΈ USB-ΠΏΠΎΡ€Ρ‚Ρ‹.

Для Π½Π°Ρ‡Π°Π»Π° ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Linux Π½Π° Π΄Π°Π½Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ€Ρ‹ΡΠΊΠ°Ρ‚ΡŒ всСм ΠΏΠΎ дСбрям Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с этим ΠΎΠ΄Π½ΠΎΠΏΠ»Π°Ρ‚Π½ΠΈΠΊΠΎΠΌ, ΠΏΠΈΡˆΡƒ Π΄Π°Π½Π½ΡƒΡŽ Π³Π»Π°Π²Ρƒ.

Π•ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ линукс: Π½Π° внСшнюю SD-ΠΊΠ°Ρ€Ρ‚Ρƒ, Π»ΠΈΠ±ΠΎ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ MMC. Π‘ ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ я побился Π²Π΅Ρ‡Π΅Ρ€ΠΎΠΊ, Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π²ΠΊΡƒΡ€ΠΈΠ» ΠΊΠ°ΠΊ ΠΆΠ΅ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, поэтому Ρ€Π΅ΡˆΠΈΠ» ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° MMC, хотя Π±Π΅Π· сомнСния с внСшнСй ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

О ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ΅ ΠΊΡ€ΠΈΠ²ΠΎ рассказано Ρ‚ΡƒΡ‚. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠΆΡƒ со странного Π½Π° русский. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡˆΠΈΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρƒ, ΠΌΠ½Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ UART. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π» Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

  • Tool Pin GND: <β€”> Pin17 of VIMs’s GPIO
  • Tool Pin TXD: <β€”> Pin18 of VIMs’s GPIO (Linux_Rx)
  • Tool Pin RXD: <β€”> Pin19 of VIMs’s GPIO (Linux_Tx)
  • Tool Pin VCC: <β€”> Pin20 of VIMs’s GPIO

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

ПослС Ρ‡Π΅Π³ΠΎ, я скачал ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ ΠΎΡ‚ΡΡŽΠ΄Π°. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ вСрсия ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ 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

Π˜ΠΈΠΈβ€¦ НичСго Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠŸΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» ΠΏΠ°Ρ€Ρƒ часов занимаясь ΠΏΡ€Π°Π²ΠΊΠ°ΠΌΠΈ установочных скриптов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡŒ Ρƒ мСня. Π§Ρ‚ΠΎ Ρ‚Π°ΠΌ Π΄Π΅Π»Π°Π» Π½Π΅ помню, Π½ΠΎ Ρ‚ΠΎΠΆΠ΅ Π΅Ρ‰Π΅ Ρ‚ΠΎΡ‚ Ρ†ΠΈΡ€ΠΊ с конями. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡŒΡ‚Π΅ остороТны. Но Π±Π΅Π· этих ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ дальшС ΠΌΡƒΡ‡ΠΈΡ‚ΡŒ vim2 смысла Π½Π΅Ρ‚. Π›ΡƒΡ‡ΡˆΠ΅ с Π½ΠΈΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ!

ПослС сСми ΠΊΡ€ΡƒΠ³ΠΎΠ² Π°Π΄Π°, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ скриптов ΠΈ установки ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ» ΠΏΠ»Π°Ρ‚Ρƒ ΠΏΠΎ USB ΠΊ ΠΌΠΎΠ΅ΠΌΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ линукс, ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ UART ΠΏΠΎ схСмС Π²Ρ‹ΡˆΠ΅.
ΠΠ°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽ ΠΌΠΎΠΉ Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» minicom Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ 115200, Π±Π΅Π· Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ контроля ошибок. И приступаСм.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

ΠŸΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ VIM2 Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ UART наТимаю ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ±Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ появится строка

kvim2# 

Π’Π²ΠΎΠΆΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

kvim2# run update

На хостС, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽ:

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

ВсС, Ρ„ΡƒΡ…. ΠŸΡ€ΠΎΡˆΠΈΠ», Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Π΅ΡΡ‚ΡŒ 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 послС всСх настроСк, выглядит Ρ‚Π°ΠΊ: послС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅ΠΌΠ°, Ρƒ мСня появляСтся сСтСвой интСрфСйс eth*, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ dhcp ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ip адрСс 192.168.8.100, ΠΈ шлюз ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 192.168.8.1.

И самый Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚! Данная модСль ΠΌΠΎΠ΄Π΅ΠΌΠ°, Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠ΄Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСтся АВ-ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. ВсС Π±Ρ‹Π»ΠΎ Π±Ρ‹ сильно ΠΏΡ€ΠΎΡ‰Π΅, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ppp-соСдинСния Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄Π΅ΠΌ ΠΈ дальшС ΡƒΠΆΠ΅ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ. Но Π² ΠΌΠΎΠ΅ΠΌ случаС «сам» (Ρ‚ΠΎΡ‡Π½Π΅Π΅ Π΄Π°ΠΉΠ²Π΅Ρ€Π° Linux согласно ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ udev), создаСт eth-интСрфСйс ΠΈ ΠΏΠΎ dhcp Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ Π΅ΠΌΡƒ ip-адрСс.

Π§Ρ‚ΠΎΠ±Ρ‹ дальшС Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π·Π°Π±Ρ‹Ρ‚ΡŒ слово Β«ΠΌΠΎΠ΄Π΅ΠΌΒ» ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ сСтСвая ΠΊΠ°Ρ€Ρ‚Π° ΠΈ шлюз, ΠΈΠ±ΠΎ ΠΏΠΎ сути, это ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ сСтСвой ΠΊΠ°Ρ€Ρ‚Ρ‹ со шлюзом.
Когда ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄Π΅ΠΌ, это Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ особых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΈΡ… большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ n-ΡˆΡ‚ΡƒΠΊ, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° сСти.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

Π’ΠΎ Π΅ΡΡ‚ΡŒ n сСтСвых ΠΊΠ°Ρ€Ρ‚, с ΠΎΠ΄Π½ΠΈΠΌ IP-адрСсом, Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ шлюз ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Но ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ своСму ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρƒ мСня Π±Ρ‹Π»ΠΎ простоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ifconfig ΠΈΠ»ΠΈ ip Π³Π°ΡΠΈΡ‚ΡŒ всС интСрфСйсы ΠΈ просто Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. РСшСниС Π±Ρ‹Π»ΠΎ всСм Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ я Π½Π΅ ΠΈΠΌΠ΅Π» возмоТности ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ устройству. А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ частыС ΠΈ быстрыС, Ρ‚ΠΎ фактичСски Ρƒ мСня Π½Π΅ Π±Ρ‹Π»ΠΎ возмоТности ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π²ΠΎΠΎΠ±Ρ‰Π΅.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я Π²Ρ‹Π±Ρ€Π°Π» ΠΏΡƒΡ‚ΡŒ ΠΌΠ΅Π½ΡΡ‚ΡŒ Β«Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽΒ» ip-адрСса ΠΌΠΎΠ΄Π΅ΠΌΠΎΠ² ΠΈ дальшС Π³ΠΎΠ½ΡΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ настроСк ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

На этом Ρƒ мСня ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΌΠΎΠ΄Π΅ΠΌΠ°ΠΌΠΈ Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈΡΡŒ: Π² случаС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠ½ΠΈ ΠΎΡ‚Π²Π°Π»ΠΈΠ²Π°Π»ΠΈΡΡŒ, Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ USB-Ρ…Π°Π±Π°. Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ€Π΅ΡˆΠΈΠ» ТСстко припаяв ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ прямо ΠΊ Ρ…Π°Π±Ρƒ. Другая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я столкнулся ΠΈ которая ΠΏΠΎΠ³ΡƒΠ±ΠΈΠ»Π° вСсь ΠΏΡ€ΠΎΠ΅ΠΊΡ‚: послС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎΠ³ΠΎ старта устройства ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ»ΠΈΡΡŒ Π½Π΅ всС ΠΌΠΎΠ΄Π΅ΠΌΡ‹ ΠΈ Π½Π΅ всСгда, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это происходило ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ ΠΌΠ½Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ. Но ΠΎΠ±ΠΎ всСм ΠΏΠΎ порядку.

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠ΄Π΅ΠΌΠ°, я установил ΠΏΠ°ΠΊΠ΅Ρ‚ usb-modeswitch.

sudo apt update
sudo apt install -y usb-modeswitch

ПослС Ρ‡Π΅Π³ΠΎ, ΠΌΠΎΠ΄Π΅ΠΌ послС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ подсистСмой udev. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΡŽ, просто ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ² ΠΌΠΎΠ΄Π΅ΠΌ ΠΈ ΡƒΠ±Π΅Π΄ΠΈΠ²ΡˆΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ ΡΠ΅Ρ‚ΡŒ появилась.
Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я Π½Π΅ смог Ρ€Π΅ΡˆΠΈΡ‚ΡŒ: это ΠΊΠ°ΠΊ ΠΈΠ· этого ΠΌΠΎΠ΄Π΅ΠΌΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ имя ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ? Имя ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° содСрТится Π² Π²Π΅Π±-интСрфСйсС ΠΌΠΎΠ΄Π΅ΠΌΠ° ΠΏΠΎ адрСсу 192.168.8.1. Π­Ρ‚ΠΎ динамичСская Π²Π΅Π±-страница, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ посрСдством ajax-запросов, поэтому просто wget-Ρ‚Π½ΡƒΡ‚ΡŒ страницу ΠΈ ΡΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ имя Π½Π΅ получится. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π°Ρ‡Π°Π» ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ web-страницу ΠΈ Ρ‚.ΠΏ., ΠΈ понял, Ρ‡Ρ‚ΠΎ занимаюсь ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΅Ρ€ΡƒΠ½Π΄ΠΎΠΉ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠ»ΡŽΠ½ΡƒΠ», ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π°Ρ‡Π°Π» ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API самого Speedtest.

МногоС Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅, Ссли Π±Ρ‹ Ρƒ ΠΌΠΎΠ΄Π΅ΠΌΠ° Π±Ρ‹Π» Π±Ρ‹ доступ Ρ‡Π΅Ρ€Π΅Π· AT-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. МоТно Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ppp-соСдинСниС, Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ IP, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° связи ΠΈ Ρ‚.Π΄. Но ΡƒΠ²Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ Π΄Π°Π»ΠΈ.

GPS

GPS-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ½Π΅ Π²Ρ‹Π΄Π°Π»ΠΈ, ΠΈΠΌΠ΅Π» интСрфСйс UART ΠΈ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π½Π΅ самоС Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ ΠΈ простоС. ΠŸΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ Π±Ρ‹Π» ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

ЧСстно говоря, Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» с 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

Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽ UART, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΡΠ΅Ρ‚ΡŒ GPS.

DEVICES="/dev/ttyS4"

И послС всС Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈ стартуСм.

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

ПослС Ρ‡Π΅Π³ΠΎ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽ GPS.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

Π’ Ρ€ΡƒΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ²ΠΎΠ΄ GPS, ΠΏΠΎΠ΄ ΠΏΠ°Π»ΡŒΡ†Π°ΠΌΠΈ Π²ΠΈΠ΄Π½Ρ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π° UART ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°.

ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡΡŒ, ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ GPS с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ gpsmon.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

На этом ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ спутников Π½Π΅ Π²ΠΈΠ΄Π°Ρ‚ΡŒ, Π½ΠΎ Π²ΠΈΠ΄Π½ΠΎ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с 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 сСкунд я Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Ρƒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ, Π»ΠΈΠ±ΠΎ Π½Π΅Ρ‚. Π”Π°, Ρƒ мСня ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π±Ρ‹Π»ΠΎ Π΄Π΅ΡΡΡ‚ΡŒ. НС ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ, ΠΊΡ€ΠΈΠ²ΠΎ ΠΈ косо, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π― Ρ€Π΅ΡˆΠΈΠ» Ρ‚Π°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ GPS ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»ΠΎΡ…ΠΎ ΠΈ Π½Π΅ всСгда ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Если ΠΆΠ΄Π°Ρ‚ΡŒ получСния Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ Π² случаС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π³Π»ΡƒΡ…ΠΎΠΌ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° зависнСт Π² это мСстС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» Ρ‚Π°ΠΊΠΎΠΉ Π½Π΅ элСгантный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Π±Ρ‹Π»ΠΎ Π±Ρ‹ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΠΎ UART ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с GPS, ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ. Но Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ совсСм, ΠΎΡ‚ΡΡŽΠ΄Π° Π»ΡŽΡ‚Ρ‹ΠΉ нСкрасивый ΠΊΠΎΠ΄. И Π΄Π°, ΠΌΠ½Π΅ Π½Π΅ стыдно.

Π‘Π²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄

Π‘ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ свСтодиода Π±Ρ‹Π»ΠΎ всС просто ΠΈ слоТно ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Главная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΈΠ½Π° Π² систСмС Π½Π΅ соотвСтствуСт Π½ΠΎΠΌΠ΅Ρ€Ρƒ ΠΏΠΈΠ½Π° Π½Π° ΠΏΠ»Π°Ρ‚Π΅ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ докумСнтация написана Π»Π΅Π²ΠΎΠΉ пяткой. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠΈΠ½Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΈΠ½Π° Π² ОБ, Π½Π°Π΄ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

gpio readall

Π‘ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° соотвСтствия ΠΏΠΈΠ½Π° Π² систСмС, ΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Π΅. ПослС Ρ‡Π΅Π³ΠΎ я ΡƒΠΆΠ΅ ΠΌΠΎΠ³Ρƒ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΈΠ½ΠΎΠΌ Π² самой ОБ. Π’ ΠΌΠΎΠ΅ΠΌ случаС свСтодиод ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ GPIOH_5.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠΆΡƒ ΠΏΠΈΠ½ GPIO Π² Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄Π°.

gpio -g mode 421 out

Π—Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽ Π½ΡƒΠ»ΡŒ.

gpio -g write 421 0

Π—Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.

gpio -g write 421 1

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…
ВсС Π³ΠΎΡ€ΠΈΡ‚, послС записи Β«1Β»

#gpio subsistem
def gpio_init():
	os.system("gpio -g mode 421 out")
	os.system("gpio -g write 421 1")

def gpio_set(val):
	os.system("gpio -g write 421 %d" % val)
	
def error_blink():
	gpio_set(0)
	time.sleep(0.1)
	gpio_set(1)
	time.sleep(0.1)
	gpio_set(0)
	time.sleep(0.1)
	gpio_set(1)
	time.sleep(0.1)
	gpio_set(0)
	time.sleep(1.0)
	gpio_set(1)

def good_blink():
	gpio_set(1)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π² случаС ошибок я Π²Ρ‹Π·Ρ‹Π²Π°ΡŽ error_blink() ΠΈ свСтодиод Π½Π°ΠΌ красиво ΠΏΠΎΠΌΠΈΠ³Π°Π΅Ρ‚.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹

Speedtest API

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ€Π°Π΄ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ сСрвиса speedtest.net Π΅ΡΡ‚ΡŒ свой собствСнный python-API, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Github.

Π§Π΅ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ исходныС ΠΊΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ. Как Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌ 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

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, ΠΊΠ°ΠΊ сдСлал это я. МнС ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π²Π»Π΅Π·Ρ‚ΡŒ Π² исходныС ΠΊΠΎΠ΄Ρ‹ этого спидтСста, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Одна ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… Π·Π°Π΄Π°Ρ‡ β€” это ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ имя ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° связи, для подстановки Π΅Π³ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΡƒ.

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 Ρƒ мСня Π±Ρ‹Π» Ρ€Π°Π²Π΅Π½ [], ΠΌΠΎΠ» Π²Ρ‹Π±Π΅Ρ€ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠΉ сСрвСр. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρƒ мСня Π±Ρ‹Π»ΠΈ случайныС сСрвСра, ΠΈ ΠΊΠ°ΠΊ Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π°Ρ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ достаточно слоТная Ρ‚Π΅ΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ фиксированный сСрвСр, Ссли Π΄Π°, Ρ‚ΠΎ статичСский ΠΈΠ»ΠΈ динамичСский, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ исслСдования. Но Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π·Π°ΠΌΠ΅Ρ€ΠΎΠ² скорости ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π‘ΠΈΠ»Π°ΠΉΠ½Π° ΠΏΡ€ΠΈ динамичСском Π²Ρ‹Π±ΠΎΡ€Π΅ тСстового сСрвСра ΠΈ статичСски зафиксированного.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ измСрСния скорости ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ динамичСского сСрвСра.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ тСстирования скорости, ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠΌ строго Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС.

Β«Π¨Π΅Ρ€ΡΡ‚ΡŒΒ» ΠΏΡ€ΠΈ тСстировании Π΅ΡΡ‚ΡŒ ΠΈ Ρ‚Π°ΠΌ ΠΈ Ρ‚Π°ΠΌ, ΠΈ Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±ΠΈΡ€Π°Ρ‚ΡŒ матСматичСскими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Но ΠΏΡ€ΠΈ фиксированном сСрвСрС Π΅Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ мСньшС ΠΈ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π΅Π΅.
Π’ΠΎΠΎΠ±Ρ‰Π΅ это мСсто Π±ΠΎΠ»ΡŒΡˆΠΈΡ… исслСдований. И я Π±Ρ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ» Π·Π°ΠΌΠ΅Ρ€Ρ‹ скорости ΠΊ своСму сСрвСру, ΠΏΠΎ срСдством ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ iperf. Но ΠΌΡ‹ придСрТиваСмся ΠΎΡ‚ Π’Π—.

ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ ошибок

Для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» нСсколько дСсятков Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², Π½ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ остановился Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ. ЗарСгистрировал ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик Π½Π° yandex ΠΈ Π΄Π°Π»Π΅Π΅ взял Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΠΎΡ‡Ρ‚Ρ‹. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» Π΅Π³ΠΎ ΠΈ Π²Π½Π΅Π΄Ρ€ΠΈΠ» Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, Π² Ρ‚ΠΎΠΌ числС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° с gmail ΠΈ Ρ‚.ΠΏ. Возится с поднятиСм своСго ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ сСрвСра ΠΌΠ½Π΅ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° это, Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΡ‚ΠΎΠΌ оказалось Ρ‚ΠΎΠΆΠ΅ напрасно.

ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π»ΠΎΠ³ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ» ΠΏΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΡƒ, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ связи, ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 6 часов: Π² 00 часов, 06 ΡƒΡ‚Ρ€Π°, 12 дня ΠΈ 18 Π²Π΅Ρ‡Π΅Ρ€Π°. ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

from send_email import *
...
message_log = "Π›ΠΎΠ³ΠΈ тСстирования ΠΏΠ»Π°Ρ‚Ρ‹ β„–1"
EmailForSend = ["[email protected]", "[email protected]"]
files = ["/home/khadas/modems_speedtest/csv"]
...
def sendLogs():
	global EmailForSend
	curdata = datetime.now().strftime('%d.%m.%Y')
	сurtime = datetime.now().strftime('%H:%M:%S')
	try:
		for addr_to in EmailForSend:
			send_email(addr_to, message_log, "Π›ΠΎΠ³ΠΈ Π·Π° " + curdata + " " + сurtime, files)
	except:
		print("Network problem for send mail")
		return False
	return True

Ошибки Ρ‚ΠΎΠΆΠ΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΠ»ΠΈΡΡŒ. Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠ½ΠΈ накапливались Π² спискС, ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ отправлял Ρ‚Π°ΠΊΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ связи. Однако ΠΏΠΎΡ‚ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ yandex ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° количСство отправляСмых сообщСний Π² сутки (это боль, ΠΏΠ΅Ρ‡Π°Π»ΡŒ ΠΈ ΡƒΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ошибок Π΄Π°ΠΆΠ΅ Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство, соотвСтствСнно ΠΎΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ошибок ΠΏΠΎ ΠΏΠΎΡ‡Ρ‚Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, ΠΏΡ€ΠΈ автоматичСской ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· сСрвисы яндСкса ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅.

Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΆΠ΅Π»Π΅Π·ΠΊΠ΅ ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΅Π΅ Π΄ΠΎΠ½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½Π΅ понадобился внСшний сСрвСр. Π’ΠΎΠΎΠ±Ρ‰Π΅, справСдливости говоря, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π° сСрвСр ΠΈ Π² Π²Π΅Π±-интСрфСйсС ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ всС красивыС Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Но Π½Π΅ всС сразу.

Π’ качСствС VPS я Π²Ρ‹Π±Ρ€Π°Π» ruvds.com. МоТно Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²Π·ΡΡ‚ΡŒ самый простой сСрвСр. И Π² Ρ†Π΅Π»ΠΎΠΌ для ΠΌΠΎΠΈΡ… Π±Ρ‹ Ρ†Π΅Π»Π΅ΠΉ этого Ρ…Π²Π°Ρ‚ΠΈΠ»ΠΎ Π±Ρ‹ Π·Π° Π³Π»Π°Π·Π°. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ»Π°Ρ‚ΠΈΠ» Π·Π° сСрвСр Π½Π΅ ΠΈΠ· своСго ΠΊΠ°Ρ€ΠΌΠ°Π½Π°, Ρ€Π΅ΡˆΠΈΠ» Π²Π·ΡΡ‚ΡŒ с нСбольшим запасом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Π²Π°Ρ‚ΠΈΠ»ΠΎ, Ссли Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ web-интСрфСйс, свой SMTP-сСрвСр, vpn ΠΈ Ρ‚.Π΄. Плюс ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Telegram-Π±ΠΎΡ‚Π° ΠΈ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹Π±Ρ€Π°Π» Amsterdam ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

Π’ качСствС способа связи с ΠΆΠ΅Π»Π΅Π·ΠΊΠΎΠΉ vim2 Π²Ρ‹Π±Ρ€Π°Π» ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ssh соСдинСниС ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π»Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° β€” Π½Π΅ самоС Π»ΡƒΡ‡ΡˆΠ΅Π΅. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Ρ‹Π²Π΅ соСдинСния, сСрвСр ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚ ΠΈ ΠΏΠΎ Π½Π΅ΠΌΡƒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, всС ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы связи, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ vpn. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Ρ…ΠΎΡ‚Π΅Π» ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° vpn, Π½ΠΎ Π½Π΅ успСл.

НС Π±ΡƒΠ΄Ρƒ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности настройки Ρ„Π°ΠΉΡ€Π²ΠΎΠ»Π°, ограничСния ΠΏΡ€Π°Π², ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ssh соСдинСния root ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ прописныС истины настройки 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 Π½Π° ΠΌΠΎΠΉ сСрвСр, Ρ‡Ρ‚ΠΎ вСсьма ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ всС Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…
Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, приступаСм ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅

Π€ΡƒΡ…, Π½Ρƒ Π²Ρ€ΠΎΠ΄Π΅ всС, описал всС ΡƒΠ·Π»Ρ‹. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС это Π² Π΅Π΄ΠΈΠ½ΡƒΡŽ ΠΊΡƒΡ‡Ρƒ. Код ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚.

Π’Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ с ΠΊΠΎΠ΄ΠΎΠΌ: Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ Π²ΠΎΡ‚ Β«Π²Π»ΠΎΠ±Β» ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΡΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ затачивался Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π₯ΠΎΡ‚ΡŒ я ΠΈ даю исходники, Π½ΠΎ всС ΠΆΠ΅ самоС Ρ†Π΅Π½Π½ΠΎΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Ρƒ Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚, прямо Π² тСкстС, ΠΈΠ½Π°Ρ‡Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ нСпонятно.

Π’ Π½Π°Ρ‡Π°Π»Π΅ Ρƒ мСня ΠΈΠ΄Π΅Ρ‚ инициализация gps, gpio ΠΈ запуск ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°.

#запуск ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°
pShedulerThread = threading.Thread(target=ShedulerThread, args=(1,))
pShedulerThread.start()

ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ достаточно прост: ΠΎΠ½ смотрит Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ Π»ΠΈ врСмя ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний ΠΈ ΠΊΠ°ΠΊΠΎΠΉ сСйчас стоит статус ошибок. Если Π΅ΡΡ‚ΡŒ Ρ„Π»Π°Π³ ошибки, Ρ‚ΠΎ ΠΌΠΈΠ³Π°Π΅ΠΌ свСтодиодом.

#sheduler
def ShedulerThread(name):
	global ready_to_send
	while True:
		d = datetime.today()
		time_x = d.strftime('%H:%M')
		if time_x in time_send_csv:
			ready_to_send = True
		if error_status:
			error_blink()
		else:
			good_blink()
		time.sleep(1)

Π‘Π°ΠΌΡ‹ΠΉ слоТный ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ β€” это ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ssh-соСдинСниС ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ тСстС. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ тСстС ΠΈΠ΄Π΅Ρ‚ Π·Π°Π½ΠΎΠ²ΠΎ настройка шлюза ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ dns-сСрвСра. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС Ρ€Π°Π²Π½ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚, Ρ‚ΠΎ Π·Π½Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΅Π·Π΄ Π½Π΅ катаСтся ΠΏΠΎ дСрСвянным Ρ€Π΅Π»ΡŒΡΠ°ΠΌ. ΠšΡ‚ΠΎ Π½Π°ΠΉΠ΄Π΅Ρ‚ пасхалку, Ρ‚ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ„Π΅Ρ‚ΠΊΠ°.

Для этого я создаю ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ —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, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ» Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Π½Π΅ΠΉ.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

Π—Π΄Π΅ΡΡŒ я использовал динамичСский ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‰ΠΈΠΉ сСрвСр. Π—Π°ΠΌΠ΅Ρ€Ρ‹ скорости Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ сильно ΠΏΠ»Π°Π²Π°ΡŽΡ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ всС ΠΆΠ΅ Π²ΠΈΠ΄Π½Π° нСкоторая срСдняя Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, ΠΈ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, произвСдя Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰ΠΈΠΌ срСдним.

ПозднСС я построил Π΅Ρ‰Π΅ ряд Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ², для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² связи. Π‘Π΅Ρ€Π²Π΅Ρ€ тСстирования Π² этом случаС ΡƒΠΆΠ΅ Π±Ρ‹Π» ΠΎΠ΄ΠΈΠ½, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ‚ΠΎΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ интСрСсныС.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

Как Π²ΠΈΠ΄Π½ΠΎ Ρ‚Π΅ΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ±ΡˆΠΈΡ€Π½Π°Ρ для исслСдований ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этих Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ явно Π½Π΅ тянСт Π½Π° ΠΏΠ°Ρ€Ρƒ нСдСль Ρ€Π°Π±ΠΎΡ‚Ρ‹. Но…

Π˜Ρ‚ΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π Π°Π±ΠΎΡ‚Π° Π±Ρ‹Π»Π° Ρ€Π΅Π·ΠΊΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° ΠΏΠΎ нСзависящим ΠΎΡ‚ мСня ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°ΠΌ. Одной ΠΈΠ· слабых сторон Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π° ΠΌΠΎΠΉ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ взгляд, Π±Ρ‹Π» ΠΌΠΎΠ΄Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ‚Π΅Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠΎΠ΄Π΅ΠΌΠ°ΠΌΠΈ, ΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π²Ρ‹Π΄Π΅Π»Ρ‹Π²Π°Π» Ρ‚Π°ΠΊΠΈΠ΅ фортСля. Для Π΄Π°Π½Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ сущСствуСт Π³Ρ€ΠΎΠΌΠ°Π΄Π½ΠΎΠ΅ количСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΎΠ΄Π΅ΠΌΠΎΠ², ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Mini PCI-e ΠΈ ставятся Π²Π½ΡƒΡ‚Ρ€ΡŒ устройства ΠΈ ΠΈΡ… сильно ΠΏΡ€ΠΎΡ‰Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Но это ΡƒΠΆΠ΅ совсСм другая история. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» интСрСсный ΠΈ Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π΄, Ρ‡Ρ‚ΠΎ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π² Π½Π΅ΠΌ ΠΏΠΎΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ speedtest Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… LTE-ΠΌΠΎΠ΄Π΅ΠΌΠ°Ρ…

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com