Detekce letního času

prezek

  • ***
  • 229
    • Zobrazit profil
Detekce letního času
« kdy: 24. 03. 2017, 18:04:49 »
Zdravím, je v Linuxu nějaká možnost spustit příkaz při přechodu mezi letním a zimním časem?
K Raspberry mám připojené zařízení, které bohužel nepoužívá klasické unixtimestamp počítadlo, ale celý datum a čas a nepřechází automaticky mezi letním a zimním časem. Po změně času tedy musím měnit čas v zařízení. Zatím jsem to dělal tak, že jsem si spočítal, jak dlouhý sleep mám použít a nechal běžet tento nepřehledný příkaz:
Kód: [Vybrat]
((sleep 23400;echo "">>log.log;date >> log.log;./modbusClient setTime >> log.log)&)&Rád bych to nějak lépe zautomatizoval.
Byla by možnost při startu a každou celou hodinu kontrolovat časovou zónu a v případě změny provézt nastavení, ale nepřijde mi to moc "čisté".
 Díky, Petr


Re:Detekce letního času
« Odpověď #1 kdy: 24. 03. 2017, 19:05:02 »
V EU se přechází vždy v 1:00 UTC poslední neděli v březnu a poslední neděli v říjnu. Pokud máte cron, který umí nastavit časové pásmo, v jakém poběží, můžete použít:

Kód: [Vybrat]
CRON_TZ=UTC
0 1 * 3 0L prechod-na-selc.sh
0 1 * 10 0L prechod-na-sec.sh

Nebo pokud nevadí, že se to na podzim spustí až o hodinu později:
Kód: [Vybrat]
0 3 * 3 0L prechod-na-selc.sh
0 3 * 10 0L prechod-na-sec.sh

Nebo můžete použít systemd timer:
Kód: [Vybrat]
[Timer]
OnCalendar=Sun *-03~07/1 01:00:00 UTC
Persistent=true     
 

Kód: [Vybrat]
[Timer]
OnCalendar=Sun *-10~07/1 01:00:00 UTC
Persistent=true     
 
« Poslední změna: 24. 03. 2017, 19:10:46 od Filip Jirsák »

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Detekce letního času
« Odpověď #2 kdy: 24. 03. 2017, 19:43:15 »
Poustejte si kazdou hodinu skript, ktery precte cas a porovna s predchozim ulozenym casem a nasledne ulozi. Pokud zjisti rozdil jiny, nez zhruba hodina (tedy okolo nuly = prechod na zimni cas nebo okolo 2 hodin = prechod na letni cas), zavola potrebnou akci.

Re:Detekce letního času
« Odpověď #3 kdy: 24. 03. 2017, 20:32:39 »
Poustejte si kazdou hodinu skript, ktery precte cas a porovna s predchozim ulozenym casem a nasledne ulozi. Pokud zjisti rozdil jiny, nez zhruba hodina (tedy okolo nuly = prechod na zimni cas nebo okolo 2 hodin = prechod na letni cas), zavola potrebnou akci.

A pak nekdo bude v ocekavane dobe behu scriptu rebootovat...

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Detekce letního času
« Odpověď #4 kdy: 24. 03. 2017, 21:03:22 »
Tak jiste, zrovna v okamziku prechodu na jiny cas bude nekdo v noci rebootovat. To je ale na tazateli, aby posoudil, jestli je takova moznost pravdepodobna a nejak to osetril. Predchozi cas treba muze mit ulozen perzistentne a po rebootu pustit stejny skript, jako ten z cronu. Boot RPi je tak rychly, ze se vhodne nastavenou toleranci rozdilu casu by to jeste skouslo. Ostatne by se to asi neposralo, kdyby pri kazdem bootu jednoduse v zarizeni nastavil spravny cas a je po ptakach.

Ostatne stejne nechapu, v cem je problem. Nemuze zarizeni jet proste v GMT a pokud to potrebuji jinak, tak si to prepocitam nebo domyslim?


Jenda

Re:Detekce letního času
« Odpověď #5 kdy: 24. 03. 2017, 22:18:21 »
Ostatne stejne nechapu, v cem je problem. Nemuze zarizeni jet proste v GMT a pokud to potrebuji jinak, tak si to prepocitam nebo domyslim?
IMHO mu jde o to, že zařízení ten čas někde zobrazuje, a pro obsluhu je to opruz přepočítávat.

Re:Detekce letního času
« Odpověď #6 kdy: 24. 03. 2017, 22:53:47 »
Letni a zimní čas jsou fašistické a jako takové budou brzy eliminováni.
Kryptofasistické.
Óóóm!

#

Re:Detekce letního času
« Odpověď #7 kdy: 24. 03. 2017, 23:05:34 »
Osobne bych to resil jak uz tady zaznelo, proste v cronu podle data a jednou to bude o hodku pozde a co jako, ridi to jadernou elektrarnu? Moc nenapsals duvod proc je to tak dulezity mit to okamzite?

