Skip to main content

peaq Robot SDK for robotics on the peaq network (Substrate)

Project description

peaq Robotics SDK

Highlights

  • DID management (create/read), Protobuf-based storage, chainstate reads
  • On-chain storage for telemetry/config (JSON-friendly)
  • Keystore-backed wallets with optional encryption
  • Confirmation modes and status callbacks
  • Clean imports: from peaq_robot import PeaqRobot

Install

From this repo (monorepo-style):

cd packages/python
pip install -r requirements.txt
pip install -e .

From TestPyPI (resolve deps from PyPI):

python -m venv .venv && source .venv/bin/activate
pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple --pre -U peaq-robotics-sdk

Note: Python 3.8–3.12 are supported. Python 3.13 is currently not supported due to upstream wheel availability.

Wallets and Keystore

  • Default keystore location: ~/.peaq_robot/wallet.json
  • Override path: PEAQ_ROBOT_KEYSTORE=/custom/path.json
  • Optional encryption: set PEAQ_ROBOT_KEY_PASSWORD to encrypt the keystore with Fernet+PBKDF2

Create or load automatically:

from peaq_robot import PeaqRobot
robot = PeaqRobot()            # loads from keystore or creates on first run
print(robot.address)

Generate a fresh wallet and persist to keystore:

robot = PeaqRobot.create_wallet()

Use explicit keys (won’t be stored unless you call create_wallet):

PeaqRobot(mnemonic="..."), PeaqRobot(private_key="0x...")

Network selection

The SDK resolves a network URL for you:

  • Default testnet (Agung): wss://peaq-agung.api.onfinality.io/ws
  • Aliases: "agung"|"test"|"testnet" → Agung; "peaq"|"main"|"mainnet"wss://quicknode3.peaq.xyz
  • HTTPS QuickNode converts to WSS automatically
from peaq_robot import PeaqRobot
robot = PeaqRobot(network="peaq")          # mainnet quicknode3
robot = PeaqRobot(network="wss://...")     # custom WSS

Transactions: confirmation modes and callbacks

Types are in peaq_robot.types:

  • ConfirmationMode: FAST | FINAL
  • TxOptions(mode=...)
  • TransactionStatus: BROADCAST | IN_BLOCK | FINALIZED
  • TransactionStatusCallback (Pydantic model)

Write methods accept optional tx_options and on_status:

from peaq_robot.types import TxOptions, ConfirmationMode

# FAST (default): returns tx-hash string
tx = robot.store.add_data("LOG", {"ok": True})

# FINAL: returns SubstrateSendResult with finalize awaitable; emits status callbacks
def on_status(s):
    print(s.model_dump())

res = robot.store.add_data(
    "LOG2", {"ok": True},
    tx_options=TxOptions(mode=ConfirmationMode.FINAL),
    on_status=on_status,
)
final_receipt = asyncio.run(res.finalize)

DID (identity)

Create (idempotent friendly) and read:

name = f"did:peaq:{robot.address}"
try:
    robot.id.create_identity(name=name)   # returns hash (FAST)
except Exception as e:
    # For duplicates, you might get AttributeAlreadyExist
    if "AttributeAlreadyExist" in str(e):
        pass

doc = robot.id.read_identity()
print(doc["decoded_data"])  # parsed protobuf

Storage

robot.store.add_data("TELEMETRY_001", {"battery": 87.3})
print(robot.store.read_data("TELEMETRY_001"))

Access

Access management provides roles, permissions, and assignments.

# Create role and permission, assign permission to role, grant role to user
role_tx = robot.access.create_role("ROBOT_OPERATOR", "Operator role")
perm_tx = robot.access.create_permission("ROBOT_CONTROL", "Control permission")
assign_tx = robot.access.assign_permission_to_role("ROBOT_CONTROL", "ROBOT_OPERATOR")
grant_tx = robot.access.grant_role("ROBOT_OPERATOR", "USER_123")

# Read role (best-effort)
role_info = robot.access.read_role("ROBOT_OPERATOR")
print(role_info)

Demos and examples

  • examples/wallet_demo.py: end-to-end flow
    • Set a local funder mnemonic in examples/.env:
      • PEAQ_ROBOT_FUND_MNEMONIC="abandon ... about"
    • Run: python examples/wallet_demo.py
  • examples/options_test.py: exercises FAST/FINAL modes and callbacks

Project layout

packages/
  python/
    peaq_robot/           # SDK implementation
    README.md             # package README for PyPI
    setup.py, requirements.txt, pytest.ini
examples/
  wallet_demo.py
  options_test.py

Robotics wrappers

  • peaq_robot.robotics.IdentityService – thin facade over RobotIdentity
  • peaq_robot.robotics.DataVault – thin facade over RobotStorage

Development

python3 -m venv .venv && source .venv/bin/activate
cd packages/python
pip install -r requirements.txt
pip install -e .
cd ../../
python examples/wallet_demo.py

Contributing

  1. Keep public APIs stable and backwards compatible
  2. Add examples/tests for new options

License

MIT

Style

  • Classes: PascalCase (e.g., PeaqRobot)
  • Modules/packages: lowercase (e.g., peaq_robot)
  • Methods/functions: snake_case

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

peaq_robotics_sdk-0.0.2.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

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

peaq_robotics_sdk-0.0.2-py3-none-any.whl (25.3 kB view details)

Uploaded Python 3

File details

Details for the file peaq_robotics_sdk-0.0.2.tar.gz.

File metadata

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

File hashes

Hashes for peaq_robotics_sdk-0.0.2.tar.gz
Algorithm Hash digest
SHA256 7253c38e3a6bb07396ea9dd7aa504207ba2676baceae07ce4e0e7511d8a9e6a0
MD5 56b96905bc6a7ffebbcb5338ba4ab645
BLAKE2b-256 6254b687299f719ae2ad5368994fae390e86ce3f0068f95d74d7b102b2d8b932

See more details on using hashes here.

Provenance

The following attestation bundles were made for peaq_robotics_sdk-0.0.2.tar.gz:

Publisher: publish-robot-sdk.yml on peaqnetwork/peaq-robotics-sdk

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

File details

Details for the file peaq_robotics_sdk-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for peaq_robotics_sdk-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5f7f6cfc57453b3299f95a6cd4d5c5811800de279ca89144f55594e4b9927cce
MD5 5557d1ee5837630d7766d3354a8f8c22
BLAKE2b-256 4dcd91cc3cd24e411061d97882c1d6fb4ab0b90dc0ed2546afd1ae1f9ca9e34f

See more details on using hashes here.

Provenance

The following attestation bundles were made for peaq_robotics_sdk-0.0.2-py3-none-any.whl:

Publisher: publish-robot-sdk.yml on peaqnetwork/peaq-robotics-sdk

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