Class: Guh::Device
Overview
This class wraps everything related to configured Devices.
TODO write up the creation of a normal device
TODO write up the creation of a discoverable device.
Class Method Summary collapse
-
.add(device_class_id, device_descriptor_id = nil, params = []) ⇒ Object
Creates a configured device and returns it’s ID.
-
.all ⇒ Object
Returns a list of all configured Devices.
-
.confirm_pairing(pairing_transaction_id) ⇒ Object
Finishes a pairing process with a device.
-
.count ⇒ Object
Returns current number of configured devices.
-
.discover(device_class_id, discovery_params = []) ⇒ Object
Returns a list of recently discovered devices.
-
.find(id) ⇒ Object
Returns a specific configured Device.
-
.remove(device_id) ⇒ Object
Removes a configured device.
Methods inherited from Base
configure, get, guh_ip_address, guh_ip_address=, guh_port, guh_port=, introspect, version
Class Method Details
.add(device_class_id, device_descriptor_id = nil, params = []) ⇒ Object
Creates a configured device and returns it’s ID.
Example for the “Elro Power Switch”:
Guh::Device.add("{308ae6e6-38b3-4b3a-a513-3199da2764f8}", nil, {
channel1: true,
channel2: false,
channel3: false,
channel4: false,
channel5: false,
channel6: true,
channel7: false,
channel8: false,
channel9: false,
channel10: false
})
To create a discovered device you have to provide a descriptor ID in the params:
Guh::Device.add("{985195aa-17ad-4530-88a4-cdd753d747d7}", "{727a4a9a-c187-446f-aadf-f1b2220607d1}")
91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/guh/device.rb', line 91 def self.add(device_class_id, device_descriptor_id = nil, params = []) device_class = Guh::DeviceClass.find(device_class_id) if device_class['createMethods'].include? 'CreateMethodUser' add_configured_device(device_class_id, params) elsif device_class['createMethods'].include? 'CreateMethodDiscovery' add_discovered_device(device_class_id, device_descriptor_id, params) elsif device_class['createMethods'].include? 'CreateMethodAuto' # Nothing to do here # TODO should we raise an exception? end end |
.all ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/guh/device.rb', line 34 def self.all response = get({ id: generate_request_id, method: "Devices.GetConfiguredDevices" }) return response['devices'] end |
.confirm_pairing(pairing_transaction_id) ⇒ Object
Finishes a pairing process with a device. The user might have to push a button on the device.
The pairing_transaction_id
can be obtained with the add_discovered_device() method.
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/guh/device.rb', line 110 def self.confirm_pairing(pairing_transaction_id) response = get({ id: generate_request_id, method: "Devices.PairDevice", params: { pairingTransactionId: pairing_transaction_id } }) if response['deviceError'] == 'DeviceErrorNoError' return response else raise Guh::DeviceError, response['deviceError'] end end |
.count ⇒ Object
Returns current number of configured devices
Example: Guh::Device.count_configured
157 158 159 |
# File 'lib/guh/device.rb', line 157 def self.count self.all.length end |
.discover(device_class_id, discovery_params = []) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/guh/device.rb', line 51 def self.discover(device_class_id, discovery_params = []) response = get({ id: generate_request_id, method: "Devices.GetDiscoveredDevices", params: { deviceClassId: device_class_id, discoveryParams: discovery_params } }) if response['deviceError'] == 'DeviceErrorNoError' return response['deviceDescriptors'] else raise Guh::DeviceError, response['deviceError'] end end |
.find(id) ⇒ Object
20 21 22 23 24 |
# File 'lib/guh/device.rb', line 20 def self.find(id) device = self.all.detect{|d| d['id']==id} return device end |
.remove(device_id) ⇒ Object
136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/guh/device.rb', line 136 def self.remove(device_id) response = get({ id: generate_request_id, method: "Devices.RemoveConfiguredDevice", params: { deviceId: device_id } }) if response['deviceError'] == 'DeviceErrorNoError' return true else raise Guh::DeviceError, response['deviceError'] end end |