Metadata-Version: 2.4
Name: ikalogic-at1000
Version: 0.2.0
Summary: Python SDK for Ikalogic AT1000 devices
Keywords: at1000,ikalogic,test-sequencer,automated-testing,hardware,instrumentation,sdk,api
Author: Corentin AZAIS, Vladislav KOSINOV
Author-email: Corentin AZAIS <c.azais@ikalogic.com>, Vladislav KOSINOV <v.kosinov@ikalogic.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Manufacturing
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Embedded Systems
Classifier: Topic :: Scientific/Engineering
Classifier: Typing :: Typed
Requires-Dist: httpx>=0.28.1
Requires-Dist: pydantic>=2.12.5
Requires-Dist: websockets>=13.0
Requires-Dist: zeroconf>=0.148.0
Requires-Python: >=3.10
Project-URL: Homepage, https://ikalogic.com/test-sequencers/at1000/intro/
Project-URL: Documentation, https://ikalogic.com/kb/at1000-api/at1000_home/
Description-Content-Type: text/markdown

# ikalogic-at1000

Official Python SDK for the Ikalogic AT1000 Series Test Sequencers.

This package provides a high-level API to control and automate the Ikalogic [AT1000](https://ikalogic.com/test-sequencers/at1000/intro/), a test sequencer designed for functional testing of electronic devices, PCBs, and complex systems. It ships both a synchronous client (`ikalogic_at1000`) and an asynchronous client (`ikalogic_at1000.aio`).

## Key Features

- **32 Programmable I/Os:** Handle analog and digital signals within a ±25V range.
- **8 Dry Contact Relays:** Control external circuits, with one relay equipped for high-precision current measurement.
- **Programmable Power Supply:** Delivers 0 to 24V at up to 2A with precise current monitoring.
- **Dual USB 3.0 Ports:** Feature power cycling (on/off control) and current measurement for testing USB devices.
- **Communication Interfaces:** Includes Ethernet, RS232, RS485, CAN, SPI, I2C, and UART.
- **Human-Machine Interface (HMI):** Onboard screen, rotary knob, and speaker for standalone operation and feedback.

## Installation

```bash
pip install ikalogic-at1000
```

Or, with [uv](https://docs.astral.sh/uv/):

```bash
uv add ikalogic-at1000
```

Requires Python 3.10 or newer.

## Quick Start

Connect to a device by hostname or IP, or discover devices on the local network:

```python
from ikalogic_at1000 import AT1000, find_devices

# Discover AT1000 devices over mDNS
for device in find_devices():
    print(device)

# Or connect directly
device = AT1000("at1000.local")
print(device.info.model, device.info.serial_number)

device.reset()
device.close()
```

## Asynchronous Usage

The same API is available as coroutines under `ikalogic_at1000.aio`:

```python
import asyncio

from ikalogic_at1000.aio import AT1000


async def main():
    device = await AT1000.create("at1000.local")
    print(device.info.model, device.info.serial_number)

    await device.reset()
    await device.aclose()


asyncio.run(main())
```

## Real-time Events

Subscribe to live device state changes over a WebSocket. Connect, then register callbacks per event type (or `"*"` for all events):

```python
from ikalogic_at1000 import AT1000

device = AT1000("at1000.local")
device.events.connect()


def on_gpio(event):
    print(event.type, event.data)


unsubscribe = device.events.subscribe("gpio.state", on_gpio)

# later
unsubscribe()
device.close()
```

## Documentation

Full API documentation is available at <https://ikalogic.com/kb/at1000-api/at1000_home/>.

## License

This package is distributed under the MIT License.
