Skip to content

Releases: nickduvall921/mmwave_vis

v3.2.4

08 May 21:08
0585660

Choose a tag to compare

Fixed

  • Legacy raw-bytes target decoder used wrong 9-byte stride (mirrors upstream Z2M bug fixed in Koenkk/zigbee-herdsman-converters#11915, 2026-04-11): the Inovelli 0xFC32 cluster's reportTargetInfo records are 10 bytes each (x, y, z, dop, id as little-endian int16), not 9 bytes with a uint8 id. Z2M had the same bug until herdsman PR #11915 corrected the stride and stopped clamping the ID to 0–255. Updated _process_target_data to match: stride 10, id parsed as int16LE. This path is dormant on Z2M ≥ 2.9 (3.2.2 already gates it off whenever parsed mmwave_targets is present), but pre-2.9 Z2M users who relied on the raw fallback now get correct coordinates for every target instead of garbage on target #2+.

Changed

  • Bumped version to 3.2.4.

v3.2.3

23 Apr 22:25
b7920f7

Choose a tag to compare

Fixed

  • Issue #26 — Zone 1 occupancy not displayed: the "Area 1 (Primary)" row under Live Sensors was actually wired to the device's global occupancy attribute (OR of all zones), and no area1Val element existed in the Zone Status section — so the JS loop that updates area{1..4}Val from mmwave_area{i}_occupancy silently skipped Zone 1. Relabeled the Live Sensors row to "Global Occupancy" (accurate to what it shows) and added the missing area1Val element so Zone 1's real per-area occupancy now renders alongside Zones 2–4.

Changed

  • Bumped version to 3.2.3.

v3.2.2

16 Apr 21:18
594b83c

Choose a tag to compare

Fixed

  • Live target tracking still empty / jumpy on Z2M 2.9.x+ (follow-up to 3.2.1): when Z2M publishes a state message, it contains both the parsed mmwave_targets array and the legacy raw ZCL byte keys ("0": 29, "1": 47, "2": 18, ...). In Z2M 2.9+ the raw-byte layout at offset ≥ 6 is no longer the legacy target-report format, so decoding it yields garbage coordinates. Worse, the raw path ran first and claimed the shared 10 Hz throttle slot, silently dropping the correct parsed emit that 3.2.1 added. on_message now skips the raw _process_target_data call whenever parsed mmwave_targets is present in the same payload, letting the parsed path be authoritative. Zone decoding (cmd_id 2/3/4) is unaffected.

Changed

  • Bumped version to 3.2.2.

v3.2.1

16 Apr 07:22
7d50e76

Choose a tag to compare

Fixed

  • HA addon install failing with "base name ($BUILD_FROM) should not be blank"mmwave_vis/build.yaml was missing, so the supervisor couldn't tell newer BuildKit which base image to substitute for ARG BUILD_FROM. Pinned ghcr.io/home-assistant/{aarch64,amd64}-base:3.21.
  • Issue #27 — radar empty on Z2M 2.9.x+: Z2M ≥ 2.9.x now parses cluster 0xFC32 target reports into a top-level mmwave_targets array instead of forwarding raw ZCL bytes. The Z2M driver only recognized the raw format, so the frontend's new_data event never fired and the radar stayed empty. Zones kept working because they're rebuilt from the flat mmWaveWidthMin/Max-style config keys. Added a parsed-mmwave_targets path that shares a 10 Hz throttle with the raw path.
  • TypeError: handle_connect() takes 0 positional arguments but 1 was given on every browser socket.io handshake — python-socketio ≥ 5.7 (which flask-socketio==5.5.1 resolves to) passes an auth arg to the connect handler. Handler now accepts auth=None; value is unused (ingress handles auth upstream).
  • Docker publish workflow was never firing on releases — releases created by another workflow using the default GITHUB_TOKEN do not emit downstream release: published events. Switched the trigger to push: tags: ['v*'] so every release tag reliably kicks off the image build. Added a tag input to workflow_dispatch so past tags can be retroactively published: gh workflow run docker.yml --ref main -f tag=vX.Y.Z.

Changed

  • Bumped version to 3.2.1.

v3.2.0

16 Apr 06:49
eec3b6f

Choose a tag to compare

Added

  • Standalone Docker image: A pre-built multi-arch image (linux/amd64 + linux/arm64) is now published to ghcr.io/nickduvall921/mmwave_vis:latest on every GitHub release. Users running Zigbee2MQTT outside of Home Assistant can now docker compose up -d instead of needing the HA Supervisor. A root-level Dockerfile and docker-compose.yml have been added for users who prefer to build locally.
  • MQTT TLS/SSL support: New config keys / env vars mqtt_use_tls, mqtt_tls_insecure, and mqtt_tls_ca_cert (or MQTT_USE_TLS / MQTT_TLS_INSECURE / MQTT_TLS_CA_CERT) enable connections to brokers on port 8883 and similar, with optional custom-CA support for self-signed certificates.
  • Environment-variable configuration: All config options (MQTT, ZHA, debug) now fall back to environment variables when /data/options.json is absent, so the same codebase runs unchanged as both an HA addon and a standalone Docker container. HA's options.json still takes precedence when present. The legacy Z2M_BASE_TOPIC env name (from the old mmWave_vis_docker repo) is still accepted for backwards compatibility.
  • Docker build workflow: .github/workflows/docker.yml builds and pushes the multi-arch image to GHCR on each release: published event, or on manual dispatch.

Changed

  • Consolidated the separate mmWave_vis_docker repo into this repo. The old repo is deprecated — please migrate to ghcr.io/nickduvall921/mmwave_vis:latest.
  • Bumped version to 3.2.0.

v3.1.2

22 Mar 21:18
a8f7d95

Choose a tag to compare

Fixed

  • Phantom /get and /set devices in device list (Z2M): When Z2M echoes back the full device state on …/get or …/set response topics, the discovery logic treated them as new devices, creating phantom entries like kitchen/get alongside the real kitchen device. Fixed by filtering out any topic ending with /get or /set before device discovery.

Added

  • 38 discovery-filter tests: tests/test_z2m_discovery_filter.py verifies /get and /set suffix rejection, cascading /get/get chains, case sensitivity, device names containing "get"/"set" as substrings (e.g. "gadget", "sunset"), bridge/system topics, custom base topics, and missing mmWaveVersion payloads.

Changed

  • Bumped version to 3.1.2.

v3.1.1

21 Mar 06:35
8015fce

Choose a tag to compare

Fixed

  • Device names containing / could not be saved (Z2M): If a Z2M friendly name included a forward slash (e.g. Switch w/ mmWave), the MQTT topic parser split the name on / and discarded everything after it, causing the device to be discovered under the wrong name. Any attempt to save settings would publish to the wrong MQTT topic and silently fail. Fixed by joining all topic segments after the base with / ('/'.join(parts[1:])) to preserve the full name.

Added

  • 38 topic-parsing tests: tests/test_z2m_topic_parsing.py verifies the friendly-name extraction round-trips correctly for forward slashes, &, +, #, %, brackets, quotes, emoji, CJK, Arabic, and realistic combinations like "Switch w/ mmWave & Dimmer".

Changed

  • Bumped version to 3.1.1.

v2.2.1

17 Mar 04:47

Choose a tag to compare

Created a release for this version as i have a big update coming