DSP2017 – co ciekawsze projekty

Ostatni dzwonek na wpis, a w związku z aurą i nawałem innych zajęć niewiele się u mnie wydarzyło[1], więc pozwolę sobie zacząć małą metatematykę, czyli pisać o projektach, które przykuły moją uwagę i które planuję śledzić. Ocena zupełnie subiektywna. Raczej ograniczam się do „żywych”, czyli mających szanse w konkursie, projektów. Trochę nawiązując do Blog Day, ograniczę się jednorazowo do pięciu sztuk. Docelowo pewnie zmienię linki na bezpośrednie do blogów lub repo na GitHubie.

http://uczestnicy.dajsiepoznac.pl/profil/adrian-dzik – Instant Dinner czyli podpowiadanie co tu ugotować z dostępnych w lodówce składników. Pomysł mi się bardzo podoba i może się przyjąć, choć korzystać raczej nie będę – nie mam cierpliwości do wklepywania wszystkiego i nie lubię gotować z przepisów. Parę ciekawych wyzwań – interfejs, baza przepisów.

http://uczestnicy.dajsiepoznac.pl/profil/pawel-filipek http://uczestnicy.dajsiepoznac.pl/profil/pawel-panek – dwa projekty związane z modnym temat badania czystości powietrza. Tu: informowania o zanieczyszczeniu w danym miejscu. Po cichu liczę, że będzie kolaboracja z projektem Smolgy o którym niedawno pisałem.

http://uczestnicy.dajsiepoznac.pl/profil/kamil-kubacki – projekt Citizen, czyli zgłaszanie do władz miasta/służb uszkodzeń itp. Po prostu zgłaszasz dziurę w jezdni (geolokalizacja, fota, opis) i jest to odpowiednio przeroutowane dalej, nie trzeba się edukować/odbijać od kolejnych instytucji. Przyznaję, że myślałem o czymś podobnym niedawno. Widzę fajne możliwości – ranking najsprawniej działających miast/organizacji w danym mieście (np. czas od zgłoszenia do usterki). Widzę też jeden problem: żeby to działało, instytucje muszą się zaangażować…
Podobna tematyka http://uczestnicy.dajsiepoznac.pl/profil/andrzej-chmielewski – niestety wygląda na martwe.

http://uczestnicy.dajsiepoznac.pl/profil/maciej-sykala – działko na gołębie oparte o Raspberry Pi. Temat niezbyt mi się podoba, ale przyznaję, że zakres robi wrażenie i… ciekaw jestem efektu. BTW dawno temu czytałem, że w Korei Południowej studenci projektowali automatyczne wieżyczki strzelnicze do pilnowania granic. Nie pamiętam, czy była analiza obrazu, czy po prostu wykrywanie ruchu…

http://uczestnicy.dajsiepoznac.pl/profil/sebastian-czarnecki – arduino sterowane po wifi. To mi się najprawdopodobniej zwyczajnie przyda w niedalekiej przyszłości.

Na wypadek gdyby powyższe nie wyczerpywało wymagań wpisu o IT, to przyszła mi do głowy nieco inna formuła konkursu programistycznego, która mogłaby trochę pomóc w rozwoju projektów. Pierwszy etap to prezentacja pomysłów, pisanie kodu i blogowanie (czyli dokładnie jak DSP), drugi etap to połączenie się ludzi w zespoły i wspólne rozwijanie projektów. Można by to zakończyć jakimś hackatonem, żeby ludzie się poznali na żywo. A może istnieje już coś takiego?

Co prawda nie widzę za bardzo kryteriów oceny w powyższym układzie, ale mogłoby to dać coś trwalszego i większego, niż małe projekciki, nauczyć pracy w zespołach, umożliwić poznanie ludzi i wymianę wiedzy np. o narzędziach. No ale ja cały ten konkurs traktuję bardziej jako pretekst, czyli droga jest ważniejsza od celu. 😉

[1] Przynajmniej niewiele zostało commitnięte, za to wkrótce pierwsze pomiary na dwóch łączach i pewne uwagi nt. internetu w Virgin Mobile.

Huawei E353/E3131 w Debianie

Kiedyś opisywałem uruchomienie Aero2 z modemem Huawei E3131. Kupiłem „taki sam” model i dziś przyszedł. Po podłączeniu do komputera spodziewałem się, że będzie tak samo, jak w poprzednim. Tak się nie stało, więc może komuś oszczędzę walki, na którą straciłem dziś dobry kwadrans, jak nie lepiej. Huawei E353/E3131 różni się od poprzednio opisywanego.

Otóż nowy modem przedstawia się w lsusb:

Bus 002 Device 016: ID 12d1:14db Huawei Technologies Co., Ltd. E353/E3131

Natomiast po wpięciu Huawei E353/E3131 do portu USB w dmesg widać:

