Class: Wizrb::Shared::Discover

Inherits:
Object
  • Object
show all
Defined in:
lib/wizrb/shared/discover.rb

Direct Known Subclasses

Lighting::Discover, Power::Discover

Constant Summary collapse

MULTICAST_ADDR =
"224.0.0.1"
BIND_ADDR =
"0.0.0.0"
PORT =
38_899
REGISTRATION_MESSAGE =
{
  method: "registration",
  params: {
    phoneMac: "ABCDEFGHIJKL",
    register: false,
    phoneIp: "1.2.3.4",
    id: "1"
  }
}.to_json

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(wait: 2) ⇒ Discover



25
26
27
28
29
30
# File 'lib/wizrb/shared/discover.rb', line 25

def initialize(wait: 2)
  @wait = wait
  @listening = false
  @thread = nil
  @devices = []
end

Class Method Details

.all(wait: 2, filters: {}) ⇒ Object



50
51
52
# File 'lib/wizrb/shared/discover.rb', line 50

def self.all(wait: 2, filters: {})
  new(wait: wait).all(filters: filters)
end

.home(id, wait: 2) ⇒ Object



54
55
56
# File 'lib/wizrb/shared/discover.rb', line 54

def self.home(id, wait: 2)
  new(wait: wait).home(id)
end

.room(id, wait: 2) ⇒ Object



58
59
60
# File 'lib/wizrb/shared/discover.rb', line 58

def self.room(id, wait: 2)
  new(wait: wait).room(id)
end

Instance Method Details

#all(filters: {}) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/wizrb/shared/discover.rb', line 32

def all(filters: {})
  open_socket
  listen_registration(filters)
  dispatch_registration
  sleep(@wait)
  close_registration
  close_socket
  group_devices
end

#home(id) ⇒ Object



42
43
44
# File 'lib/wizrb/shared/discover.rb', line 42

def home(id)
  all(filters: {"homeId" => id})
end

#room(id) ⇒ Object



46
47
48
# File 'lib/wizrb/shared/discover.rb', line 46

def room(id)
  all(filters: {"roomId" => id})
end