require 'net/http'
require 'xmlsimple'
# Get a WOEID (Where On Earth ID)
# for your location from here:
# http://woeid.rosselliot.co.nz/
woe_id_array = [12770217,12770218,12770219]
# Temerature format:
# 'c' for Celcius
# 'f' for Fahrenheit
format = 'f'
SCHEDULER.every '15m', :first_in => 0 do |job|
http = Net::HTTP.new('weather.yahooapis.com')
woe_id_array.each do |woe_id|
response = http.request(Net::HTTP::Get.new("/forecastrss?w=#{woe_id}&u=#{format}"))
weather_data = XmlSimple.xml_in(response.body, {
'ForceArray' => false })['channel']['item']['condition']
weather_city = XmlSimple.xml_in(response.body, {
'ForceArray' => false })['channel']['location']
send_event('weather', {
:temp => "#{weather_data['temp']}°#{format.upcase}",
:condition => weather_data['text'],
:title => weather_city['city'] })
end
end