Skip to main content

Python library for interacting with Axis device APIs

Project description

ax-devil-device-api

Python package and CLI for configuring Axis devices via their HTTPS APIs: device info and health, snapshots, network details, MQTT clients, analytics publishers, API discovery, SSH users and more.

See also ax-devil-mqtt and ax-devil-rtsp for related tools.


Install

pip install ax-devil-device-api

Configure (optional)

Set environment variables to avoid repeating credentials and broker details:

  • AX_DEVIL_TARGET_ADDR – Device IP or hostname
  • AX_DEVIL_TARGET_USER – Device username
  • AX_DEVIL_TARGET_PASS – Device password
  • AX_DEVIL_MQTT_BROKER_ADDR – MQTT broker address
  • AX_DEVIL_MQTT_BROKER_PASS – MQTT broker password
  • AX_DEVIL_USAGE_CLI – Set to unsafe to allow --no-verify-ssl without prompts (defaults to safe)

Capabilities

  • Device info & health – model/firmware, health, restart; CLI device; Python client.device
  • Network – interface details; CLI network info; Python client.network
  • Media – snapshots with resolution/compression; CLI media snapshot; Python client.media
  • MQTT client – configure/activate/deactivate/status/config; CLI mqtt; Python client.mqtt_client
  • Analytics MQTT publishers – list/create/remove; CLI analytics; Python client.analytics_mqtt
  • Analytics metadata producers – list/enable/disable/sample/versions; CLI analytics-metadata; Python client.analytics_metadata
  • API discovery – list APIs, inspect docs/models/openapi; CLI discovery; Python client.discovery
  • Feature flags – list/get/set; CLI features; Python client.feature_flags
  • Geocoordinates – location/orientation get/set/apply; CLI geocoordinates; Python client.geocoordinates
  • SSH users – add/list/show/modify/remove; CLI ssh; Python client.ssh
  • Debug – server/crash reports, network traces, pings, port checks, core dumps; CLI debug; Python client.device_debug

CLI

ax-devil-device-api --help lists all subcommands. Global options: --device-ip/-a, --device-username/-u, --device-password/-p, --protocol [http|https], --port, and --no-verify-ssl.

Common flows:

  • Device checks and restart:
ax-devil-device-api device info \
  --device-ip <device-ip> \
  --device-username <username> \
  --device-password <password>

ax-devil-device-api device health
ax-devil-device-api device restart --force
  • Capture a snapshot:
ax-devil-device-api media snapshot \
  --device-ip <device-ip> \
  --device-username <username> \
  --device-password <password> \
  --resolution 1920x1080 \
  --output snapshot.jpg
  • Configure and inspect the device MQTT client:
ax-devil-device-api mqtt configure \
  --device-ip <device-ip> \
  --device-username <username> \
  --device-password <password> \
  --broker-address <broker-ip> \
  --broker-port 1883 \
  --use-tls

ax-devil-device-api mqtt status
ax-devil-device-api mqtt config
  • Network and geocoordinates:
ax-devil-device-api network info

ax-devil-device-api geocoordinates location set 59.3293 18.0686
ax-devil-device-api geocoordinates orientation set --heading 45 --tilt 5
ax-devil-device-api geocoordinates orientation apply
  • Manage analytics publishers:
ax-devil-device-api analytics sources
ax-devil-device-api analytics create pub-1 "com.axis.analytics_scene_description.v0.beta#1" "axis/events" --qos 1 --retain
ax-devil-device-api analytics list
ax-devil-device-api analytics remove pub-1
  • Manage analytics metadata producers:
ax-devil-device-api analytics-metadata list
ax-devil-device-api analytics-metadata enable metadata-producer --channel 1 --channel 2
ax-devil-device-api analytics-metadata sample metadata-producer --format json
  • Feature flags:
ax-devil-device-api features list
ax-devil-device-api features get my_flag other_flag
ax-devil-device-api features set my_flag=true other_flag=false --force
  • Inspect APIs exposed by the device:
ax-devil-device-api discovery list
ax-devil-device-api discovery info analytics-mqtt --docs-html-link
  • Manage SSH users or collect diagnostics:
ax-devil-device-api ssh add new-user password123 --comment "Service account"
ax-devil-device-api ssh list
ax-devil-device-api ssh modify new-user --password new-pass
ax-devil-device-api debug download-server-report report.tar.gz
ax-devil-device-api debug download-crash-report crash.tar.gz
ax-devil-device-api debug ping-test example.com

Python API

import json
from ax_devil_device_api import Client, DeviceConfig

config = DeviceConfig.https(
    host="192.168.1.81",
    username="root",
    password="pass",
    verify_ssl=False,  # leave True in production
)

with Client(config) as client:
    info = client.device.get_info()
    print(json.dumps(info, indent=2))

    snapshot = client.media.get_snapshot(resolution="1280x720")
    mqtt_state = client.mqtt_client.get_state()

Development

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest

Disclaimer

This project is an independent, community-driven implementation and is not affiliated with or endorsed by Axis Communications AB. For official APIs and development resources, see the Axis Developer Community.

License

MIT License - see LICENSE for details.

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

ax_devil_device_api-0.6.2.tar.gz (38.9 kB view details)

Uploaded Source

Built Distribution

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

ax_devil_device_api-0.6.2-py3-none-any.whl (53.3 kB view details)

Uploaded Python 3

File details

Details for the file ax_devil_device_api-0.6.2.tar.gz.

File metadata

  • Download URL: ax_devil_device_api-0.6.2.tar.gz
  • Upload date:
  • Size: 38.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for ax_devil_device_api-0.6.2.tar.gz
Algorithm Hash digest
SHA256 bd0375b5bce7a72549dd9b9b959174e3818c2fe7b40828c81126c47162b4282e
MD5 da934ce9319dd8a29a958b0a048142f4
BLAKE2b-256 d0aa206e44d9f78e77bc4e9df2b2d88bc8f55eacf246a447ca45f0d94f756951

See more details on using hashes here.

File details

Details for the file ax_devil_device_api-0.6.2-py3-none-any.whl.

File metadata

File hashes

Hashes for ax_devil_device_api-0.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3f2140eed92fc9e972800aeb8b8c76d9d30dcc59aae51370d50a3d747bc28d69
MD5 284751034af70eb890699ae70756d377
BLAKE2b-256 255cb967f763e6ac8457b08abe060e1d68e757db4c1ab070891802ad556c3892

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