Langue English Język Polski

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.
    icon IPv4 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