PyISYoX

An async Python client for eisy / Polisy on IoX 6

PyISYoX talks to Universal Devices’ eisy and Polisy controllers running IoX 6.0.0+. It is a JSON-first rewrite of the original pyisy library, built around a small set of focused public types:

Note

The original ISY-994 hardware is out of scope. It tops out at TLS 1.1 and a much smaller REST surface; users on that hardware should use the upstream pyisy (v3.x) library. Everything here assumes IoX 6 on eisy or Polisy.

Quick example

import asyncio
from pyisyox import Controller, PortalAuth

async def main() -> None:
    controller = Controller(
        "https://eisy.local:443",
        PortalAuth("me@example.com", "portal-password"),
    )
    await controller.connect()
    try:
        light = controller.nodes["3D 7D 87 1"]
        await light.send_command("DON", 75)  # 75% on
    finally:
        await controller.stop()

asyncio.run(main())

See Quickstart for a guided tour, Connection Flow for the wire-level connect sequence, and Event Pipeline for the WebSocket dispatcher and subscription API.

Installation

pip install pyisyox

Requirements: Python 3.11+ and aiohttp. No XML parser dependencies — the narrow XML surfaces still in use (/rest/status, /rest/nodes, command responses, WS event frames) are decoded with xml.etree.ElementTree from the stdlib.

Project information

Source: GitHub
PyPI: pyisyox

Contents

Indices and tables