ruby_home 0.2.1 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/tests.yml +41 -0
  3. data/.gitignore +2 -2
  4. data/.rubocop.yml +2 -9
  5. data/.standard.yml +3 -0
  6. data/CHANGELOG.md +18 -0
  7. data/Gemfile +2 -2
  8. data/README.md +40 -77
  9. data/Rakefile +4 -4
  10. data/examples/air_purifier.rb +66 -0
  11. data/examples/air_quality_sensor.rb +119 -0
  12. data/examples/battery_service.rb +58 -0
  13. data/examples/carbon_dioxide_sensor.rb +78 -0
  14. data/examples/carbon_monoxide_sensor.rb +78 -0
  15. data/examples/contact_sensor.rb +66 -0
  16. data/examples/door.rb +48 -0
  17. data/examples/fan.rb +30 -0
  18. data/examples/fan_v2.rb +68 -0
  19. data/examples/garage_door_opener.rb +71 -0
  20. data/examples/heater_cooler.rb +92 -0
  21. data/examples/humidifier_dehumidifier.rb +88 -0
  22. data/examples/humidity_sensor.rb +62 -0
  23. data/examples/leak_sensor.rb +66 -0
  24. data/examples/light_sensor.rb +64 -0
  25. data/examples/lightbulb.rb +31 -0
  26. data/examples/lock_mechanism.rb +34 -0
  27. data/examples/motion_sensor.rb +66 -0
  28. data/examples/occupancy_sensor.rb +66 -0
  29. data/examples/outlet.rb +29 -0
  30. data/examples/security_system.rb +53 -0
  31. data/examples/smoke_sensor.rb +66 -0
  32. data/examples/switch.rb +16 -0
  33. data/examples/television.rb +73 -0
  34. data/examples/temperature_sensor.rb +62 -0
  35. data/examples/thermostat.rb +113 -0
  36. data/examples/window.rb +48 -0
  37. data/examples/window_covering.rb +72 -0
  38. data/lib/ruby_home.rb +21 -22
  39. data/lib/ruby_home/accessory.rb +1 -1
  40. data/lib/ruby_home/accessory_collection.rb +6 -6
  41. data/lib/ruby_home/accessory_info.rb +18 -18
  42. data/lib/ruby_home/characteristic.rb +13 -7
  43. data/lib/ruby_home/characteristic_collection.rb +13 -13
  44. data/lib/ruby_home/config/categories.yml +39 -0
  45. data/lib/ruby_home/config/characteristics.yml +190 -319
  46. data/lib/ruby_home/config/manual_characteristics.yml +278 -0
  47. data/lib/ruby_home/config/manual_services.yml +45 -0
  48. data/lib/ruby_home/config/services.yml +338 -304
  49. data/lib/ruby_home/configuration.rb +21 -2
  50. data/lib/ruby_home/device_id.rb +3 -3
  51. data/lib/ruby_home/dns/service.rb +4 -6
  52. data/lib/ruby_home/dns/text_record.rb +10 -10
  53. data/lib/ruby_home/errors.rb +1 -0
  54. data/lib/ruby_home/factories/characteristic_factory.rb +38 -37
  55. data/lib/ruby_home/factories/service_factory.rb +72 -72
  56. data/lib/ruby_home/factories/templates/characteristic_template.rb +6 -6
  57. data/lib/ruby_home/factories/templates/service_template.rb +12 -11
  58. data/lib/ruby_home/hap/crypto/chacha20poly1305.rb +2 -2
  59. data/lib/ruby_home/hap/crypto/hkdf.rb +4 -4
  60. data/lib/ruby_home/hap/crypto/session_key.rb +7 -7
  61. data/lib/ruby_home/hap/decrypter.rb +8 -8
  62. data/lib/ruby_home/hap/encrypter.rb +5 -6
  63. data/lib/ruby_home/hap/ev_response.rb +17 -17
  64. data/lib/ruby_home/hap/hap_request.rb +1 -1
  65. data/lib/ruby_home/hap/server.rb +4 -4
  66. data/lib/ruby_home/hap/server_handler.rb +8 -10
  67. data/lib/ruby_home/hap/session.rb +22 -22
  68. data/lib/ruby_home/hap/values/base_value.rb +3 -3
  69. data/lib/ruby_home/hap/values/bool_value.rb +4 -4
  70. data/lib/ruby_home/hap/values/float_value.rb +4 -4
  71. data/lib/ruby_home/hap/values/identify_value.rb +1 -1
  72. data/lib/ruby_home/hap/values/int32_value.rb +4 -4
  73. data/lib/ruby_home/hap/values/null_value.rb +1 -1
  74. data/lib/ruby_home/hap/values/string_value.rb +11 -11
  75. data/lib/ruby_home/hap/values/uint32_value.rb +5 -5
  76. data/lib/ruby_home/hap/values/uint8_value.rb +14 -14
  77. data/lib/ruby_home/hex_helper.rb +3 -3
  78. data/lib/ruby_home/http/application.rb +7 -7
  79. data/lib/ruby_home/http/controllers/accessories_controller.rb +3 -3
  80. data/lib/ruby_home/http/controllers/application_controller.rb +6 -6
  81. data/lib/ruby_home/http/controllers/characteristics_controller.rb +29 -29
  82. data/lib/ruby_home/http/controllers/identify_controller.rb +10 -10
  83. data/lib/ruby_home/http/controllers/pair_setups_controller.rb +19 -19
  84. data/lib/ruby_home/http/controllers/pair_verifies_controller.rb +9 -9
  85. data/lib/ruby_home/http/controllers/pairings_controller.rb +6 -6
  86. data/lib/ruby_home/http/serializers/accessory_serializer.rb +5 -5
  87. data/lib/ruby_home/http/serializers/characteristic_serializer.rb +27 -19
  88. data/lib/ruby_home/http/serializers/characteristic_value_serializer.rb +5 -5
  89. data/lib/ruby_home/http/serializers/object_serializer.rb +1 -1
  90. data/lib/ruby_home/http/serializers/service_serializer.rb +19 -9
  91. data/lib/ruby_home/http/serializers/uuid_helper.rb +2 -2
  92. data/lib/ruby_home/http/services/session_notifier.rb +8 -8
  93. data/lib/ruby_home/http/services/start_srp_service.rb +3 -3
  94. data/lib/ruby_home/http/services/verify_finish_service.rb +22 -22
  95. data/lib/ruby_home/http/services/verify_srp_service.rb +22 -22
  96. data/lib/ruby_home/identifier_cache.rb +4 -5
  97. data/lib/ruby_home/password.rb +14 -14
  98. data/lib/ruby_home/persistable.rb +19 -12
  99. data/lib/ruby_home/service.rb +5 -2
  100. data/lib/ruby_home/service_collection.rb +1 -1
  101. data/lib/ruby_home/version.rb +1 -1
  102. data/rubyhome.gemspec +31 -31
  103. data/sbin/characteristic_generator.rb +22 -24
  104. data/sbin/service_generator.rb +38 -19
  105. metadata +85 -44
  106. data/.travis.yml +0 -31