[11264.677637] usb 2-1.2: new high-speed USB device number 15 using ehci-pci
[11264.787001] usb 2-1.2: New USB device found, idVendor=12d1, idProduct=1f01
[11264.787005] usb 2-1.2: New USB device strings: Mfr=2, Product=1, SerialNumber=0
[11264.787007] usb 2-1.2: Product: HUAWEI HiLink
[11264.787009] usb 2-1.2: Manufacturer: HUAWEI
[11264.788426] usb-storage 2-1.2:1.0: USB Mass Storage device detected
[11264.788583] scsi host6: usb-storage 2-1.2:1.0
[11265.736276] usb 2-1.2: USB disconnect, device number 15
[11268.517690] usb 2-1.2: new high-speed USB device number 16 using ehci-pci
[11268.627263] usb 2-1.2: New USB device found, idVendor=12d1, idProduct=14db
[11268.627267] usb 2-1.2: New USB device strings: Mfr=2, Product=1, SerialNumber=0
[11268.627269] usb 2-1.2: Product: HUAWEI HiLink
[11268.627271] usb 2-1.2: Manufacturer: HUAWEI
[11268.630336] cdc_ether 2-1.2:1.0 eth0: register 'cdc_ether' at usb-0000:00:1d.0-1.2, CDC Ethernet Device, 58:2c:80:XX:XX:XX
[11268.707401] cdc_ether 2-1.2:1.0 enx582c80xxxxxx: renamed from eth0

Co prawda świtało mi coś o hilink i zauważyłem kartę sieciową w systemie. Jednak stwierdziłem, że to tylko jeden z trybów i można używać „po staremu” z /dev/ttyUSB0 i wvdial, który to sposób mam obcykany. Zmyliło mnie też to, że nie mogłem wejść na wskazywany przy opisach wersji hilink adres 192.168.1.1.

Robiłem różne cuda, o których pisać nie będę. Na szczęście zapytałem na IRCu i dobrzy ludzie naprowadzili me zawiłe rozumowania na proste tory.

No więc ostatecznie „po staremu” mi się nie udało, natomiast żeby uzyskać adres IP wystarczy wydać polecenie:

dhclient enx582c80xxxxxx

I wtedy po wpisaniu w przeglądarkę 192.168.1.1 mamy dostęp do klikalnego interfejsu zarządzania modemem i wszystko działa od kopa.

Niestety, opisy są chyba obliczone albo na ludzi, którzy robią wszystko z ręki, albo na tych, którzy mają wszystko automatycznie. Pobieranie IP z DHCP też.

Autossh

Jak zapowiedziałem w notce o porządkach, przepiąłem się z łącza ADSL na komórkę. Decyzję przyspieszyła wydatnie awaria ADSL, polegająca na tym, że transfery liczone są w pojedynczych kB, a mimo obiecującego początkowego kontaktu, awaria nadal trwa… Przy czym po tym jak odesłałem parametry łącza, które chcieli, to przestali się odzywać. Mimo dwóch kontaktów mailowych z mojej strony.

Nie obyło się bez zawirowań i ledwo działający dostęp ADSL ratował mi tyłek, ale może o tym w innej notce. W tej chwili sytuacja wygląda tak, że cały ruch leci przez modem GSM wpięty do routera na Banana Pi. Jeśli chodzi o dostawcę łącza, to poszedłem na łatwiznę i jest to Aero2. W zeszłym miesiącu zużyłem (tj. bardziej rodzice) niecałe 2GB z 3GB pakietu. Czyli przewidywany koszt łącza to 5-10 zł/m-c. Wyższe pingi nie są problemem, zresztą różnica w stosunku do BSA jest niewielka. Prędkość to jakieś 3/1 Mbps[1], więc też lepiej, niż było.

Problemem okazał się dostęp do routera, który chciałbym zachować. Znalazłem autossh, o którym wspominałem w komentarzach do notki o porządkach, ale uruchomienie zajęło znacznie więcej czasu, mimo prostych instrukcji. Oczywiście wszystko przez moje niezrozumienie tematu, albo raczej wcześniejsze wyobrażenia. Liczyłem, że po zestawieniu tunelu, łącząc się do zdalnego hosta na określonym porcie, zostanę automagicznie przekierowany do hosta za NAT, z którego jest zestawiony tunel.

Tak jednak nie jest. Autossh słucha na zdalnym hoście wyłącznie na adresie lokalnym (127.0.0.1) i zdebugowanie tego zajęło mi dłuższą chwilę. Może oszczędzę tym wpisem komuś szukania. Korzystając z instrukcji dostępnych w sieci faktycznie połączymy się do hosta za NAT, ale tylko z maszyny do której jest zestawiony tunel. Można wystawić ten dostęp na świat, ale wymaga to dodatkowego przekierowania portu, czy to przy pomocy iptables, czy programu redir.

Ostatecznie wypracowałem następujący schemat. Połączenie zestawione z hosta za NAT przy pomocy autossh (uruchamiane przy starcie systemu, logowanie po kluczach bez hasła):

autossh -f -M 5122 -N -R 8888:127.0.0.1:22 user@host

Jeśli chcę się dostać do routera (hosta za NAT) to na hoście docelowym uruchamiam przekierowanie portów:

redir --lport=8888 --laddr=IP_PUBLICZNE --cport=8888 --caddr=127.0.0.1

W tym momencie łącząc się na port 8888 maszyny z publicznym IP, de facto łączę się do routera za NAT:

ssh -p 8888 user_za_nat@host

Oczywiście analogicznie mogę także zestawiać tunele SSH itp., które umożliwią mi wyjście w świat przez modem GSM.

Czemu redir, a nie iptables? Nie potrzebuję dostępu do tej maszyny cały czas. Wolę więc uruchomić na chwilę przekierowanie, niż wystawiać router na świat, chociaż po docelowym zabezpieczeniu pewnie się to zmieni.

[1] Tzn. 3/1Mbps wykazał speedtest, ale może być lepiej, zwł. download . Później zauważyłem, że konfigurując router ustawiłem limitowanie pasma na 3 Mbps dla pojedynczej końcówki za NAT.