ruby_home 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.hound.yml +2 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +9 -0
  6. data/.travis.yml +21 -0
  7. data/Gemfile +6 -0
  8. data/LICENSE +21 -0
  9. data/README.md +36 -0
  10. data/Rakefile +7 -0
  11. data/bin/console +14 -0
  12. data/bin/rubyhome +16 -0
  13. data/bin/setup +8 -0
  14. data/lib/ruby_home.rb +6 -0
  15. data/lib/ruby_home/accessory_info.rb +99 -0
  16. data/lib/ruby_home/broadcast.rb +31 -0
  17. data/lib/ruby_home/config/characteristics.yml +1692 -0
  18. data/lib/ruby_home/config/services.yml +416 -0
  19. data/lib/ruby_home/device_id.rb +30 -0
  20. data/lib/ruby_home/dns/service.rb +44 -0
  21. data/lib/ruby_home/dns/text_record.rb +100 -0
  22. data/lib/ruby_home/factories/accessory_factory.rb +78 -0
  23. data/lib/ruby_home/factories/characteristic_factory.rb +57 -0
  24. data/lib/ruby_home/factories/templates/characteristic_template.rb +43 -0
  25. data/lib/ruby_home/factories/templates/service_template.rb +50 -0
  26. data/lib/ruby_home/hap/accessory.rb +26 -0
  27. data/lib/ruby_home/hap/characteristic.rb +60 -0
  28. data/lib/ruby_home/hap/hex_pad.rb +13 -0
  29. data/lib/ruby_home/hap/hkdf_encryption.rb +34 -0
  30. data/lib/ruby_home/hap/http_decryption.rb +58 -0
  31. data/lib/ruby_home/hap/http_encryption.rb +43 -0
  32. data/lib/ruby_home/hap/service.rb +38 -0
  33. data/lib/ruby_home/http/application.rb +28 -0
  34. data/lib/ruby_home/http/cache.rb +30 -0
  35. data/lib/ruby_home/http/controllers/accessories_controller.rb +19 -0
  36. data/lib/ruby_home/http/controllers/application_controller.rb +37 -0
  37. data/lib/ruby_home/http/controllers/characteristics_controller.rb +49 -0
  38. data/lib/ruby_home/http/controllers/pair_setups_controller.rb +146 -0
  39. data/lib/ruby_home/http/controllers/pair_verifies_controller.rb +81 -0
  40. data/lib/ruby_home/http/controllers/pairings_controller.rb +38 -0
  41. data/lib/ruby_home/http/hap_request.rb +56 -0
  42. data/lib/ruby_home/http/hap_response.rb +57 -0
  43. data/lib/ruby_home/http/hap_server.rb +65 -0
  44. data/lib/ruby_home/http/serializers/accessory_serializer.rb +21 -0
  45. data/lib/ruby_home/http/serializers/characteristic_serializer.rb +26 -0
  46. data/lib/ruby_home/http/serializers/characteristic_value_serializer.rb +21 -0
  47. data/lib/ruby_home/http/serializers/object_serializer.rb +39 -0
  48. data/lib/ruby_home/http/serializers/service_serializer.rb +20 -0
  49. data/lib/ruby_home/identifier_cache.rb +59 -0
  50. data/lib/ruby_home/rack/handler/hap_server.rb +26 -0
  51. data/lib/ruby_home/tlv.rb +83 -0
  52. data/lib/ruby_home/tlv/bytes.rb +19 -0
  53. data/lib/ruby_home/tlv/int.rb +15 -0
  54. data/lib/ruby_home/tlv/utf8.rb +18 -0
  55. data/lib/ruby_home/version.rb +3 -0
  56. data/rubyhome.gemspec +43 -0
  57. data/sbin/characteristic_generator.rb +83 -0
  58. data/sbin/service_generator.rb +69 -0
  59. metadata +352 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6ee1bab57c905588f1ea3b558c4a303a2935321cdb8e95e04416ff5812c40727
