Udostępnianie internetu z telefonu

Niedawno usłyszałem pytanie o setup dla abcc, które zawierało ciekawy element – jedno z dostępnych połączeń było przez USB[1]. Zaintrygowało mnie to, bo tak się złożyło, że zupełnie nie znałem tematu. Zawsze udostępniałem internet z Androida wykorzystując WiFi i tworząc access point. Nie byłem pewien jak takie połączenie w ogóle jest widoczne pod Linuksem.

Poczytałem, sprawdziłem i sprawa jest prosta. Aby udostępnić internet z telefonu z Androidem należy najpierw podłączyć kabel USB. Dopiero wtedy aktywna staje się opcja USB tethering. Po jej aktywacji na telefonie, w systemie powinno pojawić się urządzenie usb0. Traktujemy jak zwykłą przewodową kartę sieciową.

Takie proste, a nigdy nie korzystałem. Czy warto udostępniać połączenie z Androida po USB, zamiast po WiFi? Jedna zaleta jest oczywista – podczas udostępniania połączenia telefon zużywa więcej prądu. Podłączenie kablem do komputera zapewnia od razu ładowanie. Z kolei oczywista wada to mniejsza swoboda ruchów – kabel jest zawsze jakimś ograniczeniem.

Pora sprawdzić wydajność. Szybki zgrubny test, po prostu fast.com, w dodatku pojedynczy pomiar dla każdej konfiguracji.

Operator nr 1
42 Mbps download 10 Mbps upload, latency 32 ms unloaded, 462 ms loaded na WiFi 2,4 GHz
42 Mbps download 15 Mbps upload latency 30 ms unloaded, 420 ms loaded na USB

Operator nr 2 (IPv6)
78 Mbps download 11 Mbps upload, latency 30 ms unloaded 321 ms loaded na WiFi 5 GHz
71 Mbps download 14 Mbps upload, latency 28 ms unloaded 446 ms loaded na USB

Wielkich różnic jak widać nie ma. Wariancie optymistycznym, czyli nieobciążonym łączu na kablu zyskamy nieco na opóźnieniach sieciowych. Lepsze powinien też być upload. Czyli domyślnie warto podłączyć kabel USB. Nie są to jednak wielkie różnice, więc jeśli nie gramy w gry online albo nie zależy nam na prędkości uploadu, wygląda, że może decydować wygoda.

UPDATE I jeszcze dla porównania wyniki z mojej kablówki, nominalnie 60/10:
62 Mbps download 7 Mbps upload, latency 6 ms unloaded 50 ms loaded na WiFi 5 GHz

Oczywiście inny serwer, pomiar dzień później itd. Ale i tak widać, jak bardzo LTE dogoniło, albo wręcz przegoniło kablówkę opartą o miedź. Światłowód zapowiadany był dwa lata temu, ale nadal nic nie wskazuje, by miał się pojawić.

[1] Sprawa w toku, może zasłuży na osobny wpis jak skończę.

Wirtualna promocja w x-kom.pl

Wirtualny
2. stworzony w ludzkim umyśle, ale teoretycznie możliwy (źródło: sjp.pl)

Zdarzyło mi się kupić w x-kom.pl telefon Samsung objęty promocją. Nie dla mnie, ale to nieistotne. W każdym razie wyszło, że ma wszystkie potrzebne funkcje, cenowo był OK, został kupiony. Już po zakupie mignęło mi, że x-kom.pl ma promocję przy zakupie telefonów Samsung. Konkretnie oddają część pieniędzy od 50 do nawet 500 zł, w zależności od modelu. Nie miało to żadnego znaczenia dla decyzji o zakupie, promocję zauważyłem już po nim. No ale jak dają, to można wziąć, szczególnie, że udział sprowadzał się do kilku kliknięć. O ile kupiony model spełnia warunki, w co wątpiłem, bo raczej dolna półka.

