sisyphus-control


Namesisyphus-control JSON
Version 3.1.3 PyPI version JSON
download
home_pagehttps://github.com/jkeljo/sisyphus-control
SummaryControl your Sisyphus kinetic art tables (sisyphus-industries.com)
upload_time2023-06-09 00:13:37
maintainer
docs_urlNone
authorJonathan Keljo
requires_python>=3.8
license
keywords sisyphus
VCS
bugtrack_url
requirements aiohttp aiosignal aiounittest astroid async-timeout attrs black build chardet charset-normalizer click dill frozenlist idna isort lazy-object-proxy mccabe multidict mypy-extensions netifaces nodeenv packaging pathspec platformdirs pylint pyproject_hooks pyright python-engineio python-socketio regex six toml tomli tomlkit typing_extensions wrapt yarl
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ====================
``sisyphus-control``
====================

Control your `Sisyphus Kinetic Art Table <https://www.sisyphus-industries.com>`_
from Python 3.6 with ``asyncio``!

This initial release is mainly targeting the functionality needed for basic integrations with home automation systems such as `Home Assistant <https://www.home-assistant.io/components/sisyphus/>`_:

* Status queries (playing/paused/current playlist/current/track/brightness/speed)
* Play controls (play/pause/shuffle/loop/set playlist/set track)
* Table controls (movement speed, LED brightness)

*************
Usage example
*************

Finding tables on your network
==============================
To find the IP addresses of all tables on your local network. This is a very naive search; it assumes your subnet
mask is ``255.255.255.0``::

  from sisyphus_control import Table

  ip_addrs = await Table.find_table_ips()

Once you know the IP address, connect to the table::

  async with await Table.connect(ip_addr) as Table:
    # Do stuff here

Change notifications
====================
Register for state change notifications::

  table.add_listener(my_listener)

Basic controls
==============
In addition to a bunch of properties for querying the current state of the table, ``Table`` has several methods that
allow simple control::

  await table.set_brightness(1.0)  # Set maximum LED brightness
  await table.set_speed(0.5)  # Set half speed
  await table.play()  # Resume playing (if not already playing)

Working with playlists and tracks
=================================
``Playlist`` and ``Track`` objects represent playlists and tracks, respectively. The following code will start playing
the Default Playlist, beginning at the track named "Hep" (note that neither playlists nor tracks are required to be
uniquely named)::

  default_playlist = table.get_playlists_named("Default Playlist")[0]
  hep_track = default_playlist.get_tracks_named("Hep")[0]
  await hep_track.play()

********************
Future opportunities
********************

The following features would be reasonable to include; I'll happily accept pull requests:

