Skip to content

maierp/PyRaumfeld

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyRaumfeld 0.5

Python library for controlling the Teufel Raumfeld system

Author: Patrick Maier
https://github.com/maierp/pyraumfeld

Based on python-raumfeld by Thomas Feldmann:
https://github.com/tfeldmann/python-raumfeld

##The Lib provides:

  • a data structure representing the Zone and room config of Raumfeld
  • playback and information functionality
  • functions for modifying the zone configuration
  • the functionality to register a callback function which gets called as soon as the zone configuration changed
  • immediate data update via long-polling of the Raumfeld WEB-API

###Zone objects:

  • Name, UDN, Location, Address (read only)
  • media_info: returns hash with NrTracks, MediaDuration, CurrentURI, CurrentURIMetaData, NextURI, NextURIMetaData, PlayMedium, RecordMedium, WriteStatus (read only)
  • media_info_[above names] as extra functions
  • position_info: returns hash with Track, TrackDuration, TrackMetaData, TrackURI, RelTime, AbsTime, RelCount, AbsCount (read only)
  • position_info[above names] as extra functions
  • transport_info: returns hash with CurrentTransportState, CurrentTransportStatus, CurrentSpeed (read only)
  • transport_info[above names] as extra functions
  • volume, mute (read/write)
  • changeVolume(amount), play(uri(optional), meta(optional)), bend(uri, meta(optional)), next(), previous(), pause(), seek(amount, unit[ABS_TIME|REL_TIME|TRACK_NR]), stop()
  • A zone contains a list of Room objects which can be fetched with getRooms() -> returns an array
  • You can search for Rooms in a Zone by calling getRoomsByName(name) -> returns array of found rooms ...
  • ... or for a specific room by calling getRoomByUDN(udn) -> returns the room (None otherwise)

###Room objects:

  • Name, UDN (read only)
  • volume, mute (read/write)
  • changeVolume(amount), play(uri(optional)), next(), previous(), pause(), seek(amount, unit[ABS_TIME|REL_TIME|TRACK_NR]), stop()
  • A room contains a list of Renderer objects which can be fetched with getRenderers() -> returns an array
  • You can search for a Renderer in a Room by calling getRenderer(name) -> returns the renderer (None otherwise)

###Renderer objects:

  • Name, UDN, Location, Address (read only)
  • volume, mute (read/write)
  • changeVolume(amount), play(uri(optional)), next(), previous(), pause(), seek(amount, unit[ABS_TIME|REL_TIME|TRACK_NR]), stop()

###MediaServer object:

  • UDN, Location (read only)
  • browse(object_id, browse_flag(optional), filter(optional), request_count(optional))
  • browse_children(object_id, filter(optional), request_count(optional))
  • search(container_id, search_criteria, filter(optional), request_count(optional))
  • create_queue(desired_name, container_id)
  • add_container(queue_id, container_id, source_id(optional), criteria(optional), start_index(optional), end_index(optional), position(optional))
  • add_item(queue_id, object_id, position)
  • move_in_queue(object_id, new_position)
  • remove_from_queue(queue_id, from_position, to_position)

###Global functions are:

  • setLogging(level) sets the logging level: logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL
  • registerChangeCallback(callback) here you can register your function which should be called when something in the data structure has changed
  • init(hostIP(optional)) this initializes the library and searches for the hostIP if none is provided.
  • getRoomsByName(name) searches for all rooms containing the string in their name
  • getRoomByUDN(udn) returns the Room object defined by the UDN
  • getZones() returns the list of Zone objects
  • getUnassignedRooms() returns the list of unassigned room objects
  • getZonesByName(name) searches for all zones containing the string in their name
  • getZoneByUDN(udn) returns the Zone object defined by the UDN
  • getZoneWithRoom(room_obj) returns the Zone containing the provided room object
  • getZoneWithRoomName(name) returns the Zone containing a room defined by its name
  • getZoneWithRoomUDN(udn) returns the Zone containing a room defined by its UDN
  • getMediaServer() returns the raumfeld media server
  • getMediaServerUDN() returns the udn of the raumfeld media server

###Zone-Configuration-Functions are:

  • dropRoomByUDN(udn) drops a room from its Zone
  • connectRoomToZone(room_udn, [zone_udn(optional)] puts the room with the given roomUDN in the zone with the zoneUDN. If no zone_udn is provided, a new zone is created

###Global variables:

  • hostBaseURL (readonly) the base URL of the host

##Sample Programs:

  • PyRaumfeldSample.py: Shows the basic usage
  • RaumfeldControl.py: Provides a web-based API to the Raumfeld system

###Known issues:

  • Due to a bug in the Raumfeld firmware, the Zone names may be incorrect

About

Python library for controlling the Teufel Raumfeld system

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages