Axis devices has a built in MQTT client. SIMQTT is an alternative client that extends MQTT capabilities, reduces device configuration simplifies topic and payload structure.
SIMQTT can be installed in older firmware versions before the MQTT client was introduced. You can utilize both SIMQTT and the built-in client at the same time connecting to different brokers.
Compared to the built-in client:
- Publish all common device events without additional configuration
- Topic and payload optimized for IT integration
- Status message every 15 minutes including CPU load and bandwidth utilization
- User defined free-text payload properties for name and location
- User defined timestamp syntax (EPOCH or ISO String) depending on system needs
Download SIMQTT
Prerequisite
- Axis device
- SIMQTT
- Access to some MQTT Broker
- A system MQTT client that provides some use case
Installation
Install SIMQTT for devices with firmware 10.x.x or later. Install SIMQTT_Legacy for devices with firmware less than 10.x.x. Note that SIMQTT Legacy only supports MQTT connection over TCP and not TLS.
MQTT Broker
Set broker settings
Additional payload properties
Name and Location will be included in every payload as “name” and “location” if they contain any user defined text string. Select format for property “timestamp”. Either EPOCH (milli seconds since Jan 1 1970) is ISO (YYYY-MM-DDTHH:MM:SS+Zone-offset)
Topics & Payload
The following message will automatically be published when they occur.
simqtt/acap/[ID]/[EVENT]/[STATE]
All events produced by ACAPs are publish on /simqtt/acap. The payload may vary depending on events as additional properties may be specific to that event.
ID = ACAP id
EVENT = event id
STATE = true or false
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628697522589,
"state": true,
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/motion/[DEVICE]/[STATE]
Published when selected motion detection services toggles. This provides a way to get motion detection regardless what triggered the motion.
- VMD
- ObjectAnalytics
- MotionGuard
- PIR
DEVICE = Device serial number STATE = true or false
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628697522589,
"state": true,
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/audio/detection/[STATE]
Published when audio volume (selected productes) toggles between threshold level
STATE = true or false
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628697524191,
"state": false,
"channel": 1,
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/connect/DEVICE-ID
Published when device connects to broker and disconnects (Last-will testament). May be used to build and monitor system inventory.
This topic is retained on the broker.
DEVICE-ID = Device device number
{
"connected": true,
"device": "ACCC8EXXXXXX",
"timestamp": 1628697562588,
"model": "AXIS P3227-LVE",
"firmware": "10.6.0",
"IPv4": "1.2.3.4",
"name": "Device nicename",
"location": "Somewhere"
}
Last-will testament
{
"connected": false,
"device": "ACCC8EXXXXXX"
}
simqtt/day/[STATE]
Published when camera toggles between day and night, enabling/disabling IR-cut filter (color/bw).
STATE = true (day) or false (night)
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628697562588,
"state": true,
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/heater/[HEATER]/[STATE]
Published when heater starts/stops (supported in selected products)
HEATER = Heater Id
STATE = true or false
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628697562588,
"heater": 0,
"state": false,
"id": 0
}
simqtt/port/[PORT-ID]/[STATE]
Published when digital input toggles between high/low (selected products).
PORT-ID = Device input port. Index starts a 0 for port 1;
STATE = true (high/active) or false (low/inactive) depending how the ports are configured
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628697524115,
"state": false,
"port": 0,
"event": "Device/IO/Port",
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/ptz/moving/[ID]/[STATE]
Published when PTZ toggles between moving and stopped.
ID = PTZ Id (typically 0)
STATE = true (moving) or false
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628697524190,
"channel": 1,
"state": false,
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/ptz/preset/ID
Publish when PTZ lands on a preset
ID = Preset ID
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628697524209,
"channel": 1,
"preset": "Home",
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/recording/[STATE]
Published when SD Card recording starts/stops.
STATE = true (recording) or false
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628698370897,
"state": false,
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/relay/[RELAY]/[STATE]
Published when device relay toggles high/low
RELAY = Relay id
STATE = true or false
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628697524064,
"state": false,
"relay": 4,
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/status/[device]
Published every 15 minutes. Typically used for monitoring device performance.
Device = Serial number
{
"device": "ACCC8EXXXXXX",
"model": "AXIS P1375",
"IPv4": "1.2.3.4",
"firmware": "10.5.2",
"network": 1696.5,
"cpu": 0.93,
"timestamp": 1628698625417,
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/storage/SD/[STATE]
Published when SD Card is available for recording (mounted and no disruptions)
STATE = true or false
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628698370873,
"state": true,
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/video/streaming/[STATE]
Published when any client streams video(or not).
STATE = true or false
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628698370870,
"state": true,
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/tampering/[TYPE]
TYPE:
- video: Published when camera is redirected, blocked or de-focused
- port: Published when tampering supervised ports is detected (selected products)
- casing: Published when someone opens the caseing (selected products)
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628650145654,
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/temperature/[THRESHOLD]/[SENSOR]/[STATE]
Published when device temperture is above or below acceptable threshold limits
THRESHOLD = high or low
SENSOR = Internal sensor id
STATE = true (outside acceptable limit) or false (within acceptable limit)
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628650145654,
"sensor": 0,
"threshold": "high",
"state": true,
"name": "Device nicename",
"location": "Somewhere"
}
simqtt/pir/[STATE]
Published when PIR sensor (selected productes) toggles
STATE = true or false
{
"device": "ACCC8EXXXXXX",
"timestamp": 1628697524191,
"state": false,
"channel": 1,
"name": "Device nicename",
"location": "Somewhere"
}