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.3.tar.gz (40.5 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.3-py3-none-any.whl (56.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ax_devil_device_api-0.6.3.tar.gz
  • Upload date:
  • Size: 40.5 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.3.tar.gz
Algorithm Hash digest
SHA256 3b757aa1fa133042d323070f83d31c20fde203eafff8d16e1f7d774816a1c567
MD5 0c2d089bc078ff174bf055ce6135ea6c
BLAKE2b-256 f1972a4dfc1043e40b0f029b164b51520535867248f64bdef5e263762da5252c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ax_devil_device_api-0.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 62cba46f1681381c3bce16bc50b5b72b5cb3e16a0204d858caa906e7abb3722f
MD5 80ce86dfd995c9f1903175f26f53a9d6
BLAKE2b-256 86ee2cd70c6b5d90ee289bdb56cf5fb25d152b0192b8e543e3b83b8a71394851

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