Python package for setting up and retrieving data from Axis devices using MQTT
Project description
ax-devil-mqtt
Python package for working with Axis devices MQTT functionality.
See also: ax-devil-device-api for device API integration.
📋 Contents
🔍 Feature Overview
| Feature | Description | Python API | CLI Tool |
|---|---|---|---|
| 🔌 MQTT Connection | Connect to MQTT brokers and Axis devices | RawMQTTManager |
ax-devil-mqtt device monitor |
| 📊 Analytics Streaming | Stream analytics data from Axis devices via MQTT | AnalyticsManager |
ax-devil-mqtt device monitor |
| 💾 Data Recording | Record any MQTT data for later replay and analysis | manager.start(recording_file) |
ax-devil-mqtt device monitor --record |
| ⏯️ Replay | Replay recorded MQTT data for testing and development | ReplayManager |
ax-devil-mqtt replay |
🚀 Quick Start
Installation
pip install ax-devil-mqtt
Environment Variables
For an easier experience, you can set the following environment variables:
export AX_DEVIL_TARGET_ADDR=<device-ip>
export AX_DEVIL_TARGET_USER=<username>
export AX_DEVIL_TARGET_PASS=<password>
export AX_DEVIL_USAGE_CLI="safe" # Set to "unsafe" to skip SSL certificate verification for CLI calls
💻 Usage Examples
Python API Usage
🔌 MQTT Connection and Analytics Streaming
import time
from ax_devil_mqtt import AnalyticsManager
from ax_devil_device_api import DeviceConfig
# Configure device
device_config = DeviceConfig.http(
host="192.168.1.200",
username="root",
password="pass"
)
def message_callback(message):
print(message)
# Create analytics manager
manager = AnalyticsManager(
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=message_callback
)
manager.start()
# or manager.start(recording_file="recordings/some_file_name.jsonl")
time.sleep(10)
manager.stop()
⏯️ Replay
import time
from ax_devil_mqtt import ReplayManager
def message_callback(message):
print(message)
# Create a replay manager
manager = ReplayManager(
recording_file="recordings/device_recording.jsonl",
message_callback=message_callback
)
# Start the manager
manager.start()
time.sleep(10)
manager.stop()
CLI Usage Examples
🔍 (Optional): Use ax-devil-device-api CLI to find available analytics streams.
ax-devil-device-api-analytics-mqtt sources
📊 Streaming Analytics Data Source
ax-devil-mqtt device monitor \
--device-ip <device-ip> \
--username <username> \
--password <password> \
--broker <broker-ip> \
--port 1883 \
--stream "com.axis.analytics_scene_description.v0.beta#1" \
--duration 3600
💾 Recording MQTT Data
ax-devil-mqtt device monitor \
--device-ip <device-ip> \
--username <username> \
--password <password> \
--broker <broker-ip> \
--port 1883 \
--stream "com.axis.analytics_scene_description.v0.beta#1" \
--record \
--duration 3600
Example Scripts
Analytics Monitor Example
python src/ax_devil_mqtt/examples/analytics_monitor.py --host <broker-ip>
Replay Example
python src/ax_devil_mqtt/examples/replay.py recordings/device_recording.jsonl
Note: For more examples, check the examples directory in the source code.
⚠️ 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, please refer to Axis Developer Community.
📄 License
MIT License - See LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ax_devil_mqtt-0.2.2.tar.gz.
File metadata
- Download URL: ax_devil_mqtt-0.2.2.tar.gz
- Upload date:
- Size: 15.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0760f8b39ef814e71088780a6f2ff8ebd8a2e0def218cdcdcecc52adaa0d049d
|
|
| MD5 |
e1bb4ccef514ab6e1fe4058e192cf69e
|
|
| BLAKE2b-256 |
a83cac0c6fb867b0167808192e0c359849a97ed7ed86b5caa8c47c50e935e133
|
File details
Details for the file ax_devil_mqtt-0.2.2-py3-none-any.whl.
File metadata
- Download URL: ax_devil_mqtt-0.2.2-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed8c8f31cdb32727cc27830a6689c8ebe1d566efc20fbfd2c646cb3dec8048e8
|
|
| MD5 |
c29d1b826053bb24666a4857e9bc55c3
|
|
| BLAKE2b-256 |
a68a691e776cadda86af480c004ca56feaf3de21265432d6dd17235dfb6ccd95
|