rubyhue 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YTAzMmQ0Y2I4ZDdjM2IxZmI5ODY3Y2ZmMGZkYWE1Nzg4ZmE1NTJkMA==
5
+ data.tar.gz: !binary |-
6
+ OWQ5OWI1ZjU2NTg1OGM2NGY4MGE0OTU5NmNmMGUxNWNlZTYzOGExOA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NjI4YzhlZTg5ZjhiZGY3NDllODcwMmY4NjJiZmFiMDU0YTA3Yjk1OWVhMDAy
10
+ ZjE1MGQyN2FlMTNhNmJjYmFhNGQ3MGRkMjI1NTYyN2VmYWEyZjM2NDdmNTlm
11
+ OTMwYTc1NDc3ZDYzNDc2ZmY5YTc2MjMzYzdhYzM0MzUwZDg3MTY=
12
+ data.tar.gz: !binary |-
13
+ NDY5MDViNGNlNDU1NTk4YTkyZjQwOWViOTFiNmIyZGMxYWE0YTdlZWFkZjZh
14
+ YmEyYWEyMmY0ZTk4YTY2YzZmMzNmNDQ3MWEzYjJhMTQ3NGRiOGQzMGVkOTRk
15
+ MTEyYjdiYzUyOWYwYTllYTdiMmE2NGQ5NmIyYjg4OTliODZkMDQ=
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ class HueBulb
4
+
5
+ attr_reader :id, :name, :type, :swversion,
6
+ :state, :data
7
+
8
+ def initialize(id,data = {})
9
+ @data = data
10
+ @id = id
11
+ @name = data["name"]
12
+ @type = data["type"]
13
+ @swversion = data["type"]
14
+ @state = HueBulbState.new data["state"]
15
+ end
16
+
17
+ end
18
+
19
+
20
+ class HueBulbState
21
+
22
+ attr_reader :on, :bri, :hue, :sat, :xy, :ct,
23
+ :alert, :effect, :colormode,
24
+ :reachable, :data
25
+
26
+ def initialize( data = {} )
27
+ @data = data
28
+ @on = data["on"]
29
+ @bri = data["bri"]
30
+ @hue = data["hue"]
31
+ @sat = data["sat"]
32
+ @xy = data["xy"]
33
+ @ct = data["ct"]
34
+ @alert = data["alert"]
35
+ @effect = data["effect"]
36
+ @colormode = data["colormode"]
37
+ @reachable = data["reachable"]
38
+ end
39
+
40
+ end
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ class HueGroup
4
+
5
+ attr_reader :data
6
+ def initialize( id, data = {} )
7
+ @id = id
8
+ @data = data
9
+ end
10
+
11
+ end
data/lib/rubyhue.rb ADDED
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'net/http'
4
+ require 'uri'
5
+ require 'json'
6
+
7
+ if __FILE__==$0
8
+ require './rubyhue/huebulb.rb'
9
+ require './rubyhue/huegroup.rb'
10
+ else
11
+ require 'rubyhue/huebulb.rb'
12
+ require 'rubyhue/huegroup.rb'
13
+ end
14
+
15
+ def jp( s )
16
+ puts JSON.pretty_generate( s )
17
+ end
18
+
19
+ class Hue
20
+
21
+ attr_reader :bulbs
22
+ def initialize(ip,username)
23
+ @ip = ip
24
+ @username = username
25
+ @http = Net::HTTP.new(ip,80)
26
+ @bulbs = []
27
+ @groups = []
28
+ end
29
+
30
+ def register_username
31
+ data = { "devicetype"=>"rubyhue",
32
+ "username"=>@username }
33
+ response = @http.post "/api", data.to_json
34
+ JSON.parse response.body
35
+ end
36
+
37
+ def request_config
38
+ hue_get "config"
39
+ end
40
+
41
+ def add_bulb(id,bulb_data)
42
+ @bulbs << HueBulb.new( id, bulb_data )
43
+ end
44
+
45
+ def request_bulb_list
46
+ hue_get "lights"
47
+ end
48
+
49
+ def request_bulb_info( id )
50
+ hue_get "lights/#{id}"
51
+ end
52
+
53
+ def request_group_list
54
+ hue_get "groups"
55
+ end
56
+
57
+ def set_bulb_state( id, state )
58
+ hue_put "lights/#{id}/state", state.data
59
+ end
60
+
61
+ private
62
+ def hue_get( path )
63
+ request = Net::HTTP::Get.new( "/api/#{@username}/#{path}" )
64
+ response = @http.request request
65
+ JSON.parse response.body
66
+ end
67
+
68
+ def hue_put( path, data )
69
+ response = @http.put( "/api/#{@username}/#{path}", data.to_json )
70
+ JSON.parse response.body
71
+ end
72
+
73
+ end
74
+
75
+ if __FILE__==$0
76
+ if ARGV.length < 2
77
+ STDERR.puts "Invaid args."
78
+ STDERR.puts "Usage: #{__FILE__} ip username"
79
+ exit
80
+ end
81
+
82
+ client = Hue.new(ARGV[0],ARGV[1])
83
+
84
+ bulbs_response = client.request_bulb_list
85
+ bulbs_response.each do |id,value|
86
+ info = client.request_bulb_info( id )
87
+ client.add_bulb(id,info)
88
+ puts client.bulbs.last.name
89
+ end
90
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubyhue
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Brady Turner
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-03 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Client library for controlling Phillips Hue lights.
14
+ email: bradyaturner@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/rubyhue.rb
20
+ - lib/rubyhue/huebulb.rb
21
+ - lib/rubyhue/huegroup.rb
22
+ homepage: http://rubygems.org/gems/rubyhue
23
+ licenses:
24
+ - BAT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.0.6
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: rubyhue
46
+ test_files: []