O dziwo, wybrany model spełniał warunki promocji. Na najniższą kwotę, ale zawsze. Zarejestrowałem więc zakup, podałem na stronie dane, gdzie ma trafić przelew i czekałem. Po pewnym czasie dostałem. Nie pieniądze, a maila:

uprzejmie informujemy, iż zgodnie z regulaminem w przypadku zakupów dokonywanych w salonie, z wykorzystaniem płatności gotówkowej, lub za pomocą karty bankowej, koniecznie jest poproszenie sprzedawcy o wystawienie faktury VAT, abyśmy mogli przesłać fakturę korygującą.  W tym przypadku, aby otrzymać zwrot konieczne jest udanie się do salonu z oryginałem paragonu w celu wystawienia faktury VAT, jeśli na paragonie nie znajduję się numer NIP.

To faktycznie o mnie, bo zamówiłem z odbiorem w salonie i płaciłem kartą. Oczywiście nie brałem faktury VAT, bo kupuję jako osoba fizyczna. Znaczy x-kom piesze, że z promocji nici. Chyba, że pójdę jeszcze raz do salonu (pandemia! ograniczanie kontaktów!) specjalnie po tę fakturę. To, że zakup był z zalogowanego konta nie ma znaczenia. Ani nie umożliwia na pobrania faktury VAT. Można pobrać jedynie fakturę pro forma.

No dobra, czemu w ogóle odbierałem towar i płaciłem w salonie? Normalnie zapłaciłbym od razu i zamówił do paczkomatu. Powody były dwa. Po pierwsze, i tak planowałem być w centrum handlowym, gdzie jest salon. Drugi powód jest ciekawszy, bowiem żeby zapłacić online przelewem w x-kom.pl trzeba… dopłacić. Poważnie. Bez dopłaty zakup online można zrobić kartą płatniczą albo osobnym, manualnym przelewem z banku. Luksus szybkiego przelewu jest dodatkowo płatny. Tak, to nie jest stara notka zabłąkana w RSS, mamy rok 2021. Nadal istnieją sklepy, które chcą dodatkowych pieniędzy za przywilej przekazania im pieniędzy przy pomocy płatności online.

Sprawdziłem regulamin, faktycznie tak jak było napisane w mailu jest wymóg pobrania faktury VAT w niektórych okolicznościach, tak jak napisano w mailu. Ponieważ promocja wymagała wystąpienia o zwrot w określonym czasie, pozwoliłem sobie zapytać się, od którego momentu liczony jest czas. Czy od złożenia zamówienia online, czy odbioru w salonie. Chodziło o tę drugą datę, więc nie zrobiło się zupełnie śmiesznie. Miałem bowiem szansę popędzić do salonu po fakturę VAT i zgłosić się do promocji w terminie.

Nie zrobiłem tego. Co innego wpaść tam przy okazji, a co innego specjalnie jechać, szczególnie podczas pandemii. Last but not least: salon w którym odbierałem sprzęt był w innym mieście, w którym akurat w tym czasie byłem.

Czyli z mojego punktu widzenia promocja Samsunga w x-kom.pl była wirtualna. I jak nie mam pretensji, bo wszystko było zapisane w regulaminie i nie wpływała ona na decyzję o zakupie, tak niesmak pozostał. Mam wrażenie, że PRowo lepiej by było, gdyby tej promocji nie było w ogóle. Przynajmniej w moim przypadku. Za to nauczyłem się, że w x-kom zawsze należy brać fakturę VAT.

Linux i powiadomienia via Telegram – HOWTO

Czemu zdecydowałem się na wysyłanie powiadomień via Telegram? Kiedyś wysyłałem SMSy z powiadomieniami, nawet zrobiłem skrypt do wygodnej wysyłki SMSów z CLI. Czasy trochę się zmieniły, telefony zostały zastąpione smartfonami. Po co płacić za SMSy, kiedy można wysłać powiadomienie inaczej, w dodatku za darmo? Wybrałem powiadomienia wysyłane przez Telegram.

