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