Releases: nickduvall921/mmwave_vis
Releases · nickduvall921/mmwave_vis
v3.2.4
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
0xFC32cluster'sreportTargetInforecords are 10 bytes each (x, y, z, dop, idas 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_datato match: stride 10,idparsed as int16LE. This path is dormant on Z2M ≥ 2.9 (3.2.2 already gates it off whenever parsedmmwave_targetsis 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
Fixed
- Issue #26 — Zone 1 occupancy not displayed: the "Area 1 (Primary)" row under Live Sensors was actually wired to the device's global
occupancyattribute (OR of all zones), and noarea1Valelement existed in the Zone Status section — so the JS loop that updatesarea{1..4}Valfrommmwave_area{i}_occupancysilently skipped Zone 1. Relabeled the Live Sensors row to "Global Occupancy" (accurate to what it shows) and added the missingarea1Valelement so Zone 1's real per-area occupancy now renders alongside Zones 2–4.
Changed
- Bumped version to 3.2.3.
v3.2.2
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_targetsarray 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_messagenow skips the raw_process_target_datacall whenever parsedmmwave_targetsis 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
Fixed
- HA addon install failing with "base name ($BUILD_FROM) should not be blank" —
mmwave_vis/build.yamlwas missing, so the supervisor couldn't tell newer BuildKit which base image to substitute forARG BUILD_FROM. Pinnedghcr.io/home-assistant/{aarch64,amd64}-base:3.21. - Issue #27 — radar empty on Z2M 2.9.x+: Z2M ≥ 2.9.x now parses cluster
0xFC32target reports into a top-levelmmwave_targetsarray instead of forwarding raw ZCL bytes. The Z2M driver only recognized the raw format, so the frontend'snew_dataevent never fired and the radar stayed empty. Zones kept working because they're rebuilt from the flatmmWaveWidthMin/Max-style config keys. Added a parsed-mmwave_targetspath that shares a 10 Hz throttle with the raw path. TypeError: handle_connect() takes 0 positional arguments but 1 was givenon every browser socket.io handshake —python-socketio≥ 5.7 (whichflask-socketio==5.5.1resolves to) passes anautharg to theconnecthandler. Handler now acceptsauth=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_TOKENdo not emit downstreamrelease: publishedevents. Switched the trigger topush: tags: ['v*']so every release tag reliably kicks off the image build. Added ataginput toworkflow_dispatchso 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
Added
- Standalone Docker image: A pre-built multi-arch image (linux/amd64 + linux/arm64) is now published to
ghcr.io/nickduvall921/mmwave_vis:lateston every GitHub release. Users running Zigbee2MQTT outside of Home Assistant can nowdocker compose up -dinstead of needing the HA Supervisor. A root-levelDockerfileanddocker-compose.ymlhave been added for users who prefer to build locally. - MQTT TLS/SSL support: New config keys / env vars
mqtt_use_tls,mqtt_tls_insecure, andmqtt_tls_ca_cert(orMQTT_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.jsonis absent, so the same codebase runs unchanged as both an HA addon and a standalone Docker container. HA'soptions.jsonstill takes precedence when present. The legacyZ2M_BASE_TOPICenv name (from the oldmmWave_vis_dockerrepo) is still accepted for backwards compatibility. - Docker build workflow:
.github/workflows/docker.ymlbuilds and pushes the multi-arch image to GHCR on eachrelease: publishedevent, or on manual dispatch.
Changed
- Consolidated the separate
mmWave_vis_dockerrepo into this repo. The old repo is deprecated — please migrate toghcr.io/nickduvall921/mmwave_vis:latest. - Bumped version to 3.2.0.
v3.1.2
Fixed
- Phantom
/getand/setdevices in device list (Z2M): When Z2M echoes back the full device state on…/getor…/setresponse topics, the discovery logic treated them as new devices, creating phantom entries likekitchen/getalongside the realkitchendevice. Fixed by filtering out any topic ending with/getor/setbefore device discovery.
Added
- 38 discovery-filter tests:
tests/test_z2m_discovery_filter.pyverifies/getand/setsuffix rejection, cascading/get/getchains, case sensitivity, device names containing "get"/"set" as substrings (e.g. "gadget", "sunset"), bridge/system topics, custom base topics, and missingmmWaveVersionpayloads.
Changed
- Bumped version to 3.1.2.
v3.1.1
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.pyverifies 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
Created a release for this version as i have a big update coming