Sha256: 76061acf9d97cd7b6710dfa70209e9a037b62774aee0d8856474b238efee2701

Contents?: true

Size: 1.46 KB

Versions: 1

Compression:

Stored size: 1.46 KB

Contents

module NestConnect
  module Device
    class Structure < BaseDevice
      def self.api_class
        NestConnect::API::Devices::Structure
      end

      attr_reader(
        :co_alarm_state,
        :country_code,
        :eta_begin,
        :peak_period_end_time,
        :peak_period_start_time,
        :postal_code,
        :rhr_enrollment,
        :smoke_alarm_state,
        :structure_id,
        :time_zone,
        :wheres,
        :wwn_security_state
      )

      def thermostats
        @thermostats.to_a.map do |device_id|
          Device::Thermostat.new(device_id: device_id)
        end
      end

      def protects
        @smoke_alarm_state.to_a.map do |device_id|
          Device::Protect.new(device_id: device_id)
        end
      end

      def cameras
        @cameras.to_a.map do |device_id|
          Device::Camera.new(device_id: device_id)
        end
      end

      AWAY_VALUES = ['home', 'away']

      attr_reader :away

      def away=(value)
        unless AWAY_VALUES.include?(value)
          raise ValueError.new("away must be #{AWAY_VALUES}")
        end

        api_runner.put({away: value})
        @away = value
      end

      attr_reader :name

      def name=(value)
        normalized_value = value.to_s

        api_runner.put({name: normalized_value})
        @name = normalized_value
      end

      private

        def api_runner
          api_class.new(resource_id: structure_id, access_token: access_token)
        end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nest_connect-0.1.7 lib/nest_connect/devices/structure.rb