@@ -0,0 +1,48 @@
1
+ require "ruby_home"
2
+
3
+ accessory_information = RubyHome::ServiceFactory.create(:accessory_information)
4
+ window = RubyHome::ServiceFactory.create(:window,
5
+ target_position: 0, # required
6
+ position_state: 1, # required
7
+ current_position: 0, # required
8
+ name: "window", # optional
9
+ obstruction_detected: false) # optional
10
+
11
+ window.target_position.after_update do |target_position|
12
+ puts "window target position #{target_position}"
13
+
14
+ if target_position < window.current_position
15
+ window.position_state = 0
16
+ elsif target_position > window.current_position
17
+ window.position_state = 1
18
+ end
19
+
20
+ sleep 1
21
+
22
+ window.current_position = target_position
23
+ window.position_state = 2
24
+ end
25
+
26
+ position_state_values = {
27
+ 0 => "Decreasing",
28
+ 1 => "Increasing",
29
+ 2 => "Stopped"
30
+ }
31
+ window.position_state.after_update do |position_state|
32
+ state = position_state_values[position_state]
33
+ puts "window position state #{state}"
34
+ end
35
+
36
+ window.current_position.after_update do |current_position|
37
+ puts "window current position #{current_position}"
38
+ end
39
+
40
+ window.obstruction_detected.after_update do |obstruction_detected|
41
+ if obstruction_detected
42
+ puts "window obstruction detected"
43
+ else
44
+ puts "window no obstruction detected"
45
+ end
46
+ end
47
+
48
+ RubyHome.run
@@ -0,0 +1,72 @@
1
+ require "ruby_home"
2
+
3
+ accessory_information = RubyHome::ServiceFactory.create(:accessory_information)
4
+ window_covering = RubyHome::ServiceFactory.create(:window_covering,
5
+ target_position: 0, # required
6
+ position_state: 1, # required
7
+ current_position: 0, # required
8
+ name: "window_covering", # optional
9
+ obstruction_detected: false, # optional
10
+ current_vertical_tilt_angle: 0, # optional
11
+ target_vertical_tilt_angle: 0, # optional
12
+ current_horizontal_tilt_angle: 0, # optional
13
+ target_horizontal_tilt_angle: 0) # optional
14
+
15
+ window_covering.target_position.after_update do |target_position|
16
+ puts "window covering target position #{target_position}"
17
+
18
+ if target_position < window_covering.current_position
19
+ window_covering.position_state = 0
20
+ elsif target_position > window_covering.current_position
21
+ window_covering.position_state = 1
22
+ end
23
+
24
+ sleep 1
25
+
26
+ window_covering.current_position = target_position
27
+ window_covering.position_state = 2
28
+ end
29
+
30
+ position_state_values = {
31
+ 0 => "Decreasing",
32
+ 1 => "Increasing",
33
+ 2 => "Stopped"
34
+ }
35
+ window_covering.position_state.after_update do |position_state|
36
+ state = position_state_values[position_state]
37
+ puts "window covering position state #{state}"
38
+ end
39
+
40
+ window_covering.current_position.after_update do |current_position|
41
+ puts "window covering current position #{current_position}"
42
+ end
43
+
44
+ window_covering.obstruction_detected.after_update do |obstruction_detected|
45
+ if obstruction_detected
46
+ puts "window covering obstruction detected"
47
+ else
48
+ puts "window covering no obstruction detected"
49
+ end
50
+ end
51
+
52
+ window_covering.current_vertical_tilt_angle.after_update do |current_vertical_tilt_angle|
53
+ puts "window covering current_vertical_tilt_angle #{current_vertical_tilt_angle}"
54
+ end
55
+
56
+ window_covering.target_vertical_tilt_angle.after_update do |target_vertical_tilt_angle|
57
+ puts "window covering target_vertical_tilt_angle #{target_vertical_tilt_angle}"
58
+ sleep 1
59
+ window_covering.current_vertical_tilt_angle = target_vertical_tilt_angle
60
+ end
61
+
62
+ window_covering.current_horizontal_tilt_angle.after_update do |current_horizontal_tilt_angle|
63
+ puts "window covering current_horizontal_tilt_angle #{current_horizontal_tilt_angle}"
64
+ end
65
+
66
+ window_covering.target_horizontal_tilt_angle.after_update do |target_horizontal_tilt_angle|
67
+ puts "window covering target_horizontal_tilt_angle #{target_horizontal_tilt_angle}"
68
+ sleep 1
69
+ window_covering.current_horizontal_tilt_angle = target_horizontal_tilt_angle
70
+ end
71
+
72
+ RubyHome.run
data/lib/ruby_home.rb CHANGED
@@ -1,26 +1,25 @@
1
- require 'bindata'
2
- require 'dnssd'
3
- require 'facets/hash/slice'
4
- require 'hkdf'
5
- require 'oj'
6
- require 'rack'
7
- require 'rbnacl'
8
- require 'ruby_home/srp'
9
- require 'ruby_home/tlv'
10
- require 'securerandom'
11
- require 'sinatra/base'
12
- require 'socket'
13
- require 'webrick'
14
- require 'wisper'
15
- require 'yaml'
1
+ require "dnssd"
2
+ require "facets/hash/slice"
3
+ require "hkdf"
4
+ require "oj"
5
+ require "rack"
6
+ require "rbnacl"
7
+ require "ruby_home/srp"
8
+ require "ruby_home/tlv"
9
+ require "securerandom"
10
+ require "sinatra/base"
11
+ require "socket"
12
+ require "webrick"
13
+ require "wisper"
14
+ require "yaml"
16
15
 
17
16
  module RubyHome
18
17
  [
19
- '/ruby_home/hap/**/*.rb',
20
- '/ruby_home/http/**/*.rb',
21
- '/ruby_home/factories/**/*.rb',
22
- '/ruby_home/dns/**/*.rb',
23
- '/ruby_home/*.rb'
18
+ "/ruby_home/hap/**/*.rb",
19
+ "/ruby_home/http/**/*.rb",
20
+ "/ruby_home/factories/**/*.rb",
21
+ "/ruby_home/dns/**/*.rb",
22
+ "/ruby_home/*.rb"
24
23
  ].each do |pattern|
25
24
  Dir[File.dirname(__FILE__) + pattern].each { |file| require file }
26
25
  end
@@ -37,8 +36,8 @@ module RubyHome
37
36
  end
38
37
 
39
38
  def run
40
- trap 'INT' do shutdown end
41
- trap 'TERM' do shutdown end
39
+ trap("INT") { shutdown }
40
+ trap("TERM") { shutdown }
42
41
 
43
42
  greet
44
43
  start
@@ -1,4 +1,4 @@
1
- require_relative 'accessory_collection'
1
+ require_relative "accessory_collection"
2
2
 
3
3
  module RubyHome
4
4
  class Accessory
@@ -25,12 +25,12 @@ module RubyHome
25
25
 
26
26
  private
27
27
 
28
- def services
29
- accessories.flat_map(&:services)
30
- end
28
+ def services
29
+ accessories.flat_map(&:services)
30
+ end
31
31
 
32
- def characteristics
33
- services.flat_map(&:characteristics)
34
- end
32
+ def characteristics
33
+ services.flat_map(&:characteristics)
34
+ end
35
35
  end
36
36
  end
@@ -1,10 +1,10 @@
1
- require_relative 'persistable'
1
+ require_relative "persistable"
2
2
 
3
3
  module RubyHome
4
4
  class AccessoryInfo
5
5
  include Persistable
6
6
 
7
- self.source = 'accessory_info.yml'
7
+ self.source = "accessory_info.yml"
8
8
 
9
9
  def self.instance
10
10
  @@_instance ||= persisted || create
@@ -14,7 +14,7 @@ module RubyHome
14
14
  @@_instance = nil
15
15
  end
16
16
 
17
- USERNAME = -'Pair-Setup'
17
+ USERNAME = -"Pair-Setup"
18
18
 
19
19
  def initialize(device_id: nil, paired_clients: [], password: nil, signature_key: nil)
20
20
  @device_id = device_id
@@ -44,8 +44,8 @@ module RubyHome
44
44
  @paired_clients ||= []
45
45
  end
46
46
 
47
- def add_paired_client(admin: false, identifier: , public_key: )
48
- @paired_clients << { admin: admin, identifier: identifier, public_key: public_key }
47
+ def add_paired_client(identifier:, public_key:, admin: false)
48
+ @paired_clients << {admin: admin, identifier: identifier, public_key: public_key}
49
49
  save
50
50
  end
51
51
 
@@ -59,22 +59,22 @@ module RubyHome
59
59
  end
60
60
 
61
61
  def signing_key
62
- @signing_key ||= RbNaCl::Signatures::Ed25519::SigningKey.new([signature_key].pack('H*'))
62
+ @signing_key ||= RbNaCl::Signatures::Ed25519::SigningKey.new([signature_key].pack("H*"))
63
63
  end
64
64
 
65
65
  private
66
66
 
67
- def signature_key
68
- @signature_key ||= RbNaCl::Signatures::Ed25519::SigningKey.generate.to_bytes.unpack1('H*')
69
- end
70
-
71
- def persisted_attributes
72
- {
73
- device_id: device_id,
74
- paired_clients: paired_clients,
75
- password: password,
76
- signature_key: signature_key
77
- }
78
- end
67
+ def signature_key
68
+ @signature_key ||= RbNaCl::Signatures::Ed25519::SigningKey.generate.to_bytes.unpack1("H*")
69
+ end
70
+
71
+ def persisted_attributes
72
+ {
73
+ device_id: device_id,
74
+ paired_clients: paired_clients,
75
+ password: password,
76
+ signature_key: signature_key
77
+ }
78
+ end
79
79
  end
80
80
  end
@@ -1,4 +1,4 @@
1
- require_relative 'characteristic_collection'
1
+ require_relative "characteristic_collection"
2
2
 
3
3
  module RubyHome
4
4
  class DuplicateCharacteristicError < StandardError; end
@@ -19,19 +19,20 @@ module RubyHome
19
19
  end
20
20
 
21
21
  PROPERTIES = {
22
- 'cnotify' => 'ev',
23
- 'read' => 'pr',
24
- 'uncnotify' => nil,
25
- 'write' => 'pw',
22
+ "cnotify" => "ev",
23
+ "read" => "pr",
24
+ "uncnotify" => nil,
25
+ "write" => "pw"
26
26
  }.freeze
27
27
 
28
- def initialize(uuid:, name:, description:, format:, unit:, properties:, service: , value_object: )
28
+ def initialize(uuid:, name:, description:, format:, unit:, properties:, constraints:, service:, value_object:)
29
29
  @uuid = uuid
30
30
  @name = name
31
31
  @description = description
32
32
  @format = format
33
33
  @unit = unit
34
34
  @properties = properties
35
+ @constraints = constraints
35
36
  @service = service
36
37
  @value_object = value_object
37
38
  end
@@ -44,8 +45,9 @@ module RubyHome
44
45
  :format,
45
46
  :unit,
46
47
  :properties,
48
+ :constraints,
47
49
  :instance_id,
48
- :value_object,
50
+ :value_object
49
51
  )
50
52
 
51
53
  def instance_id=(new_id)
@@ -66,6 +68,10 @@ module RubyHome
66
68
  service.instance_id
67
69
  end
68
70
 
71
+ def valid_values
72
+ constraints.fetch("ValidValues", {}).keys.map(&:to_i)
73
+ end
74
+
69
75
  def method_missing(method_name, *args, &block)
70
76
  value.send(method_name, *args, &block)
71
77
  end
