alexa_hue 1.1.3 → 1.1.4
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 +4 -4
 - data/lib/alexa_hue/version.rb +1 -1
 - data/lib/alexa_hue.rb +37 -25
 - metadata +1 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 9899901a0800aaac312d75eba07974c4caf1777f
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 63a10072deb984d0c3a9f5908e82a2c61474fc24
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 392e2fde49d7b0cfca31e316817fd674abe79663bb65c7596a9df49322b820a9fe6b9da9f4c6c83286516bf4316e94e18959023e6bd521c4d6fb6d8016c24f1a
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 6118cb8026c5b30b063e80582652013705cc03b7aa9523de7850bbf4e630d9c59861bf5db2f8f06dbe0cd7965be6834113181577c156247e4632cdc22c004fad
         
     | 
    
        data/lib/alexa_hue/version.rb
    CHANGED
    
    
    
        data/lib/alexa_hue.rb
    CHANGED
    
    | 
         @@ -11,21 +11,24 @@ require 'alexa_hue/hue/voice_parser' 
     | 
|
| 
       11 
11 
     | 
    
         
             
            require 'alexa_hue/hue/helpers'
         
     | 
| 
       12 
12 
     | 
    
         
             
            require 'chronic_duration'
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            LEVELS = {} ; [*1..10].each { |t| LEVELS[t.to_s ] = t.in_words }
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
       14 
18 
     | 
    
         
             
            module Hue
         
     | 
| 
       15 
19 
     | 
    
         
             
              include Hue::Helpers
         
     | 
| 
       16 
20 
     | 
    
         
             
              extend Sinatra::Extension
         
     | 
| 
       17 
21 
     | 
    
         | 
| 
       18 
22 
     | 
    
         
             
              helpers do
         
     | 
| 
       19 
     | 
    
         
            -
                LEVELS = {} ; [*1..10].each { |t| LEVELS[t.to_s ] = t.in_words }
         
     | 
| 
       20 
     | 
    
         
            -
                
         
     | 
| 
       21 
23 
     | 
    
         
             
                def control_lights
         
     | 
| 
       22 
     | 
    
         
            -
                   
     | 
| 
       23 
     | 
    
         
            -
                     
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
                  if @echo_request.slots.brightness
         
     | 
| 
      
 25 
     | 
    
         
            +
                    LEVELS.keys.reverse_each { |level| @echo_request.slots.brightness.sub!(level, LEVELS[level]) } if @echo_request.slots.schedule.nil? 
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  if @echo_request.slots.saturation
         
     | 
| 
      
 29 
     | 
    
         
            +
                    LEVELS.keys.reverse_each { |level| @echo_request.slots.saturation.sub!(level, LEVELS[level]) } if @echo_request.slots.schedule.nil?
         
     | 
| 
       26 
30 
     | 
    
         
             
                  end
         
     | 
| 
       27 
31 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                  # TODO: ...something about this feel ugly and unexpressive
         
     | 
| 
       29 
32 
     | 
    
         
             
                  @echo_request.slots.to_h.each do |k,v| 
         
     | 
| 
       30 
33 
     | 
    
         
             
                    @string ||= ""
         
     | 
| 
       31 
34 
     | 
    
         
             
                    next unless v
         
     | 
| 
         @@ -41,42 +44,51 @@ module Hue 
     | 
|
| 
       41 
44 
     | 
    
         
             
                      @string << "#{k.to_s} #{v.to_s}  "
         
     | 
| 
       42 
45 
     | 
    
         
             
                    end
         
     | 
| 
       43 
46 
     | 
    
         
             
                  end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                  # TODO: create context for these statements  
         
     | 
| 
      
 47 
     | 
    
         
            +
                    
         
     | 
| 
       46 
48 
     | 
    
         
             
                  fix_schedule_syntax(@string)        
         
     | 
| 
       47 
     | 
    
         
            -
                  @string.sub!("color loop", "colorloop") 
     | 
| 
      
 49 
     | 
    
         
            +
                  @string.sub!("color loop", "colorloop")
         
     | 
| 
      
 50 
     | 
    
         
            +
                  @string.strip!
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 53 
     | 
    
         
            +
                    switch = Hue::Switch.new
         
     | 
| 
      
 54 
     | 
    
         
            +
                  rescue RuntimeError
         
     | 
| 
      
 55 
     | 
    
         
            +
                    halt AlexaObjects::Response.new(spoken_response: "Hello. Before using Hue lighting, you'll need to give me access to your Hue bridge. Please press the link button on your bridge and launch the skill again within ten seconds.").to_json
         
     | 
| 
      
 56 
     | 
    
         
            +
                  end
         
     | 
| 
       48 
57 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
                  if @echo_request.slots.scene.nil? && @echo_request.slots.savescene.nil?
         
     | 
| 
       50 
     | 
    
         
            -
                     
     | 
| 
      
 58 
     | 
    
         
            +
                  if @echo_request.slots.lights.nil? && @echo_request.slots.scene.nil? && @echo_request.slots.savescene.nil?
         
     | 
