Raspberry Pi (visi modeliai) neturi RTC laikrodžio, t.y. perkrovus, išjungus-įjungus laikrodis nusimuš. Problemą galima spręsti su papildomu RTC priedu jungiamu prie GPIO, bet jei kompiuteris, kaip pas mane, visada pajungtas prie interneto šią bėdą labai greitai ir lengvai galima išspręsti.
Viskas galioja ir bet kokiam kitam nešiojamam/staliniam kompiuteriui su Archlinux distribucija.
Pirmiausia įjungiam sinchronizaciją su NTP serveriu:
sudo timedatectl set-ntp true
Nustatome teisinga laiko juostą. Lietuvos atveju:
sudo timedatectl set-timezone Europe/Vilnius
Jei vis dėlto gyvenat (naudojat) ne lietuvišką laiko juostą, juostų sąrašą galima išsikviesti:
sudo timedatectl list-timezones
Taigi po šių veiksmų jau turime tvarkinga laikrodį, kuris po persikrovimo susisinchronizuos ir “avietė” gyvens tuo pačiu laiku kaip ir jūs.
[dinux@alarmpi ~]$ sudo timedatectl status Local time: Pn 2015-12-11 20:20:11 EET Universal time: Pn 2015-12-11 18:20:11 UTC RTC time: n/a Time zone: Europe/Vilnius (EET, +0200) Network time on: yes NTP synchronized: yes RTC in local TZ: no
Viskas atrodo smagiai veikia, bet žiūrint temperatūros namuose grafiką (Apie tai rašiau čia: Protingas namas. 1 Dalis. Temperatūra. tik naujiena tokia, kad dabar viskas saugoma mariaDB (mySQL) bazėje) visos temperatūros vėluoja dviem valandomis. Laikas bazėje atsiranda rašant į lauką CURRENT_TIMESTAMP pagalba.
MariaDB (mySQL) serverio laiko juosta galima pamatyti SQL komanda:
SELECT @@global.time_zone;
Mano atveju rezultatas buvo SYSTEM. Iš aukščiau esančio statuso matosi, kad kompiuterio laikas šiai dienai (žiemos laikas) atsilieka dviem valandomis (UTC laiko juosta).
DB serverio laiką galima nustatyti SQL komanda:
SET GLOBAL time_zone = 'Europe/Vilnius';
Bet štai staigmena:
Unknown or incorrect time zone
Pasirodo mysql bazėje nėra įkeltų laiko juostų duomenų. Windows OS vartotojai turėtu iš serverio puslapyje pasiieškoti SQL bylos laiko juostom susiimportuoti, bet pastaroji netinka Linux, BSD ir panašioms operacinėms. Linux operacinėje visas laiko juostas iš sistemos į DB reikia kopijuoti mysql_tzinfo_to_sql programos pagalba.
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -p mysql
Jūsų bus paprašytas DB serverio administratoriaus slaptažodis. Po visko dar kartą bandom nustatyti laiko juostą:
SET GLOBAL time_zone = 'Europe/Vilnius';
Komanda suveikė sėkmingai. Dabar visi laikai stojo į savo vietas. Jau visi padaryti bazės įrašai pasislinko dvejomis valandomis į priekį ir prisivijo dabartinį laiką.