Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/b5r1oj0a9g/hassfeld
Module to integrate Teufel smart speakers (aka Raumfeld Multiroom) into https://www.home-assistant.io/.
https://github.com/b5r1oj0a9g/hassfeld
home-assistant multiroom multiroom-audio raumfeld smart-speaker teufel
Last synced: 3 days ago
JSON representation
Module to integrate Teufel smart speakers (aka Raumfeld Multiroom) into https://www.home-assistant.io/.
- Host: GitHub
- URL: https://github.com/b5r1oj0a9g/hassfeld
- Owner: B5r1oJ0A9G
- License: gpl-3.0
- Created: 2020-12-28T11:42:13.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2023-08-02T19:37:06.000Z (about 1 year ago)
- Last Synced: 2024-09-30T05:41:26.194Z (3 days ago)
- Topics: home-assistant, multiroom, multiroom-audio, raumfeld, smart-speaker, teufel
- Language: Python
- Homepage:
- Size: 119 KB
- Stars: 7
- Watchers: 1
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
hassfeld
========|Language grade Python|
hassfeld is a module primarily aimed to integrated Teufel Smart Speaker (aka Raumfeld Multiroom) into https://www.home-assistant.io/. However, the design is not tailored to Home Assistant and can be used as a module to any Pyhton program to control the Teufel Smart Speaker. The module also provides corresponding asyncio methods.
Look how it is to use with asyncrhonous I/O::
import asyncio
import aiohttp
import hassfeldasync def main():
host = "teufel-host.example.com"
port = 47365
session = aiohttp.ClientSession()
raumfeld = hassfeld.RaumfeldHost(host, port, session=session)asyncio.create_task(raumfeld.async_update_all(session))
await raumfeld.async_wait_initial_update()zone = ["Master Bedroom"]
media_info = await raumfeld.async_get_media_info(zone)
print(f"Media info: {media_info}")await session.close()
asyncio.run(main())
The use with blocking I/O was supported too but is currently broken::
import hassfeld
raumfeld_host = "teufel-host.example.com"
zone = [ "Living room", "Kitchen" ]
raumfeld = hassfeld.RaumfeldHost(raumfeld_host)
raumfeld.start_update_thread()
raumfeld.search_and_zone_play(zone, 'raumfeld:any contains "Like a Rolling Stone"')Features
--------- Management and snapshot of zones.
- Search and play songs.Install hassfeld by running::
python3 -m pip install hassfeld
Contribute
----------- Issue Tracker: https://github.com/B5r1oJ0A9G/hassfeld/issues
- Source Code: https://github.com/B5r1oJ0A9G/hassfeldLicense
-------The project is licensed under the GNU General Public License v3 (GPLv3).
.. |Language grade Python| image:: https://github.com/B5r1oJ0A9G/hassfeld/actions/workflows/github-code-scanning/codeql/badge.svg?branch=master
:target: https://github.com/B5r1oJ0A9G/hassfeld/actions/workflows/github-code-scanning/codeql