Radar Me (MQTT)

Radar Me is an MQTT client for Axis Radar D2050.  It publish radar detection data to an MQTT broker to simplify integration for systems processing radar data.  Writing specific rules in e.g. Node-Red is very easy.

This integration also decouples the data consumer from the device, allowing 3:rd party consumers without the risk of compromising the device.
mqtt

The tab “Radar” provides a way validate published objects.  Leaving the page running for a while will give a heatmap of detected objects.  The web page uses a JavaScript MQTT client that can only connect to an MQTT broker using Secure WebSocket (WSS).  You need to set your broker WSS port on the page.  If your broker does not support Secure WebSocket you can use a MQTT snooper like MQTT.fx to monitor published objects.

It is also possible to filter unnecessary detections (reflections and swaying objects) to improve the system performance (bandwidth, broker and consumer).

radar

MQTT Topic:

object/<clientid>

MQTT Payload:

{
“id”: 495555,
“timestamp”: 1561666067258,
“birth”: 1561666065458,
“speed”: 0.6,
“direction”: 29.9,
“distance”: 28.2,
“angle”: 49.1,
“class”: 2,
“x”: 6273,
“y”: 5278,
“sx”: 6173,
“sy”: 5441,
“px”: 6269,
“py”: 5290,
“active”: true
}

Id:  Unique object tracking ID
Timestamp: Detection time (standard JavaScript millisecond timestamp)
Birth:  Timestamp when object was first detected.  Age = Timestamp – Birth
Speed: Object speed in meter/second
Direction:  Object direction angle in degrees -180 to 180 where 0 is direction of the radar
Distance:  Distance in meter between object and radar
Angle: The location angle of the object related to the radar direction (-180 to 180)
Class:  Object classification. 2 = Undefined, 3 = Human, 4 = Vehicle.  Note that Classification is a bit unpredictable.
x/y:  The graphical coordinates for plotting on a screen.  The coordinate system is 0-8192,0-8192 where 0,0 is the top left corner.  This simplifies plotting data on e.g. a HTML canvas.
sx/sy:  The graphical coordinates of the first detection.  Can be used to calculate the graphical travelled distance.  DeltaX = x – sx, DeltaY  = y – sy
px/py:  The coordinates of the previous published x,y.  This simplifies plotting a line-path.
Active: True while object is being tracked.  False when the object disappears, and that tracking ID will not be published any more.

Considerations:

  • You need to have an MQTT broker.  Install a local mosquito broker on Linux or Windows.  Or, try a free cloud-based broker such as CloudMQTT (Cute Cat plan with up to 5 client connections and maximum bitrate of 10/Kbps).
  • Radar Me only supports standard MQTT 3.1 (TCP port 1883) connection, not TLS.  This means that the payload will be sent in clear text.

Download

Advertisements

MQTT Me Cookbook

After playing around with my MQTT Me and testing various use cases I realized that I needed to extend MQTT Me with additional capabilities.  If you have installed version 1.x you need to uninstall it before installing version 2.0.  Sorry about this.  The release notes are included in the download package.

I have created a cookbok that describes how MQTT Me can be configured and used.

  1. Publishing text to a camera Text overlay
  2. Mobile Voice Notification on Camera Motion Detection
  3. Monitoring Axis Device Alive (or not)
  4. Monitoring Device CPU load and Bandwidth
  5. Publishing JPEG images and storing them with PHP
  6. Setting Device Parameter Settings with MQTT message

Documentation:

 

Download MQTT ME

MQTT integration with Axis devices

MQTT Me gives your Axis Device the ability to integrate with MQTT systems.  MQTT (Message Queuing Telemetry Transport) is an ISO standard machine-machine messaging protocol targeting IoT devices.

There are several applications/clients supporting MQTT such as Home Assistant (home automation) and mobile apps such as Zanzito and MQTT Dashboard.  There are also more professional systems that use MQTT extensively.

MQTT Me supports both publishing (upon Axis device events) and subscribe to topics to execute actions on the Axis device.

One of my usage is to get a speach notification in my phone when someone triggers motion detection in any of my cameras.  I have Zanzito on my phone that subscribes to a topic published by my cameras.  The MQTT payload from my cameras includes a string that Zanzito will do TTS (Text-To-Speach) to play on my phones speaker.  I will hear the message even if the phone is idle in my pocket.

Onther usage is having MQTT Dashboard on my phone.  The app is configured with a button that toggles a digital IO port on the Axis device.

Compared to integrating with VAPIX/ONFIV, MQTT enables a for more flexible and simplified integration for event/action solutions.  The Axis device does not need to have network access to the MQTT application as long as the device and client have access to the same MQTT broker.  You can close all the incoming ports on your firewall.  MQTT clients conntect to broker from the inside.

Since MQTT Me does not support TLS (encryption) you should not connect to a broker on the Internet.  A  local broker is safe OK.   Remote clients can always connect to the broker over TLS if you configured your broker with plain text (port 1883) and  TLS (port 8883) for the clients accessing from Internet e.g. mobil devices.

Read more in the MQTT Me manual [PDF]

Download the ZIP file containing ACAP (MIPS, ARM7 and ARM7hf)

Current version is 2.0.   Note: Version 2.0 is not compatible with version 1.X.  You need to uninstall 1.x before installing version 2.0.

Please, share any interesting MQTT integration solutions by using the comments.