| 
      
 59 
     | 
    
         
            +
                    halt AlexaObjects::Response.new(end_session: false, spoken_response: "Please specify which light or lights you'd like to adjust. I'm ready to control the lights.").to_json
         
     | 
| 
      
 60 
     | 
    
         
            +
                  end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                  if @echo_request.slots.lights
         
     | 
| 
      
 63 
     | 
    
         
            +
                    if @echo_request.slots.lights.scan(/light|lights/).empty?
         
     | 
| 
       51 
64 
     | 
    
         
             
                      halt AlexaObjects::Response.new(end_session: false, spoken_response: "Please specify which light or lights you'd like to adjust. I'm ready to control the lights.").to_json
         
     | 
| 
       52 
65 
     | 
    
         
             
                    end
         
     | 
| 
       53 
66 
     | 
    
         
             
                  end
         
     | 
| 
       54 
67 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
                  # TODO: 58-68 seem to both express the same thought from alexa, could be simplified?
         
     | 
| 
       56 
68 
     | 
    
         
             
                  if @echo_request.slots.lights
         
     | 
| 
       57 
69 
     | 
    
         
             
                    if @echo_request.slots.lights.include?('lights')
         
     | 
| 
       58 
     | 
    
         
            -
                      if !( 
     | 
| 
      
 70 
     | 
    
         
            +
                      if !(switch.list_groups.keys.join(', ').downcase.include?("#{@echo_request.slots.lights.sub(' lights','')}"))
         
     | 
| 
       59 
71 
     | 
    
         
             
                        halt AlexaObjects::Response.new(spoken_response: "I couldn't find a group with the name #{@echo_request.slots.lights}").to_json
         
     | 
| 
       60 
72 
     | 
    
         
             
                      end
         
     | 
| 
       61 
73 
     | 
    
         
             
                    elsif  @echo_request.slots.lights.include?('light')
         
     | 
| 
       62 
     | 
    
         
            -
                      if  !( 
     | 
| 
      
 74 
     | 
    
         
            +
                      if  !(switch.list_lights.keys.join(', ').downcase.include?("#{@echo_request.slots.lights.sub(' light','')}"))
         
     | 
| 
       63 
75 
     | 
    
         
             
                        halt AlexaObjects::Response.new(spoken_response: "I couldn't find a light with the name #{@echo_request.slots.lights}").to_json
         
     | 
| 
       64 
76 
     | 
    
         
             
                      end
         
     | 
| 
       65 
77 
     | 
    
         
             
                    end
         
     | 
| 
       66 
78 
     | 
    
         
             
                  end
         
     | 
| 
      
 79 
     | 
    
         
            +
                    
         
     | 
| 
       67 
80 
     | 
    
         | 
| 
       68 
     | 
    
         
            -
                  # 
     | 
| 
       69 
     | 
    
         
            -
                   
     | 
| 
      
 81 
     | 
    
         
            +
                  #if  @string.include?('light ')
         
     | 
| 
      
 82 
     | 
    
         
            +
                  #  if (@string.split(' ') & switch.list_lights.keys.join(', ').downcase.split(', ')).empty?
         
     | 
| 
      
 83 
     | 
    
         
            +
                  #    r = AlexaObjects::Response.new
         
     | 
| 
      
 84 
     | 
    
         
            +
                  #    r.end_session = true
         
     | 
| 
      
 85 
     | 
    
         
            +
                  #    r.spoken_response = "I couldn't find a light with the name #{@echo_request.slots.lights}"
         
     | 
| 
      
 86 
     | 
    
         
            +
                  #    halt r.without_card.to_json
         
     | 
| 
      
 87 
     | 
    
         
            +
                  #  end
         
     | 
| 
      
 88 
     | 
    
         
            +
                  #end
         
     | 
| 
      
 89 
     | 
    
         
            +
                  switch.voice @string 
         
     | 
| 
       70 
90 
     | 
    
         | 
| 
       71 
91 
     | 
    
         
             
                  return AlexaObjects::Response.new(spoken_response: "okay").to_json
         
     | 
| 
       72 
92 
     | 
    
         
             
                end
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                def hue_client
         
     | 
| 
       75 
     | 
    
         
            -
                  begin
         
     | 
| 
       76 
     | 
    
         
            -
                    @client = Hue::Switch.new
         
     | 
| 
       77 
     | 
    
         
            -
                  rescue RuntimeError
         
     | 
| 
       78 
     | 
    
         
            -
                    halt AlexaObjects::Response.new(spoken_response: "Hello. Before using Hue lighting, you'll need to give me access to your Hue bridge. Please press the link button on your bridge and launch the skill again within ten seconds.").to_json
         
     | 
| 
       79 
     | 
    
         
            -
                  end
         
     | 
| 
       80 
     | 
    
         
            -
                end
         
     | 
| 
       81 
93 
     | 
    
         
             
              end
         
     | 
| 
       82 
94 
     | 
    
         
             
            end
         
     |