Python library for the Universal Devices ISY-994, Polisy, and eisy controllers.
This library allows for easy interaction with ISY nodes, programs, variables, and the network module. It provides asynchronous communication and supports near real-time updates via WebSocket or SOAP event streams.
The full documentation is available at https://pyisy.readthedocs.io.
- Asynchronous communication via
asyncioandaiohttp. - Support for ISY-994 (v4 and v5 firmware), Polisy, and eisy.
- Automatic updates from the device via WebSocket or SOAP.
- Interaction with nodes, groups, programs, variables, and networking modules.
- Command-line interface for quick testing and monitoring.
pip install pyisyYou can test the connection to your ISY directly from the command line:
python3 -m pyisy http://your-isy-url:port username passwordimport asyncio
from pyisy import ISY
async def main():
# Connect to ISY controller
isy = ISY("192.168.1.10", 80, "admin", "password")
# Initialize the connection and download information
await isy.initialize()
# Get a node by its address
node = isy.nodes["1A 2B 3C 1"]
print(f"Node Name: {node.name}")
print(f"Node Status: {node.status}")
# Turn a node on
await node.turn_on()
# Shutdown the connection
await isy.shutdown()
if __name__ == "__main__":
asyncio.run(main())Contributions are welcome! This project uses pre-commit to ensure code quality.
# Clone the repository
git clone https://github.com/automicus/PyISY.git
cd PyISY
# Install development dependencies
pip install -r requirements.txt -r requirements-dev.txt
pip install -e .
# Install pre-commit hooks
pre-commit installWe use ruff for formatting and linting. You can run it manually:
ruff check .
ruff format .A VSCode DevContainer is also provided for a consistent development environment.
Detailed change logs are available on the GitHub Releases page.
- Ryan Kraus (@rmkraus) - Creator
- Tim (@shbatm) - lead Maintainer
- Greg Laabs (@overloadut) - Maintainer