diff --git a/lib/seam/routes/clients/index.rb b/lib/seam/routes/clients/index.rb index c627356..3c61ad3 100644 --- a/lib/seam/routes/clients/index.rb +++ b/lib/seam/routes/clients/index.rb @@ -23,6 +23,7 @@ require_relative "devices_unmanaged" require_relative "events" require_relative "locks" +require_relative "locks_simulate" require_relative "noise_sensors" require_relative "noise_sensors_noise_thresholds" require_relative "noise_sensors_simulate" diff --git a/lib/seam/routes/clients/locks.rb b/lib/seam/routes/clients/locks.rb index ee87db2..f5e1d20 100644 --- a/lib/seam/routes/clients/locks.rb +++ b/lib/seam/routes/clients/locks.rb @@ -10,6 +10,10 @@ def initialize(client:, defaults:) @defaults = defaults end + def simulate + @simulate ||= Seam::Clients::LocksSimulate.new(client: @client, defaults: @defaults) + end + def get(device_id: nil, name: nil) res = @client.post("/locks/get", {device_id: device_id, name: name}.compact) diff --git a/lib/seam/routes/clients/locks_simulate.rb b/lib/seam/routes/clients/locks_simulate.rb new file mode 100644 index 0000000..8dced1f --- /dev/null +++ b/lib/seam/routes/clients/locks_simulate.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require "seam/helpers/action_attempt" + +module Seam + module Clients + class LocksSimulate + def initialize(client:, defaults:) + @client = client + @defaults = defaults + end + + def keypad_code_entry(code:, device_id:, wait_for_action_attempt: nil) + res = @client.post("/locks/simulate/keypad_code_entry", {code: code, device_id: device_id}.compact) + + wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt + + Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + end + + def manual_lock_via_keypad(device_id:, wait_for_action_attempt: nil) + res = @client.post("/locks/simulate/manual_lock_via_keypad", {device_id: device_id}.compact) + + wait_for_action_attempt = wait_for_action_attempt.nil? ? @defaults.wait_for_action_attempt : wait_for_action_attempt + + Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) + end + end + end +end diff --git a/lib/seam/routes/clients/thermostats.rb b/lib/seam/routes/clients/thermostats.rb index f5a11a5..2d861be 100644 --- a/lib/seam/routes/clients/thermostats.rb +++ b/lib/seam/routes/clients/thermostats.rb @@ -38,8 +38,8 @@ def cool(device_id:, cooling_set_point_celsius: nil, cooling_set_point_fahrenhei Helpers::ActionAttempt.decide_and_wait(Seam::Resources::ActionAttempt.load_from_response(res.body["action_attempt"]), @client, wait_for_action_attempt) end - def create_climate_preset(climate_preset_key:, device_id:, climate_preset_mode: nil, cooling_set_point_celsius: nil, cooling_set_point_fahrenheit: nil, fan_mode_setting: nil, heating_set_point_celsius: nil, heating_set_point_fahrenheit: nil, hvac_mode_setting: nil, manual_override_allowed: nil, name: nil) - @client.post("/thermostats/create_climate_preset", {climate_preset_key: climate_preset_key, device_id: device_id, climate_preset_mode: climate_preset_mode, cooling_set_point_celsius: cooling_set_point_celsius, cooling_set_point_fahrenheit: cooling_set_point_fahrenheit, fan_mode_setting: fan_mode_setting, heating_set_point_celsius: heating_set_point_celsius, heating_set_point_fahrenheit: heating_set_point_fahrenheit, hvac_mode_setting: hvac_mode_setting, manual_override_allowed: manual_override_allowed, name: name}.compact) + def create_climate_preset(climate_preset_key:, device_id:, climate_preset_mode: nil, cooling_set_point_celsius: nil, cooling_set_point_fahrenheit: nil, ecobee_metadata: nil, fan_mode_setting: nil, heating_set_point_celsius: nil, heating_set_point_fahrenheit: nil, hvac_mode_setting: nil, manual_override_allowed: nil, name: nil) + @client.post("/thermostats/create_climate_preset", {climate_preset_key: climate_preset_key, device_id: device_id, climate_preset_mode: climate_preset_mode, cooling_set_point_celsius: cooling_set_point_celsius, cooling_set_point_fahrenheit: cooling_set_point_fahrenheit, ecobee_metadata: ecobee_metadata, fan_mode_setting: fan_mode_setting, heating_set_point_celsius: heating_set_point_celsius, heating_set_point_fahrenheit: heating_set_point_fahrenheit, hvac_mode_setting: hvac_mode_setting, manual_override_allowed: manual_override_allowed, name: name}.compact) nil end @@ -108,8 +108,8 @@ def set_temperature_threshold(device_id:, lower_limit_celsius: nil, lower_limit_ nil end - def update_climate_preset(climate_preset_key:, device_id:, climate_preset_mode: nil, cooling_set_point_celsius: nil, cooling_set_point_fahrenheit: nil, fan_mode_setting: nil, heating_set_point_celsius: nil, heating_set_point_fahrenheit: nil, hvac_mode_setting: nil, manual_override_allowed: nil, name: nil) - @client.post("/thermostats/update_climate_preset", {climate_preset_key: climate_preset_key, device_id: device_id, climate_preset_mode: climate_preset_mode, cooling_set_point_celsius: cooling_set_point_celsius, cooling_set_point_fahrenheit: cooling_set_point_fahrenheit, fan_mode_setting: fan_mode_setting, heating_set_point_celsius: heating_set_point_celsius, heating_set_point_fahrenheit: heating_set_point_fahrenheit, hvac_mode_setting: hvac_mode_setting, manual_override_allowed: manual_override_allowed, name: name}.compact) + def update_climate_preset(climate_preset_key:, device_id:, climate_preset_mode: nil, cooling_set_point_celsius: nil, cooling_set_point_fahrenheit: nil, ecobee_metadata: nil, fan_mode_setting: nil, heating_set_point_celsius: nil, heating_set_point_fahrenheit: nil, hvac_mode_setting: nil, manual_override_allowed: nil, name: nil) + @client.post("/thermostats/update_climate_preset", {climate_preset_key: climate_preset_key, device_id: device_id, climate_preset_mode: climate_preset_mode, cooling_set_point_celsius: cooling_set_point_celsius, cooling_set_point_fahrenheit: cooling_set_point_fahrenheit, ecobee_metadata: ecobee_metadata, fan_mode_setting: fan_mode_setting, heating_set_point_celsius: heating_set_point_celsius, heating_set_point_fahrenheit: heating_set_point_fahrenheit, hvac_mode_setting: hvac_mode_setting, manual_override_allowed: manual_override_allowed, name: name}.compact) nil end diff --git a/package-lock.json b/package-lock.json index a18323e..42a4ab1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "devDependencies": { "@seamapi/fake-seam-connect": "1.83.2", "@seamapi/nextlove-sdk-generator": "^1.18.1", - "@seamapi/types": "1.433.0", + "@seamapi/types": "1.437.0", "del": "^7.1.0", "markdown-toc": "^1.2.0", "prettier": "^3.2.5" @@ -476,9 +476,9 @@ } }, "node_modules/@seamapi/types": { - "version": "1.433.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.433.0.tgz", - "integrity": "sha512-Wj1SrJ3ONeRrwDnffeK8Cwd83n/zxvIGRUQ6e5n/2hP5SQ9z/fORWekpy4o1MTd7xGQawBEYLEwROq/wtn3xFw==", + "version": "1.437.0", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.437.0.tgz", + "integrity": "sha512-+rA742bee7Dy19U6lZHooi/Gx8kZmxBYUci18qPkfZ5ZCvqSg0rnOB1OkGFFw4eTQIBQ887JHhDUiYqZxK1TWQ==", "dev": true, "engines": { "node": ">=18.12.0", diff --git a/package.json b/package.json index dc5ce95..19a9baa 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@seamapi/fake-seam-connect": "1.83.2", "@seamapi/nextlove-sdk-generator": "^1.18.1", - "@seamapi/types": "1.433.0", + "@seamapi/types": "1.437.0", "del": "^7.1.0", "markdown-toc": "^1.2.0", "prettier": "^3.2.5"