lib/Zeta/plugins/weather.rb in zetabot-1.0.1 vs lib/Zeta/plugins/weather.rb in zetabot-1.0.2

- old
+ new

@@ -157,11 +157,11 @@ debug "DATA: #{data}" data.ac = ac current = data.current_observation alerts = data.alerts.empty? ? 'none' : data.alerts.map {|l| l['type']}.join(',') - pressure_si = Unitwise(current.pressure_mb.to_i, '[psi]').convert_to('kPa').to_i.round(2) + pressure_si = Unitwise((current.pressure_in.to_f)+14.7, '[psi]').convert_to('kPa').to_f.round(2) data.reply = "WU ∴ #{ac.name}, #{ac.c} " \ "≈ #{current.weather} #{current.temperature_string} " \ "≈ Feels like #{current.feelslike_string} " \ "≈ Humidity: #{current.relative_humidity} " \ @@ -182,25 +182,27 @@ return nil if ac.results.nil? ## Unable to locate ac = ac.results[0] lat = ac.geometry.location.lat lon = ac.geometry.location.lng + + # Get Data data = JSON.parse( open( URI.encode("https://api.openweathermap.org/data/2.5/weather?lat=#{lat}&lon=#{lon}&APPID=#{Config.secrets[:owm]}") ).read, object_class: OpenStruct ) temp = Unitwise(data.main.temp, 'K') # Data is given in kelvin - pressure = Unitwise(data.main.pressure, '[psi]') + pressure = Unitwise((data.main.pressure.to_f/10)+101, 'kPa') wind = Unitwise(data.wind.speed, 'kilometer') - data.reply = "OWM ∴ #{ac.name}, #{ac.c} " \ + data.reply = "OWM ∴ #{ac.formatted_address} " \ "≈ #{data.weather[0].description}, #{temp.convert_to('[degF]').to_i.round(2)} F (#{temp.convert_to('Cel').to_i.round(2)} C) " \ "≈ Humidity: #{data.main.humidity}% " \ - "≈ Pressure: #{pressure.to_i.round(2)} psi (#{pressure.convert_to('kPa').to_i.round(2)} kPa) " \ + "≈ Pressure: #{pressure.convert_to('[psi]').to_f.round(2)} psi (#{pressure.convert_to('kPa').to_f} kPa) " \ "≈ Wind: #{wind.convert_to('mile').to_i.round(2)} mph (#{wind.to_i.round(2)} km/h) ∴" return data end @@ -216,31 +218,31 @@ ac = ac.results[0] lat = ac.geometry.location.lat lon = ac.geometry.location.lng data = JSON.parse( - open( - URI.encode("https://api.darksky.net/forecast/#{Config.secrets[:darksky]}/#{lat},#{lon}") - ).read, - object_class: OpenStruct + open( + URI.encode("https://api.darksky.net/forecast/#{Config.secrets[:darksky]}/#{lat},#{lon}") + ).read, + object_class: OpenStruct ) data.ac = ac current = data.currently alerts = data.alerts.count rescue 0 c = Unitwise(current.temperature, '[degF]').convert_to('Cel').to_i c_feels = Unitwise(current.apparentTemperature, '[degF]').convert_to('Cel').to_i - p = Unitwise(current.pressure, '[psi]').convert_to('kPa').to_i + p = Unitwise((current.pressure.to_f/10)+101, 'kPa') gusts = Unitwise(current.windGust, 'mile').convert_to('kilometer').to_i tempstring = "#{current.temperature.to_i} F (#{c} C)" feelslike = "#{current.apparentTemperature.to_i} F (#{c_feels} C)" - data.reply = "DS ∴ #{ac.name}, #{ac.c} " \ + data.reply = "DS ∴ #{ac.formatted_address} " \ "≈ #{current.summary} #{tempstring} " \ "≈ Feels like #{feelslike} " \ "≈ Humidity: #{current.relative_humidity} " \ - "≈ Pressure: #{current.pressure} psi (#{p} kPa) " \ + "≈ Pressure: #{p.convert_to('[psi]').to_f.round(2)} psi (#{p.to_f} kPa) " \ "≈ Wind: gusts upto #{current.windGust} mph (#{gusts} km/h) ≈ Alerts: #{alerts} ∴" return data # rescue # return nil @@ -274,17 +276,16 @@ data.ac = ac f = data.temperature.value * 9/5 temp = "#{f.round(2)} F (#{data.temperature.value.to_i.round(2)} C) " wind = "Gusts: #{data.windGust.value} avg: #{data.windSpeed.value.to_i.round(2)}" feelslike = "#{data.windChill.value.to_i.round(2)} C" - pressure_in = ((data.barometricPressure.value.to_i * 0.00014503773773) * 100).round(2) - pressure = (data.barometricPressure.value.to_i / 100).round(2) + pressure = Unitwise(data.barometricPressure.value.to_f+101325, 'Pa') - data.reply = "NOAA ∴ #{ac.name} " \ + data.reply = "NOAA ∴ #{ac.formatted_address} " \ "≈ #{data.textDescription} #{temp} " \ "≈ Feels like #{feelslike} " \ "≈ Humidity: #{data.relativeHumidity.value.round(2)} " \ - "≈ Pressure: #{pressure_in} psi (#{pressure} kPa) " \ + "≈ Pressure: #{pressure.convert_to('[psi]').to_f.round(2)} psi (#{pressure.convert_to('kPa').to_f} kPa) " \ "≈ Wind: #{wind} ≈ Alerts: ∴" return data # rescue # data.reply = "Error fetching data" end