Class: Particle::Device
Overview
Domain model for one Particle device
Constant Summary collapse
- ID_REGEX =
/\h{24}/
- PRODUCT_IDS =
{ 0 => "Core".freeze, 6 => "Photon".freeze, 8 => "P1".freeze, 10 => "Electron".freeze }
Class Method Summary collapse
Instance Method Summary collapse
-
#change_product(product_id, should_update = false) ⇒ boolean
Change the product_id on the device.
-
#claim ⇒ Object
Add a Particle device to your account.
-
#compile(file_paths) ⇒ OpenStruct
Compile firmware from source code for this device.
-
#flash(file_paths, options = {}) ⇒ OpenStruct
Flash new firmware to this device from source code or binary.
-
#function(name, argument = "") ⇒ Object
(also: #call)
Call a function in the firmware of a Particle device.
- #function_path(name) ⇒ Object
- #functions ⇒ Object
- #get_attributes ⇒ Object
- #id ⇒ Object
- #id_or_name ⇒ Object
-
#initialize(client, attributes) ⇒ Device
constructor
A new instance of Device.
- #name ⇒ Object
- #path ⇒ Object
- #product ⇒ Object
-
#remove ⇒ Object
Remove a Particle device from your account.
-
#rename(name) ⇒ Object
Rename a Particle device on your account.
-
#signal(enabled = true) ⇒ boolean
Signal the device to start blinking the RGB LED in a rainbow pattern.
-
#update_public_key(public_key, algorithm = 'rsa') ⇒ boolean
Update the public key for a device you own.
-
#variable(name) ⇒ String, Number
(also: #get)
Get the value of a variable in the firmware of a Particle device.
- #variable_path(name) ⇒ Object
- #variables ⇒ Object
Methods inherited from Model
attribute_reader, #attributes, #inspect
Constructor Details
#initialize(client, attributes) ⇒ Device
Returns a new instance of Device.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/particle/device.rb', line 15 def initialize(client, attributes) super(client, attributes) if attributes.is_a? String if attributes =~ ID_REGEX @attributes = { id: attributes } else @attributes = { name: attributes } end else # Listing all devices returns partial attributes so check if the # device was fully loaded or not @fully_loaded = true if attributes.key?(:variables) end end |
Class Method Details
.claim_path ⇒ Object
181 182 183 |
# File 'lib/particle/device.rb', line 181 def self.claim_path "v1/devices" end |
.list_path ⇒ Object
177 178 179 |
# File 'lib/particle/device.rb', line 177 def self.list_path "v1/devices" end |
.provision_path ⇒ Object
185 186 187 |
# File 'lib/particle/device.rb', line 185 def self.provision_path "v1/provisioning/x" end |
Instance Method Details
#change_product(product_id, should_update = false) ⇒ boolean
Change the product_id on the device. Use this carefully, it will impact what updates you receive, and can only be used for products that have given their permission
162 163 164 |
# File 'lib/particle/device.rb', line 162 def change_product(product_id, should_update = false) @client.change_device_product(self, product_id, should_update) end |
#claim ⇒ Object
Add a Particle device to your account
73 74 75 76 |
# File 'lib/particle/device.rb', line 73 def claim new_device = @client.claim_device(self) self end |
#compile(file_paths) ⇒ OpenStruct
Compile firmware from source code for this device
150 151 152 |
# File 'lib/particle/device.rb', line 150 def compile(file_paths) @client.compile(file_paths, device_id: id) end |
#flash(file_paths, options = {}) ⇒ OpenStruct
Flash new firmware to this device from source code or binary
138 139 140 |
# File 'lib/particle/device.rb', line 138 def flash(file_paths, = {}) @client.flash_device(self, file_paths, ) end |
#function(name, argument = "") ⇒ Object Also known as: call
Call a function in the firmware of a Particle device
101 102 103 |
# File 'lib/particle/device.rb', line 101 def function(name, argument = "") @client.call_function(self, name, argument) end |
#function_path(name) ⇒ Object
193 194 195 |
# File 'lib/particle/device.rb', line 193 def function_path(name) path + "/#{name}" end |
#functions ⇒ Object
50 51 52 53 |
# File 'lib/particle/device.rb', line 50 def functions get_attributes unless @fully_loaded @attributes[:functions] end |
#get_attributes ⇒ Object
64 65 66 67 |
# File 'lib/particle/device.rb', line 64 def get_attributes @loaded = @fully_loaded = true @attributes = @client.device_attributes(self) end |
#id ⇒ Object
31 32 33 34 |
# File 'lib/particle/device.rb', line 31 def id get_attributes unless @attributes[:id] @attributes[:id] end |
#id_or_name ⇒ Object
41 42 43 |
# File 'lib/particle/device.rb', line 41 def id_or_name @attributes[:id] || @attributes[:name] end |
#name ⇒ Object
36 37 38 39 |
# File 'lib/particle/device.rb', line 36 def name get_attributes unless @attributes[:name] @attributes[:name] end |
#path ⇒ Object
189 190 191 |
# File 'lib/particle/device.rb', line 189 def path "/v1/devices/#{id_or_name}" end |
#product ⇒ Object
60 61 62 |
# File 'lib/particle/device.rb', line 60 def product PRODUCT_IDS[product_id] end |
#remove ⇒ Object
Remove a Particle device from your account
82 83 84 |
# File 'lib/particle/device.rb', line 82 def remove @client.remove_device(self) end |
#rename(name) ⇒ Object
Rename a Particle device on your account
91 92 93 |
# File 'lib/particle/device.rb', line 91 def rename(name) @client.rename_device(self, name) end |
#signal(enabled = true) ⇒ boolean
Signal the device to start blinking the RGB LED in a rainbow pattern. Useful to identify a particular device.
123 124 125 |
# File 'lib/particle/device.rb', line 123 def signal(enabled = true) @client.signal_device(self, enabled) end |
#update_public_key(public_key, algorithm = 'rsa') ⇒ boolean
Update the public key for a device you own
173 174 175 |
# File 'lib/particle/device.rb', line 173 def update_public_key(public_key, algorithm = 'rsa') @client.update_device_public_key(self, public_key, algorithm) end |
#variable(name) ⇒ String, Number Also known as: get
Get the value of a variable in the firmware of a Particle device
113 114 115 |
# File 'lib/particle/device.rb', line 113 def variable(name) @client.get_variable(self, name) end |
#variable_path(name) ⇒ Object
197 198 199 |
# File 'lib/particle/device.rb', line 197 def variable_path(name) path + "/#{name}" end |
#variables ⇒ Object
55 56 57 58 |
# File 'lib/particle/device.rb', line 55 def variables get_attributes unless @fully_loaded @attributes[:variables] end |