Since I recently sold of my KEF LS50 Wireless speakers, I will no longer maintain this repository. I suggest that you check out aiokef which is a newer implementation which supports asyncio while also being more feature rich.
Supported devices:
- KEF LS50 Wireless (Requires firmware June 2018 or later)
- KEF LSX
- Get and set volume
- Mute and Unmute
- Get and set source input
- Get if the speakers are online
- Automatically connects and disconnects when speakers goes online/offline
- Turn off speaker
- Turn on (KEF LSX only)
- Turn on is impossible over tcp/ip (KEF LS50 Wireless) because the speaker turns off network interface when turned off. This is true for LS50 Wireless. LSX should be possible to turn on.
Note: One workaround to turning on is to use IR commands to turn on. I have included a lirc config with all the keys on the remote. Note that each command has to be sent twice to work (at least for me).
pip install pykef
Setup:
from pykef import KefSpeaker, InputSource
host = '192.168.1.200'
port = 50001
speaker = KefSpeaker(host, port)
speaker.source = InputSource.Bluetooth
Set volume:
speaker.volume = 0.5 # %50 vol
Get volume:
volume = speaker.volume
Set source:
speaker.source = InputSource.Aux
Get source:
source = speaker.source
Mute:
speaker.volume = None
# Or
speaker.muted = True
Unmute (set to volume before mute):
speaker.muted = False
Step volume up
speaker.increseVolume() # 5% increase
speaker.increseVolume(0.10) # 10% increase
Step volume down
speaker.decreaseVolume() # 5% increase
speaker.decreaseVolume(0.10) # 10% increase
Turn off
speaker.turnOff()
- Update needed tools:
python3 -m pip install --user --upgrade setuptools wheel
- Build
python3 setup.py sdist bdist_wheel
- Upload (test)
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
MIT License
- Robin Grönberg