logo Telegram
Źródło: https://www.freepnglogos.com/images/telegram-logo-944.html

Oczywiście istnieją inne metody. Zawsze można było wysyłać maile, które są co prawda darmowe, ale z założenia miewają opóźnienia. No i niekoniecznie chcemy dostawać powiadomienie na telefonie o każdym mailu. Gdy rozpoznawałem temat obiecująco wyglądały natywne powiadomienia push na telefon, ale ich uruchomienie nie jest proste. I nie do końca są darmowe, jak widać.

Znajomi zachwalali Telegram i jego możliwości, jeśli chodzi o tworzenie botów. Nawet kiedyś podchodziłem do uruchomienia bota Telegram, ale wydało mi się to wtedy skomplikowane. I samo stworzenie bota, i sama interakcja. Czyli wysłanie komendy, by coś wykonał i odesłał wynik. Dodatkowo nie ma czegoś takiego jak prywatny bot, a uwierzytelnianie czy też sprawdzanie nadawcy trzeba robić samodzielnie. Przynajmniej tak wyczytałem w necie. Może jestem przewrażliwiony, ale za bardzo to wszystko pachniało mi RCE. No i w końcu stawianie bota, gdy zależy tylko na prostych powiadomieniach, to overkill.

Wczoraj odświeżyłem temat i… okazało się, że wysłanie powiadomienia przez Telegram jest proste. I w sumie nie potrzeba żadnych bibliotek, by wysłać powiadomienie – wystarczy tak naprawdę curl.

Przygotowanie wysyłki powiadomień przez Telegram

Aby wysyłać wiadomości, potrzebne są nam dwie rzeczy: TOKEN oraz CHATID.

  1. Korzystając z bota BotFather w Telegramie stwórz swojego bota[1] (/newbot)
  2. Zapisz otrzymany TOKEN (np. 1234567890:AABBccddeeff-ABCDEFGHIJabcdefghi12)
  3. Znajdź swojego bota, wpis /start
  4. Przejdź na https://api.telegram.org/bot<yourtoken>/getUpdates
    W naszym przypadku na https://api.telegram.org/bot1234567890:AABBccddeeff-ABCDEFGHIJabcdefghi12/getUpdates
  5. Znajdź ciąg „id” dla „from” (np. „id”:723456789). Wartość jest szukanym CHATID.

Wysyłka powiadomień przez Telegram

Najprostszym wariantem wysłania powiadomienia jest wywołanie curl w postaci

curl "https://api.telegram.org/botTOKEN/sendMessage?chat_id=CHATID&parse_mode=Markdown&text=WIADOMOŚĆ"

Czyli na przykład, dla powyższych danych uzyskanych podczas konfiguracji

curl "https://api.telegram.org/bot1234567890:AABBccddeeff-ABCDEFGHIJabcdefghi12/sendMessage?chat_id=723456789&parse_mode=Markdown&text=to jest test śćżń ĄŁĘĆ https://zakr.es/"

Po wydaniu tego polecenia powinniśmy otrzymać na w kliencie Telegram telefonie wiadomość. Dodatkowo z klikalnym linkiem.

Nieco bardziej eleganckie, użyteczne i tylko odrobinę bardziej skomplikowane jest wysyłanie przy pomocy Pythona i biblioteki requests. Zostało ono opisane opisane we wpisie How to create a telegram bot and send messages with Python, który był bezpośrednią inspiracją tego wpisu. Znajdziecie tam również dokładną, ilustrowaną instrukcję konfiguracji bota. A o samych botach Telegram może będzie innym razem.

[1] Owszem, miało być bez bota. Ale się nie da – bot musi być. Nie musi obsługiwać żadnych komend ani wdawać się w interakcje, ale ten twór jest tak naprawdę telegramowym botem.