class GardenMessenger::CLI

Public Instance Methods

__print_version() click to toggle source
# File lib/garden_messenger/cli.rb, line 8
def __print_version
  puts GardenMessenger::VERSION
end
dev() click to toggle source
# File lib/garden_messenger/cli.rb, line 55
def dev
  reporter = GardenMessenger::Reporter.new(
    'ws://localhost:3000/cable',
    'dev-token',
    1,
    true
  )

  reporter.report! do
    {
      air_temp: rand(18.0...30.0),
      humidity: rand(50.0...60.0),
      water_temp: rand(18.0...26.0),
      ph: rand(4.0...8.0),
      ec: rand(0.8...1.6),
      wattage: rand(700.0...800.0)
    }
  end
end
report(monitor_url, token) click to toggle source
# File lib/garden_messenger/cli.rb, line 16
def report(monitor_url, token)
  reporter = GardenMessenger::Reporter.new(
    monitor_url,
    token,
    options.fetch('update-rate') { 30 },
    options.fetch('verbose') { false }
  )

  water_temperature = GardenMessenger::AtlasScientific::Temperature.new
  ph = GardenMessenger::AtlasScientific::PH.new
  ec = GardenMessenger::AtlasScientific::EC.new
  wattage = GardenMessenger::Wattage.new(options['wattage-switch-host'])

  begin
    require 'dht-sensor-ffi'
  rescue LoadError
    warn 'Failed to load dht-sensor-ffi, air temperature and humidity are disabled. ' \
         'To enable it, install dht-sensor-ffi: https://github.com/chetan/dht-sensor-ffi'
  end

  reporter.report! do
    data = {}

    data[:water_temp] = water_temperature.take_reading
    wattage_thread = Thread.new { wattage.get }
    ph_thread = Thread.new { ph.take_reading_with_temperature_compensation(data[:water_temp]) }
    ec_thread = Thread.new { ec.take_reading_with_temperature_compensation(data[:water_temp]) }
    dht_thread = Thread.new { DhtSensor.read(4, 22) } if defined?(DhtSensor)
    data[:wattage] = wattage_thread.value
    data[:ph] = ph_thread.value
    data[:ec] = ec_thread.value
    data[:air_temp] = dht_thread.value.temperature if defined?(DhtSensor)
    data[:humidity] = dht_thread.value.humidity if defined?(DhtSensor)

    data
  end
end