Skip to main content

Python package for setting up and retrieving data from Axis devices using MQTT

Project description

ax-devil-mqtt

Python package for easy configuration and consumption of an Axis devices analytics data over MQTT.

See also ax-devil-device-api and ax-devil-rtsp for related tools.


Install

pip install ax-devil-mqtt

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

CLI

Run ax-devil-mqtt --help or ax-devil-mqtt help <command> for full details. Common flows:

  • Discover analytics data sources:
ax-devil-mqtt list-sources \
  --device-ip <device-ip> \
  --device-username <username> \
  --device-password <password>
  • Monitor an analytics stream (use your IP instead of localhost for the broker):
ax-devil-mqtt monitor \
  --device-ip <device-ip> \
  --device-username <username> \
  --device-password <password> \
  --broker-address <broker-ip> \
  --broker-port 1883 \
  --stream "com.axis.analytics_scene_description.v0.beta#1" \
  --duration 3600       # 0 to run continuously
  • Subscribe to an existing MQTT topic without configuring the device:
ax-devil-mqtt subscribe \
  --broker-address <broker-ip> \
  --broker-port 1883 \
  --topic "some/topic"
  • Inspect or clean analytics publishers configured on the device:
ax-devil-mqtt list-publishers \
  --device-ip <device-ip> \
  --device-username <username> \
  --device-password <password>

ax-devil-mqtt clean \
  --device-ip <device-ip> \
  --device-username <username> \
  --device-password <password>
  • Open the device’s Analytics MQTT API UI in your browser:
ax-devil-mqtt open-api \
  --device-ip <device-ip> \
  --device-username <username> \
  --device-password <password>

Python API

import time
from ax_devil_mqtt import AxisAnalyticsMqttClient, RawMqttClient, MqttMessage
from ax_devil_device_api import DeviceConfig

# Subscribe to an existing topic
client = RawMqttClient(
    broker_host="192.168.1.100",
    broker_port=1883,
    topics=["some/topic"],
    message_callback=lambda message: print(message.payload),
    worker_threads=1,  # dispatch callbacks on a background thread
)
client.start()
time.sleep(5)
client.stop()

# Or configure the device to publish analytics and subscribe automatically
device_config = DeviceConfig.http(host="192.168.1.200", username="root", password="pass")

analytics_client = AxisAnalyticsMqttClient(
    broker_host="192.168.1.100",
    broker_port=1883,
    device_config=device_config,
    analytics_data_source_key="com.axis.analytics_scene_description.v0.beta#1",
    message_callback=lambda message: print(message.payload),
    worker_threads=1,
)
analytics_client.start()
time.sleep(5)
analytics_client.stop()

Development

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

pytest
mypy src tests

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_mqtt-0.4.2.tar.gz (12.7 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_mqtt-0.4.2-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file ax_devil_mqtt-0.4.2.tar.gz.

File metadata

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

File hashes

Hashes for ax_devil_mqtt-0.4.2.tar.gz
Algorithm Hash digest
SHA256 f7fa70ac0c31d6a53893988e6f9834385489d9c2e176a19625629c361f959aa6
MD5 0f23e24c5ea02b99ef69f2bc9c189e72
BLAKE2b-256 7fbd12db1d1b34650541a678ae23cd3cbf7d78b9707bf2cc1432444a7205844e

See more details on using hashes here.

File details

Details for the file ax_devil_mqtt-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: ax_devil_mqtt-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for ax_devil_mqtt-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 36894f7a0bd442da19c24cc530059e6b697ad27a4341ad96bbc704d158cbf9db
MD5 b6a913ffec04717510aac0148455de3e
BLAKE2b-256 14c2fffb5eb243eeee3ca2983218e5f186c6d44d1dc4a169d51e41018e36b2ee

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