@@ -17,7 +17,7 @@ module RubyHome
17
17
  @characteristics << characteristic
18
18
  end
19
19
 
20
- alias all to_a
20
+ alias_method :all, :to_a
21
21
 
22
22
  def contains_instance_id?(instance_id)
23
23
  map(&:instance_id).include?(instance_id)
@@ -25,24 +25,24 @@ module RubyHome
25
25
 
26
26
  private
27
27
 
28
- attr_reader :characteristics
28
+ attr_reader :characteristics
29
29
 
30
- def define_service_getter(characteristic)
31
- service = characteristic.service
30
+ def define_service_getter(characteristic)
31
+ service = characteristic.service
32
32
 
33
- unless service.respond_to?(characteristic.name)
34
- service.define_singleton_method(characteristic.name) { characteristic }
35
- end
33
+ unless service.respond_to?(characteristic.name)
34
+ service.define_singleton_method(characteristic.name) { characteristic }
36
35
  end
36
+ end
37
37
 
38
- def define_service_setter(characteristic)
39
- service = characteristic.service
38
+ def define_service_setter(characteristic)
39
+ service = characteristic.service
40
40
 
41
- unless service.respond_to?("#{characteristic.name}=")
42
- service.define_singleton_method("#{characteristic.name}=") do |args|
43
- characteristic.value = args
44
- end
41
+ unless service.respond_to?("#{characteristic.name}=")
42
+ service.define_singleton_method("#{characteristic.name}=") do |args|
43
+ characteristic.value = args
45
44
  end
46
45
  end
46
+ end
47
47
  end
48
48
  end
@@ -0,0 +1,39 @@
1
+ ---
2
+ :other: 1
3
+ :bridge: 2
4
+ :fan: 3
5
+ :garage_door_opener: 4
6
+ :lightbulb: 5
7
+ :door_lock: 6
8
+ :outlet: 7
9
+ :switch: 8
10
+ :thermostat: 9
11
+ :sensor: 10
12
+ :alarm_system: 11
13
+ :security_system: 11
14
+ :door: 12
15
+ :window: 13
16
+ :window_covering: 14
17
+ :programmable_switch: 15
18
+ :range_extender: 16
19
+ :camera: 17
20
+ :ip_camera: 17
21
+ :video_doorbell: 18
22
+ :air_purifier: 19
23
+ :air_heater: 20
24
+ :air_conditioner: 21
25
+ :air_humidifier: 22
26
+ :air_dehumidifier: 23
27
+ :apple_tv: 24
28
+ :homepod: 25
29
+ :speaker: 26
30
+ :airport: 27
31
+ :sprinkler: 28
32
+ :faucet: 29
33
+ :shower_head: 30
34
+ :television: 31
35
+ :target_controller: 32
36
+ :router: 33
37
+ :audio_receiver: 34
38
+ :tv_set_top_box: 35
39
+ :tv_streaming_stick: 36
@@ -4,8 +4,6 @@
4
4
  :uuid: 000000A6-0000-1000-8000-0026BB765291
5
5
  :format: uint32
6
6
  :unit: nil
7
- :permissions:
8
- - securedRead
9
7
  :properties:
10
8
  - read
11
9
  - cnotify
@@ -18,13 +16,11 @@
18
16
  :uuid: 000000B0-0000-1000-8000-0026BB765291
19
17
  :format: uint8
20
18
  :unit: nil
21
- :permissions:
22
- - securedRead
23
- - securedWrite
24
19
  :properties:
25
20
  - read
26
21
  - write
27
22
  - cnotify
23
+ - uncnotify
28
24
  :constraints:
29
25
  ValidValues:
30
26
  '0': Inactive
@@ -34,24 +30,21 @@
34
30
  :uuid: 00000001-0000-1000-8000-0026BB765291
35
31
  :format: bool
36
32
  :unit: nil
37
- :permissions:
38
- - securedRead
39
- - securedWrite
40
33
  :properties:
41
34
  - read
42
35
  - write
43
36
  - cnotify
44
- :constraints:
37
+ - uncnotify
38
+ :constraints:
45
39
  - :name: :air_particulate_density
46
40
  :description: Air Particulate Density
47
41
  :uuid: 00000064-0000-1000-8000-0026BB765291
48
42
  :format: float
49
43
  :unit: nil
50
- :permissions:
51
- - securedRead
52
44
  :properties:
53
45
  - read
54
46
  - cnotify
47
+ - uncnotify
55
48
  :constraints:
56
49
  MaximumValue: 1000
57
50
  MinimumValue: 0
@@ -61,11 +54,10 @@
61
54
  :uuid: 00000065-0000-1000-8000-0026BB765291
62
55
  :format: uint8
63
56
  :unit: nil
64
- :permissions:
65
- - securedRead
66
57
  :properties:
67
58
  - read
68
59
  - cnotify
60
+ - uncnotify
69
61
  :constraints:
70
62
  ValidValues:
71
63
  '0': 2.5 μm
@@ -75,8 +67,6 @@
75
67
  :uuid: '00000095-0000-1000-8000-0026BB765291'
76
68
  :format: uint8
77
69
  :unit: nil
78
- :permissions:
79
- - securedRead
80
70
  :properties:
81
71
  - read
82
72
  - cnotify
@@ -94,24 +84,21 @@
94
84
  :uuid: 00000005-0000-1000-8000-0026BB765291
95
85
  :format: bool
96
86
  :unit: nil
97
- :permissions:
98
- - securedRead
99
- - securedWrite
100
87
  :properties:
101
88
  - read
102
89
  - write
103
90
  - cnotify
104
- :constraints:
91
+ - uncnotify
92
+ :constraints:
105
93
  - :name: :battery_level
106
94
  :description: Battery Level
107
95
  :uuid: '00000068-0000-1000-8000-0026BB765291'
108
96
  :format: uint8
109
97
  :unit: '"percentage"'
110
- :permissions:
111
- - securedRead
112
98
  :properties:
113
99
  - read
114
100
  - cnotify
101
+ - uncnotify
115
102
  :constraints:
116
103
  MaximumValue: 100
117
104
  MinimumValue: 0
@@ -121,13 +108,11 @@
121
108
  :uuid: '00000008-0000-1000-8000-0026BB765291'
122
109
  :format: int32
123
110
  :unit: '"percentage"'
124
- :permissions:
125
- - securedRead
126
- - securedWrite
127
111
  :properties:
128
112
  - read
129
113
  - write
130
114
  - cnotify
115
+ - uncnotify
131
116
  :constraints:
132
117
  MaximumValue: 100
133
118
  MinimumValue: 0
@@ -137,8 +122,6 @@
137
122
  :uuid: '00000092-0000-1000-8000-0026BB765291'
138
123
  :format: uint8
139
124
  :unit: nil
140
- :permissions:
141
- - securedRead
142
125
  :properties:
143
126
  - read
144
127
  - cnotify
@@ -152,11 +135,10 @@
152
135
  :uuid: '00000093-0000-1000-8000-0026BB765291'
153
136
  :format: float
154
137
  :unit: nil
155
- :permissions:
156
- - securedRead
157
138
  :properties:
158
139
  - read
159
140
  - cnotify
141
+ - uncnotify
160
142
  :constraints:
161
143
  MaximumValue: 100000
162
144
  MinimumValue: 0
@@ -165,11 +147,10 @@
165
147
  :uuid: '00000094-0000-1000-8000-0026BB765291'
166
148
  :format: float
167
149
  :unit: nil
168
- :permissions:
169
- - securedRead
170
150
  :properties:
171
151
  - read
172
152
  - cnotify
153
+ - uncnotify
173
154
  :constraints:
174
155
  MaximumValue: 100000
175
156
  MinimumValue: 0
@@ -178,8 +159,6 @@
178
159
  :uuid: '00000069-0000-1000-8000-0026BB765291'
179
160
  :format: uint8
180
161
  :unit: nil
181
- :permissions:
182
- - securedRead
183
162
  :properties:
184
163
  - read
185
164
  - cnotify
@@ -193,11 +172,10 @@
193
172
  :uuid: '00000090-0000-1000-8000-0026BB765291'
194
173
  :format: float
195
174
  :unit: nil
196
- :permissions:
197
- - securedRead
198
175
  :properties:
199
176
  - read
200
177
  - cnotify
178
+ - uncnotify
201
179
  :constraints:
202
180
  MaximumValue: 100
203
181
  MinimumValue: 0
@@ -206,11 +184,10 @@
206
184
  :uuid: '00000091-0000-1000-8000-0026BB765291'
207
185
  :format: float
208
186
  :unit: nil
209
- :permissions:
210
- - securedRead
211
187
  :properties:
212
188
  - read
213
189
  - cnotify
190
+ - uncnotify
214
191
  :constraints:
215
192
  MaximumValue: 100
216
193
  MinimumValue: 0
@@ -219,11 +196,10 @@
219
196
  :uuid: '0000008F-0000-1000-8000-0026BB765291'
220
197
  :format: uint8
221
198
  :unit: nil
222
- :permissions:
223
- - securedRead
224
199
  :properties:
225
200
  - read
226
201
  - cnotify
202
+ - uncnotify
227
203
  :constraints:
228
204
  ValidValues:
229
205
  '0': Not Charging
@@ -234,13 +210,11 @@
234
210
  :uuid: 000000CE-0000-1000-8000-0026BB765291
