Module: Sonos::Endpoint::Alarm
- Included in:
- Device::Speaker
- Defined in:
- lib/sonos/endpoint/alarm.rb
Constant Summary collapse
- ALARM_CLOCK_ENDPOINT =
'/AlarmClock/Control'
- ALARM_CLOCK_XMLNS =
'urn:schemas-upnp-org:service:AlarmClock:1'
Instance Method Summary collapse
- #create_alarm(startLocalTime, duration, recurrence, enabled, roomUuid, playMode, volume, includeLinkedZones, programUri, programMetaData) ⇒ Object
- #destroy_alarm(id) ⇒ Object
- #disable_alarm(id) ⇒ Object
- #enable_alarm(id) ⇒ Object
- #is_alarm_enabled?(id) ⇒ Boolean
-
#list_alarms ⇒ Object
List the alarms that have been defined.
- #set_alarm_volume(id, volume) ⇒ Object
- #update_alarm(id, startLocalTime, duration, recurrence, enabled, roomUuid, playMode, volume, includeLinkedZones, programUri, programMetaData) ⇒ Object
Instance Method Details
#create_alarm(startLocalTime, duration, recurrence, enabled, roomUuid, playMode, volume, includeLinkedZones, programUri, programMetaData) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/sonos/endpoint/alarm.rb', line 33 def create_alarm(startLocalTime, duration, recurrence, enabled, roomUuid, playMode, volume, includeLinkedZones, programUri, programMetaData) = {:StartLocalTime => startLocalTime, :Duration => duration, :Recurrence => recurrence, :Enabled => enabled, :RoomUUID => roomUuid, :PlayMode => playMode, :Volume => volume, :IncludeLinkedZones => includeLinkedZones, :ProgramURI => programUri, :ProgramMetaData => programMetaData} parse_response ('CreateAlarm', convert_hash_to_xml()) end |
#destroy_alarm(id) ⇒ Object
41 42 43 |
# File 'lib/sonos/endpoint/alarm.rb', line 41 def destroy_alarm(id) parse_response ('DestroyAlarm', "<ID>#{id}</ID>") end |
#disable_alarm(id) ⇒ Object
63 64 65 66 67 |
# File 'lib/sonos/endpoint/alarm.rb', line 63 def disable_alarm(id) alarm_hash = list_alarms[id] alarm_hash[:Enabled] = '0' parse_response ('UpdateAlarm', convert_hash_to_xml(alarm_hash)) end |
#enable_alarm(id) ⇒ Object
57 58 59 60 61 |
# File 'lib/sonos/endpoint/alarm.rb', line 57 def enable_alarm(id) alarm_hash = list_alarms[id] alarm_hash[:Enabled] = '1' parse_response ('UpdateAlarm', convert_hash_to_xml(alarm_hash)) end |
#is_alarm_enabled?(id) ⇒ Boolean
53 54 55 |
# File 'lib/sonos/endpoint/alarm.rb', line 53 def is_alarm_enabled?(id) list_alarms[id][:Enabled] end |
#list_alarms ⇒ Object
List the alarms that have been defined
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/sonos/endpoint/alarm.rb', line 6 def list_alarms hash_of_alarm_hashes = {} response = ('ListAlarms') alarm_list_reader = Nokogiri::XML::Reader(response.to_hash[:list_alarms_response][:current_alarm_list]) alarm_list_reader.each do |alarm_node| id = alarm_node.attribute('ID') unless id.nil? alarm_hash = { :ID => id, # UpdateAlarm expects 'StartLocalTime', but the ListAlarm response attribute is 'StartTime' :StartLocalTime => alarm_node.attribute('StartTime'), :Duration => alarm_node.attribute('Duration'), :Recurrence => alarm_node.attribute('Recurrence'), :Enabled => alarm_node.attribute('Enabled'), :RoomUUID => alarm_node.attribute('RoomUUID'), :PlayMode => alarm_node.attribute('PlayMode'), :Volume => alarm_node.attribute('Volume'), :IncludeLinkedZones => alarm_node.attribute('IncludeLinkedZones'), :ProgramURI => alarm_node.attribute('ProgramURI'), :ProgramMetaData => alarm_node.attribute('ProgramMetaData') } hash_of_alarm_hashes[id] = alarm_hash end end hash_of_alarm_hashes end |
#set_alarm_volume(id, volume) ⇒ Object
69 70 71 72 73 |
# File 'lib/sonos/endpoint/alarm.rb', line 69 def set_alarm_volume(id, volume) alarm_hash = list_alarms[id] alarm_hash[:Volume] = volume parse_response ('UpdateAlarm', convert_hash_to_xml(alarm_hash)) end |
#update_alarm(id, startLocalTime, duration, recurrence, enabled, roomUuid, playMode, volume, includeLinkedZones, programUri, programMetaData) ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/sonos/endpoint/alarm.rb', line 45 def update_alarm(id, startLocalTime, duration, recurrence, enabled, roomUuid, playMode, volume, includeLinkedZones, programUri, programMetaData) alarm_hash = {:ID => id, :StartLocalTime => startLocalTime, :Duration => duration, :Recurrence => recurrence, :Enabled => enabled, :RoomUUID => roomUuid, :PlayMode => playMode, :Volume => volume, :IncludeLinkedZones => includeLinkedZones, :ProgramURI => programUri, :ProgramMetaData => programMetaData} parse_response ('UpdateAlarm', convert_hash_to_xml(alarm_hash)) end |