Skip to main content

Provides hardware device integrations for bussdcc.

Project description

BussDCC Hardware

bussdcc-hardware provides hardware device integrations for bussdcc.

It includes drivers for common buses and devices and exposes them through the BussDCC device system so they can be managed, monitored, and orchestrated by the runtime.

Architecture

Hardware in BussDCC is modeled using devices attached to buses.

Runtime
  ├── Bus Devices
  │     ├── I2C Bus
  │     ├── 1-Wire Bus
  │     └── GPIO Bus
  │
  └── Hardware Devices
        ├── Sensors
        ├── ADCs
        ├── Cameras
        └── Actuators

Each hardware component is represented as a BussDCC Device with a managed lifecycle:

connect → operate → disconnect

The runtime handles:

  • device initialization
  • dependency ordering
  • failure detection
  • online/offline status

Features

Bus Drivers

Hardware buses are modeled as devices themselves.

Currently supported:

I²C

bussdcc_hardware.bus.i2c

Features:

  • bus discovery
  • device address scanning
  • register bus interface

1-Wire

bussdcc_hardware.bus.w1

Features:

  • device discovery
  • filesystem-based device access

Hardware Devices

NAU7802 Load Cell ADC

High precision load cell amplifier.

bussdcc_hardware.device.nau7802

Features:

  • dual channel support
  • calibration parameters
  • automatic channel switching
  • failure detection

DS18B20 Temperature Sensor

1-Wire temperature sensor.

bussdcc_hardware.device.ds18b20

Features:

  • filesystem-based reading
  • automatic offline detection

USB Camera

OpenCV-based camera integration.

bussdcc_hardware.device.usb_camera

Features:

  • configurable resolution and FPS
  • exposure control
  • focus control
  • white balance control
  • automatic failure recovery

Digital Output

Simple GPIO-based actuator for controlling devices such as pumps, relays, LEDs, or lights.

bussdcc_hardware.device.digital_output

Features:

  • on/off control
  • safe shutdown

Device Configuration

All devices use typed dataclass configurations.

Example:

from bussdcc_hardware.device.nau7802 import NAU7802Config

config = NAU7802Config(
    bus_id="i2c0",
    addr=0x2A,
)

Configuration metadata includes UI hints:

  • labels
  • groups
  • ranges
  • control types

This allows configuration systems or web interfaces to automatically generate forms.

Example metadata:

{
  "label": "Frame Width",
  "group": "Video",
  "ui": "number",
  "min": 160,
  "max": 3840
}

Device Discovery

Hardware integrations are registered using Python entry points.

bussdcc.bus
bussdcc.device

The registry loads available devices automatically:

from bussdcc_hardware.registry import registry

registry.buses
registry.devices

Unavailable drivers (missing optional dependencies) are detected and reported.

Optional Dependencies

Some hardware drivers require additional libraries.

Install them using extras:

pip install bussdcc-hardware[nau7802]
pip install bussdcc-hardware[digital_output]
pip install bussdcc-hardware[usb_camera]

Example

Example hardware configuration:

runtime.add_device(
    "i2c0",
    "i2c",
    {
        "bus": 1
    }
)

runtime.add_device(
    "scale_adc",
    "nau7802",
    {
        "bus_id": "i2c0",
        "addr": 0x2A
    }
)

The runtime ensures buses are initialized before devices that depend on them.

Design Goals

Hardware as first-class devices

Buses and sensors are modeled the same way as any other BussDCC device.

Runtime-managed lifecycle

Devices automatically:

  • connect
  • report failures
  • recover when possible

Strong typing

All configurations are statically typed dataclasses.

Composable integrations

Hardware modules can be distributed as independent packages and discovered through entry points.

Installation

pip install bussdcc-hardware

Optional drivers:

pip install bussdcc-hardware[nau7802]
pip install bussdcc-hardware[digital_output]
pip install bussdcc-hardware[usb_camera]

Related Projects

  • bussdcc — cybernetic runtime kernel
  • bussdcc-framework — runtime utilities and web interface

License

MIT License

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

bussdcc_hardware-0.24.0.tar.gz (21.7 kB view details)

Uploaded Source

Built Distribution

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

bussdcc_hardware-0.24.0-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

Details for the file bussdcc_hardware-0.24.0.tar.gz.

File metadata

  • Download URL: bussdcc_hardware-0.24.0.tar.gz
  • Upload date:
  • Size: 21.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for bussdcc_hardware-0.24.0.tar.gz
Algorithm Hash digest
SHA256 8e006ab1536eb9655efd10d43986bb8d04ad0fc04a0fa1ca1e93ce2d131e1f71
MD5 235fd8ea9f27256f8795c8e1fab80b8b
BLAKE2b-256 c0866231356a145cbe49a8d86b868841ebb5591d9c454d1d91637cc3a73d6887

See more details on using hashes here.

File details

Details for the file bussdcc_hardware-0.24.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bussdcc_hardware-0.24.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cac0e708c768f286d1be1aebf89fc736c6163bfa91e20e82586fdaee7889e33b
MD5 4b807f4c24dbf5167f3aaceb8b735ab9
BLAKE2b-256 f9e3c20a0aed9adbf35d7f00215c14424688db09eaac32bb46cc7795c0f664a0

See more details on using hashes here.

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