235
211
  :format: uint32
236
212
  :unit: nil
237
- :permissions:
238
- - securedRead
239
- - securedWrite
240
213
  :properties:
241
214
  - read
242
215
  - write
243
216
  - cnotify
217
+ - uncnotify
244
218
  :constraints:
245
219
  MaximumValue: 500
246
220
  MinimumValue: 140
@@ -250,8 +224,6 @@
250
224
  :uuid: 0000006A-0000-1000-8000-0026BB765291
251
225
  :format: uint8
252
226
  :unit: nil
253
- :permissions:
254
- - securedRead
255
227
  :properties:
256
228
  - read
257
229
  - cnotify
@@ -265,13 +237,11 @@
265
237
  :uuid: 0000000D-0000-1000-8000-0026BB765291
266
238
  :format: float
267
239
  :unit: '"celsius"'
268
- :permissions:
269
- - securedRead
270
- - securedWrite
271
240
  :properties:
272
241
  - read
273
242
  - write
274
243
  - cnotify
244
+ - uncnotify
275
245
  :constraints:
276
246
  MaximumValue: 35
277
247
  MinimumValue: 10
@@ -281,11 +251,10 @@
281
251
  :uuid: 000000A9-0000-1000-8000-0026BB765291
282
252
  :format: uint8
283
253
  :unit: nil
284
- :permissions:
285
- - securedRead
286
254
  :properties:
287
255
  - read
288
256
  - cnotify
257
+ - uncnotify
289
258
  :constraints:
290
259
  ValidValues:
291
260
  '0': Inactive
@@ -296,11 +265,10 @@
296
265
  :uuid: 0000006B-0000-1000-8000-0026BB765291
297
266
  :format: float
298
267
  :unit: '"lux"'
299
- :permissions:
300
- - securedRead
301
268
  :properties:
302
269
  - read
303
270
  - cnotify
271
+ - uncnotify
304
272
  :constraints:
305
273
  MaximumValue: 100000
306
274
  MinimumValue: 0.0001
@@ -309,8 +277,6 @@
309
277
  :uuid: 0000000E-0000-1000-8000-0026BB765291
310
278
  :format: uint8
311
279
  :unit: nil
312
- :permissions:
313
- - securedRead
314
280
  :properties:
315
281
  - read
316
282
  - cnotify
@@ -327,11 +293,10 @@
327
293
  :uuid: 000000AF-0000-1000-8000-0026BB765291
328
294
  :format: uint8
329
295
  :unit: nil
330
- :permissions:
331
- - securedRead
332
296
  :properties:
333
297
  - read
334
298
  - cnotify
299
+ - uncnotify
335
300
  :constraints:
336
301
  ValidValues:
337
302
  '0': Inactive
@@ -342,11 +307,10 @@
342
307
  :uuid: 000000B1-0000-1000-8000-0026BB765291
343
308
  :format: uint8
344
309
  :unit: nil
345
- :permissions:
346
- - securedRead
347
310
  :properties:
348
311
  - read
349
312
  - cnotify
313
+ - uncnotify
350
314
  :constraints:
351
315
  ValidValues:
352
316
  '0': Inactive
@@ -358,8 +322,6 @@
358
322
  :uuid: 0000000F-0000-1000-8000-0026BB765291
359
323
  :format: uint8
360
324
  :unit: nil
361
- :permissions:
362
- - securedRead
363
325
  :properties:
364
326
  - read
365
327
  - cnotify
@@ -374,11 +336,10 @@
374
336
  :uuid: 0000006C-0000-1000-8000-0026BB765291
375
337
  :format: int32
376
338
  :unit: '"arcdegrees"'
377
- :permissions:
378
- - securedRead
379
339
  :properties:
380
340
  - read
381
341
  - cnotify
342
+ - uncnotify
382
343
  :constraints:
383
344
  MaximumValue: 90
384
345
  MinimumValue: -90
@@ -388,11 +349,10 @@
388
349
  :uuid: 000000B3-0000-1000-8000-0026BB765291
389
350
  :format: uint8
390
351
  :unit: nil
391
- :permissions:
392
- - securedRead
393
352
  :properties:
394
353
  - read
395
354
  - cnotify
355
+ - uncnotify
396
356
  :constraints:
397
357
  ValidValues:
398
358
  '0': Inactive
@@ -404,11 +364,10 @@
404
364
  :uuid: 0000006D-0000-1000-8000-0026BB765291
405
365
  :format: uint8
406
366
  :unit: '"percentage"'
407
- :permissions:
408
- - securedRead
409
367
  :properties:
410
368
  - read
411
369
  - cnotify
370
+ - uncnotify
412
371
  :constraints:
413
372
  MaximumValue: 100
414
373
  MinimumValue: 0
@@ -418,11 +377,10 @@
418
377
  :uuid: 00000010-0000-1000-8000-0026BB765291
419
378
  :format: float
420
379
  :unit: '"percentage"'
421
- :permissions:
422
- - securedRead
423
380
  :properties:
424
381
  - read
425
382
  - cnotify
383
+ - uncnotify
426
384
  :constraints:
427
385
  MaximumValue: 100
428
386
  MinimumValue: 0
@@ -432,11 +390,10 @@
432
390
  :uuid: 000000AA-0000-1000-8000-0026BB765291
433
391
  :format: uint8
434
392
  :unit: nil
435
- :permissions:
436
- - securedRead
437
393
  :properties:
438
394
  - read
439
395
  - cnotify
396
+ - uncnotify
440
397
  :constraints:
441
398
  ValidValues:
442
399
  '0': Fixed
@@ -447,11 +404,10 @@
447
404
  :uuid: 00000011-0000-1000-8000-0026BB765291
448
405
  :format: float
449
406
  :unit: '"celsius"'
450
- :permissions:
451
- - securedRead
452
407
  :properties:
453
408
  - read
454
409
  - cnotify
410
+ - uncnotify
455
411
  :constraints:
456
412
  MaximumValue: 100
457
413
  MinimumValue: 0
@@ -461,11 +417,10 @@
461
417
  :uuid: 000000C1-0000-1000-8000-0026BB765291
462
418
  :format: int32
463
419
  :unit: '"arcdegrees"'
464
- :permissions:
465
- - securedRead
466
420
  :properties:
467
421
  - read
468
422
  - cnotify
423
+ - uncnotify
469
424
  :constraints:
470
425
  MaximumValue: 90
471
426
  MinimumValue: -90
@@ -475,11 +430,10 @@
475
430
  :uuid: 0000006E-0000-1000-8000-0026BB765291
476
431
  :format: int32
477
432
  :unit: '"arcdegrees"'
478
- :permissions:
479
- - securedRead
480
433
  :properties:
481
434
  - read
482
435
  - cnotify
436
+ - uncnotify
483
437
  :constraints:
484
438
  MaximumValue: 90
485
439
  MinimumValue: -90
@@ -489,24 +443,21 @@
489
443
  :uuid: 0000011D-0000-1000-8000-0026BB765291
490
444
  :format: float
491
445
  :unit: nil
492
- :permissions:
493
- - securedRead
494
- - securedWrite
495
446
  :properties:
496
447
  - read
497
448
  - write
498
449
  - cnotify
499
- :constraints:
450
+ - uncnotify
451
+ :constraints:
500
452
  - :name: :filter_change_indication
501
453
  :description: Filter Change Indication
502
454
  :uuid: 000000AC-0000-1000-8000-0026BB765291
503
455
  :format: uint8
504
456
  :unit: nil
505
- :permissions:
506
- - securedRead
507
457
  :properties:
508
458
  - read
509
459
  - cnotify
460
+ - uncnotify
510
461
  :constraints:
511
462
  ValidValues:
512
463
  '0': Filter OK
@@ -516,11 +467,10 @@
516
467
  :uuid: 000000AB-0000-1000-8000-0026BB765291
517
468
  :format: float
518
469
  :unit: nil
519
- :permissions:
520
- - securedRead
521
470
  :properties:
522
471
  - read
523
472
  - cnotify
473
+ - uncnotify
524
474
  :constraints:
525
475
  MaximumValue: 100
526
476
  MinimumValue: 0
@@ -530,33 +480,27 @@
530
480
  :uuid: 00000052-0000-1000-8000-0026BB765291
531
481
  :format: string
532
482
  :unit: nil
533
- :permissions:
534
- - securedRead
535
483
  :properties:
536
484
  - read
537
- :constraints:
485
+ :constraints:
538
486
  - :name: :hardware_revision
539
487
  :description: Hardware Revision
540
488
  :uuid: 00000053-0000-1000-8000-0026BB765291
541
489
  :format: string
542
490
  :unit: nil
543
- :permissions:
544
- - securedRead
545
491
  :properties:
546
492
  - read
547
- :constraints:
493
+ :constraints:
548
494
  - :name: :heating_threshold_temperature
549
495
  :description: Heating Threshold Temperature
550
496
  :uuid: 00000012-0000-1000-8000-0026BB765291
551
497
  :format: float
552
498
  :unit: '"celsius"'
553
- :permissions:
554
- - securedRead
555
- - securedWrite
556
499
  :properties:
557
500
  - read
558
501
  - write
559
502
  - cnotify
503
+ - uncnotify
560
504
  :constraints:
561
505
  MaximumValue: 25
562
506
  MinimumValue: 0
