@riddix/hamh 2.1.0-alpha.407 → 2.1.0-alpha.409

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -37,7 +37,7 @@ of port forwarding etc.
37
37
 
38
38
  | Channel | Branch | Current Version | Description |
39
39
  |---------|--------|-----------------|-------------|
40
- | **Stable** | `main` | v2.0.26 | Production-ready, recommended for most users |
40
+ | **Stable** | `main` | v2.0.27 | Production-ready, recommended for most users |
41
41
  | **Alpha** | `alpha` | v2.1.0-alpha.x | Pre-release with new features, for early adopters |
42
42
  | **Testing** | `testing` | v4.1.0-testing.x | ⚠️ **Highly unstable!** Experimental features, may break |
43
43
 
@@ -52,44 +52,51 @@ of port forwarding etc.
52
52
  ## 🎉 What's New
53
53
 
54
54
  <details>
55
- <summary><strong>📦 Stable Features (v2.0.26)</strong> - Click to expand</summary>
55
+ <summary><strong>📦 Stable Features (v2.0.27)</strong> - Click to expand</summary>
56
56
 
57
- **New in v2.0.26:**
57
+ **New in v2.0.27:**
58
58
 
59
59
  | Feature | Description |
60
60
  |---------|-------------|
61
- | **🔐 Authentication UI** | Configure authentication credentials directly from the web UI Settings page ([#197](https://github.com/RiDDiX/home-assistant-matter-hub/issues/197)) |
62
- | **� Select Entity Support** | `select` and `input_select` entities now mapped to Matter ModeSelectDevice each option becomes a selectable mode in your controller |
63
- | **🔗 Webhook Event Bridge** | HAMH fires `hamh_action` events on the HA event bus when controllers interact with exposed devices — enables HA automations from controller commands |
64
- | **🔍 Cluster Diagnostics** | Expandable per-cluster state inspection on device cards see all cluster attribute values without parsing logs |
65
- | **⚠️ Compatibility Warnings** | Bridge editor shows dynamic warnings for conflicting feature flags (e.g., Server Mode + Vacuum OnOff) |
66
- | **🤖 Vacuum Cleaning Mode Fallback** | "Vacuum Then Mop" (mode 7) now falls back to "Vacuum & Mop" when the cleaning mode entity doesn't have a dedicated option ([#189](https://github.com/RiDDiX/home-assistant-matter-hub/issues/189)) |
67
- | **🤖 Vacuum Entity Filter Fix** | Changing the entity filter on an existing server-mode bridge now correctly updates the endpoint ([#202](https://github.com/RiDDiX/home-assistant-matter-hub/issues/202)) |
68
- | **🤖 Vacuum PowerSource Fix** | Restored PowerSource device type on vacuum endpoints for Alexa compatibility ([#183](https://github.com/RiDDiX/home-assistant-matter-hub/issues/183)) |
69
- | **🤖 RVC Spec Compliance** | Mode validation in `changeToMode` overrides prevents silent failures with Alexa |
70
- | **� Matter.js 0.16.10** | Updated from 0.16.8 to 0.16.10 for stability and spec compliance improvements |
71
- | **� Docker Node 22** | Pinned Docker runtime to Node 22 to fix `ERR_INVALID_PACKAGE_CONFIG` on some platforms ([#200](https://github.com/RiDDiX/home-assistant-matter-hub/issues/200)) |
72
- | **� Cover Inversion Fix** | `coverSwapOpenClose` now also inverts position reporting |
73
- | **� Media Player Keypad** | Implemented KeypadInputServer for BasicVideoPlayer media endpoints |
74
- | **🤖 Vacuum OnOff Fix** | `turnOff` now sends `return_to_base` instead of `stop` |
75
- | **🏥 Session Logging** | Non-destructive session lifecycle logging for diagnostic visibility ([#105](https://github.com/RiDDiX/home-assistant-matter-hub/issues/105)) |
76
-
77
- **Previously in v2.0.25:**
61
+ | **🤖 Native Valetudo Support** | Auto-detect Valetudo select entities, map segments, use `segment_cleanup` via MQTT for room cleaning ([#205](https://github.com/RiDDiX/home-assistant-matter-hub/issues/205)) |
62
+ | **🤖 Custom Service Areas** | Define custom room/zone names for generic zone-based robots without native room support ([#177](https://github.com/RiDDiX/home-assistant-matter-hub/issues/177)) |
63
+ | **🤖 ServiceArea Maps** | Multi-floor vacuum support rooms grouped by floor map in Apple Home |
64
+ | **🤖 Vacuum Identify → Locate** | "Play Sound" in Apple Home triggers `vacuum.locate` to find your robot ([#189](https://github.com/RiDDiX/home-assistant-matter-hub/issues/189)) |
65
+ | **🤖 Vacuum Charging State** | Reports `IsCharging` when docked Apple Home shows correct charging indicator ([#206](https://github.com/RiDDiX/home-assistant-matter-hub/issues/206)) |
66
+ | **🤖 Vacuum Minimal Clusters** | `vacuumMinimalClusters` feature flag strips non-essential clusters for Alexa compatibility ([#183](https://github.com/RiDDiX/home-assistant-matter-hub/issues/183)) |
67
+ | **🌡️ Composed Air Purifier** | Air purifiers with thermostat/humidity sensors create real Matter Composed Devices (spec 9.4.4) |
68
+ | **🚨 Alarm Control Panel** | `alarm_control_panel` entities exposed as Matter ModeSelect arm/disarm modes available in controllers ([#209](https://github.com/RiDDiX/home-assistant-matter-hub/issues/209)) |
69
+ | **🖥️ Dashboard Controls** | Bridge Start/Stop/Restart All buttons in header, Settings nav entry |
70
+ | **🖥️ Process Memory Display** | RSS + heap usage shown in System Information page |
71
+ | **🖥️ Compact Include/Exclude Editor** | Collapsible entity filter editor with search |
72
+ | **🖥️ Improved Bridge Config UI** | Better layout and usability for bridge settings editor |
73
+ | **🏢 Vendor Brand Icons** | 20+ new manufacturer icons (Razer, Roborock, iRobot, Signify, and more) |
74
+ | **🐳 linux/arm/v7 Docker** | Added ARM v7 platform for standalone Docker image |
75
+ | **📦 npm Package** | Published as `@riddix/hamh` on npm for standalone installations |
76
+ | **🌡️ Thermostat #207 Fix** | heat_cool-only HVAC zones now dynamically report CoolingOnly/HeatingOnly based on hvac_action |
77
+ | **🌡️ Thermostat #28 Fix** | Devices with auto+cool but no explicit heat (e.g. SmartIR ACs) no longer crash with conformance error |
78
+ | **🤖 Vacuum Alexa Fixes** | Multiple fixes for OnOff, PowerSource, mode IDs, room sorting ([#183](https://github.com/RiDDiX/home-assistant-matter-hub/issues/183), [#185](https://github.com/RiDDiX/home-assistant-matter-hub/issues/185)) |
79
+ | **🔧 Air Purifier Fix** | Added Rocking (oscillation) and Wind feature support, removed incorrect Lighting feature |
80
+ | **🔧 Composed Sensor Fix** | Temperature not updating in composed sensors, missing device types in flat endpoints ([#214](https://github.com/RiDDiX/home-assistant-matter-hub/issues/214)) |
81
+ | **⚡ Performance** | Fingerprint-based registry change detection, reduced refresh overhead |
82
+
83
+ **Previously in v2.0.26:**
78
84
 
79
85
  | Feature | Description |
80
86
  |---------|-------------|
81
- | **🤖 Vacuum Mop Intensity** | `mopIntensityEntity` mapping adds mop intensity modes to Apple Home's extra features panel |
82
- | **🤖 Vacuum Auto-Detection** | Cleaning mode, suction level, and mop intensity entities auto-detected for Dreame, Roborock, Ecovacs |
83
- | **🤖 Roborock Room Auto-Detect** | Rooms resolved via `roborock.get_maps` no manual button mapping needed |
84
- | **� Live Entity Mapping** | Device type changes take effect automatically without bridge restart ([#192](https://github.com/RiDDiX/home-assistant-matter-hub/issues/192)) |
85
- | **💾 Dynamic Heap Sizing** | Node.js heap calculated from system RAM (25%, 256–1024 MB) ([#190](https://github.com/RiDDiX/home-assistant-matter-hub/issues/190)) |
87
+ | **🔐 Authentication UI** | Configure authentication credentials directly from the web UI Settings page ([#197](https://github.com/RiDDiX/home-assistant-matter-hub/issues/197)) |
88
+ | **🔌 Select Entity Support** | `select` and `input_select` entities now mapped to Matter ModeSelectDevice |
89
+ | **🔗 Webhook Event Bridge** | HAMH fires `hamh_action` events on the HA event bus for controller command automations |
90
+ | **🔍 Cluster Diagnostics** | Expandable per-cluster state inspection on device cards |
91
+ | **⚙ Matter.js 0.16.10** | Updated from 0.16.8 to 0.16.10 for stability and spec compliance |
92
+ | **� Docker Node 22** | Pinned Docker runtime to Node 22 ([#200](https://github.com/RiDDiX/home-assistant-matter-hub/issues/200)) |
86
93
 
87
94
  </details>
88
95
 
89
96
  <details>
90
97
  <summary><strong>🧪 Alpha Features (v2.1.0-alpha.x)</strong> - Click to expand</summary>
91
98
 
92
- **Alpha is currently in sync with Stable (v2.0.26).** All alpha features have been promoted to stable. New alpha features will appear here as development continues.
99
+ **Alpha is currently in sync with Stable (v2.0.27).** All alpha features have been promoted to stable. New alpha features will appear here as development continues.
93
100
 
94
101
  </details>
95
102
 
@@ -115,6 +122,9 @@ of port forwarding etc.
115
122
  <details>
116
123
  <summary><strong>📜 Previous Stable Versions</strong> - Click to expand</summary>
117
124
 
125
+ ### v2.0.26
126
+ Authentication UI, Select entity support, Webhook event bridge, Cluster diagnostics, Matter.js 0.16.10, Docker Node 22, vacuum cleaning mode fallback, vacuum entity filter fix
127
+
118
128
  ### v2.0.25
119
129
  Vacuum mop intensity, vacuum auto-detection, Roborock room auto-detect, live entity mapping, dynamic heap sizing, multi-fabric commissioning, fan speed label fix
120
130
 
@@ -158,7 +168,8 @@ Matter Bridge, Multi-Fabric support, Health Monitoring, Bridge Wizard, AirQualit
158
168
  | `lock` | Door Lock | PIN Credentials, Unlatch/Unbolt |
159
169
  | `cover` | Window Covering | `coverSwapOpenClose` |
160
170
  | `climate` | Thermostat | Battery via `batteryEntity` |
161
- | `fan` | Fan, Air Purifier | Oscillation, Wind Modes |
171
+ | `fan` | Fan, Air Purifier | Oscillation, Wind Modes, `filterLifeEntity` |
172
+ | `alarm_control_panel` | Mode Select | Arm/Disarm modes |
162
173
  | `binary_sensor` | Contact, OnOff, Occupancy, Smoke/CO, Water Leak, Water Freeze | |
163
174
  | `sensor` | Temperature, Humidity, Pressure, Flow, Light, AirQuality | `batteryEntity`, `humidityEntity`, `pressureEntity` |
164
175
  | `event` | Generic Switch (Doorbell, Button Events) | |
@@ -166,7 +177,7 @@ Matter Bridge, Multi-Fabric support, Health Monitoring, Bridge Wizard, AirQualit
166
177
  | `media_player` | Speaker, Basic Video Player (TV) | |
167
178
  | `valve` | Water Valve, Pump | |
168
179
  | `select`, `input_select` | Mode Select | |
169
- | `vacuum` | Robot Vacuum Cleaner | `serverMode`, `roomEntities`, `batteryEntity`, `cleaningModeEntity`, `suctionLevelEntity`, `mopIntensityEntity` |
180
+ | `vacuum` | Robot Vacuum Cleaner | `serverMode`, `roomEntities`, `batteryEntity`, `cleaningModeEntity`, `suctionLevelEntity`, `mopIntensityEntity`, `customServiceAreas`, `vacuumMinimalClusters` |
170
181
  | `humidifier` | Humidifier/Dehumidifier | |
171
182
  | `water_heater` | Thermostat (Heating) | |
172
183
  | `automation`, `script`, `scene` | On/Off Switch | |
@@ -167512,7 +167512,7 @@ function thermostatPreInitialize(self) {
167512
167512
  if (self.features.autoMode) {
167513
167513
  self.state.minSetpointDeadBand = self.state.minSetpointDeadBand ?? 0;
167514
167514
  }
167515
- self.state.controlSequenceOfOperation = self.features.cooling && self.features.heating ? Thermostat3.ControlSequenceOfOperation.CoolingAndHeating : self.features.cooling ? Thermostat3.ControlSequenceOfOperation.CoolingOnly : Thermostat3.ControlSequenceOfOperation.HeatingOnly;
167515
+ self.state.controlSequenceOfOperation = self.features.cooling && self.features.heating && self.features.autoMode ? Thermostat3.ControlSequenceOfOperation.CoolingAndHeating : self.features.heating ? Thermostat3.ControlSequenceOfOperation.HeatingOnly : Thermostat3.ControlSequenceOfOperation.CoolingOnly;
167516
167516
  }
167517
167517
  async function thermostatPostInitialize(self) {
167518
167518
  const homeAssistant = await self.agent.load(HomeAssistantEntityBehavior);
@@ -168096,7 +168096,22 @@ var config4 = {
168096
168096
  (m) => m === ClimateHvacMode.heat || m === ClimateHvacMode.heat_cool || m === ClimateHvacMode.auto
168097
168097
  );
168098
168098
  if (hasCooling && hasHeating) {
168099
- return Thermostat3.ControlSequenceOfOperation.CoolingAndHeating;
168099
+ const hasAutoMode = modes.includes(ClimateHvacMode.heat_cool) && (modes.includes(ClimateHvacMode.heat) || modes.includes(ClimateHvacMode.cool));
168100
+ if (hasAutoMode) {
168101
+ return Thermostat3.ControlSequenceOfOperation.CoolingAndHeating;
168102
+ }
168103
+ if (modes.includes(ClimateHvacMode.heat) && modes.includes(ClimateHvacMode.cool)) {
168104
+ return Thermostat3.ControlSequenceOfOperation.CoolingAndHeating;
168105
+ }
168106
+ const hvacMode = entity.state;
168107
+ if (hvacMode === ClimateHvacMode.cool) {
168108
+ return Thermostat3.ControlSequenceOfOperation.CoolingOnly;
168109
+ }
168110
+ if (hvacMode === ClimateHvacMode.heat) {
168111
+ return Thermostat3.ControlSequenceOfOperation.HeatingOnly;
168112
+ }
168113
+ const direction = getHeatCoolOnlyDirection(entity, agent);
168114
+ return direction === "cooling" ? Thermostat3.ControlSequenceOfOperation.CoolingOnly : Thermostat3.ControlSequenceOfOperation.HeatingOnly;
168100
168115
  }
168101
168116
  if (hasCooling) {
168102
168117
  return Thermostat3.ControlSequenceOfOperation.CoolingOnly;