Dokładność zegarków kwarcowych

Jakiś czas temu w komentarzach pod wpisem u Boniego zeszło na dokładność zegarków kwarcowych. Było o tym, że są znacznie dokładniejsze od mechanicznych. Poszperałem w sieci na temat dokładności chodu zegarków, zarówno mechanicznych, jak i kwarcowych i znalazłem informacje[1], że chronometry (certyfikowane) mechaniczne, to dokładność -4/+6 sekund dziennie, natomiast kwarc (dowolny) to -15/+20 sekund miesięcznie.

Spostrzeżenie organoleptyczne było takie, że zarówno budzik Casio, zegarek naręczny MQ-24 reguluję dwa razy do roku – przy zmianie czasu. I żadnych niedokładności nie widzę, więc musi być jeszcze dokładniej w praktyce. Co prawda na sekundnik nie patrzę w żadnym z przypadków, ale różnicę rzędu minut czy też minuty mógłbym zauważyć.

Postanowiłem zrobić amatorski test dokładności mojego Casio naręcznego. Zsynchronizowałem czas na komputerze przy pomocy NTP[2], zatrzymałem zegarek z sekundnikiem rozpoczynającym minutę. W momencie zmiany minuty włączyłem zegarek naręczny. Czyli powiedzmy dokładność do jednej sekundy. Dla pewności zapisałem datę: 21 czerwca.

W trakcie testu zegarek był użytkowany – między innymi zaliczył wyjazd na wakacje. Czyli i trochę leżenia, i trochę noszenia, i trochę podgrzania na słońcu. Niemniej zegarkom kwarcowym takie rzeczy niespecjalnie powinny robić różnicę.

Przedwczoraj, czyli 24 lipca, nadszedł czas na podsumowanie testu. Ponownie sprawdziłem synchronizację czasu na komputerze i sprawdziłem różnicę czasu. Wyniosła +5 sekund w ciągu 35 dni, czyli równo 1 sekunda tygodniowo. Poniżej minuty rocznie. Nic dziwnego, że mogłem nie zauważyć różnic pomiędzy regulacjami czasu.

Podsumowując: zegarki kwarcowe są znacznie dokładniejsze od mechanicznych. Dokładność chodu zegarków przedstawia się następująco:
Zegarki mechaniczne (chronometry): -4/+6 sekund dziennie.
Zegarki kwarcowe: -15/+20 sekund miesięcznie.

[1] W wielu miejscach, generalnie zbieżne, niekiedy różniące się pojedynczymi sekundami. Nie zanotowałem niestety linków.

[2] Znaczy po prostu sprawdziłem, czy lokalny pokrywa się z czasem podawanym przez serwery NTP. Zsynchronizowany jest cały czas – to chyba już domyślne na większości systemów, z komórkami włącznie.

UPDATE 28.09.2017 sprawdziłem ponownie. +15 sekund różnicy w 99 dni. Daje sekundę w 6,6 dnia, czyli odchylenie bez zmian.

Ilość rowerów Nextbike na stacjach – reaktywacja

Dawno temu pisałem o monitoringu rowerów Nextbike na stacjach. Moja strona podająca aktualną ilość rowerów miejskich na stacjach Nextbike działała do kwietnia tego roku, po czym przestała odświeżać dane. Jest to o tyle niefajne dla mnie, że appka androidowa Nextbike i jej wyszukiwanie rowerów to jakaś kpina i zdecydowanie łatwiej i szybciej znajdowałem potrzebne dane u siebie. Albo po prostu I don’t like the bugs but the bugs like me, czyli znowu mam pecha i u mnie nie działa. W ogóle o appkach na Androida, zwłaszcza polskich wypadałoby już popełnić osobny wpis…

Poczyniłem szybki debug i okazało się, że Nextbike zapytany o konkretne miasto zwraca od niedawna błędny XML, zawierający zawsze także dane dla Indii. Zgłosiłem błąd mailem, co wiązało się z zabawną sytuacją, bo po pierwsze zostałem przez centralę wzięty za pracownika (chyba raczej stażystę) firmy Nextbike i odesłany do innego pracownika, który może założyć ticket w systemie. Padło też pytanie, a skądże to ja mam namiar na ten URL (przypominam, mający official w nazwie). No cóż, URL lata w wielu miejscach w sieci…