@@ -566,23 +510,19 @@
566
510
  :uuid: 0000006F-0000-1000-8000-0026BB765291
567
511
  :format: bool
568
512
  :unit: nil
569
- :permissions:
570
- - securedWrite
571
513
  :properties:
572
514
  - write
573
- :constraints:
515
+ :constraints:
574
516
  - :name: :hue
575
517
  :description: Hue
576
518
  :uuid: 00000013-0000-1000-8000-0026BB765291
577
519
  :format: float
578
520
  :unit: '"arcdegrees"'
579
- :permissions:
580
- - securedRead
581
- - securedWrite
582
521
  :properties:
583
522
  - read
584
523
  - write
585
524
  - cnotify
525
+ - uncnotify
586
526
  :constraints:
587
527
  MaximumValue: 360
588
528
  MinimumValue: 0
@@ -592,47 +532,66 @@
592
532
  :uuid: 00000014-0000-1000-8000-0026BB765291
593
533
  :format: bool
594
534
  :unit: nil
595
- :permissions:
596
- - securedWrite
597
535
  :properties:
598
536
  - write
599
- :constraints:
537
+ :constraints:
600
538
  - :name: :image_mirroring
601
539
  :description: Image Mirroring
602
540
  :uuid: 0000011F-0000-1000-8000-0026BB765291
603
541
  :format: bool
604
542
  :unit: nil
605
- :permissions:
606
- - securedRead
607
- - securedWrite
608
543
  :properties:
609
544
  - read
610
545
  - write
611
546
  - cnotify
612
- :constraints:
547
+ - uncnotify
548
+ :constraints:
613
549
  - :name: :image_rotation
614
550
  :description: Image Rotation
615
551
  :uuid: 0000011E-0000-1000-8000-0026BB765291
616
552
  :format: float
617
553
  :unit: '"arcdegrees"'
618
- :permissions:
619
- - securedRead
620
- - securedWrite
621
554
  :properties:
622
555
  - read
623
556
  - write
624
557
  - cnotify
558
+ - uncnotify
625
559
  :constraints:
626
560
  MaximumValue: 270
627
561
  MinimumValue: 0
628
562
  StepValue: 90
563
+ - :name: :in_use
564
+ :description: In Use
565
+ :uuid: 000000D2-0000-1000-8000-0026BB765291
566
+ :format: uint8
567
+ :unit: nil
568
+ :properties:
569
+ - read
570
+ - cnotify
571
+ - uncnotify
572
+ :constraints:
573
+ ValidValues:
574
+ '0': Not in use
575
+ '1': In use
576
+ - :name: :is_configured
577
+ :description: Is Configured
578
+ :uuid: 000000D6-0000-1000-8000-0026BB765291
579
+ :format: uint8
580
+ :unit: nil
581
+ :properties:
582
+ - read
583
+ - write
584
+ - cnotify
585
+ - uncnotify
586
+ :constraints:
587
+ ValidValues:
588
+ '0': Not Configured
589
+ '1': Configured
629
590
  - :name: :leak_detected
630
591
  :description: Leak Detected
631
592
  :uuid: 00000070-0000-1000-8000-0026BB765291
632
593
  :format: uint8
633
594
  :unit: nil
634
- :permissions:
635
- - securedRead
636
595
  :properties:
637
596
  - read
638
597
  - cnotify
@@ -646,18 +605,14 @@
646
605
  :uuid: '00000019-0000-1000-8000-0026BB765291'
647
606
  :format: tlv8
648
607
  :unit: nil
649
- :permissions:
650
- - securedWrite
651
608
  :properties:
652
609
  - write
653
- :constraints:
610
+ :constraints:
654
611
  - :name: :lock_current_state
655
612
  :description: Lock Current State
656
613
  :uuid: 0000001D-0000-1000-8000-0026BB765291
657
614
  :format: uint8
658
615
  :unit: nil
659
- :permissions:
660
- - securedRead
661
616
  :properties:
662
617
  - read
663
618
  - cnotify
@@ -673,11 +628,10 @@
673
628
  :uuid: 0000001C-0000-1000-8000-0026BB765291
674
629
  :format: uint8
675
630
  :unit: nil
676
- :permissions:
677
- - securedRead
678
631
  :properties:
679
632
  - read
680
633
  - cnotify
634
+ - uncnotify
681
635
  :constraints:
682
636
  ValidValues:
683
637
  '0': Secured Physically, Interior
@@ -694,26 +648,22 @@
694
648
  :uuid: 0000001A-0000-1000-8000-0026BB765291
695
649
  :format: uint32
696
650
  :unit: '"seconds"'
697
- :permissions:
698
- - securedRead
699
- - securedWrite
700
651
  :properties:
701
652
  - read
702
653
  - write
703
654
  - cnotify
704
- :constraints:
655
+ - uncnotify
656
+ :constraints:
705
657
  - :name: :lock_physical_controls
706
658
  :description: Lock Physical Controls
707
659
  :uuid: 000000A7-0000-1000-8000-0026BB765291
708
660
  :format: uint8
709
661
  :unit: nil
710
- :permissions:
711
- - securedRead
712
- - securedWrite
713
662
  :properties:
714
663
  - read
715
664
  - write
716
665
  - cnotify
666
+ - uncnotify
717
667
  :constraints:
718
668
  ValidValues:
719
669
  '0': Control Lock Disabled
@@ -723,9 +673,6 @@
723
673
  :uuid: 0000001E-0000-1000-8000-0026BB765291
724
674
  :format: uint8
725
675
  :unit: nil
726
- :permissions:
727
- - securedRead
728
- - securedWrite
729
676
  :properties:
730
677
  - read
731
678
  - write
@@ -740,87 +687,72 @@
740
687
  :uuid: 0000001F-0000-1000-8000-0026BB765291
741
688
  :format: tlv8
742
689
  :unit: nil
743
- :permissions:
744
- - securedRead
745
690
  :properties:
746
691
  - read
747
692
  - cnotify
748
- :constraints:
693
+ - uncnotify
694
+ :constraints:
749
695
  - :name: :manufacturer
750
696
  :description: Manufacturer
751
697
  :uuid: 00000020-0000-1000-8000-0026BB765291
752
698
  :format: string
753
699
  :unit: nil
754
- :permissions:
755
- - securedRead
756
700
  :properties:
757
701
  - read
758
- :constraints:
702
+ :constraints:
759
703
  - :name: :model
760
704
  :description: Model
761
705
  :uuid: 00000021-0000-1000-8000-0026BB765291
762
706
  :format: string
763
707
  :unit: nil
764
- :permissions:
765
- - securedRead
766
708
  :properties:
767
709
  - read
768
- :constraints:
710
+ :constraints:
769
711
  - :name: :motion_detected
770
712
  :description: Motion Detected
771
713
  :uuid: 00000022-0000-1000-8000-0026BB765291
772
714
  :format: bool
773
715
  :unit: nil
774
- :permissions:
775
- - securedRead
776
716
  :properties:
777
717
  - read
778
718
  - cnotify
779
719
  - uncnotify
780
- :constraints:
720
+ :constraints:
781
721
  - :name: :mute
782
722
  :description: Mute
783
723
  :uuid: 0000011A-0000-1000-8000-0026BB765291
784
724
  :format: bool
785
725
  :unit: nil
786
- :permissions:
787
- - securedRead
788
- - securedWrite
789
726
  :properties:
790
727
  - read
791
728
  - write
792
729
  - cnotify
793
- :constraints:
730
+ - uncnotify
731
+ :constraints:
794
732
  - :name: :name
795
733
  :description: Name
796
734
  :uuid: 00000023-0000-1000-8000-0026BB765291
797
735
  :format: string
798
736
  :unit: nil
799
- :permissions:
800
- - securedRead
801
737
  :properties:
802
738
  - read
803
- :constraints:
739
+ :constraints:
804
740
  - :name: :night_vision
805
741
  :description: Night Vision
806
742
  :uuid: 0000011B-0000-1000-8000-0026BB765291
807
743
  :format: bool
808
744
  :unit: nil
809
- :permissions:
810
- - securedRead
811
- - securedWrite
812
745
  :properties:
813
746
  - read
814
747
  - write
815
748
  - cnotify
816
- :constraints:
749
+ - uncnotify
750
+ :constraints:
817
751
  - :name: :nitrogen_dioxide_density
818
752
  :description: Nitrogen Dioxide Density
819
753
  :uuid: 000000C4-0000-1000-8000-0026BB765291
820
754
  :format: float
821
755
  :unit: nil
822
- :permissions:
823
- - securedRead
824
756
  :properties:
825
757
  - read
826
758
  - cnotify
@@ -834,20 +766,16 @@
834
766
  :uuid: 00000024-0000-1000-8000-0026BB765291
835
767
  :format: bool
836
768
  :unit: nil
837
- :permissions:
838
- - securedRead
839
769
  :properties:
840
770
  - read
841
771
  - cnotify
842
772
  - uncnotify
843
- :constraints:
773
+ :constraints:
844
774
  - :name: :occupancy_detected
845
775
  :description: Occupancy Detected
846
776
  :uuid: 00000071-0000-1000-8000-0026BB765291
847
777
  :format: uint8
848
778
  :unit: nil
849
- :permissions:
850
- - securedRead
851
779
  :properties:
852
780
  - read
853
781
  - cnotify
