lightwaverf 0.0.4 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/ruby
2
2
  require 'lightwaverf'
3
- p LightWaveRF.new.config_json
3
+ puts LightWaveRF.new.config_json
data/lib/lightwaverf.rb CHANGED
@@ -20,7 +20,8 @@ class LightWaveRF
20
20
 
21
21
  def config_json
22
22
  require 'json'
23
- JSON self.get_config
23
+ require 'pp'
24
+ JSON.generate self.get_config
24
25
  end
25
26
 
26
27
  def set_config_file file
@@ -47,9 +48,10 @@ class LightWaveRF
47
48
  rooms = { }
48
49
  r = 1
49
50
  config['room'].each do | name, devices |
50
- rooms[name] = { 'id' => 'R' + r.to_s, 'device' => { }}
51
+ rooms[name] = { 'id' => 'R' + r.to_s, 'name' => name, 'device' => { }}
51
52
  d = 1
52
53
  devices.each do | device |
54
+ # @todo possibly need to complicate this to get a device name back in here
53
55
  rooms[name]['device'][device] = 'D' + d.to_s
54
56
  d += 1
55
57
  end
@@ -64,7 +66,7 @@ class LightWaveRF
64
66
  state = 'F0'
65
67
  when 'on'
66
68
  state = 'F1'
67
- when 1..99
69
+ when 1..100
68
70
  state = 'FdP' + ( state * 0.32 ).round.to_s
69
71
  end
70
72
  state
@@ -80,7 +82,8 @@ class LightWaveRF
80
82
  # device: (String)
81
83
  # state: (String)
82
84
  def command room, device, state
83
- "666,!" + room['id'] + room['device'][device] + state + "|"
85
+ # @todo get the device name in here...
86
+ '666,!' + room['id'] + room['device'][device] + state + '|' + room['name'] + ' ' + room['id'] + '|via @pauly'
84
87
  end
85
88
 
86
89
  # Turn one of your devices on or off
@@ -99,7 +102,7 @@ class LightWaveRF
99
102
  if rooms[room] && device && state && rooms[room]['device'][device]
100
103
  command = self.command rooms[room], device, state
101
104
  debug && ( p 'command is ' + command )
102
- UDPSocket.new.send command, 0, self.get_config['host'], 9760
105
+ self.raw command
103
106
  else
104
107
  STDERR.puts self.usage
105
108
  end
@@ -115,12 +118,28 @@ class LightWaveRF
115
118
  end
116
119
 
117
120
  def energy
118
- listener = UDPSocket.new
119
- listener.bind '0.0.0.0', 9761
120
- UDPSocket.new.send "666,@?", 0, self.get_config['host'], 9760
121
- data, addr = listener.recvfrom 200
122
- listener.close
123
- data = /W=(?<usage>\d+),(?<max>\d+),(?<today>\d+),(?<yesterday>\d+)/.match( data )
121
+ data = self.raw '666,@?'
122
+ begin
123
+ /W=(?<usage>\d+),(?<max>\d+),(?<today>\d+),(?<yesterday>\d+)/.match( data )
124
+ rescue
125
+ data
126
+ end
127
+ end
128
+
129
+ def raw command
130
+ response = nil
131
+ begin
132
+ listener = UDPSocket.new
133
+ listener.bind '0.0.0.0', 9761
134
+ rescue
135
+ response = "can't bind to listen for a reply"
136
+ end
137
+ UDPSocket.new.send command, 0, self.get_config['host'], 9760
138
+ if ! response
139
+ response, addr = listener.recvfrom 200
140
+ listener.close
141
+ end
142
+ response
124
143
  end
125
144
 
126
145
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lightwaverf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-28 00:00:00.000000000 Z
12
+ date: 2012-12-30 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Interact with lightwaverf wifi link from the command line
15
15
  email: pauly@clarkeology.com