prezek

  • ***
  • 229
    • Zobrazit profil
Re:Detekce letního času
« Odpověď #8 kdy: 24. 03. 2017, 23:29:12 »
IMHO mu jde o to, že zařízení ten čas někde zobrazuje, a pro obsluhu je to opruz přepočítávat.
Trefa, připojené zařízení je PLC s obslužným displejem a měl by na něm běžet aktuální čas.  Bohužel na přechod letní/zimní čas nemyslel programátor PLC a tak ho musím nastavovat zvenku.


Filip Jirsák:
Díky za návrh CRON_TZ=UTC, prověřím jestli to funguje.

 

JmJ

  • ****
  • 315
    • Zobrazit profil
Re:Detekce letního času
« Odpověď #9 kdy: 24. 03. 2017, 23:39:33 »
Ja bych se vykaslal na detekci zmeny zony, ale proste bych treba kazdou hodinu tomu plc nastavil aktualni cas. Pokud to pro to plc nezmamena mejaky problem kako treba restart. Tim si zajistim vzdy presny cas a zbavim se problemu s detekci zmeny. Samozrejme je dobre cas nastavit i pri bootu pc a pokud pc vi, kdy nastartuje plc, tak i tehdy.

Myslim, ze napsat v c program, ktery bude detekovat zmenu systemoveho casu pres spravne api, bude otazka 30 radku, takze by slo jit i touto cestou.

.

Re:Detekce letního času
« Odpověď #10 kdy: 24. 03. 2017, 23:46:52 »
Poustejte si kazdou hodinu skript, ktery precte cas a porovna s predchozim ulozenym casem a nasledne ulozi. Pokud zjisti rozdil jiny, nez zhruba hodina (tedy okolo nuly = prechod na zimni cas nebo okolo 2 hodin = prechod na letni cas), zavola potrebnou akci.
Čtu dobře?
Jeden z permanentních stěžovatelů na neefektivní programy tady kvůli 2 akcím za rok navrhuje spouštět skript každou hodinu?
Nad vámi je příspěvek Filipa Jirsáka, který navrhl velice čisté řešení. Zkuste se trochu poučit... ;)

Re:Detekce letního času
« Odpověď #11 kdy: 25. 03. 2017, 01:00:31 »
Tak jiste, zrovna v okamziku prechodu na jiny cas bude nekdo v noci rebootovat.

To jsi nepochopil. Ten problem se neobjevi jen pri rebootu pri zmene casu ale pri rebootu v dobe, kdy ma bezet script. Samozrejme se to da workaroundovat, ale skoncis tim, ze u spatneho reseni budes porad  resit nejake okrajove pripady. To uz je proste problem s tim, kdyz to navrhnes od zacatku blbe.

Jirsákova tchýně

Re:Detekce letního času
« Odpověď #12 kdy: 25. 03. 2017, 01:37:16 »
Tak jiste, zrovna v okamziku prechodu na jiny cas bude nekdo v noci rebootovat.

Ten problem se neobjevi jen pri rebootu pri zmene casu ale pri rebootu v dobe, kdy ma bezet script.

Což je v daném případě jedno a totéž, ale očekávat od notorického blba Nekoly pochopení dotazu je beznadějná naivita.

Re:Detekce letního času
« Odpověď #13 kdy: 25. 03. 2017, 07:11:34 »
Tak jiste, zrovna v okamziku prechodu na jiny cas bude nekdo v noci rebootovat.

Ten problem se neobjevi jen pri rebootu pri zmene casu ale pri rebootu v dobe, kdy ma bezet script.

Což je v daném případě jedno a totéž, ale očekávat od notorického blba Nekoly pochopení dotazu je beznadějná naivita.

Script, co navrhoval Jarda, musí běžet co hodinu. Viz
Poustejte si kazdou hodinu skript, ktery precte cas a porovna s predchozim ulozenym casem a nasledne ulozi. Pokud zjisti rozdil jiny, nez zhruba hodina (tedy okolo nuly = prechod na zimni cas nebo okolo 2 hodin = prechod na letni cas), zavola potrebnou akci.

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Detekce letního času
« Odpověď #14 kdy: 25. 03. 2017, 09:37:39 »
Jeden z permanentních stěžovatelů na neefektivní programy tady kvůli 2 akcím za rok navrhuje spouštět skript každou hodinu?
Nad vámi je příspěvek Filipa Jirsáka, který navrhl velice čisté řešení. Zkuste se trochu poučit... ;)

Vzhledem k tomu, ze podeziram, ze to RPi asi nema vetsinou co delat a vzhledem k tomu, ze beh par radkoveho skriptu po dobu par okamziku ani prilis pozorovatelne nezvedne zatez CPU, tak je to uplne jedno. Nejedna se o petigigabajtovy javovy prujem.