Wysyłanie danych do www.wunderground.com, www.pwsweather.com
W przypadku tego serwisu dane są wysyłane przez naszą stację w bardzo
prostej formie. Trzeba wysłać odpowiednie żądanie pobrania
strony www a nasze dane przesyłane są w odpowiednio spreparowanym adresie
strony.
Aby móc wysyłać swoje pomiary na strony tego serwisu należy:
zarejestrować się na nim
utworzyć nową stację pogody podając wymagane dane
zainstalować pakiet elinks (opkg install elinks)
dopisać do skryptu odczytującego pomiary poniższy fragment
Poniżej zamieszczam fragment skryptu w bash który po drobnym
przystosowaniu do własnej stacji pozwoli wysyłać wybrane dane.
#----------------------------------------------------------------
# przygotowujemy dane do wyslania (sprawdzamy czy są!)
# zamiast $outdoor_temp należy wstawić własną zmienną w której jest zapis temperatury zewnętrznej
if [ "$outdoor_temp" ] ;then
# zamieniamy stopnie C na F, zaokrąglamy wynik i podstawiamy zmienną
w_ot=`echo "scale=3 ;($outdoor_temp * 1.8) + 32" |bc |awk '{printf "tempf=%.1f&\n", $1}'`
fi
# zamiast $DewP należy wstawić własną zmienną w której jest zapis punktu rosy
if [ "$DewP" ] ;then
# zamieniamy stopnie C na F, zaokrąglamy wynik i podstawiamy zmienną
w_dp=`echo "scale=3 ;($DewP * 1.8) + 32" |bc |awk '{printf "dewptf=%.1f&\n",$1}'`
fi
# zamiast $outdoor_hum wstawić własną zmienną w której jest zapis wilgotności
if [ "$outdoor_hum" ] ;then
# zaokrąglamy wynik i podstawiamy zmienną
w_hu=`echo "$outdoor_hum" |awk '{printf "humidity=%.1f&\n", $1}'`
fi
# zamiast pres_abs wstawić własną zmienną w której jest zapis ciśnienia
# absolutnego (względnego)
if [ "$pres_abs" ] ;then
# przeliczamy hPa na inchHg (inchHg=hPa/33.863), zaokrąglamy i podstawiamy
p_in=`echo "scale=3 ;$pres_abs / 33.863" |bc |awk '{printf "baromin=%.1f&\n",$1}'`
fi
# w poszczególnych zmiennych mamy dane w postaci
# np. dla $p_in jest to: baromin=30.1&
# skladamy teraz całość danych i zjadamy ostatnie &
wun_send=`echo "$w_ot$w_dp$w_hu$p_in" |sed 's/&$//'`
# wysyłamy tylko jeśli mamy cokolwiek do wysłania :)
if [ "$wun_send" ] ;then
# ID stacji
stid="IWIELKOP00"
# haslo
pass="tutaj_nasze_haslo"
# odremuj (usuń znak #) przed jednym z poniższych adresów
#url="http://weatherstation.wunderground.com/weatherstation/updateweatherstation.php"
#url="http://www.pwsweather.com/pwsupdate/pwsupdate.php"
# format YYYY-MM-DD HH:MM:SS
# spacje kodujemy znakiem +, : kodujemy %3A
dat=`date -u '+%Y-%m-%d+%H%%3A%M%%3A%S'`
# składamy sobie dane do autentykacji i datę
auth="ID=$stid&PASSWORD=$pass&dateutc=$dat"
# wysyłamy dane. Wynik operacji (aby można podglądnąć efekt jej
# wykonania) zapisujemy w pliku /tmp/rrd/debug_send.txt
# plik ten jest nadpisywany po każdym wywołaniu - jeśli wszystko poszło
# dobrze będzie w nim napis:
# dla www.wunderground.com: "success"
# dla www.pwsweather.com: "Data Logged and posted in METAR mirror."
elinks -dump "$url?$auth&$wun_send&action=updateraw" >/tmp/rrd/debug_send.txt 2>&1 &
fi
#
Pełen
opis protokołu wraz z wypisanymi danymi, które można wysyłać.
Domowa stacja meteo.
Automatyka domowa
www.tomkii.net/tech/pomiary/ - co, jak
i czym mierzyć.
Moje forum o stacjach pogodowych forum.tomkii.net/forum-5.html
Kontakt e-mail:
Napisz@Tomkii.net
Ostatnia modyfikacja: 2011-06-15