* Playlist editing
* Upload tracks to table
* Track thumbnail rendering
* Table administration (wifi settings, etc.)
* Interactions with Sisyphus cloud

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jkeljo/sisyphus-control",
    "name": "sisyphus-control",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "sisyphus",
    "author": "Jonathan Keljo",
    "author_email": "",
    "download_url": "",
    "platform": null,
    "description": "====================\n``sisyphus-control``\n====================\n\nControl your `Sisyphus Kinetic Art Table <https://www.sisyphus-industries.com>`_\nfrom Python 3.6 with ``asyncio``!\n\nThis initial release is mainly targeting the functionality needed for basic integrations with home automation systems such as `Home Assistant <https://www.home-assistant.io/components/sisyphus/>`_:\n\n* Status queries (playing/paused/current playlist/current/track/brightness/speed)\n* Play controls (play/pause/shuffle/loop/set playlist/set track)\n* Table controls (movement speed, LED brightness)\n\n*************\nUsage example\n*************\n\nFinding tables on your network\n==============================\nTo find the IP addresses of all tables on your local network. This is a very naive search; it assumes your subnet\nmask is ``255.255.255.0``::\n\n  from sisyphus_control import Table\n\n  ip_addrs = await Table.find_table_ips()\n\nOnce you know the IP address, connect to the table::\n\n  async with await Table.connect(ip_addr) as Table:\n    # Do stuff here\n\nChange notifications\n====================\nRegister for state change notifications::\n\n  table.add_listener(my_listener)\n\nBasic controls\n==============\nIn addition to a bunch of properties for querying the current state of the table, ``Table`` has several methods that\nallow simple control::\n\n  await table.set_brightness(1.0)  # Set maximum LED brightness\n  await table.set_speed(0.5)  # Set half speed\n  await table.play()  # Resume playing (if not already playing)\n\nWorking with playlists and tracks\n=================================\n``Playlist`` and ``Track`` objects represent playlists and tracks, respectively. The following code will start playing\nthe Default Playlist, beginning at the track named \"Hep\" (note that neither playlists nor tracks are required to be\nuniquely named)::\n\n  default_playlist = table.get_playlists_named(\"Default Playlist\")[0]\n  hep_track = default_playlist.get_tracks_named(\"Hep\")[0]\n  await hep_track.play()\n\n********************\nFuture opportunities\n********************\n\nThe following features would be reasonable to include; I'll happily accept pull requests:\n\n* Playlist editing\n* Upload tracks to table\n* Track thumbnail rendering\n* Table administration (wifi settings, etc.)\n* Interactions with Sisyphus cloud\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Control your Sisyphus kinetic art tables (sisyphus-industries.com)",
    "version": "3.1.3",
    "project_urls": {
        "Homepage": "https://github.com/jkeljo/sisyphus-control"
    },
    "split_keywords": [
        "sisyphus"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ab110d8b150bdfa277d5f81b0080a56dafd6fa3fda1bde1e3c5d54558bb2c9db",
                "md5": "9d3143d9dd4df5d6ad175dd50e4d0100",
                "sha256": "123bfd74aa686cc51ccd2098f07618499e32b7f22bce9c407dbae959103da76b"
            },
            "downloads": -1,
            "filename": "sisyphus_control-3.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9d3143d9dd4df5d6ad175dd50e4d0100",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 12351,
            "upload_time": "2023-06-09T00:13:37",
            "upload_time_iso_8601": "2023-06-09T00:13:37.950578Z",
            "url": "https://files.pythonhosted.org/packages/ab/11/0d8b150bdfa277d5f81b0080a56dafd6fa3fda1bde1e3c5d54558bb2c9db/sisyphus_control-3.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-09 00:13:37",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jkeljo",
    "github_project": "sisyphus-control",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "aiohttp",
            "specs": [
                [
                    "==",
                    "3.8.4"
                ]
            ]
        },
        {
            "name": "aiosignal",
            "specs": [
                [
                    "==",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "aiounittest",
            "specs": [
                [
                    "==",
                    "1.4.2"
                ]
            ]
        },
        {
            "name": "astroid",
            "specs": [
                [
                    "==",
                    "2.15.5"
                ]
            ]
        },
        {
            "name": "async-timeout",
            "specs": [
                [
                    "==",
                    "4.0.2"
                ]
            ]
        },
        {
            "name": "attrs",
            "specs": [
                [
                    "==",
                    "23.1.0"
                ]
            ]
        },
        {
            "name": "black",
            "specs": [
                [
                    "==",
                    "23.3.0"
                ]
            ]
        },
        {
            "name": "build",
            "specs": [
                [
                    "==",
                    "0.10.0"
                ]
            ]
        },
        {
            "name": "chardet",
            "specs": [
                [
                    "==",
                    "5.1.0"
                ]
            ]
        },
        {
            "name": "charset-normalizer",
            "specs": [
                [
                    "==",
                    "3.1.0"
                ]
            ]
        },
        {
            "name": "click",
            "specs": [
                [
                    "==",
                    "8.1.3"
                ]
            ]
        },
        {
            "name": "dill",
            "specs": [
                [
                    "==",
                    "0.3.6"
                ]
            ]
        },
        {
            "name": "frozenlist",
            "specs": [
                [
                    "==",
                    "1.3.3"
                ]
            ]
        },
        {
            "name": "idna",
            "specs": [
                [
                    "==",
                    "3.4"
                ]
            ]
        },
        {
            "name": "isort",
            "specs": [
                [
                    "==",
                    "5.12.0"
                ]
            ]
        },
        {
            "name": "lazy-object-proxy",
            "specs": [
                [
                    "==",
                    "1.9.0"
                ]
            ]
        },
        {
            "name": "mccabe",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "multidict",
            "specs": [
                [
                    "==",
                    "6.0.4"
                ]
            ]
        },
        {
            "name": "mypy-extensions",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "netifaces",
            "specs": [
                [
                    "==",
                    "0.11.0"
                ]
            ]
        },
        {
            "name": "nodeenv",
            "specs": [
                [
                    "==",
                    "1.8.0"
                ]
            ]
        },
        {
            "name": "packaging",
            "specs": [
                [
                    "==",
                    "23.1"
                ]
            ]
        },
        {
            "name": "pathspec",
            "specs": [
                [
                    "==",
                    "0.11.1"
                ]
            ]
        },
        {
            "name": "platformdirs",
            "specs": [
                [
                    "==",
                    "3.5.1"
                ]
            ]
        },
        {
            "name": "pylint",
            "specs": [
                [
                    "==",
                    "2.17.4"
                ]
            ]
        },
        {
            "name": "pyproject_hooks",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "pyright",
            "specs": [
                [
                    "==",
                    "1.1.313"
                ]
            ]
        },
        {
            "name": "python-engineio",
            "specs": [
                [
                    "==",
                    "3.14.2"
                ]
            ]
        },
        {
            "name": "python-socketio",
            "specs": [
                [
                    "==",
                    "4.6.1"
                ]
            ]
        },
        {
            "name": "regex",
            "specs": [
                [
                    "==",
                    "2023.6.3"
                ]
            ]
        },
        {
            "name": "six",
            "specs": [
                [
                    "==",
                    "1.16.0"
                ]
            ]
        },
        {
            "name": "toml",
            "specs": [
                [
                    "==",
                    "0.10.2"
                ]
            ]
        },
        {
            "name": "tomli",
            "specs": [
                [
                    "==",
                    "2.0.1"
                ]
            ]
        },
        {
            "name": "tomlkit",
            "specs": [
                [
                    "==",
                    "0.11.8"
                ]
            ]
        },
        {
            "name": "typing_extensions",
            "specs": [
                [
                    "==",
                    "4.6.3"
                ]
            ]
        },
        {
            "name": "wrapt",
            "specs": [
                [
                    "==",
                    "1.15.0"
                ]
            ]
        },
        {
            "name": "yarl",
            "specs": [
                [
                    "==",
                    "1.9.2"
                ]
            ]
        }
    ],
    "lcname": "sisyphus-control"
}
        
Elapsed time: 0.09216s