4
+ data.tar.gz: 8383552d3c59b1360ba854b5cada8159a98dac180fa137a4be907057ca2c84e6
5
+ SHA512:
6
+ metadata.gz: 1a3be890c661e77d1c69348b04520b8426e6a7861d517880d99dd7d7619bf46eab47d433516139bb53af887c7429a007495e199877b0f58f3e4b0a5099ea1010
7
+ data.tar.gz: ef7aec5965acaf52f8da6084a63de3d0e51d1ef9df4e8049d7dc8940d497b926988296f6e9bf014e8e414a26716f926e227e704c0c38e4de1fa53166c20219be
data/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ .byebug_history
2
+ .rspec_status
3
+ /.bundle/
4
+ /.yardoc
5
+ /_yardoc/
6
+ /coverage/
7
+ /doc/
8
+ /pkg/
9
+ /spec/reports/
10
+ /tmp/
11
+ Gemfile.lock
12
+ accessory_info.yml
13
+ identifier_cache.yml
data/.hound.yml ADDED
@@ -0,0 +1,2 @@
1
+ ruby:
2
+ config_file: .rubocop.yml
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,9 @@
1
+ Style:
2
+ TrailingCommaInLiteral:
3
+ Enabled: false
4
+ Documentation:
5
+ Enabled: false
6
+ FrozenStringLiteralComment:
7
+ Enabled: false
8
+ IndentationConsistency:
9
+ AllowProtectedAndPrivateMethodsBeIndented: true
data/.travis.yml ADDED
@@ -0,0 +1,21 @@
1
+ language: ruby
2
+ cache: bundler
3
+
4
+ before_install:
5
+ - sudo apt-get -qq update
6
+ - sudo apt-get install -y libavahi-compat-libdnssd-dev
7
+ - gem update --system
8
+ - gem --version
9
+ - gem install bundler -v 1.16.1
10
+ - bundle --version
11
+ - bundle
12
+
13
+ rvm:
14
+ - 2.5.0
15
+ - ruby-head
16
+
17
+ matrix:
18
+ fast_finish: true
19
+
20
+ notifications:
21
+ email: false
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ git_source(:github) {|repo_name| 'https://github.com/#{repo_name}' }
4
+
5
+ # Specify your gem's dependencies in ruby_home.gemspec
6
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2018 Karl Entwistle
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,36 @@
1
+ [![Maintainability](https://api.codeclimate.com/v1/badges/a13f62c597b3746a7ef5/maintainability)](https://codeclimate.com/github/karlentwistle/ruby_home/maintainability)
2
+ [![Build Status](https://travis-ci.org/karlentwistle/ruby_home.svg?branch=master)](https://travis-ci.org/karlentwistle/ruby_home)
3
+
4
+ # Ruby Home
5
+
6
+ RubyHome is a lightweight service you can run on your home network that emulates the iOS HomeKit API. It supports community contributed plugins, which are modules that provide a bridge from HomeKit to various 3rd-party APIs provided by manufacturers of smart home devices.
7
+
8
+ ## Installation
9
+
10
+ Add this line to your application's Gemfile:
11
+
12
+ ```ruby
13
+ gem 'ruby_home'
14
+ ```
15
+
16
+ And then execute:
17
+
18
+ $ bundle
19
+
20
+ Or install it yourself as:
21
+
22
+ $ gem install ruby_home
23
+
24
+ ## Usage
25
+
26
+ TODO: Write usage instructions here
27
+
28
+ ## Development
29
+
30
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
31
+
32
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
33
+
34
+ ## Contributing
35
+
36
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/ruby_home.
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+ require_relative 'lib/ruby_home'
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'ruby_home'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require 'pry'
11
+ # Pry.start
12
+
13
+ require 'irb'
14
+ IRB.start(__FILE__)
data/bin/rubyhome ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/ruby_home'
4
+
5
+ accessory_information = RubyHome::AccessoryFactory.create(:accessory_information)
6
+ fan = RubyHome::AccessoryFactory.create(:fan)
7
+
8
+ fan.characteristic(:on).on(:updated) do |new_value|
9
+ if new_value == 1
10
+ puts "Fan switched on"
11
+ else
12
+ puts "Fan switched off"
13
+ end
14
+ end
15
+
16
+ RubyHome::Broadcast.run
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/lib/ruby_home.rb ADDED
@@ -0,0 +1,6 @@
1
+ require_relative 'ruby_home/version'
2
+ require_relative 'ruby_home/broadcast'
3
+ require_relative 'ruby_home/identifier_cache'
4
+ Dir[File.dirname(__FILE__) + '/ruby_home/factories/*.rb'].each { |file| require file }
5
+
6
+ module RubyHome; end
@@ -0,0 +1,99 @@
1
+ require 'ed25519'
2
+ require 'yaml/store'
3
+ require_relative 'device_id'
4
+
5
+ module RubyHome
6
+ class AccessoryInfo
7
+ PERSISTABLE = [ :device_id, :paired_clients, :password, :signature_key, :username ].freeze
8
+
9
+ def initialize(store)
10
+ @store = store
11
+
12
+ read
13
+
14
+ @device_id ||= DeviceID.generate
15
+ @paired_clients ||= []
16
+ @signature_key ||= Ed25519::SigningKey.generate.to_bytes.unpack1('H*')
17
+ end
18
+
19
+ attr_reader :store
20
+ attr_reader :device_id, :signature_key, :paired_clients, :password, :username
21
+ attr_writer :device_id, :paired_clients, :password, :username
22
+
23
+ def signature_key=(signature_key)
24
+ @signing_key = nil
25
+ @signature_key = signature_key
26
+ end
27
+
28
+ def signing_key
29
+ @signing_key ||= Ed25519::SigningKey.new([signature_key].pack('H*'))
30
+ end
31
+
32
+ def username
33
+ 'Pair-Setup'
34
+ end
35
+
36
+ def password
37
+ '031-45-154'
38
+ end
39
+
40
+ def to_hash
41
+ Hash[*PERSISTABLE.flat_map { |attribute| [attribute, send(attribute)] }]
42
+ end
43
+
44
+ def read
45
+ store.transaction(true) do
46
+ store.fetch(:accessory_info, {}).each do |key, value|
47
+ send("#{key}=", value)
48
+ end
49
+ end
50
+ end
51
+
52
+ def save
53
+ store.transaction do
54
+ store[:accessory_info] = to_hash
55
+ end
56
+ end
57
+
58
+ def self.pstore=(new_storage)
59
+ @@accessory_info = AccessoryInfo.new(new_storage)
60
+ end
61
+
62
+ @@accessory_info = AccessoryInfo.new(YAML::Store.new 'accessory_info.yml')
63
+
64
+ class << self
65
+ PERSISTABLE.each do |attribute|
66
+ define_method("#{attribute}=") do |value, save=true|
67
+ @@accessory_info.send("#{attribute}=", value)
68
+ save
69
+ end
70
+
71
+ define_method(attribute) do
72
+ @@accessory_info.send(attribute)
73
+ end
74
+ end
75
+
76
+ def save
77
+ @@accessory_info.save
78
+ end
79
+
80
+ def signing_key
81
+ @@accessory_info.signing_key
82
+ end
83
+
84
+ def paired?
85
+ @@accessory_info.paired_clients.any?
86
+ end
87
+
88
+ def add_paired_client(admin: false, identifier: , public_key: )
89
+ @@accessory_info.paired_clients << { admin: admin, identifier: identifier, public_key: public_key }
90
+ save
91
+ end
92
+
93
+ def remove_paired_client(identifier)
94
+ @@accessory_info.paired_clients.delete_if { |h| h[:identifier] == identifier }
95
+ save
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,31 @@
1
+ require_relative 'dns/service'
2
+ require_relative 'http/application'
3
+
4
+ Thread.abort_on_exception = true
5
+
6
+ module RubyHome
7
+ class Broadcast
8
+ def self.run
9
+ threads = []
10
+ threads << Thread.new do
11
+ dns_service
12
+ end
13
+ threads.each(&:join)
14
+
15
+ http_server.run!
16
+ end
17
+
18
+ def self.dns_service
19
+ @_dns_service ||= begin
20
+ service = RubyHome::DNS::Service.new(http_server.port)
21
+
22
+ service.register
23
+ service
24
+ end
25
+ end
26
+
27
+ def self.http_server
28
+ @_http_server ||= RubyHome::HTTP::Application
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,1692 @@
1
+ ---
2
+ - :name: :accessory_flags
3
+ :description: Accessory Flags
4
+ :uuid: 000000A6-0000-1000-8000-0026BB765291
5
+ :format: uint32
6
+ :unit: nil
7
+ :permissions:
8
+ - securedRead
9
+ :properties:
10
+ - read
11
+ - cnotify
12
+ - uncnotify
13
+ :constraints:
14
+ ValidBits:
15
+ '0': Requires Additional Setup
16
+ - :name: :active
17
+ :description: Active
18
+ :uuid: 000000B0-0000-1000-8000-0026BB765291
19
+ :format: uint8
20
+ :unit: nil
21
+ :permissions:
22
+ - securedRead
23
+ - securedWrite
24
+ :properties:
25
+ - read
26
+ - write
27
+ - cnotify
28
+ :constraints:
29
+ ValidValues:
30
+ '0': Inactive
31
+ '1': Active
32
+ - :name: :administrator_only_access
33
+ :description: Administrator Only Access
34
+ :uuid: 00000001-0000-1000-8000-0026BB765291
35
+ :format: bool
36
+ :unit: nil
37
+ :permissions:
38
+ - securedRead
39
+ - securedWrite
40
+ :properties:
41
+ - read
42
+ - write
43
+ - cnotify
44
+ :constraints:
45
+ - :name: :air_particulate_density
46
+ :description: Air Particulate Density
47
+ :uuid: 00000064-0000-1000-8000-0026BB765291
48
+ :format: float
49
+ :unit: nil
50
+ :permissions:
51
+ - securedRead
52
+ :properties:
53
+ - read
54
+ - cnotify
55
+ :constraints:
56
+ MaximumValue: 1000
57
+ MinimumValue: 0
58
+ StepValue: 1
59
+ - :name: :air_particulate_size
60
+ :description: Air Particulate Size
61
+ :uuid: 00000065-0000-1000-8000-0026BB765291
62
+ :format: uint8
63
+ :unit: nil
64
+ :permissions:
65
+ - securedRead
66
+ :properties:
67
+ - read
68
+ - cnotify
69
+ :constraints:
70
+ ValidValues:
71
+ '0': 2.5 μm
72
+ '1': 10 μm
73
+ - :name: :air_quality
74
+ :description: Air Quality
75
+ :uuid: '00000095-0000-1000-8000-0026BB765291'
76
+ :format: uint8
77
+ :unit: nil
78
+ :permissions:
79
+ - securedRead
80
+ :properties:
81
+ - read
82
+ - cnotify
83
+ - uncnotify
84
+ :constraints:
85
+ ValidValues:
86
+ '0': Unknown
87
+ '1': Excellent
88
+ '2': Good
89
+ '3': Fair
90
+ '4': Inferior
91
+ '5': Poor
92
+ - :name: :audio_feedback
93
+ :description: Audio Feedback
94
+ :uuid: 00000005-0000-1000-8000-0026BB765291
95
+ :format: bool
96
+ :unit: nil
97
+ :permissions:
98
+ - securedRead
99
+ - securedWrite
100
+ :properties:
101
+ - read
102
+ - write
103
+ - cnotify
104
+ :constraints:
105
+ - :name: :battery_level
106
+ :description: Battery Level
107
+ :uuid: '00000068-0000-1000-8000-0026BB765291'
108
+ :format: uint8
109
+ :unit: '"percentage"'
110
+ :permissions:
111
+ - securedRead
112
+ :properties:
113
+ - read
114
+ - cnotify
115
+ :constraints:
116
+ MaximumValue: 100
117
+ MinimumValue: 0
118
+ StepValue: 1
119
+ - :name: :brightness
120
+ :description: Brightness
121
+ :uuid: '00000008-0000-1000-8000-0026BB765291'
122
+ :format: int32
123
+ :unit: '"percentage"'
124
+ :permissions:
125
+ - securedRead
126
+ - securedWrite
127
+ :properties:
128
+ - read
129
+ - write
130
+ - cnotify
131
+ :constraints:
132
+ MaximumValue: 100
133
+ MinimumValue: 0
134
+ StepValue: 1
135
+ - :name: :carbon_dioxide_detected
136
+ :description: Carbon Dioxide Detected
137
+ :uuid: '00000092-0000-1000-8000-0026BB765291'
138
+ :format: uint8
139
+ :unit: nil
140
+ :permissions:
141
+ - securedRead
142
+ :properties:
143
+ - read
144
+ - cnotify
145
+ - uncnotify
146
+ :constraints:
147
+ ValidValues:
148
+ '0': CO2 Levels Normal
149
+ '1': CO2 Levels Abnormal
150
+ - :name: :carbon_dioxide_level
151
+ :description: Carbon Dioxide Level
152
+ :uuid: '00000093-0000-1000-8000-0026BB765291'
153
+ :format: float
154
+ :unit: nil
155
+ :permissions:
156
+ - securedRead
157
+ :properties:
158
+ - read
159
+ - cnotify
160
+ :constraints:
161
+ MaximumValue: 100000
162
+ MinimumValue: 0
163
+ - :name: :carbon_dioxide_peak_level
164
+ :description: Carbon Dioxide Peak Level
165
+ :uuid: '00000094-0000-1000-8000-0026BB765291'
166
+ :format: float
167
+ :unit: nil
168
+ :permissions:
169
+ - securedRead
170
+ :properties:
171
+ - read
172
+ - cnotify
173
+ :constraints:
174
+ MaximumValue: 100000
175
+ MinimumValue: 0
176
+ - :name: :carbon_monoxide_detected
177
+ :description: Carbon Monoxide Detected
178
+ :uuid: '00000069-0000-1000-8000-0026BB765291'
179
+ :format: uint8
180
+ :unit: nil
181
+ :permissions:
182
+ - securedRead
183
+ :properties:
184
+ - read
185
+ - cnotify
186
+ - uncnotify
187
+ :constraints:
188
+ ValidValues:
189
+ '0': CO Levels Normal
190
+ '1': CO Levels Abnormal
191
+ - :name: :carbon_monoxide_level
192
+ :description: Carbon Monoxide Level
193
+ :uuid: '00000090-0000-1000-8000-0026BB765291'
194
+ :format: float
195
+ :unit: nil
196
+ :permissions:
197
+ - securedRead
198
+ :properties:
199
+ - read
200
+ - cnotify
201
+ :constraints:
202
+ MaximumValue: 100
203
+ MinimumValue: 0
204
+ - :name: :carbon_monoxide_peak_level
205
+ :description: Carbon Monoxide Peak Level
206
+ :uuid: '00000091-0000-1000-8000-0026BB765291'
207
+ :format: float
208
+ :unit: nil
209
+ :permissions:
210
+ - securedRead
211
+ :properties:
212
+ - read
213
+ - cnotify
214
+ :constraints:
215
+ MaximumValue: 100
216
+ MinimumValue: 0
217
+ - :name: :charging_state
218
+ :description: Charging State
219
+ :uuid: '0000008F-0000-1000-8000-0026BB765291'
220
+ :format: uint8
221
+ :unit: nil
222
+ :permissions:
223
+ - securedRead
224
+ :properties:
225
+ - read
226
+ - cnotify
227
+ :constraints:
228
+ ValidValues:
229
+ '0': Not Charging
230
+ '1': Charging
231
+ '2': Not Chargeable
232
+ - :name: :color_temperature
233
+ :description: Color Temperature
234
+ :uuid: 000000CE-0000-1000-8000-0026BB765291
235
+ :format: uint32
236
+ :unit: nil
237
+ :permissions:
238
+ - securedRead
239
+ - securedWrite
240
+ :properties:
241
+ - read
242
+ - write
243
+ - cnotify
244
+ :constraints:
245
+ MaximumValue: 500
246
+ MinimumValue: 140
247
+ StepValue: 1
248
+ - :name: :contact_sensor_state
249
+ :description: Contact Sensor State
250
+ :uuid: 0000006A-0000-1000-8000-0026BB765291
251
+ :format: uint8
252
+ :unit: nil
253
+ :permissions:
254
+ - securedRead
255
+ :properties:
256
+ - read
257
+ - cnotify
258
+ - uncnotify
259
+ :constraints:
260
+ ValidValues:
261
+ '0': Contact Detected
262
+ '1': Contact Not Detected
263
+ - :name: :cooling_threshold_temperature
264
+ :description: Cooling Threshold Temperature
265
+ :uuid: 0000000D-0000-1000-8000-0026BB765291
266
+ :format: float
267
+ :unit: '"celsius"'
268
+ :permissions:
269
+ - securedRead
270
+ - securedWrite
271
+ :properties:
272
+ - read
273
+ - write
274
+ - cnotify
275
+ :constraints:
276
+ MaximumValue: 35
277
+ MinimumValue: 10
278
+ StepValue: 0.1
279
+ - :name: :current_air_purifier_state
280
+ :description: Current Air Purifier State
281
+ :uuid: 000000A9-0000-1000-8000-0026BB765291
282
+ :format: uint8
283
+ :unit: nil
284
+ :permissions:
285
+ - securedRead
286
+ :properties:
287
+ - read
288
+ - cnotify
289
+ :constraints:
290
+ ValidValues:
291
+ '0': Inactive
292
+ '1': Idle
293
+ '2': Purifying Air
294
+ - :name: :current_ambient_light_level
295
+ :description: Current Ambient Light Level
296
+ :uuid: 0000006B-0000-1000-8000-0026BB765291
297
+ :format: float
298
+ :unit: '"lux"'
299
+ :permissions:
300
+ - securedRead
301
+ :properties:
302
+ - read
303
+ - cnotify
304
+ :constraints:
305
+ MaximumValue: 100000
306
+ MinimumValue: 0.0001
307
+ - :name: :current_door_state
308
+ :description: Current Door State
309
+ :uuid: 0000000E-0000-1000-8000-0026BB765291
310
+ :format: uint8
311
+ :unit: nil
312
+ :permissions:
313
+ - securedRead
314
+ :properties:
315
+ - read
316
+ - cnotify
317
+ - uncnotify
318
+ :constraints:
319
+ ValidValues:
320
+ '0': Open
321
+ '1': Closed
322
+ '2': Opening
323
+ '3': Closing
324
+ '4': Stopped
325
+ - :name: :current_fan_state
326
+ :description: Current Fan State
327
+ :uuid: 000000AF-0000-1000-8000-0026BB765291
328
+ :format: uint8
329
+ :unit: nil
330
+ :permissions:
331
+ - securedRead
332
+ :properties:
333
+ - read
334
+ - cnotify
335
+ :constraints:
336
+ ValidValues:
337
+ '0': Inactive
338
+ '1': Idle
339
+ '2': Blowing Air
340
+ - :name: :current_heater_cooler_state
341
+ :description: Current Heater Cooler State
342
+ :uuid: 000000B1-0000-1000-8000-0026BB765291
343
+ :format: uint8
344
+ :unit: nil
345
+ :permissions:
346
+ - securedRead
347
+ :properties:
348
+ - read
349
+ - cnotify
350
+ :constraints:
351
+ ValidValues:
352
+ '0': Inactive
353
+ '1': Idle
354
+ '2': Heating
355
+ '3': Cooling
356
+ - :name: :current_heating_cooling_state
357
+ :description: Current Heating Cooling State
358
+ :uuid: 0000000F-0000-1000-8000-0026BB765291
359
+ :format: uint8
360
+ :unit: nil
361
+ :permissions:
362
+ - securedRead
363
+ :properties:
364
+ - read
365
+ - cnotify
366
+ - uncnotify
367
+ :constraints:
368
+ ValidValues:
369
+ '0': 'Off'
370
+ '1': Heat
371
+ '2': Cool
372
+ - :name: :current_horizontal_tilt_angle
373
+ :description: Current Horizontal Tilt Angle
374
+ :uuid: 0000006C-0000-1000-8000-0026BB765291
375
+ :format: int32
376
+ :unit: '"arcdegrees"'
377
+ :permissions:
378
+ - securedRead
379
+ :properties:
380
+ - read
381
+ - cnotify
382
+ :constraints:
383
+ MaximumValue: 90
384
+ MinimumValue: -90
385
+ StepValue: 1
386
+ - :name: :current_humidifier_dehumidifier_state
387
+ :description: Current Humidifier Dehumidifier State
388
+ :uuid: 000000B3-0000-1000-8000-0026BB765291
389
+ :format: uint8
390
+ :unit: nil
391
+ :permissions:
392
+ - securedRead
393
+ :properties:
394
+ - read
395
+ - cnotify
396
+ :constraints:
397
+ ValidValues:
398
+ '0': Inactive
399
+ '1': Idle
400
+ '2': Humidifying
401
+ '3': Dehumidifying
402
+ - :name: :current_position
403
+ :description: Current Position
404
+ :uuid: 0000006D-0000-1000-8000-0026BB765291
405
+ :format: uint8
406
+ :unit: '"percentage"'
407
+ :permissions:
408
+ - securedRead
409
+ :properties:
410
+ - read
411
+ - cnotify
412
+ :constraints:
413
+ MaximumValue: 100
414
+ MinimumValue: 0
415
+ StepValue: 1
416
+ - :name: :current_relative_humidity
417
+ :description: Current Relative Humidity
418
+ :uuid: 00000010-0000-1000-8000-0026BB765291
419
+ :format: float
420
+ :unit: '"percentage"'
421
+ :permissions:
422
+ - securedRead
423
+ :properties:
424
+ - read
425
+ - cnotify
426
+ :constraints:
427
+ MaximumValue: 100
428
+ MinimumValue: 0
429
+ StepValue: 1
430
+ - :name: :current_slat_state
431
+ :description: Current Slat State
432
+ :uuid: 000000AA-0000-1000-8000-0026BB765291
433
+ :format: uint8
434
+ :unit: nil
435
+ :permissions:
436
+ - securedRead
437
+ :properties:
438
+ - read
439
+ - cnotify
440
+ :constraints:
441
+ ValidValues:
442
+ '0': Fixed
443
+ '1': Jammed
444
+ '2': Swinging
445
+ - :name: :current_temperature
446
+ :description: Current Temperature
447
+ :uuid: 00000011-0000-1000-8000-0026BB765291
448
+ :format: float
449
+ :unit: '"celsius"'
450
+ :permissions:
451
+ - securedRead
452
+ :properties:
453
+ - read
454
+ - cnotify
455
+ :constraints:
456
+ MaximumValue: 100
457
+ MinimumValue: 0
458
+ StepValue: 0.1
459
+ - :name: :current_tilt_angle
460
+ :description: Current Tilt Angle
461
+ :uuid: 000000C1-0000-1000-8000-0026BB765291
462
+ :format: int32
463
+ :unit: '"arcdegrees"'
464
+ :permissions:
465
+ - securedRead
466
+ :properties:
467
+ - read
468
+ - cnotify
469
+ :constraints:
470
+ MaximumValue: 90
471
+ MinimumValue: -90
472
+ StepValue: 1
473
+ - :name: :current_vertical_tilt_angle
474
+ :description: Current Vertical Tilt Angle
475
+ :uuid: 0000006E-0000-1000-8000-0026BB765291
476
+ :format: int32
477
+ :unit: '"arcdegrees"'
478
+ :permissions:
479
+ - securedRead
480
+ :properties:
481
+ - read
482
+ - cnotify
483
+ :constraints:
484
+ MaximumValue: 90
485
+ MinimumValue: -90
486
+ StepValue: 1
487
+ - :name: :digital_zoom
488
+ :description: Digital Zoom
489
+ :uuid: 0000011D-0000-1000-8000-0026BB765291
490
+ :format: float
491
+ :unit: nil
492
+ :permissions:
493
+ - securedRead
494
+ - securedWrite
495
+ :properties:
496
+ - read
497
+ - write
498
+ - cnotify
499
+ :constraints:
500
+ - :name: :filter_change_indication
501
+ :description: Filter Change Indication
502
+ :uuid: 000000AC-0000-1000-8000-0026BB765291
503
+ :format: uint8
504
+ :unit: nil
505
+ :permissions:
506
+ - securedRead
507
+ :properties:
508
+ - read
509
+ - cnotify
510
+ :constraints:
511
+ ValidValues:
512
+ '0': Filter OK
513
+ '1': Change Filter
514
+ - :name: :filter_life_level
515
+ :description: Filter Life Level
516
+ :uuid: 000000AB-0000-1000-8000-0026BB765291
517
+ :format: float
518
+ :unit: nil
519
+ :permissions:
520
+ - securedRead
521
+ :properties:
522
+ - read
523
+ - cnotify
524
+ :constraints:
525
+ MaximumValue: 100
526
+ MinimumValue: 0
527
+ stepValue: 1
528
+ - :name: :firmware_revision
529
+ :description: Firmware Revision
530
+ :uuid: 00000052-0000-1000-8000-0026BB765291
531
+ :format: string
532
+ :unit: nil
533
+ :permissions:
534
+ - securedRead
535
+ :properties:
536
+ - read
537
+ :constraints:
538
+ - :name: :hardware_revision
539
+ :description: Hardware Revision
540
+ :uuid: 00000053-0000-1000-8000-0026BB765291
541
+ :format: string
542
+ :unit: nil
543
+ :permissions:
544
+ - securedRead
545
+ :properties:
546
+ - read
547
+ :constraints:
548
+ - :name: :heating_threshold_temperature
549
+ :description: Heating Threshold Temperature
550
+ :uuid: 00000012-0000-1000-8000-0026BB765291
551
+ :format: float
552
+ :unit: '"celsius"'
553
+ :permissions:
554
+ - securedRead
555
+ - securedWrite
556
+ :properties:
557
+ - read
558
+ - write
559
+ - cnotify
560
+ :constraints:
561
+ MaximumValue: 25
562
+ MinimumValue: 0
563
+ StepValue: 0.1
564
+ - :name: :hold_position
565
+ :description: Hold Position
566
+ :uuid: 0000006F-0000-1000-8000-0026BB765291
567
+ :format: bool
568
+ :unit: nil
569
+ :permissions:
570
+ - securedWrite
571
+ :properties:
572
+ - write
573
+ :constraints:
574
+ - :name: :hue
575
+ :description: Hue
576
+ :uuid: 00000013-0000-1000-8000-0026BB765291
577
+ :format: float
578
+ :unit: '"arcdegrees"'
579
+ :permissions:
580
+ - securedRead
581
+ - securedWrite
582
+ :properties:
583
+ - read
584
+ - write
585
+ - cnotify
586
+ :constraints:
587
+ MaximumValue: 360
588
+ MinimumValue: 0
589
+ StepValue: 1
590
+ - :name: :identify
591
+ :description: Identify
592
+ :uuid: 00000014-0000-1000-8000-0026BB765291
593
+ :format: bool
594
+ :unit: nil
595
+ :permissions:
596
+ - securedWrite
597
+ :properties:
598
+ - write
599
+ :constraints:
600
+ - :name: :image_mirroring
601
+ :description: Image Mirroring
602
+ :uuid: 0000011F-0000-1000-8000-0026BB765291
603
+ :format: bool
604
+ :unit: nil
605
+ :permissions:
606
+ - securedRead
607
+ - securedWrite
608
+ :properties:
609
+ - read
610
+ - write
611
+ - cnotify
612
+ :constraints:
613
+ - :name: :image_rotation
614
+ :description: Image Rotation
615
+ :uuid: 0000011E-0000-1000-8000-0026BB765291
616
+ :format: float
617
+ :unit: '"arcdegrees"'
618
+ :permissions:
619
+ - securedRead
620
+ - securedWrite
621
+ :properties:
622
+ - read
623
+ - write
624
+ - cnotify
625
+ :constraints:
626
+ MaximumValue: 270
627
+ MinimumValue: 0
628
+ StepValue: 90
629
+ - :name: :leak_detected
630
+ :description: Leak Detected
631
+ :uuid: 00000070-0000-1000-8000-0026BB765291
632
+ :format: uint8
633
+ :unit: nil
634
+ :permissions:
635
+ - securedRead
636
+ :properties:
637
+ - read
638
+ - cnotify
639
+ - uncnotify
640
+ :constraints:
641
+ ValidValues:
642
+ '0': Leak Not Detected
643
+ '1': Leak Detected
644
+ - :name: :lock_control_point
645
+ :description: Lock Control Point
646
+ :uuid: '00000019-0000-1000-8000-0026BB765291'
647
+ :format: tlv8
648
+ :unit: nil
649
+ :permissions:
650
+ - securedWrite
651
+ :properties:
652
+ - write
653
+ :constraints:
654
+ - :name: :lock_current_state
655
+ :description: Lock Current State
656
+ :uuid: 0000001D-0000-1000-8000-0026BB765291
657
+ :format: uint8
658
+ :unit: nil
659
+ :permissions:
660
+ - securedRead
661
+ :properties:
662
+ - read
663
+ - cnotify
664
+ - uncnotify
665
+ :constraints:
666
+ ValidValues:
667
+ '0': Unsecured
668
+ '1': Secured
669
+ '2': Jammed
670
+ '3': Unknown
671
+ - :name: :lock_last_known_action
672
+ :description: Lock Last Known Action
673
+ :uuid: 0000001C-0000-1000-8000-0026BB765291
674
+ :format: uint8
675
+ :unit: nil
676
+ :permissions:
677
+ - securedRead
678
+ :properties:
679
+ - read
680
+ - cnotify
681
+ :constraints:
682
+ ValidValues:
683
+ '0': Secured Physically, Interior
684
+ '1': Unsecured Physically, Interior
685
+ '2': Secured Physically, Exterior
686
+ '3': Unsecured Physically, Exterior
687
+ '4': Secured by Keypad
688
+ '5': Unsecured by Keypad
689
+ '6': Secured Remotely
690
+ '7': Unsecured Remotely
691
+ '8': Secured by Auto Secure Timeout
692
+ - :name: :lock_management_auto_security_timeout
693
+ :description: Lock Management Auto Security Timeout
694
+ :uuid: 0000001A-0000-1000-8000-0026BB765291
695
+ :format: uint32
696
+ :unit: '"seconds"'
697
+ :permissions:
698
+ - securedRead
699
+ - securedWrite
700
+ :properties:
701
+ - read
702
+ - write
703
+ - cnotify
704
+ :constraints:
705
+ - :name: :lock_physical_controls
706
+ :description: Lock Physical Controls
707
+ :uuid: 000000A7-0000-1000-8000-0026BB765291
708
+ :format: uint8
709
+ :unit: nil
710
+ :permissions:
711
+ - securedRead
712
+ - securedWrite
713
+ :properties:
714
+ - read
715
+ - write
716
+ - cnotify
717
+ :constraints:
718
+ ValidValues:
719
+ '0': Control Lock Disabled
720
+ '1': Control Lock Enabled
721
+ - :name: :lock_target_state
722
+ :description: Lock Target State
723
+ :uuid: 0000001E-0000-1000-8000-0026BB765291
724
+ :format: uint8
725
+ :unit: nil
726
+ :permissions:
727
+ - securedRead
728
+ - securedWrite
729
+ :properties:
730
+ - read
731
+ - write
732
+ - cnotify
733
+ - uncnotify
734
+ :constraints:
735
+ ValidValues:
736
+ '0': Unsecured
737
+ '1': Secured
738
+ - :name: :logs
739
+ :description: Logs
740
+ :uuid: 0000001F-0000-1000-8000-0026BB765291
741
+ :format: tlv8
742
+ :unit: nil
743
+ :permissions:
744
+ - securedRead
745
+ :properties:
746
+ - read
747
+ - cnotify
748
+ :constraints:
749
+ - :name: :manufacturer
750
+ :description: Manufacturer
751
+ :uuid: 00000020-0000-1000-8000-0026BB765291
752
+ :format: string
753
+ :unit: nil
754
+ :permissions:
755
+ - securedRead
756
+ :properties:
757
+ - read
758
+ :constraints:
759
+ - :name: :model
760
+ :description: Model
761
+ :uuid: 00000021-0000-1000-8000-0026BB765291
762
+ :format: string
763
+ :unit: nil
764
+ :permissions:
765
+ - securedRead
766
+ :properties:
767
+ - read
768
+ :constraints:
769
+ - :name: :motion_detected
770
+ :description: Motion Detected
771
+ :uuid: 00000022-0000-1000-8000-0026BB765291
772
+ :format: bool
773
+ :unit: nil
774
+ :permissions:
775
+ - securedRead
776
+ :properties:
777
+ - read
778
+ - cnotify
779
+ - uncnotify
780
+ :constraints:
781
+ - :name: :mute
782
+ :description: Mute
783
+ :uuid: 0000011A-0000-1000-8000-0026BB765291
784
+ :format: bool
785
+ :unit: nil
786
+ :permissions:
787
+ - securedRead
788
+ - securedWrite
789
+ :properties:
790
+ - read
791
+ - write
792
+ - cnotify
793
+ :constraints:
794
+ - :name: :name
795
+ :description: Name
796
+ :uuid: 00000023-0000-1000-8000-0026BB765291
797
+ :format: string
798
+ :unit: nil
799
+ :permissions:
800
+ - securedRead
801
+ :properties:
802
+ - read
803
+ :constraints:
804
+ - :name: :night_vision
805
+ :description: Night Vision
806
+ :uuid: 0000011B-0000-1000-8000-0026BB765291
807
+ :format: bool
808
+ :unit: nil
809
+ :permissions:
810
+ - securedRead
811
+ - securedWrite
812
+ :properties:
813
+ - read
814
+ - write
815
+ - cnotify
816
+ :constraints:
817
+ - :name: :nitrogen_dioxide_density
818
+ :description: Nitrogen Dioxide Density
819
+ :uuid: 000000C4-0000-1000-8000-0026BB765291
820
+ :format: float
821
+ :unit: nil
822
+ :permissions:
823
+ - securedRead
824
+ :properties:
825
+ - read
826
+ - cnotify
827
+ - uncnotify
828
+ :constraints:
829
+ MaximumValue: 1000
830
+ MinimumValue: 0
831
+ StepValue: 1
832
+ - :name: :obstruction_detected
833
+ :description: Obstruction Detected
834
+ :uuid: 00000024-0000-1000-8000-0026BB765291
835
+ :format: bool
836
+ :unit: nil
837
+ :permissions:
838
+ - securedRead
839
+ :properties:
840
+ - read
841
+ - cnotify
842
+ - uncnotify
843
+ :constraints:
844
+ - :name: :occupancy_detected
845
+ :description: Occupancy Detected
846
+ :uuid: 00000071-0000-1000-8000-0026BB765291
847
+ :format: uint8
848
+ :unit: nil
849
+ :permissions:
850
+ - securedRead
851
+ :properties:
852
+ - read
853
+ - cnotify
854
+ - uncnotify
855
+ :constraints:
856
+ ValidValues:
857
+ '0': Occupancy Not Detected
858
+ '1': Occupancy Detected
859
+ - :name: :on
860
+ :description: 'On'
861
+ :uuid: 00000025-0000-1000-8000-0026BB765291
862
+ :format: bool
863
+ :unit: nil
864
+ :permissions:
865
+ - securedRead
866
+ - securedWrite
867
+ :properties:
868
+ - read
869
+ - write
870
+ - cnotify
871
+ :constraints:
872
+ - :name: :optical_zoom
873
+ :description: Optical Zoom
874
+ :uuid: 0000011C-0000-1000-8000-0026BB765291
875
+ :format: float
876
+ :unit: nil
877
+ :permissions:
878
+ - securedRead
879
+ - securedWrite
880
+ :properties:
881
+ - read
882
+ - write
883
+ - cnotify
884
+ :constraints:
885
+ - :name: :outlet_in_use
886
+ :description: Outlet In Use
887
+ :uuid: 00000026-0000-1000-8000-0026BB765291
888
+ :format: bool
889
+ :unit: nil
890
+ :permissions:
891
+ - securedRead
892
+ :properties:
893
+ - read
894
+ - cnotify
895
+ :constraints:
896
+ - :name: :ozone_density
897
+ :description: Ozone Density
898
+ :uuid: 000000C3-0000-1000-8000-0026BB765291
899
+ :format: float
900
+ :unit: nil
901
+ :permissions:
902
+ - securedRead
903
+ :properties:
904
+ - read
905
+ - cnotify
906
+ - uncnotify
907
+ :constraints:
908
+ MaximumValue: 1000
909
+ MinimumValue: 0
910
+ StepValue: 1
911
+ - :name: :pair_setup
912
+ :description: Pair Setup
913
+ :uuid: 0000004C-0000-1000-8000-0026BB765291
914
+ :format: tlv8
915
+ :unit: nil
916
+ :permissions:
917
+ - read
918
+ - write
919
+ :properties:
920
+ - read
921
+ - write
922
+ :constraints:
923
+ - :name: :pair_verify
924
+ :description: Pair Verify
925
+ :uuid: 0000004E-0000-1000-8000-0026BB765291
926
+ :format: tlv8
927
+ :unit: nil
928
+ :permissions:
929
+ - read
930
+ - write
931
+ :properties:
932
+ - read
933
+ - write
934
+ :constraints:
935
+ - :name: :pairing_features
936
+ :description: Pairing Features
937
+ :uuid: 0000004F-0000-1000-8000-0026BB765291
938
+ :format: uint8
939
+ :unit: nil
940
+ :permissions:
941
+ - read
942
+ :properties:
943
+ - read
944
+ :constraints:
945
+ - :name: :pairing_pairings
946
+ :description: Pairing Pairings
947
+ :uuid: 00000050-0000-1000-8000-0026BB765291
948
+ :format: tlv8
949
+ :unit: nil
950
+ :permissions:
951
+ - securedRead
952
+ - securedWrite
953
+ :properties:
954
+ - read
955
+ - write
956
+ :constraints:
957
+ - :name: :pm10_density
958
+ :description: PM10 Density
959
+ :uuid: 000000C7-0000-1000-8000-0026BB765291
960
+ :format: float
961
+ :unit: nil
962
+ :permissions:
963
+ - securedRead
964
+ :properties:
965
+ - read
966
+ - cnotify
967
+ - uncnotify
968
+ :constraints:
969
+ MaximumValue: 1000
970
+ MinimumValue: 0
971
+ StepValue: 1
972
+ - :name: :pm2_5_density
973
+ :description: PM2.5 Density
974
+ :uuid: 000000C6-0000-1000-8000-0026BB765291
975
+ :format: float
976
+ :unit: nil
977
+ :permissions:
978
+ - securedRead
979
+ :properties:
980
+ - read
981
+ - cnotify
982
+ - uncnotify
983
+ :constraints:
984
+ MaximumValue: 1000
985
+ MinimumValue: 0
986
+ StepValue: 1
987
+ - :name: :position_state
988
+ :description: Position State
989
+ :uuid: 00000072-0000-1000-8000-0026BB765291
990
+ :format: uint8
991
+ :unit: nil
992
+ :permissions:
993
+ - securedRead
994
+ :properties:
995
+ - read
996
+ - cnotify
997
+ :constraints:
998
+ ValidValues:
999
+ '0': Decreasing
1000
+ '1': Increasing
1001
+ '2': Stopped
1002
+ - :name: :programmable_switch_event
1003
+ :description: Programmable Switch Event
1004
+ :uuid: 00000073-0000-1000-8000-0026BB765291
1005
+ :format: uint8
1006
+ :unit: nil
1007
+ :permissions:
1008
+ - securedRead
1009
+ :properties:
1010
+ - read
1011
+ - cnotify
1012
+ :constraints:
1013
+ ValidValues:
1014
+ '0': Single Press
1015
+ '1': Double Press
1016
+ '2': Long Press
1017
+ - :name: :relative_humidity_dehumidifier_threshold
1018
+ :description: Relative Humidity Dehumidifier Threshold
1019
+ :uuid: 000000C9-0000-1000-8000-0026BB765291
1020
+ :format: float
1021
+ :unit: nil
1022
+ :permissions:
1023
+ - securedRead
1024
+ - securedWrite
1025
+ :properties:
1026
+ - read
1027
+ - write
1028
+ - cnotify
1029
+ :constraints:
1030
+ MaximumValue: 100
1031
+ MinimumValue: 0
1032
+ StepValue: 1
1033
+ - :name: :relative_humidity_humidifier_threshold
1034
+ :description: Relative Humidity Humidifier Threshold
1035
+ :uuid: 000000CA-0000-1000-8000-0026BB765291
1036
+ :format: float
1037
+ :unit: nil
1038
+ :permissions:
1039
+ - securedRead
1040
+ - securedWrite
1041
+ :properties:
1042
+ - read
1043
+ - write
1044
+ - cnotify
1045
+ :constraints:
1046
+ MaximumValue: 100
1047
+ MinimumValue: 0
1048
+ StepValue: 1
1049
+ - :name: :reset_filter_indication
1050
+ :description: Reset Filter Indication
1051
+ :uuid: 000000AD-0000-1000-8000-0026BB765291
1052
+ :format: uint8
1053
+ :unit: nil
1054
+ :permissions:
1055
+ - securedWrite
1056
+ :properties:
1057
+ - write
1058
+ :constraints:
1059
+ MaximumValue: 1
1060
+ MinimumValue: 1
1061
+ StepValue: 1
1062
+ - :name: :rotation_direction
1063
+ :description: Rotation Direction
1064
+ :uuid: '00000028-0000-1000-8000-0026BB765291'
1065
+ :format: int32
1066
+ :unit: nil
1067
+ :permissions:
1068
+ - securedRead
1069
+ - securedWrite
1070
+ :properties:
1071
+ - read
1072
+ - write
1073
+ - cnotify
1074
+ :constraints:
1075
+ ValidValues:
1076
+ '0': Clockwise
1077
+ '1': Counter-clockwise
1078
+ - :name: :rotation_speed
1079
+ :description: Rotation Speed
1080
+ :uuid: '00000029-0000-1000-8000-0026BB765291'
1081
+ :format: float
1082
+ :unit: '"percentage"'
1083
+ :permissions:
1084
+ - securedRead
1085
+ - securedWrite
1086
+ :properties:
1087
+ - read
1088
+ - write
1089
+ - cnotify
1090
+ :constraints:
1091
+ MaximumValue: 100
1092
+ MinimumValue: 0
1093
+ StepValue: 1
1094
+ - :name: :saturation
1095
+ :description: Saturation
1096
+ :uuid: 0000002F-0000-1000-8000-0026BB765291
1097
+ :format: float
1098
+ :unit: '"percentage"'
1099
+ :permissions:
1100
+ - securedRead
1101
+ - securedWrite
1102
+ :properties:
1103
+ - read
1104
+ - write
1105
+ - cnotify
1106
+ :constraints:
1107
+ MaximumValue: 100
1108
+ MinimumValue: 0
1109
+ StepValue: 1
1110
+ - :name: :security_system_alarm_type
1111
+ :description: Security System Alarm Type
1112
+ :uuid: '0000008E-0000-1000-8000-0026BB765291'
1113
+ :format: uint8
1114
+ :unit: nil
1115
+ :permissions:
1116
+ - securedRead
1117
+ :properties:
1118
+ - read
1119
+ - cnotify
1120
+ :constraints:
1121
+ MaximumValue: 1
1122
+ MinimumValue: 0
1123
+ StepValue: 1
1124
+ - :name: :security_system_current_state
1125
+ :description: Security System Current State
1126
+ :uuid: 00000066-0000-1000-8000-0026BB765291
1127
+ :format: uint8
1128
+ :unit: nil
1129
+ :permissions:
1130
+ - securedRead
1131
+ :properties:
1132
+ - read
1133
+ - cnotify
1134
+ - uncnotify
1135
+ :constraints:
1136
+ ValidValues:
1137
+ '0': Stay Arm
1138
+ '1': Away Arm
1139
+ '2': Night Arm
1140
+ '3': Disarmed
1141
+ '4': Alarm Triggered
1142
+ - :name: :security_system_target_state
1143
+ :description: Security System Target State
1144
+ :uuid: 00000067-0000-1000-8000-0026BB765291
1145
+ :format: uint8
1146
+ :unit: nil
1147
+ :permissions:
1148
+ - securedRead
1149
+ - securedWrite
1150
+ :properties:
1151
+ - read
1152
+ - write
1153
+ - cnotify
1154
+ :constraints:
1155
+ ValidValues:
1156
+ '0': Stay Arm
1157
+ '1': Away Arm
1158
+ '2': Night Arm
1159
+ '3': Disarm
1160
+ - :name: :selected_rtp_stream_configuration
1161
+ :description: Selected RTP Stream Configuration
1162
+ :uuid: 00000117-0000-1000-8000-0026BB765291
1163
+ :format: tlv8
1164
+ :unit: nil
1165
+ :permissions:
1166
+ - securedRead
1167
+ - securedWrite
1168
+ :properties:
1169
+ - read
1170
+ - write
1171
+ :constraints:
1172
+ - :name: :serial_number
1173
+ :description: Serial Number
1174
+ :uuid: 00000030-0000-1000-8000-0026BB765291
1175
+ :format: string
1176
+ :unit: nil
1177
+ :permissions:
1178
+ - securedRead
1179
+ :properties:
1180
+ - read
1181
+ :constraints:
1182
+ MaximumLength: 64
1183
+ - :name: :service_label_index
1184
+ :description: Service Label Index
1185
+ :uuid: 000000CB-0000-1000-8000-0026BB765291
1186
+ :format: uint8
1187
+ :unit: nil
1188
+ :permissions:
1189
+ - securedRead
1190
+ :properties:
1191
+ - read
1192
+ :constraints:
1193
+ MaximumValue: 255
1194
+ MinimumValue: 1
1195
+ StepValue: 1
1196
+ - :name: :service_label_namespace
1197
+ :description: Service Label Namespace
1198
+ :uuid: 000000CD-0000-1000-8000-0026BB765291
1199
+ :format: uint8
1200
+ :unit: nil
1201
+ :permissions:
1202
+ - securedRead
1203
+ :properties:
1204
+ - read
1205
+ :constraints:
1206
+ ValidValues:
1207
+ '0': Dots
1208
+ '1': Arabic Numerals
1209
+ - :name: :setup_endpoints
1210
+ :description: Setup Endpoints
1211
+ :uuid: '00000118-0000-1000-8000-0026BB765291'
1212
+ :format: tlv8
1213
+ :unit: nil
1214
+ :permissions:
1215
+ - securedRead
1216
+ - securedWrite
1217
+ :properties:
1218
+ - read
1219
+ - write
1220
+ :constraints:
1221
+ - :name: :slat_type
1222
+ :description: Slat Type
1223
+ :uuid: 000000C0-0000-1000-8000-0026BB765291
1224
+ :format: uint8
1225
+ :unit: nil
1226
+ :permissions:
1227
+ - securedRead
1228
+ :properties:
1229
+ - read
1230
+ :constraints:
1231
+ ValidValues:
1232
+ '0': Horizontal
1233
+ '1': Vertical
1234
+ - :name: :smoke_detected
1235
+ :description: Smoke Detected
1236
+ :uuid: 00000076-0000-1000-8000-0026BB765291
1237
+ :format: uint8
1238
+ :unit: nil
1239
+ :permissions:
1240
+ - securedRead
1241
+ :properties:
1242
+ - read
1243
+ - cnotify
1244
+ - uncnotify
1245
+ :constraints:
1246
+ ValidValues:
1247
+ '0': Smoke Not Detected
1248
+ '1': Smoke Detected
1249
+ - :name: :status_active
1250
+ :description: Status Active
1251
+ :uuid: 00000075-0000-1000-8000-0026BB765291
1252
+ :format: bool
1253
+ :unit: nil
1254
+ :permissions:
1255
+ - securedRead
1256
+ :properties:
1257
+ - read
1258
+ - cnotify
1259
+ :constraints:
1260
+ - :name: :status_fault
1261
+ :description: Status Fault
1262
+ :uuid: 00000077-0000-1000-8000-0026BB765291
1263
+ :format: uint8
1264
+ :unit: nil
1265
+ :permissions:
1266
+ - securedRead
1267
+ :properties:
1268
+ - read
1269
+ - cnotify
1270
+ - uncnotify
1271
+ :constraints:
1272
+ ValidValues:
1273
+ '0': No Fault
1274
+ '1': General Fault
1275
+ - :name: :status_jammed
1276
+ :description: Status Jammed
1277
+ :uuid: '00000078-0000-1000-8000-0026BB765291'
1278
+ :format: uint8
1279
+ :unit: nil
1280
+ :permissions:
1281
+ - securedRead
1282
+ :properties:
1283
+ - read
1284
+ - cnotify
1285
+ - uncnotify
1286
+ :constraints:
1287
+ ValidValues:
1288
+ '0': Not Jammed
1289
+ '1': Jammed
1290
+ - :name: :status_low_battery
1291
+ :description: Status Low Battery
1292
+ :uuid: '00000079-0000-1000-8000-0026BB765291'
1293
+ :format: uint8
1294
+ :unit: nil
1295
+ :permissions:
1296
+ - securedRead
1297
+ :properties:
1298
+ - read
1299
+ - cnotify
1300
+ - uncnotify
1301
+ :constraints:
1302
+ ValidValues:
1303
+ '0': Battery Level Normal
1304
+ '1': Battery Level Low
1305
+ - :name: :status_tampered
1306
+ :description: Status Tampered
1307
+ :uuid: 0000007A-0000-1000-8000-0026BB765291
1308
+ :format: uint8
1309
+ :unit: nil
1310
+ :permissions:
1311
+ - securedRead
1312
+ :properties:
1313
+ - read
1314
+ - cnotify
1315
+ - uncnotify
1316
+ :constraints:
1317
+ ValidValues:
1318
+ '0': Not Tampered
1319
+ '1': Tampered
1320
+ - :name: :streaming_status
1321
+ :description: Streaming Status
1322
+ :uuid: 00000120-0000-1000-8000-0026BB765291
1323
+ :format: tlv8
1324
+ :unit: nil
1325
+ :permissions:
1326
+ - securedRead
1327
+ :properties:
1328
+ - read
1329
+ - cnotify
1330
+ :constraints:
1331
+ - :name: :sulphur_dioxide_density
1332
+ :description: Sulphur Dioxide Density
1333
+ :uuid: 000000C5-0000-1000-8000-0026BB765291
1334
+ :format: float
1335
+ :unit: nil
1336
+ :permissions:
1337
+ - securedRead
1338
+ :properties:
1339
+ - read
1340
+ - cnotify
1341
+ - uncnotify
1342
+ :constraints:
1343
+ MaximumValue: 1000
1344
+ MinimumValue: 0
1345
+ StepValue: 1
1346
+ - :name: :supported_audio_stream_configuration
1347
+ :description: Supported Audio Stream Configuration
1348
+ :uuid: 00000115-0000-1000-8000-0026BB765291
1349
+ :format: tlv8
1350
+ :unit: nil
1351
+ :permissions:
1352
+ - securedRead
1353
+ :properties:
1354
+ - read
1355
+ :constraints:
1356
+ - :name: :supported_rtp_configuration
1357
+ :description: Supported RTP Configuration
1358
+ :uuid: 00000116-0000-1000-8000-0026BB765291
1359
+ :format: tlv8
1360
+ :unit: nil
1361
+ :permissions:
1362
+ - securedRead
1363
+ :properties:
1364
+ - read
1365
+ :constraints:
1366
+ - :name: :supported_video_stream_configuration
1367
+ :description: Supported Video Stream Configuration
1368
+ :uuid: 00000114-0000-1000-8000-0026BB765291
1369
+ :format: tlv8
1370
+ :unit: nil
1371
+ :permissions:
1372
+ - securedRead
1373
+ :properties:
1374
+ - read
1375
+ :constraints:
1376
+ - :name: :swing_mode
1377
+ :description: Swing Mode
1378
+ :uuid: 000000B6-0000-1000-8000-0026BB765291
1379
+ :format: uint8
1380
+ :unit: nil
1381
+ :permissions:
1382
+ - securedRead
1383
+ - securedWrite
1384
+ :properties:
1385
+ - read
1386
+ - write
1387
+ - cnotify
1388
+ :constraints:
1389
+ ValidValues:
1390
+ '0': Swing Disabled
1391
+ '1': Swing Enabled
1392
+ - :name: :target_air_purifier_state
1393
+ :description: Target Air Purifier State
1394
+ :uuid: 000000A8-0000-1000-8000-0026BB765291
1395
+ :format: uint8
1396
+ :unit: nil
1397
+ :permissions:
1398
+ - securedRead
1399
+ - securedWrite
1400
+ :properties:
1401
+ - read
1402
+ - write
1403
+ - cnotify
1404
+ :constraints:
1405
+ ValidValues:
1406
+ '0': Manual
1407
+ '1': Auto
1408
+ - :name: :target_air_quality
1409
+ :description: Target Air Quality
1410
+ :uuid: 000000AE-0000-1000-8000-0026BB765291
1411
+ :format: uint8
1412
+ :unit: nil
1413
+ :permissions:
1414
+ - securedRead
1415
+ - securedWrite
1416
+ :properties:
1417
+ - read
1418
+ - write
1419
+ - cnotify
1420
+ :constraints:
1421
+ ValidValues:
1422
+ '0': Excellent
1423
+ '1': Good
1424
+ '2': Fair
1425
+ - :name: :target_door_state
1426
+ :description: Target Door State
1427
+ :uuid: 00000032-0000-1000-8000-0026BB765291
1428
+ :format: uint8
1429
+ :unit: nil
1430
+ :permissions:
1431
+ - securedRead
1432
+ - securedWrite
1433
+ :properties:
1434
+ - read
1435
+ - write
1436
+ - cnotify
1437
+ :constraints:
1438
+ ValidValues:
1439
+ '0': Open
1440
+ '1': Closed
1441
+ - :name: :target_fan_state
1442
+ :description: Target Fan State
1443
+ :uuid: 000000BF-0000-1000-8000-0026BB765291
1444
+ :format: uint8
1445
+ :unit: nil
1446
+ :permissions:
1447
+ - securedRead
1448
+ - securedWrite
1449
+ :properties:
1450
+ - read
1451
+ - write
1452
+ - cnotify
1453
+ :constraints:
1454
+ ValidValues:
1455
+ '0': Manual
1456
+ '1': Auto
1457
+ - :name: :target_heater_cooler_state
1458
+ :description: Target Heater Cooler State
1459
+ :uuid: 000000B2-0000-1000-8000-0026BB765291
1460
+ :format: uint8
1461
+ :unit: nil
1462
+ :permissions:
1463
+ - securedRead
1464
+ - securedWrite
1465
+ :properties:
1466
+ - read
1467
+ - write
1468
+ - cnotify
1469
+ :constraints:
1470
+ ValidValues:
1471
+ '0': Auto
1472
+ '1': Heat
1473
+ '2': Cool
1474
+ - :name: :target_heating_cooling_state
1475
+ :description: Target Heating Cooling State
1476
+ :uuid: 00000033-0000-1000-8000-0026BB765291
1477
+ :format: uint8
1478
+ :unit: nil
1479
+ :permissions:
1480
+ - securedRead
1481
+ - securedWrite
1482
+ :properties:
1483
+ - read
1484
+ - write
1485
+ - cnotify
1486
+ :constraints:
1487
+ ValidValues:
1488
+ '0': 'Off'
1489
+ '1': Heat
1490
+ '2': Cool
1491
+ '3': Auto
1492
+ - :name: :target_horizontal_tilt_angle
1493
+ :description: Target Horizontal Tilt Angle
1494
+ :uuid: 0000007B-0000-1000-8000-0026BB765291
1495
+ :format: int32
1496
+ :unit: '"arcdegrees"'
1497
+ :permissions:
1498
+ - securedRead
1499
+ - securedWrite
1500
+ :properties:
1501
+ - read
1502
+ - write
1503
+ - cnotify
1504
+ :constraints:
1505
+ MaximumValue: 90
1506
+ MinimumValue: -90
1507
+ StepValue: 1
1508
+ - :name: :target_humidifier_dehumidifier_state
1509
+ :description: Target Humidifier Dehumidifier State
1510
+ :uuid: 000000B4-0000-1000-8000-0026BB765291
1511
+ :format: uint8
1512
+ :unit: nil
1513
+ :permissions:
1514
+ - securedRead
1515
+ - securedWrite
1516
+ :properties:
1517
+ - read
1518
+ - write
1519
+ - cnotify
1520
+ :constraints:
1521
+ ValidValues:
1522
+ '0': Humidifier or Dehumidifier
1523
+ '1': Humidifier
1524
+ '2': Dehumidifier
1525
+ - :name: :target_position
1526
+ :description: Target Position
1527
+ :uuid: 0000007C-0000-1000-8000-0026BB765291
1528
+ :format: uint8
1529
+ :unit: '"percentage"'
1530
+ :permissions:
1531
+ - securedRead
1532
+ - securedWrite
1533
+ :properties:
1534
+ - read
1535
+ - write
1536
+ - cnotify
1537
+ :constraints:
1538
+ MaximumValue: 100
1539
+ MinimumValue: 0
1540
+ StepValue: 1
1541
+ - :name: :target_relative_humidity
1542
+ :description: Target Relative Humidity
1543
+ :uuid: 00000034-0000-1000-8000-0026BB765291
1544
+ :format: float
1545
+ :unit: '"percentage"'
1546
+ :permissions:
1547
+ - securedRead
1548
+ - securedWrite
1549
+ :properties:
1550
+ - read
1551
+ - write
1552
+ - cnotify
1553
+ :constraints:
1554
+ MaximumValue: 100
1555
+ MinimumValue: 0
1556
+ StepValue: 1
1557
+ - :name: :target_slat_state
1558
+ :description: Target Slat State
1559
+ :uuid: 000000BE-0000-1000-8000-0026BB765291
1560
+ :format: uint8
1561
+ :unit: nil
1562
+ :permissions:
1563
+ - securedRead
1564
+ - securedWrite
1565
+ :properties:
1566
+ - read
1567
+ - write
1568
+ - cnotify
1569
+ :constraints:
1570
+ ValidValues:
1571
+ '0': Manual
1572
+ '1': Auto
1573
+ - :name: :target_temperature
1574
+ :description: Target Temperature
1575
+ :uuid: 00000035-0000-1000-8000-0026BB765291
1576
+ :format: float
1577
+ :unit: '"celsius"'
1578
+ :permissions:
1579
+ - securedRead
1580
+ - securedWrite
1581
+ :properties:
1582
+ - read
1583
+ - write
1584
+ - cnotify
1585
+ :constraints:
1586
+ MaximumValue: 38
1587
+ MinimumValue: 10
1588
+ StepValue: 0.1
1589
+ - :name: :target_tilt_angle
1590
+ :description: Target Tilt Angle
1591
+ :uuid: 000000C2-0000-1000-8000-0026BB765291
1592
+ :format: int32
1593
+ :unit: '"arcdegrees"'
1594
+ :permissions:
1595
+ - securedRead
1596
+ - securedWrite
1597
+ :properties:
1598
+ - read
1599
+ - write
1600
+ - cnotify
1601
+ :constraints:
1602
+ MaximumValue: 90
1603
+ MinimumValue: -90
1604
+ StepValue: 1
1605
+ - :name: :target_vertical_tilt_angle
1606
+ :description: Target Vertical Tilt Angle
1607
+ :uuid: 0000007D-0000-1000-8000-0026BB765291
1608
+ :format: int32
1609
+ :unit: '"arcdegrees"'
1610
+ :permissions:
1611
+ - securedRead
1612
+ - securedWrite
1613
+ :properties:
1614
+ - read
1615
+ - write
1616
+ - cnotify
1617
+ :constraints:
1618
+ MaximumValue: 90
1619
+ MinimumValue: -90
1620
+ StepValue: 1
1621
+ - :name: :temperature_display_units
1622
+ :description: Temperature Display Units
1623
+ :uuid: 00000036-0000-1000-8000-0026BB765291
1624
+ :format: uint8
1625
+ :unit: nil
1626
+ :permissions:
1627
+ - securedRead
1628
+ - securedWrite
1629
+ :properties:
1630
+ - read
1631
+ - write
1632
+ - cnotify
1633
+ :constraints:
1634
+ ValidValues:
1635
+ '0': Celsius
1636
+ '1': Fahrenheit
1637
+ - :name: :version
1638
+ :description: Version
1639
+ :uuid: 00000037-0000-1000-8000-0026BB765291
1640
+ :format: string
1641
+ :unit: nil
1642
+ :permissions:
1643
+ - securedRead
1644
+ :properties:
1645
+ - read
1646
+ - cnotify
1647
+ :constraints:
1648
+ MaximumLength: 64
1649
+ - :name: :voc_density
1650
+ :description: VOC Density
1651
+ :uuid: 000000C8-0000-1000-8000-0026BB765291
1652
+ :format: float
1653
+ :unit: nil
1654
+ :permissions:
1655
+ - securedRead
1656
+ :properties:
1657
+ - read
1658
+ - cnotify
1659
+ - uncnotify
1660
+ :constraints:
1661
+ MaximumValue: 1000
1662
+ MinimumValue: 0
1663
+ StepValue: 1
1664
+ - :name: :volume
1665
+ :description: Volume
1666
+ :uuid: '00000119-0000-1000-8000-0026BB765291'
1667
+ :format: uint8
1668
+ :unit: '"percentage"'
1669
+ :permissions:
1670
+ - securedRead
1671
+ - securedWrite
1672
+ :properties:
1673
+ - read
1674
+ - write
1675
+ - cnotify
1676
+ :constraints:
1677
+ MaximumValue: 100
1678
+ MinimumValue: 0
1679
+ StepValue: 1
1680
+ - :name: :water_level
1681
+ :description: Water Level
1682
+ :uuid: 000000B5-0000-1000-8000-0026BB765291
1683
+ :format: float
1684
+ :unit: nil
1685
+ :permissions:
1686
+ - securedRead
1687
+ :properties:
1688
+ - read
1689
+ - cnotify
1690
+ :constraints:
1691
+ MaximumValue: 100
1692
+ MinimumValue: 0