W każdym razie błąd został zgłoszony, a dane się nie pokazywały. Próbowałem na szybko zreanimować skrypt w Perlu, ale albo zmian było więcej, albo nie do końca umiem korzystać z tej biblioteki. W każdym razie poległem, a na dłuższe grzebanie w Perlu nie miałem ochoty. Przy okazji niegdyś poukładany kod wydał mi się już nie taki fajny i w sumie można by go przepisać…

Wczoraj zrobiłem przymiarkę do napisania tego w Pythonie. Okazało się, że bez problemu jestem w stanie parsować XML. Przy okazji zrezygnowałem z pobierania danych dla każdego miasta oddzielnie – miast jest na tyle dużo, że szybciej jest pobrać plik XML raz. Skoro zapowiadało się tak fajnie, to od razu postanowiłem przerzucić konfigurację z hasha w programie do pliku YAML. A skoro szło tak fajnie, to zmieniłem „template”, zaszyty w printach w skrypcie, na Jinja2, przy okazji mając pierwszy praktyczny kontakt z tym rozwiązaniem, bo wcześniej „korzystałem” z niego tylko w template’ach dla bloga opartego o Pelican. Bardzo fajne, rozbudowane bardziej, niż przypuszczałem i jednak rządzące się swoimi prawami. W każdym razie mniej oczywiste niż mi się wydawało do tej pory.

Skoro szło tak dobrze, to dorzuciłem pięć kolejnych miast (Pszczyna, Zgierz, Kędzierzyn-Koźle, Kołobrzeg i Tychy), bo tyle pojawiło się od kwietnia. Oczywiście już nie do skryptu, tylko do prostego w utrzymaniu pliku z konfiguracją. 🙂 Całość zapakowana w virtualenv oczywiście, dla przenośności.

Ze skryptu nie jestem w 100% zadowolony – pewnie można go jeszcze uprościć, ale… może kiedy indziej, tym bardziej, że mógłbym jeszcze uzupełnić dane o geolokalizacji i pewnie gdzieniegdzie zostało błędne kodowanie znaków. Póki co, strona z ilością rowerów znowu działa. Ciekawostka – wszystkie pliki (skrypt, konfig, dane o wymaganych modułach) mają tyle samo linii co oryginalny Perl (TBH żadne nie było specjalnie sprzątane czy optymalizowane pod kątem wielkości), a jest o niebo czytelniej i prościej.

Internet bez kabla

Raspberry Pi radzi sobie w połączeniu z modemem Huawei 3131 (stara wersja) zaskakująco dobrze jako router do Aero2 (wariant płatny). Przesiadka z Banana Pi nie była całkiem bezproblemowa. Internet w domu co prawda działał, ale straciłem zdalny dostęp przy pomocy autossh. Diagnostyka była prosta. Okazało się, że nie wystarczy skopiować skrypty i crony, warto jeszcze sprawdzić, czy autossh jest w ogóle zainstalowane…

Prawdopodobnie przez brak nawiązanego połączenia SSH zmienia się IP i przesyłanych (a w zasadzie zliczanych) jest więcej danych podczas okresowego (co 5 minut) wywoływania wget w ramach namiastki dyndns. Znaczy zamiast jednego pakietu 3GB po 5 zł sztuka miesięcznie schodzą dwa. Można kupić więcej od razu, więc żaden problem. Zresztą i tak raczej się zdziwiłem, że na początku mieścili się w jednym.

Internet z GSM działa przyzwoicie. Nie zauważyłem ani specjalnych lagów, ani spowolnienia. Co prawda może to być kwestia porównywania ze starym pakietem, ale póki co skłaniam się ku teorii, że jestem w stanie przesiąść się w domu całkowicie na internet bezprzewodowy, po GSM. Przynajmniej technologicznie, bo ceny wyższych pakietów jeszcze nie zachwycają. Poza tym, LTE działa podobno jeszcze lepiej…

Pozostało dołożenie drugiego modemu z internetem od innego operatora, uruchomienie abcc do wybierania aktualnie lepszego (i działającego) łącza i… tyle. No, muszę przerobić jeszcze wywoływanie autossh, bo zrobiłem proste @reboot w cronie. Słabo się to sprawdza w przypadku zerwania sesji – raz się jednak pakiet Aero2 skończył i trzeba było doładować, a jak się nie zrobi tego od razu, to się zapomina.

Oczywiście można kombinować jeszcze z wyniesieniem modemów GSM w lepsze miejsce, podpięciem anten itp. ale… po co komplikować, skoro działa? Z drugiej strony byłby pretekst do zabawy z antenami i potestowania wpływu siły sygnału GSM na prędkość działania internetu. Tak czy inaczej internet bez kabla działa.