Metadata-Version: 2.1
Name: python-libratone-zipp
Version: 1.1.2
Summary: Control a Libratone Zipp speaker with a Python library
Home-page: https://github.com/Chouffy/python_libratone_zipp
Author: Chouffy
Author-email: git@chouffy.net
License: UNKNOWN
Project-URL: Bug Tracker, https://github.com/Chouffy/python_libratone_zipp/issues
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown

# Libratone Zipp controller library in Python

This aims to control a Libratone Zipp speaker with a Python library, potentially usable in [Home Assistant](https://www.home-assistant.io/) with [this module](https://github.com/Chouffy/home_assistant_libratone_zipp).

Install it with `pip install python-libratone-zipp` - [pip page](https://pypi.org/project/python-libratone-zipp/)

## Acknowledgment

This work is based on the following:

* The Libratone command list is [coming from this work from Benjamin Hanke](https://www.loxwiki.eu/display/LOX/Libratone+Zipp+WLan+Lautsprecher)
* Entity to use: [Media Player](https://developers.home-assistant.io/docs/core/entity/media-player)
* Example of [integrations](https://www.home-assistant.io/integrations/#media-player):
    * Simple: [Harman Kardon AVR integration](https://www.home-assistant.io/integrations/harman_kardon_avr/) which use [this module](https://github.com/Devqon/hkavr)
    * Simple: [Clementine Music Player integration](https://github.com/home-assistant/core/blob/dev/homeassistant/components/clementine/media_player.py) which use [this module]()
    * Async: [Frontier Silicon integration](https://github.com/home-assistant/core/tree/dev/homeassistant/components/frontier_silicon) with [this module](https://github.com/zhelev/python-afsapi/tree/master/afsapi)
    * Async with extended features: [Yamaha integration](https://github.com/home-assistant/core/blob/dev/homeassistant/components/yamaha/) with [this module](https://github.com/wuub/rxv)

## Usage

Functions return `True` if they are successful

Command | Action
-|-
**Initialization**
`from python_libratone_zipp import LibratoneZipp` | Import the library
`zipp = LibratoneZipp('192.168.1.99', "Zipp")` | Instanciate the LibratoneZipp class
**Properties**
`zipp.name` | Name of the speaker
`zipp.host` | IP adress of the speaker
**Playback commands**
`zipp.state`| State of the speaker - see below
`zipp.play()` | Play command
`zipp.pause()` | Pause command
`zipp.stop()` | Stop command
`zipp.next()` | Next track command
`zipp.prev()` | Previous track command
**Voicing (sound mode) commands**
`zipp.voicing` | Current voicing
`zipp.voicing_list` | List of all `<voicing_id>`
`zipp.voicing_set(<voicing_id>)` | Set the speaker to `<voicing_id>`

### States

Right now, state are calculated and not fetched from the device. Some of them (sleep) are not even used.

State variable | Variable content | Description
-|-|-
`STATE_OFF` | `"OFF"` | The speaker is off or cannot be reached
`STATE_SLEEP` | `"SLEEP"` | The speaker is in sleep mode (nightingale is off)
`STATE_IDLE` | `"IDLE"` | The speaker is active but don't play anything
`STATE_PLAY` | `"PLAY"` | The speaker is playing
`STATE_PAUSE` | `"PAUSE"` | The speaker is on pause - Not sure if it's a "true" state

## Roadmap

### Module improvement

* [ ] Clean text variables, declare variable on top instead of using text like "play"
* [ ] Create a client
* [ ] Use discovery method instead of fixed IP

### Functionnality coverage

* v1.0
    * [x] Set basic playback status: play, pause, stop, next, prev
    * [x] Set a Favorite
    * [x] Calculate state - But this is not use in HA
    * [x] Make it work with Home Assistant
    * [x] Publish on PyPi
* v1.1
    * [x] Set a Voicing
* v2.0
    * [ ] Retrieve basic playback status: play, pause, stop, next, prev
* v3.0
    * [ ] Make the module async

Other functionalities:

* Volume
    * [ ] Set volume
    * [ ] Retrieve volume
* Current Playback info
    * [ ] Retrieve current playback source
    * [ ] Retrieve current title
    * [ ] Retrieve media type: bluetooth, spotify, aux, radio, ...
* Standby
    * [ ] Set to immediate standby
    * [ ] Set a standby timer
    * [ ] Retrive a standby timer
* Voicing & Room Setting
    * [ ] Retrieve current Voicing
    * [ ] Set Room Setting
    * [ ] Retrieve current Room Setting
* Favorites
    * [ ] Play a favorite
    * [ ] Set a Favorite
* Extended current playback info
    * [ ] Set extended playback status: shuffle, repeat
    * [ ] Retrieve extended playback status: shuffle, repeat
    * [ ] Set Source
    * [ ] Retrieve current source
* Speaker configuration
    * [ ] Retrieve speaker name
    * [ ] Retrieve speaker color
    * [ ] Set speaker name
    * [ ] Set speaker color
    * [ ] Retrieve current firmware, IP, serial number
    * [ ] Retrieve current battery and AC information
* Network
    * [ ] Retrieve current wifi information
    * [ ] Set wifi information

## License

See LICENSE file