@@ -861,45 +789,38 @@
861
789
  :uuid: 00000025-0000-1000-8000-0026BB765291
862
790
  :format: bool
863
791
  :unit: nil
864
- :permissions:
865
- - securedRead
866
- - securedWrite
867
792
  :properties:
868
793
  - read
869
794
  - write
870
795
  - cnotify
871
- :constraints:
796
+ - uncnotify
797
+ :constraints:
872
798
  - :name: :optical_zoom
873
799
  :description: Optical Zoom
874
800
  :uuid: 0000011C-0000-1000-8000-0026BB765291
875
801
  :format: float
876
802
  :unit: nil
877
- :permissions:
878
- - securedRead
879
- - securedWrite
880
803
  :properties:
881
804
  - read
882
805
  - write
883
806
  - cnotify
884
- :constraints:
807
+ - uncnotify
808
+ :constraints:
885
809
  - :name: :outlet_in_use
886
810
  :description: Outlet In Use
887
811
  :uuid: 00000026-0000-1000-8000-0026BB765291
888
812
  :format: bool
889
813
  :unit: nil
890
- :permissions:
891
- - securedRead
892
814
  :properties:
893
815
  - read
894
816
  - cnotify
895
- :constraints:
817
+ - uncnotify
818
+ :constraints:
896
819
  - :name: :ozone_density
897
820
  :description: Ozone Density
898
821
  :uuid: 000000C3-0000-1000-8000-0026BB765291
899
822
  :format: float
900
823
  :unit: nil
901
- :permissions:
902
- - securedRead
903
824
  :properties:
904
825
  - read
905
826
  - cnotify
@@ -913,54 +834,41 @@
913
834
  :uuid: 0000004C-0000-1000-8000-0026BB765291
914
835
  :format: tlv8
915
836
  :unit: nil
916
- :permissions:
917
- - read
918
- - write
919
837
  :properties:
920
838
  - read
921
839
  - write
922
- :constraints:
840
+ :constraints:
923
841
  - :name: :pair_verify
924
842
  :description: Pair Verify
925
843
  :uuid: 0000004E-0000-1000-8000-0026BB765291
926
844
  :format: tlv8
927
845
  :unit: nil
928
- :permissions:
929
- - read
930
- - write
931
846
  :properties:
932
847
  - read
933
848
  - write
934
- :constraints:
849
+ :constraints:
935
850
  - :name: :pairing_features
936
851
  :description: Pairing Features
937
852
  :uuid: 0000004F-0000-1000-8000-0026BB765291
938
853
  :format: uint8
939
854
  :unit: nil
940
- :permissions:
941
- - read
942
855
  :properties:
943
856
  - read
944
- :constraints:
857
+ :constraints:
945
858
  - :name: :pairing_pairings
946
859
  :description: Pairing Pairings
947
860
  :uuid: 00000050-0000-1000-8000-0026BB765291
948
861
  :format: tlv8
949
862
  :unit: nil
950
- :permissions:
951
- - securedRead
952
- - securedWrite
953
863
  :properties:
954
864
  - read
955
865
  - write
956
- :constraints:
866
+ :constraints:
957
867
  - :name: :pm10_density
958
868
  :description: PM10 Density
959
869
  :uuid: 000000C7-0000-1000-8000-0026BB765291
960
870
  :format: float
961
871
  :unit: nil
962
- :permissions:
963
- - securedRead
964
872
  :properties:
965
873
  - read
966
874
  - cnotify
@@ -974,8 +882,6 @@
974
882
  :uuid: 000000C6-0000-1000-8000-0026BB765291
975
883
  :format: float
976
884
  :unit: nil
977
- :permissions:
978
- - securedRead
979
885
  :properties:
980
886
  - read
981
887
  - cnotify
@@ -989,26 +895,38 @@
989
895
  :uuid: 00000072-0000-1000-8000-0026BB765291
990
896
  :format: uint8
991
897
  :unit: nil
992
- :permissions:
993
- - securedRead
994
898
  :properties:
995
899
  - read
996
900
  - cnotify
901
+ - uncnotify
997
902
  :constraints:
998
903
  ValidValues:
999
904
  '0': Decreasing
1000
905
  '1': Increasing
1001
906
  '2': Stopped
907
+ - :name: :program_mode
908
+ :description: Program Mode
909
+ :uuid: 000000D1-0000-1000-8000-0026BB765291
910
+ :format: uint8
911
+ :unit: nil
912
+ :properties:
913
+ - read
914
+ - cnotify
915
+ - uncnotify
916
+ :constraints:
917
+ ValidValues:
918
+ '0': No program scheduled
919
+ '1': Program scheduled
920
+ '2': Program scheduled (Manual Mode)
1002
921
  - :name: :programmable_switch_event
1003
922
  :description: Programmable Switch Event
1004
923
  :uuid: 00000073-0000-1000-8000-0026BB765291
1005
924
  :format: uint8
1006
925
  :unit: nil
1007
- :permissions:
1008
- - securedRead
1009
926
  :properties:
1010
927
  - read
1011
928
  - cnotify
929
+ - uncnotify
1012
930
  :constraints:
1013
931
  ValidValues:
1014
932
  '0': Single Press
@@ -1018,14 +936,12 @@
1018
936
  :description: Relative Humidity Dehumidifier Threshold
1019
937
  :uuid: 000000C9-0000-1000-8000-0026BB765291
1020
938
  :format: float
1021
- :unit: nil
1022
- :permissions:
1023
- - securedRead
1024
- - securedWrite
939
+ :unit: '"percentage"'
1025
940
  :properties:
1026
941
  - read
1027
942
  - write
1028
943
  - cnotify
944
+ - uncnotify
1029
945
  :constraints:
1030
946
  MaximumValue: 100
1031
947
  MinimumValue: 0
@@ -1034,25 +950,34 @@
1034
950
  :description: Relative Humidity Humidifier Threshold
1035
951
  :uuid: 000000CA-0000-1000-8000-0026BB765291
1036
952
  :format: float
1037
- :unit: nil
1038
- :permissions:
1039
- - securedRead
1040
- - securedWrite
953
+ :unit: '"percentage"'
1041
954
  :properties:
1042
955
  - read
1043
956
  - write
1044
957
  - cnotify
958
+ - uncnotify
1045
959
  :constraints:
1046
960
  MaximumValue: 100
1047
961
  MinimumValue: 0
1048
962
  StepValue: 1
963
+ - :name: :remaining_duration
964
+ :description: Remaining Duration
965
+ :uuid: 000000D4-0000-1000-8000-0026BB765291
966
+ :format: uint32
967
+ :unit: nil
968
+ :properties:
969
+ - read
970
+ - cnotify
971
+ - uncnotify
972
+ :constraints:
973
+ MaximumValue: 3600
974
+ MinimumValue: 0
975
+ StepValue: 1
1049
976
  - :name: :reset_filter_indication
1050
977
  :description: Reset Filter Indication
1051
978
  :uuid: 000000AD-0000-1000-8000-0026BB765291
1052
979
  :format: uint8
1053
980
  :unit: nil
1054
- :permissions:
1055
- - securedWrite
1056
981
  :properties:
1057
982
  - write
1058
983
  :constraints:
@@ -1064,13 +989,11 @@
1064
989
  :uuid: '00000028-0000-1000-8000-0026BB765291'
1065
990
  :format: int32
1066
991
  :unit: nil
1067
- :permissions:
1068
- - securedRead
1069
- - securedWrite
1070
992
  :properties:
1071
993
  - read
1072
994
  - write
1073
995
  - cnotify
996
+ - uncnotify
1074
997
  :constraints:
1075
998
  ValidValues:
1076
999
  '0': Clockwise
@@ -1080,13 +1003,11 @@
1080
1003
  :uuid: '00000029-0000-1000-8000-0026BB765291'
1081
1004
  :format: float
1082
1005
  :unit: '"percentage"'
1083
- :permissions:
1084
- - securedRead
1085
- - securedWrite
1086
1006
  :properties:
1087
1007
  - read
1088
1008
  - write
1089
1009
  - cnotify
1010
+ - uncnotify
1090
1011
  :constraints:
1091
1012
  MaximumValue: 100
1092
1013
  MinimumValue: 0
@@ -1096,13 +1017,11 @@
1096
1017
  :uuid: 0000002F-0000-1000-8000-0026BB765291
1097
1018
  :format: float
1098
1019
  :unit: '"percentage"'
1099
- :permissions:
1100
- - securedRead
1101
- - securedWrite
1102
1020
  :properties:
1103
1021
  - read
1104
1022
  - write
1105
1023
  - cnotify
1024
+ - uncnotify
1106
1025
  :constraints:
1107
1026
  MaximumValue: 100
1108
1027
  MinimumValue: 0
@@ -1112,11 +1031,10 @@
1112
1031
  :uuid: '0000008E-0000-1000-8000-0026BB765291'
1113
1032
  :format: uint8
1114
1033
  :unit: nil
1115
- :permissions:
1116
- - securedRead
1117
1034
  :properties:
1118
1035
  - read
1119
1036
  - cnotify
1037
+ - uncnotify
1120
1038
  :constraints:
1121
1039
  MaximumValue: 1
1122
1040
  MinimumValue: 0
@@ -1126,8 +1044,6 @@
1126
1044
  :uuid: 00000066-0000-1000-8000-0026BB765291
1127
1045
  :format: uint8
1128
1046
  :unit: nil
1129
- :permissions:
1130
- - securedRead
1131
1047
  :properties:
1132
1048
  - read
1133
1049
  - cnotify
@@ -1144,13 +1060,11 @@
1144
1060
  :uuid: 00000067-0000-1000-8000-0026BB765291
1145
1061
  :format: uint8
1146
1062
  :unit: nil
1147
- :permissions:
1148
- - securedRead
1149
- - securedWrite
1150
1063
  :properties:
1151
1064
  - read
1152
1065
  - write
1153
1066
  - cnotify
1067
+ - uncnotify
1154
1068
  :constraints:
1155
1069
  ValidValues:
1156
1070
  '0': Stay Arm
@@ -1162,20 +1076,15 @@
1162
1076
  :uuid: 00000117-0000-1000-8000-0026BB765291
1163
1077
  :format: tlv8
1164
1078
  :unit: nil
1165
- :permissions:
1166
- - securedRead
1167
- - securedWrite
1168
1079
  :properties:
1169
1080
  - read
1170
1081
  - write
1171
- :constraints:
1082
+ :constraints:
1172
1083
  - :name: :serial_number
1173
1084
  :description: Serial Number
1174
1085
  :uuid: 00000030-0000-1000-8000-0026BB765291
1175
1086
  :format: string
1176
1087
  :unit: nil
1177
- :permissions:
1178
- - securedRead
1179
1088
  :properties:
1180
1089
  - read
1181
1090
  :constraints:
@@ -1185,8 +1094,6 @@
1185
1094
  :uuid: 000000CB-0000-1000-8000-0026BB765291
1186
1095
  :format: uint8
1187
1096
  :unit: nil
1188
- :permissions:
1189
- - securedRead
1190
1097
  :properties:
1191
1098
  - read
1192
1099
  :constraints:
@@ -1198,33 +1105,40 @@
1198
1105
  :uuid: 000000CD-0000-1000-8000-0026BB765291
1199
1106
  :format: uint8
1200
1107
  :unit: nil
1201
- :permissions:
1202
- - securedRead
1203
1108
  :properties:
1204
1109
  - read
1205
1110
  :constraints:
1206
1111
  ValidValues:
1207
1112
  '0': Dots
1208
1113
  '1': Arabic Numerals
1114
+ - :name: :set_duration
1115
+ :description: Set Duration
1116
+ :uuid: 000000D3-0000-1000-8000-0026BB765291
1117
+ :format: uint32
1118
+ :unit: nil
1119
+ :properties:
1120
+ - read
1121
+ - write
1122
+ - cnotify
1123
+ - uncnotify
1124
+ :constraints:
1125
+ MaximumValue: 3600
1126
+ MinimumValue: 0
1127
+ StepValue: 1
1209
1128
  - :name: :setup_endpoints
1210
1129
  :description: Setup Endpoints
1211
1130
  :uuid: '00000118-0000-1000-8000-0026BB765291'
1212
1131
  :format: tlv8
1213
1132
  :unit: nil
1214
- :permissions:
1215
- - securedRead
1216
- - securedWrite
1217
1133
  :properties:
1218
1134
  - read
1219
1135
  - write
1220
- :constraints:
1136
+ :constraints:
1221
1137
  - :name: :slat_type
1222
1138
  :description: Slat Type
1223
1139
  :uuid: 000000C0-0000-1000-8000-0026BB765291
1224
1140
  :format: uint8
1225
1141
  :unit: nil
1226
- :permissions:
1227
- - securedRead
1228
1142
  :properties:
1229
1143
  - read
1230
1144
  :constraints:
@@ -1236,8 +1150,6 @@
1236
1150
  :uuid: 00000076-0000-1000-8000-0026BB765291
1237
1151
  :format: uint8
1238
1152
  :unit: nil
1239
- :permissions:
1240
- - securedRead
1241
1153
  :properties:
1242
1154
  - read
1243
1155
  - cnotify
@@ -1251,19 +1163,16 @@
1251
1163
  :uuid: 00000075-0000-1000-8000-0026BB765291
1252
1164
  :format: bool
1253
1165
  :unit: nil
1254
- :permissions:
1255
- - securedRead
1256
1166
  :properties:
1257
1167
  - read
1258
1168
  - cnotify
1259
- :constraints:
1169
+ - uncnotify
1170
+ :constraints:
1260
1171
  - :name: :status_fault
1261
1172
  :description: Status Fault
1262
1173
  :uuid: 00000077-0000-1000-8000-0026BB765291
1263
1174
  :format: uint8
1264
1175
  :unit: nil
1265
- :permissions:
1266
- - securedRead
1267
1176
  :properties:
1268
1177
  - read
1269
1178
  - cnotify
@@ -1277,8 +1186,6 @@
1277
1186
  :uuid: '00000078-0000-1000-8000-0026BB765291'
1278
1187
  :format: uint8
1279
1188
  :unit: nil
1280
- :permissions:
1281
- - securedRead
1282
1189
  :properties:
1283
1190
  - read
1284
1191
  - cnotify
@@ -1292,8 +1199,6 @@
1292
1199
  :uuid: '00000079-0000-1000-8000-0026BB765291'
1293
1200
  :format: uint8
1294
1201
  :unit: nil
1295
- :permissions:
1296
- - securedRead
1297
1202
  :properties:
1298
1203
  - read
1299
1204
  - cnotify
@@ -1307,8 +1212,6 @@
1307
1212
  :uuid: 0000007A-0000-1000-8000-0026BB765291
1308
1213
  :format: uint8
1309
1214
  :unit: nil
1310
- :permissions:
1311
- - securedRead
1312
1215
  :properties:
1313
1216
  - read
1314
1217
  - cnotify
@@ -1322,19 +1225,16 @@
1322
1225
  :uuid: 00000120-0000-1000-8000-0026BB765291
1323
1226
  :format: tlv8
1324
1227
  :unit: nil
1325
- :permissions:
1326
- - securedRead
1327
1228
  :properties:
1328
1229
  - read
1329
1230
  - cnotify
1330
- :constraints:
1231
+ - uncnotify
1232
+ :constraints:
1331
1233
  - :name: :sulphur_dioxide_density
1332
1234
  :description: Sulphur Dioxide Density
1333
1235
  :uuid: 000000C5-0000-1000-8000-0026BB765291
1334
1236
  :format: float
1335
1237
  :unit: nil
1336
- :permissions:
1337
- - securedRead
1338
1238
  :properties:
1339
1239
  - read
1340
1240
  - cnotify
@@ -1348,43 +1248,35 @@
1348
1248
  :uuid: 00000115-0000-1000-8000-0026BB765291
1349
1249
  :format: tlv8
1350
1250
  :unit: nil
1351
- :permissions:
1352
- - securedRead
1353
1251
  :properties:
1354
1252
  - read
1355
- :constraints:
1253
+ :constraints:
1356
1254
  - :name: :supported_rtp_configuration
1357
1255
  :description: Supported RTP Configuration
1358
1256
  :uuid: 00000116-0000-1000-8000-0026BB765291
1359
1257
  :format: tlv8
1360
1258
  :unit: nil
1361
- :permissions:
1362
- - securedRead
1363
1259
  :properties:
1364
1260
  - read
1365
- :constraints:
1261
+ :constraints:
1366
1262
  - :name: :supported_video_stream_configuration
1367
1263
  :description: Supported Video Stream Configuration
1368
1264
  :uuid: 00000114-0000-1000-8000-0026BB765291
1369
1265
  :format: tlv8
1370
1266
  :unit: nil
1371
- :permissions:
1372
- - securedRead
1373
1267
  :properties:
1374
1268
  - read
1375
- :constraints:
1269
+ :constraints:
1376
1270
  - :name: :swing_mode
1377
1271
  :description: Swing Mode
1378
1272
  :uuid: 000000B6-0000-1000-8000-0026BB765291
1379
1273
  :format: uint8
1380
1274
  :unit: nil
1381
- :permissions:
1382
- - securedRead
1383
- - securedWrite
1384
1275
  :properties:
1385
1276
  - read
1386
1277
  - write
1387
1278
  - cnotify
1279
+ - uncnotify
1388
1280
  :constraints:
1389
1281
  ValidValues:
1390
1282
  '0': Swing Disabled
@@ -1394,13 +1286,11 @@
1394
1286
  :uuid: 000000A8-0000-1000-8000-0026BB765291
1395
1287
  :format: uint8
1396
1288
  :unit: nil
1397
- :permissions:
1398
- - securedRead
1399
- - securedWrite
1400
1289
  :properties:
1401
1290
  - read
1402
1291
  - write
1403
1292
  - cnotify
1293
+ - uncnotify
1404
1294
  :constraints:
1405
1295
  ValidValues:
1406
1296
  '0': Manual
@@ -1410,13 +1300,11 @@
1410
1300
  :uuid: 000000AE-0000-1000-8000-0026BB765291
1411
1301
  :format: uint8
1412
1302
  :unit: nil
1413
- :permissions:
1414
- - securedRead
1415
- - securedWrite
1416
1303
  :properties:
1417
1304
  - read
1418
1305
  - write
1419
1306
  - cnotify
1307
+ - uncnotify
1420
1308
  :constraints:
1421
1309
  ValidValues:
1422
1310
  '0': Excellent
