1

Temat: Stacja pogody, fowsr, zapis czasu UTC i zamiana na CET

Fowsr zapisuje dane ze stacji w pliku xml z czasem UTC, potrzebuję zamienić czas na nasz, napisałem więc skrypt który zmienia coś takiego:
  <wsd date="2014-06-18 22:48:01"  (to jest początek linii z danymi z pliku xml)
w coś takiego:
2014-06-19 0:48:01

Skrypt dodaje 2 do godzin 0-21, a godziny 22 i 23 zamienia na 0 i 1.

#!/bin/sh

DAT=$(date '+%Y-%m-%d') # data w momencie uruchomienia skryptu
UTC=$(grep -m1 wsd /tmp/fowsr.xml | cut -c 25-26) # godzina UTC
MIN=$(grep -m1 wsd /tmp/fowsr.xml | cut -c 27-32) # minuta
CET=$(expr $UTC + 2) # wyliczona przez dodawanie godzina CET (tylko dla godzin 0-21)
GOD=$(cat /tmp/cet) # gotowa godzina CET (dla wszystkich godzin)

rm -f /tmp/cet
if [ $UTC -eq 22 ] ; then
echo '0' > /tmp/cet
elif [ $UTC -eq 23 ] ; then
echo '1' > /tmp/cet
else
echo $CET > /tmp/cet
fi

echo $DAT $GOD$MIN

Powyższy skrypt działa, ale dopiero od drugiego uruchomienia w danej godzinie, pierwsze uruchomienie po przeskoczeniu każdej godziny daje starą godzinę, pewnie dlatego że GOD=$(cat /tmp/cet) zapamiętuje się w momencie uruchomienia skryptu, czyli jeszcze przed wyliczeniem i zapisaniem nowej godziny, dlatego rm -f /tmp/cet nic nie daje. Jak to poprawić?

2 (edytowany przez wabikboy 2014-06-18 20:56:15)

Odp: Stacja pogody, fowsr, zapis czasu UTC i zamiana na CET

A nie prościej tak?

xdata="19:35"
date +"%Y-%m-%d %H:%M" -D %s -d "$(( $(date -d "$xdata" +%s) + 7200))"

Jeśli Cię dobrze zrozumiałem smile

A po za tym do zmienną $GOD deklarujesz na początku skryptu gdzie plik /tmp/cet jest jeszcze niezmieniony

powinieneś najpierw wpisać do /tmp/cet a potem dać GOD=$(cat /tmp/cet)

rm -f /tmp/cet
if [ $UTC -eq 22 ] ; then
echo '0' > /tmp/cet
elif [ $UTC -eq 23 ] ; then
echo '1' > /tmp/cet
else
echo $CET > /tmp/cet
fi
GOD=$(cat /tmp/cet) # gotowa godzina CET (dla wszystkich godzin)

echo $DAT $GOD$MIN
TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

3

Odp: Stacja pogody, fowsr, zapis czasu UTC i zamiana na CET

To już lepiej z tego date wyciągnąć  jaka jest aktualnie strefa czasowa a nie dodawać 7200...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

4 (edytowany przez wabikboy 2014-06-18 21:06:28)

Odp: Stacja pogody, fowsr, zapis czasu UTC i zamiana na CET

Tylko pytanie czy wiadomo jaka jest strefa czasowa chyba że Cię nie zrozumiałem

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

5

Odp: Stacja pogody, fowsr, zapis czasu UTC i zamiana na CET

date +z%

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6 (edytowany przez wabikboy 2014-06-18 21:44:34)

Odp: Stacja pogody, fowsr, zapis czasu UTC i zamiana na CET

Jeśli dobrze rozumiem to autorowi chodzi o dodanie dwóch godzin do czasu zapisanego przez stację pogody a nie wyciąganie strefy czasowej z aktualnej godziny.

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

7

Odp: Stacja pogody, fowsr, zapis czasu UTC i zamiana na CET

Jeszcze raz: nie 2 godzin. Przesunięcia czasowego wynikającego ze strefy czasowej. W zimie nie będzie 2 godzin tylko jedna, a nie będziesz za każdym razem sobie skryptów modyfikował. Więc twój pomysł jest mało uniwersalny, lepiej odczytać ile wynosi aktualne przesunięcie i dodać te godziny a nie zaszywać to na stałe.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8 (edytowany przez wabikboy 2014-06-18 22:25:44)

Odp: Stacja pogody, fowsr, zapis czasu UTC i zamiana na CET

Proszę bardzo wersja uniwersalna smile

xdata="19:35"
date +"%Y-%m-%d %H:%M" -D %s -d "$(( $(date -d "$xdata" +%s) + $(($(date +%z | cut -c 3) * 3600)) ))"
TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile