Skip to main content

Asynchronous library to interact with Iregul systems via undocumented API

Project description

aioiregul

Python Version License

Asynchronous Python library to interact with IRegul systems via their undocumented API over sockets.

Note: This library is under active development.

Features

  • 🔄 Fully asynchronous using asyncio and aiohttp
  • 🔌 Socket-based communication with IRegul systems
  • 🎯 Type-safe with comprehensive type hints
  • 📊 Parse and decode IRegul API responses
  • 🏠 Home automation integration ready

Requirements

  • Python 3.14 or higher
  • aiohttp
  • BeautifulSoup4
  • python-slugify

Installation

uv pip install aioiregul

Or install from source:

git clone https://github.com/PoppyPop/aioiregul.git
cd aioiregul
uv sync --all-extras

Quick Start

import asyncio
import aioiregul

async def main():
    # Configure connection options
    options = aioiregul.ConnectionOptions(
        username='your_username',
        password='your_password'
    )

    # Create device instance
    device = aioiregul.Device(options)

    # Collect data from the device
    data = await device.collect()

    # Display results
    print(data)

# Run the async function
asyncio.run(main())

Development Setup

Using VS Code Devcontainer (Recommended)

The easiest way to get started with development:

  1. Install Docker and VS Code
  2. Install the Remote - Containers extension
  3. Open the project in VS Code
  4. Click "Reopen in Container" when prompted

All dependencies and tools will be automatically installed!

Local Development

# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh  # Linux/Mac
# Or on Windows:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# Sync all dependencies
uv sync --all-extras

# Install pre-commit hooks
uv run pre-commit install

Running Tests

# Run all tests
uv run pytest

# Run with coverage
uv run pytest --cov=aioiregul --cov-report=html

# Run specific test
uv run pytest tests/test_iregul.py -v

Code Quality

# Format code
uv run ruff format .

# Lint code
uv run ruff check . --fix

# Type checking
uv run mypy src/

# Run all pre-commit hooks
uv run pre-commit run --all-files

Project Structure

aioiregul/
├── .devcontainer/          # VS Code devcontainer configuration
├── src/
│   └── aioiregul/         # Main library code
├── tests/                 # Unit tests
├── examples/              # Example scripts and sample data
├── pyproject.toml         # Project configuration
├── CONTRIBUTING.md        # Contribution guidelines
└── README.md              # This file

API Documentation

ConnectionOptions

Configuration for connecting to IRegul systems.

@dataclass
class ConnectionOptions:
    username: str                    # IRegul account username
    password: str                    # IRegul account password
    iregul_base_url: str            # Base URL (default: https://vpn.i-regul.com/modules/)
    refresh_rate: timedelta         # Data refresh interval (default: 5 minutes)

Device

Main class for interacting with IRegul devices.

device = Device(options: ConnectionOptions)
data = await device.collect()  # Fetch current device data

IRegulData

Data structure for IRegul measurements.

@dataclass
class IRegulData:
    id: str           # Data point identifier
    name: str         # Human-readable name
    value: Decimal    # Measured value
    unit: str         # Unit of measurement

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Development Checklist

  • Write tests for new features
  • Update documentation
  • Follow code style guidelines (Ruff, MyPy)
  • Add type hints to all functions
  • Write docstrings for public APIs

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

This library reverse-engineers the undocumented IRegul API. It is not officially supported by IRegul.

Support

Changelog

See CHANGELOG.md for version history and changes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aioiregul-0.2.5.tar.gz (135.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aioiregul-0.2.5-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

Details for the file aioiregul-0.2.5.tar.gz.

File metadata

  • Download URL: aioiregul-0.2.5.tar.gz
  • Upload date:
  • Size: 135.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aioiregul-0.2.5.tar.gz
Algorithm Hash digest
SHA256 44847e4df483af76de6b1d616ae7451fd5b72879d83ff5ab5ee3c287422c98af
MD5 b71b82caedbb4d1ced89e3c1db354aba
BLAKE2b-256 02fb2c69fb41d0c62b20c24eda2e3a9320f36a598db4b8ae2a6bd154d62ece1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for aioiregul-0.2.5.tar.gz:

Publisher: publish-to-test-pypi.yml on PoppyPop/aioiregul

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aioiregul-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: aioiregul-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 39.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aioiregul-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 6ddf9ec0151c74043c0f10921af7f09b68851de8745e2e4ef05aa32489279312
MD5 7c38c309a31c9265460e624f5888a9d5
BLAKE2b-256 5ddc7b38e6c2f6d37e7a493d2421acb89de920560f2b3a933035a85ed4b9432e

See more details on using hashes here.

Provenance

The following attestation bundles were made for aioiregul-0.2.5-py3-none-any.whl:

Publisher: publish-to-test-pypi.yml on PoppyPop/aioiregul

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page