@@ -1427,13 +1315,11 @@
1427
1315
  :uuid: 00000032-0000-1000-8000-0026BB765291
1428
1316
  :format: uint8
1429
1317
  :unit: nil
1430
- :permissions:
1431
- - securedRead
1432
- - securedWrite
1433
1318
  :properties:
1434
1319
  - read
1435
1320
  - write
1436
1321
  - cnotify
1322
+ - uncnotify
1437
1323
  :constraints:
1438
1324
  ValidValues:
1439
1325
  '0': Open
@@ -1443,13 +1329,11 @@
1443
1329
  :uuid: 000000BF-0000-1000-8000-0026BB765291
1444
1330
  :format: uint8
1445
1331
  :unit: nil
1446
- :permissions:
1447
- - securedRead
1448
- - securedWrite
1449
1332
  :properties:
1450
1333
  - read
1451
1334
  - write
1452
1335
  - cnotify
1336
+ - uncnotify
1453
1337
  :constraints:
1454
1338
  ValidValues:
1455
1339
  '0': Manual
@@ -1459,13 +1343,11 @@
1459
1343
  :uuid: 000000B2-0000-1000-8000-0026BB765291
1460
1344
  :format: uint8
1461
1345
  :unit: nil
1462
- :permissions:
1463
- - securedRead
1464
- - securedWrite
1465
1346
  :properties:
1466
1347
  - read
1467
1348
  - write
1468
1349
  - cnotify
1350
+ - uncnotify
1469
1351
  :constraints:
1470
1352
  ValidValues:
1471
1353
  '0': Auto
@@ -1476,13 +1358,11 @@
1476
1358
  :uuid: 00000033-0000-1000-8000-0026BB765291
1477
1359
  :format: uint8
1478
1360
  :unit: nil
1479
- :permissions:
1480
- - securedRead
1481
- - securedWrite
1482
1361
  :properties:
1483
1362
  - read
1484
1363
  - write
1485
1364
  - cnotify
1365
+ - uncnotify
1486
1366
  :constraints:
1487
1367
  ValidValues:
1488
1368
  '0': 'Off'
@@ -1494,13 +1374,11 @@
1494
1374
  :uuid: 0000007B-0000-1000-8000-0026BB765291
1495
1375
  :format: int32
1496
1376
  :unit: '"arcdegrees"'
1497
- :permissions:
1498
- - securedRead
1499
- - securedWrite
1500
1377
  :properties:
1501
1378
  - read
1502
1379
  - write
1503
1380
  - cnotify
1381
+ - uncnotify
1504
1382
  :constraints:
1505
1383
  MaximumValue: 90
1506
1384
  MinimumValue: -90
@@ -1510,13 +1388,11 @@
1510
1388
  :uuid: 000000B4-0000-1000-8000-0026BB765291
1511
1389
  :format: uint8
1512
1390
  :unit: nil
1513
- :permissions:
1514
- - securedRead
1515
- - securedWrite
1516
1391
  :properties:
1517
1392
  - read
1518
1393
  - write
1519
1394
  - cnotify
1395
+ - uncnotify
1520
1396
  :constraints:
1521
1397
  ValidValues:
1522
1398
  '0': Humidifier or Dehumidifier
@@ -1527,13 +1403,11 @@
1527
1403
  :uuid: 0000007C-0000-1000-8000-0026BB765291
1528
1404
  :format: uint8
1529
1405
  :unit: '"percentage"'
1530
- :permissions:
1531
- - securedRead
1532
- - securedWrite
1533
1406
  :properties:
1534
1407
  - read
1535
1408
  - write
1536
1409
  - cnotify
1410
+ - uncnotify
1537
1411
  :constraints:
1538
1412
  MaximumValue: 100
1539
1413
  MinimumValue: 0
@@ -1543,13 +1417,11 @@
1543
1417
  :uuid: 00000034-0000-1000-8000-0026BB765291
1544
1418
  :format: float
1545
1419
  :unit: '"percentage"'
1546
- :permissions:
1547
- - securedRead
1548
- - securedWrite
1549
1420
  :properties:
1550
1421
  - read
1551
1422
  - write
1552
1423
  - cnotify
1424
+ - uncnotify
1553
1425
  :constraints:
1554
1426
  MaximumValue: 100
1555
1427
  MinimumValue: 0
@@ -1559,13 +1431,11 @@
1559
1431
  :uuid: 000000BE-0000-1000-8000-0026BB765291
1560
1432
  :format: uint8
1561
1433
  :unit: nil
1562
- :permissions:
1563
- - securedRead
1564
- - securedWrite
1565
1434
  :properties:
1566
1435
  - read
1567
1436
  - write
1568
1437
  - cnotify
1438
+ - uncnotify
1569
1439
  :constraints:
1570
1440
  ValidValues:
1571
1441
  '0': Manual
@@ -1575,13 +1445,11 @@
1575
1445
  :uuid: 00000035-0000-1000-8000-0026BB765291
1576
1446
  :format: float
1577
1447
  :unit: '"celsius"'
1578
- :permissions:
1579
- - securedRead
1580
- - securedWrite
1581
1448
  :properties:
1582
1449
  - read
1583
1450
  - write
1584
1451
  - cnotify
1452
+ - uncnotify
1585
1453
  :constraints:
1586
1454
  MaximumValue: 38
1587
1455
  MinimumValue: 10
@@ -1591,13 +1459,11 @@
1591
1459
  :uuid: 000000C2-0000-1000-8000-0026BB765291
1592
1460
  :format: int32
1593
1461
  :unit: '"arcdegrees"'
1594
- :permissions:
1595
- - securedRead
1596
- - securedWrite
1597
1462
  :properties:
1598
1463
  - read
1599
1464
  - write
1600
1465
  - cnotify
1466
+ - uncnotify
1601
1467
  :constraints:
1602
1468
  MaximumValue: 90
1603
1469
  MinimumValue: -90
@@ -1607,13 +1473,11 @@
1607
1473
  :uuid: 0000007D-0000-1000-8000-0026BB765291
1608
1474
  :format: int32
1609
1475
  :unit: '"arcdegrees"'
1610
- :permissions:
1611
- - securedRead
1612
- - securedWrite
1613
1476
  :properties:
1614
1477
  - read
1615
1478
  - write
1616
1479
  - cnotify
1480
+ - uncnotify
1617
1481
  :constraints:
1618
1482
  MaximumValue: 90
1619
1483
  MinimumValue: -90
@@ -1623,27 +1487,39 @@
1623
1487
  :uuid: 00000036-0000-1000-8000-0026BB765291
1624
1488
  :format: uint8
1625
1489
  :unit: nil
1626
- :permissions:
1627
- - securedRead
1628
- - securedWrite
1629
1490
  :properties:
1630
1491
  - read
1631
1492
  - write
1632
1493
  - cnotify
1494
+ - uncnotify
1633
1495
  :constraints:
1634
1496
  ValidValues:
1635
1497
  '0': Celsius
1636
1498
  '1': Fahrenheit
1499
+ - :name: :valve_type
1500
+ :description: Valve Type
1501
+ :uuid: 000000D5-0000-1000-8000-0026BB765291
1502
+ :format: uint8
1503
+ :unit: nil
1504
+ :properties:
1505
+ - read
1506
+ - cnotify
1507
+ - uncnotify
1508
+ :constraints:
1509
+ ValidValues:
1510
+ '0': Generic valve
1511
+ '1': Irrigation
1512
+ '2': Shower head
1513
+ '3': Water faucet
1637
1514
  - :name: :version
1638
1515
  :description: Version
1639
1516
  :uuid: 00000037-0000-1000-8000-0026BB765291
1640
1517
  :format: string
1641
1518
  :unit: nil
1642
- :permissions:
1643
- - securedRead
1644
1519
  :properties:
1645
1520
  - read
1646
1521
  - cnotify
1522
+ - uncnotify
1647
1523
  :constraints:
1648
1524
  MaximumLength: 64
1649
1525
  - :name: :voc_density
@@ -1651,8 +1527,6 @@
1651
1527
  :uuid: 000000C8-0000-1000-8000-0026BB765291
1652
1528
  :format: float
1653
1529
  :unit: nil
1654
- :permissions:
1655
- - securedRead
1656
1530
  :properties:
1657
1531
  - read
1658
1532
  - cnotify
@@ -1666,13 +1540,11 @@
1666
1540
  :uuid: '00000119-0000-1000-8000-0026BB765291'
1667
1541
  :format: uint8
1668
1542
  :unit: '"percentage"'
1669
- :permissions:
1670
- - securedRead
1671
- - securedWrite
1672
1543
  :properties:
1673
1544
  - read
1674
1545
  - write
1675
1546
  - cnotify
1547
+ - uncnotify
1676
1548
  :constraints:
1677
1549
  MaximumValue: 100
1678
1550
  MinimumValue: 0
@@ -1681,12 +1553,11 @@
1681
1553
  :description: Water Level
1682
1554
  :uuid: 000000B5-0000-1000-8000-0026BB765291
1683
1555
  :format: float
1684
- :unit: nil
1685
- :permissions:
1686
- - securedRead
1556
+ :unit: '"percentage"'
1687
1557
  :properties:
1688
1558
  - read
1689
1559
  - cnotify
1560
+ - uncnotify
1690
1561
  :constraints:
1691
1562
  MaximumValue: 100
1692
1563
  MinimumValue: 0