Forum użytkowników automatyki budynkowej

Z-wave => Fibaro - urządzenia wirtualne, pluginy => Wątek zaczęty przez: admin w Marzec 24, 2015, 08:36:28 pm

Tytuł: OpenWeatherMap zamiast stacji meteo [pogoda]
Wiadomość wysłana przez: admin w Marzec 24, 2015, 08:36:28 pm
Wirtualne urządzenie pobiera dane o pogodzie z serwisu OpenWeatherMap.org, wyświetla je w interfejsie i może wysłać nam na smartfona.
Żeby ustawić swoją miejscowość to trzeba w 2 i 3 lini wstawić swoje miasto i zmienić państwo jeśli to nie jest w pl oraz identyfikator smartfona który znajdziemy w http://IP_CENTRALI/api/devices (http://IP_CENTRALI/api/devices)
Dane można ściągać co 10 minut. Jeśli ktoś chciałby częściej, to musi się zarejestrować w serwisie. (do 3000 razy na minutę jest free)
(http://www.inteligentnydom.lic.pl/wp-content/uploads/2014/06/pogodaPUSH-168x300.jpg)
Tytuł: Odp: OpenWeatherMap zamiast stacji meteo
Wiadomość wysłana przez: andre w Marzec 25, 2015, 02:20:07 pm
Pytanie czy tylko u mnie jest problem z wyświetlaniem wartości po przecinku?Jak pobieram dane jest wszystko prawidłowo
a jak wysyła push wyświetla zera po przecinku?
Tytuł: Odp: OpenWeatherMap zamiast stacji meteo
Wiadomość wysłana przez: sztywniak w Marzec 25, 2015, 02:53:37 pm
w kodzie od przycisku PUSH musisz dodać funkcję "round" taką jak w przycisku pobierz.
Dodatkowo w liniach poniżej musisz dodać ten round żeby zaokrąglił.
Dokładnie tak jak w przycisku PUSH

function round(n)
  return math.floor((math.floor(n*2) + 1)/2)
end

selfId = fibaro:getSelfId()
miejsc="Ostrów Wielkopolski"
panstwo="pl"
local smartfon=878
HC3 = Net.FHttp("api.openweathermap.org")
danem, statusm = HC3:GET("/data/2.5/weather?q="..miejsc..","..panstwo.."&units=metric&lang=pl")
ajson=json.decode(danem)
tempmin=round(ajson.main.temp_min)
tempmax=round(ajson.main.temp_max)
cisn=round(ajson.main.pressure)
wilg=round(ajson.main.humidity)
wiatr=round(ajson.wind.speed)
zach=ajson.clouds.all
pogo=ajson.weather[1].description
fibaro:debug(pogo)
fibaro:call(selfId,"setProperty","ui.Label1.value",tempmin)
fibaro:call(selfId,"setProperty","ui.Label2.value",tempmax)
fibaro:call(selfId,"setProperty","ui.Label3.value",cisn)
fibaro:call(selfId,"setProperty","ui.Label4.value",wilg)
fibaro:call(selfId,"setProperty","ui.Label5.value",wiatr)
fibaro:call(selfId,"setProperty","ui.Label6.value",zach)
fibaro:call(selfId,"setProperty","ui.Label91.value",pogo)
wysylka="Pogoda: "..pogo..", Temp: "..tempmin
if tempmin~=tempmax then
wysylka=wysylka.."-"..tempmax
end
wysylka=wysylka..", Cisn: "..cisn..", Wilg: "..wilg..", Wiatr: "..wiatr
fibaro:call(smartfon, "sendPush", wysylka, wysylka)

Zaraz zaktualizuję wirtualkę w pierwszym poście. Dzięki andre za zwrócenie uwagi ;-)
Tytuł: Odp: OpenWeatherMap zamiast stacji meteo [pogoda]
Wiadomość wysłana przez: marcinp22 w Listopad 29, 2016, 12:17:47 am
czy przy obecnej wersji HC2 to nadal powinno działać?

niestety nie mogę tego odpalić :-(