iremocon_control 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2c0c54f0840128ef6f2daf0a9282379120df398a
4
- data.tar.gz: 5914525d2c73291055102a1957675aad40e5ccc9
3
+ metadata.gz: 3304f4393880fafdec23cfdd208d64b9d3489dab
4
+ data.tar.gz: 1d8b6680ecbc99aa00948f21c4faf0cd846260a8
5
5
  SHA512:
6
- metadata.gz: 0bd816967a3134bdee5fb2294ea1f94bd489ce0e7d5d571dd839e376b34767fc857eec8bc25cb7ec786f7a9eefee875716ae39ee545aa52ef9ac30fa5d80b221
7
- data.tar.gz: 1ae325f37e38824b9befabffc9f3ecae3ec0d5729fc51419d1a884227f0fbf31557a8016750e5f6afaa6276e069d3e79089924173c98e9ef0f9c9679bf2c08b5
6
+ metadata.gz: 9719e30fdc4f3959ceb157a8b92dc48084f7ce888538c8c3f7ed97637be069e5e833e4b050a61342ebacc4e50a61b84c597a8fde45107a82cafb849db62cbaee
7
+ data.tar.gz: 9e43fc6d51d526927d37e323496252dcde644defdd8ef3b7bc208f720e83048075fbfbe5c6b847b8fb59039adacf9d2554ab0fef455e5502e25191ad7fb4aee5
data/bin/iremocon CHANGED
@@ -52,6 +52,7 @@ def main
52
52
 
53
53
  opt.parse!(ARGV)
54
54
 
55
+ host = IRemoconControl::IRemocon.find[0] if(host.nil? or host == "find")
55
56
  ir = IRemoconControl::IRemocon.new(host, port, logger:STDERR)
56
57
 
57
58
  # 引数の数チェック
@@ -1,3 +1,3 @@
1
1
  module IRemoconControl
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -143,6 +143,42 @@ module IRemoconControl
143
143
  reply[0]
144
144
  end
145
145
 
146
+ #
147
+ # ネットワーク上からiRemoconを見つける
148
+ # @param num_iremocon [Integer] ネットワーク上のiRemoconの数
149
+ # @param timeout [Integer] 探索のタイムアウト
150
+ # @return [Array<String>] iRemoconのIPアドレス文字列の配列
151
+ #
152
+ def self.find(num_iremocon = 1, timeout = 5)
153
+ sock = UDPSocket.open()
154
+ sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, 1)
155
+ sock.bind("0.0.0.0", 0)
156
+
157
+ # メッセージをブロードキャスト
158
+ sock.send("FIND", 0, "<broadcast>", 1460)
159
+
160
+ ips = []
161
+ begin
162
+ # タイムアウト設定
163
+ timeout(timeout) do
164
+ # タイムアウトまで繰り返す
165
+ while true
166
+ # 受信待ち
167
+ mesg, sockaddr = sock.recvfrom(512)
168
+ # iRemoconが見つかったら登録
169
+ ips << sockaddr[3] if sockaddr and sockaddr[3]
170
+ # num_iremocon個見つかったら修了
171
+ break if ips.uniq!.size == num_iremocon
172
+ end
173
+ end
174
+ rescue
175
+ # タイムアウトまでnum_iremocon個見つからなかった場合
176
+ nil
177
+ end
178
+
179
+ ips
180
+ end
181
+
146
182
  private
147
183
 
148
184
  def send_cmd(*cmds)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iremocon_control
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - YutaTanaka