@riddix/hamh 2.1.0-alpha.853 → 2.1.0-alpha.854
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
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
21
|
> [!NOTE]
|
|
22
|
-
> 🔀 **Community Fork** - This is
|
|
22
|
+
> 🔀 **Community Fork** - This is the actively maintained fork and successor of the original [t0bst4r/home-assistant-matter-hub](https://github.com/t0bst4r/home-assistant-matter-hub), which was discontinued in January 2026 and has since been archived. We continue active development with bug fixes, new features, and community support. Thank you **[@t0bst4r](https://github.com/t0bst4r)** for the original work! ❤️
|
|
23
23
|
>
|
|
24
|
-
> **📦 Migrating?** See [Migration Guide](#migration-from-t0bst4r) - your paired devices will continue to work!
|
|
24
|
+
> **📦 Migrating?** See [Migration Guide](#migration-from-t0bst4r) - your paired devices will continue to work! For a side-by-side feature list, see the [fork comparison](https://riddix.github.io/home-assistant-matter-hub/getting-started/fork-comparison). The add-on slugs are `hamh` (stable), `hamh-alpha` and `hamh-testing`.
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
package/dist/backend/cli.js
CHANGED
|
@@ -133493,6 +133493,8 @@ WARNING: ${includeIdentity ? "This backup contains sensitive Matter identity dat
|
|
|
133493
133493
|
lockPinMaxLength: config8.lockPinMaxLength,
|
|
133494
133494
|
powerEntity: config8.powerEntity,
|
|
133495
133495
|
energyEntity: config8.energyEntity,
|
|
133496
|
+
meterSerialNumber: config8.meterSerialNumber,
|
|
133497
|
+
pointOfDelivery: config8.pointOfDelivery,
|
|
133496
133498
|
voltageEntity: config8.voltageEntity,
|
|
133497
133499
|
currentEntity: config8.currentEntity,
|
|
133498
133500
|
batteryPowerEntity: config8.batteryPowerEntity,
|
|
@@ -133657,6 +133659,8 @@ WARNING: ${includeIdentity ? "This backup contains sensitive Matter identity dat
|
|
|
133657
133659
|
lockPinMaxLength: config8.lockPinMaxLength,
|
|
133658
133660
|
powerEntity: config8.powerEntity,
|
|
133659
133661
|
energyEntity: config8.energyEntity,
|
|
133662
|
+
meterSerialNumber: config8.meterSerialNumber,
|
|
133663
|
+
pointOfDelivery: config8.pointOfDelivery,
|
|
133660
133664
|
voltageEntity: config8.voltageEntity,
|
|
133661
133665
|
currentEntity: config8.currentEntity,
|
|
133662
133666
|
batteryPowerEntity: config8.batteryPowerEntity,
|
|
@@ -134512,6 +134516,8 @@ function entityMappingApi(mappingStorage, identityStorage) {
|
|
|
134512
134516
|
lockPinMaxLength: body.lockPinMaxLength,
|
|
134513
134517
|
powerEntity: body.powerEntity,
|
|
134514
134518
|
energyEntity: body.energyEntity,
|
|
134519
|
+
meterSerialNumber: body.meterSerialNumber,
|
|
134520
|
+
pointOfDelivery: body.pointOfDelivery,
|
|
134515
134521
|
voltageEntity: body.voltageEntity,
|
|
134516
134522
|
currentEntity: body.currentEntity,
|
|
134517
134523
|
batteryPowerEntity: body.batteryPowerEntity,
|
|
@@ -135016,6 +135022,8 @@ function configToProfileEntry(config8) {
|
|
|
135016
135022
|
lockPinMaxLength: config8.lockPinMaxLength,
|
|
135017
135023
|
powerEntity: config8.powerEntity,
|
|
135018
135024
|
energyEntity: config8.energyEntity,
|
|
135025
|
+
meterSerialNumber: config8.meterSerialNumber,
|
|
135026
|
+
pointOfDelivery: config8.pointOfDelivery,
|
|
135019
135027
|
voltageEntity: config8.voltageEntity,
|
|
135020
135028
|
currentEntity: config8.currentEntity,
|
|
135021
135029
|
batteryPowerEntity: config8.batteryPowerEntity,
|
|
@@ -135158,6 +135166,8 @@ function mappingProfileApi(mappingStorage) {
|
|
|
135158
135166
|
lockPinMaxLength: entry.lockPinMaxLength,
|
|
135159
135167
|
powerEntity: entry.powerEntity,
|
|
135160
135168
|
energyEntity: entry.energyEntity,
|
|
135169
|
+
meterSerialNumber: entry.meterSerialNumber,
|
|
135170
|
+
pointOfDelivery: entry.pointOfDelivery,
|
|
135161
135171
|
voltageEntity: entry.voltageEntity,
|
|
135162
135172
|
currentEntity: entry.currentEntity,
|
|
135163
135173
|
batteryPowerEntity: entry.batteryPowerEntity,
|
|
@@ -139936,6 +139946,8 @@ var EntityMappingStorage = class extends Service {
|
|
|
139936
139946
|
lockPinMaxLength: pinLengths.max,
|
|
139937
139947
|
powerEntity: request.powerEntity?.trim() || void 0,
|
|
139938
139948
|
energyEntity: request.energyEntity?.trim() || void 0,
|
|
139949
|
+
meterSerialNumber: request.meterSerialNumber?.trim() || void 0,
|
|
139950
|
+
pointOfDelivery: request.pointOfDelivery?.trim() || void 0,
|
|
139939
139951
|
voltageEntity: request.voltageEntity?.trim() || void 0,
|
|
139940
139952
|
currentEntity: request.currentEntity?.trim() || void 0,
|
|
139941
139953
|
batteryPowerEntity: request.batteryPowerEntity?.trim() || void 0,
|
|
@@ -139971,7 +139983,7 @@ var EntityMappingStorage = class extends Service {
|
|
|
139971
139983
|
composedEntities: request.composedEntities?.filter((e) => e.entityId?.trim()) ?? void 0,
|
|
139972
139984
|
disableMomentaryFlip: request.disableMomentaryFlip || void 0
|
|
139973
139985
|
};
|
|
139974
|
-
if (!config8.matterDeviceType && !config8.customName && !config8.customProductName && !config8.customVendorName && !config8.customSerialNumber && config8.customVendorId === void 0 && config8.disabled !== true && !config8.filterLifeEntity && !config8.cleaningModeEntity && !config8.temperatureEntity && !config8.humidityEntity && !config8.batteryEntity && !config8.disableBatteryMapping && !config8.chargingStateEntity && !config8.roomEntities && !config8.disableLockPin && !config8.lockUsercodeService && config8.lockUsercodeSlot === void 0 && config8.lockPinMinLength === void 0 && config8.lockPinMaxLength === void 0 && !config8.powerEntity && !config8.energyEntity && !config8.voltageEntity && !config8.currentEntity && !config8.batteryPowerEntity && !config8.batteryEnergyEntity && !config8.chargingSwitchEntity && !config8.currentLimitEntity && !config8.pressureEntity && !config8.suctionLevelEntity && !config8.mopIntensityEntity && (!config8.customServiceAreas || config8.customServiceAreas.length === 0) && (!config8.customFanSpeedTags || Object.keys(config8.customFanSpeedTags).length === 0) && (!config8.fanWindPresets || (config8.fanWindPresets.natural?.length ?? 0) === 0 && (config8.fanWindPresets.sleep?.length ?? 0) === 0) && !config8.fanRestoreSpeedOnPowerOn && !config8.currentRoomEntity && !config8.cleanedAreaEntity && !config8.vacuumAscendingRoomOrder && !config8.disableCustomAreaRoomModes && !config8.valetudoIdentifier && !config8.coverSwapOpenClose && !config8.coverExposeAsDimmableLight && !config8.selectExposeAsSwitch && !config8.selectSwitchOnOption && !config8.selectSwitchOffOption && !config8.coverSliderDebounceMs && !config8.updateThrottleMs && !config8.disableClimateOnOff && !config8.disableClimateFanControl && !config8.climateKeepModeOnIdle && !config8.climateExposeFan && !config8.climateAutoMode && (!config8.composedEntities || config8.composedEntities.length === 0) && !config8.disableMomentaryFlip) {
|
|
139986
|
+
if (!config8.matterDeviceType && !config8.customName && !config8.customProductName && !config8.customVendorName && !config8.customSerialNumber && config8.customVendorId === void 0 && config8.disabled !== true && !config8.filterLifeEntity && !config8.cleaningModeEntity && !config8.temperatureEntity && !config8.humidityEntity && !config8.batteryEntity && !config8.disableBatteryMapping && !config8.chargingStateEntity && !config8.roomEntities && !config8.disableLockPin && !config8.lockUsercodeService && config8.lockUsercodeSlot === void 0 && config8.lockPinMinLength === void 0 && config8.lockPinMaxLength === void 0 && !config8.powerEntity && !config8.energyEntity && !config8.meterSerialNumber && !config8.pointOfDelivery && !config8.voltageEntity && !config8.currentEntity && !config8.batteryPowerEntity && !config8.batteryEnergyEntity && !config8.chargingSwitchEntity && !config8.currentLimitEntity && !config8.pressureEntity && !config8.suctionLevelEntity && !config8.mopIntensityEntity && (!config8.customServiceAreas || config8.customServiceAreas.length === 0) && (!config8.customFanSpeedTags || Object.keys(config8.customFanSpeedTags).length === 0) && (!config8.fanWindPresets || (config8.fanWindPresets.natural?.length ?? 0) === 0 && (config8.fanWindPresets.sleep?.length ?? 0) === 0) && !config8.fanRestoreSpeedOnPowerOn && !config8.currentRoomEntity && !config8.cleanedAreaEntity && !config8.vacuumAscendingRoomOrder && !config8.disableCustomAreaRoomModes && !config8.valetudoIdentifier && !config8.coverSwapOpenClose && !config8.coverExposeAsDimmableLight && !config8.selectExposeAsSwitch && !config8.selectSwitchOnOption && !config8.selectSwitchOffOption && !config8.coverSliderDebounceMs && !config8.updateThrottleMs && !config8.disableClimateOnOff && !config8.disableClimateFanControl && !config8.climateKeepModeOnIdle && !config8.climateExposeFan && !config8.climateAutoMode && (!config8.composedEntities || config8.composedEntities.length === 0) && !config8.disableMomentaryFlip) {
|
|
139975
139987
|
bridgeMap.delete(request.entityId);
|
|
139976
139988
|
} else {
|
|
139977
139989
|
bridgeMap.set(request.entityId, config8);
|
|
@@ -149611,6 +149623,7 @@ var DoorbellDeviceDefinition = MutableEndpoint({
|
|
|
149611
149623
|
behaviors: SupportedBehaviors(DoorbellRequirements.server.mandatory.Identify)
|
|
149612
149624
|
});
|
|
149613
149625
|
Object.freeze(DoorbellDeviceDefinition);
|
|
149626
|
+
var DoorbellDevice = DoorbellDeviceDefinition;
|
|
149614
149627
|
|
|
149615
149628
|
// ../../node_modules/.pnpm/@matter+types@0.17.9/node_modules/@matter/types/dist/esm/clusters/commodity-price.js
|
|
149616
149629
|
init_ClusterType();
|
|
@@ -149834,6 +149847,7 @@ var ElectricalUtilityMeterDeviceDefinition = MutableEndpoint({
|
|
|
149834
149847
|
behaviors: SupportedBehaviors(ElectricalUtilityMeterRequirements.server.mandatory.MeterIdentification)
|
|
149835
149848
|
});
|
|
149836
149849
|
Object.freeze(ElectricalUtilityMeterDeviceDefinition);
|
|
149850
|
+
var ElectricalUtilityMeterDevice = ElectricalUtilityMeterDeviceDefinition;
|
|
149837
149851
|
|
|
149838
149852
|
// ../../node_modules/.pnpm/@matter+types@0.17.9/node_modules/@matter/types/dist/esm/clusters/energy-evse.js
|
|
149839
149853
|
init_ClusterType();
|
|
@@ -164991,6 +165005,9 @@ var HaGenericSwitchServer = HaGenericSwitchServerMultiBase.set({
|
|
|
164991
165005
|
multiPressMax: 3
|
|
164992
165006
|
});
|
|
164993
165007
|
|
|
165008
|
+
// src/matter/endpoints/legacy/event/doorbell.ts
|
|
165009
|
+
init_home_assistant_entity_behavior();
|
|
165010
|
+
|
|
164994
165011
|
// src/matter/endpoints/legacy/event/index.ts
|
|
164995
165012
|
init_home_assistant_entity_behavior();
|
|
164996
165013
|
var EventEndpointTypeMulti = GenericSwitchDevice.with(
|
|
@@ -165033,6 +165050,33 @@ function EventDevice(homeAssistantEntity) {
|
|
|
165033
165050
|
});
|
|
165034
165051
|
}
|
|
165035
165052
|
|
|
165053
|
+
// src/matter/endpoints/legacy/event/doorbell.ts
|
|
165054
|
+
var DoorbellEndpointTypeMulti = DoorbellDevice.with(
|
|
165055
|
+
BasicInformationServer2,
|
|
165056
|
+
IdentifyServer2,
|
|
165057
|
+
HomeAssistantEntityBehavior,
|
|
165058
|
+
HaGenericSwitchServer
|
|
165059
|
+
);
|
|
165060
|
+
var DoorbellEndpointTypeSimple = DoorbellDevice.with(
|
|
165061
|
+
BasicInformationServer2,
|
|
165062
|
+
IdentifyServer2,
|
|
165063
|
+
HomeAssistantEntityBehavior,
|
|
165064
|
+
HaGenericSwitchServerSimple
|
|
165065
|
+
);
|
|
165066
|
+
function DoorbellDevice2(homeAssistantEntity) {
|
|
165067
|
+
const attrs = homeAssistantEntity.entity.state.attributes;
|
|
165068
|
+
const multiPressMax = detectMultiPressMax(attrs.event_types ?? []);
|
|
165069
|
+
if (multiPressMax >= 2) {
|
|
165070
|
+
return DoorbellEndpointTypeMulti.set({
|
|
165071
|
+
homeAssistantEntity,
|
|
165072
|
+
switch: { multiPressMax }
|
|
165073
|
+
});
|
|
165074
|
+
}
|
|
165075
|
+
return DoorbellEndpointTypeSimple.set({
|
|
165076
|
+
homeAssistantEntity
|
|
165077
|
+
});
|
|
165078
|
+
}
|
|
165079
|
+
|
|
165036
165080
|
// src/matter/endpoints/legacy/fan/index.ts
|
|
165037
165081
|
init_dist();
|
|
165038
165082
|
init_home_assistant_entity_behavior();
|
|
@@ -168613,6 +168657,38 @@ var ElectricalMeterType = ElectricalMeterDevice.with(
|
|
|
168613
168657
|
HaPowerTopologyServer
|
|
168614
168658
|
);
|
|
168615
168659
|
|
|
168660
|
+
// src/matter/endpoints/legacy/sensor/devices/electrical-utility-meter.ts
|
|
168661
|
+
init_home_assistant_entity_behavior();
|
|
168662
|
+
var HaMeterIdentificationServer = class extends MeterIdentificationServer {
|
|
168663
|
+
async initialize() {
|
|
168664
|
+
await super.initialize();
|
|
168665
|
+
const homeAssistant = await this.agent.load(HomeAssistantEntityBehavior);
|
|
168666
|
+
const mapping = homeAssistant.state.mapping;
|
|
168667
|
+
applyPatchState(this.state, {
|
|
168668
|
+
meterSerialNumber: mapping?.meterSerialNumber ?? null,
|
|
168669
|
+
pointOfDelivery: mapping?.pointOfDelivery ?? null
|
|
168670
|
+
});
|
|
168671
|
+
}
|
|
168672
|
+
};
|
|
168673
|
+
((HaMeterIdentificationServer2) => {
|
|
168674
|
+
class State extends MeterIdentificationServer.State {
|
|
168675
|
+
}
|
|
168676
|
+
HaMeterIdentificationServer2.State = State;
|
|
168677
|
+
})(HaMeterIdentificationServer || (HaMeterIdentificationServer = {}));
|
|
168678
|
+
var ElectricalUtilityMeterType = ElectricalUtilityMeterDevice.with(
|
|
168679
|
+
BasicInformationServer2,
|
|
168680
|
+
IdentifyServer2,
|
|
168681
|
+
HomeAssistantEntityBehavior,
|
|
168682
|
+
HaMeterIdentificationServer.set({
|
|
168683
|
+
meterType: null,
|
|
168684
|
+
pointOfDelivery: null,
|
|
168685
|
+
meterSerialNumber: null
|
|
168686
|
+
}),
|
|
168687
|
+
PowerServer,
|
|
168688
|
+
EnergyServer,
|
|
168689
|
+
HaPowerTopologyServer
|
|
168690
|
+
);
|
|
168691
|
+
|
|
168616
168692
|
// src/matter/endpoints/legacy/sensor/devices/energy-evse.ts
|
|
168617
168693
|
init_esm();
|
|
168618
168694
|
init_home_assistant_actions();
|
|
@@ -173433,6 +173509,8 @@ var matterDeviceTypeFactories = {
|
|
|
173433
173509
|
// Legacy SolarPower alias, kept for existing mappings.
|
|
173434
173510
|
electrical_sensor: (ha) => ElectricalSensorType.set({ homeAssistantEntity: ha }),
|
|
173435
173511
|
solar_power: (ha) => ElectricalSensorType.set({ homeAssistantEntity: ha }),
|
|
173512
|
+
// Matter 1.4 utility meter (0x0511), opt-in so existing pairings keep 0x0514.
|
|
173513
|
+
electrical_utility_meter: (ha) => ElectricalUtilityMeterType.set({ homeAssistantEntity: ha }),
|
|
173436
173514
|
evse: (ha) => energyEvseType().set({ homeAssistantEntity: ha }),
|
|
173437
173515
|
contact_sensor: (ha) => ContactSensorType.set({ homeAssistantEntity: ha }),
|
|
173438
173516
|
motion_sensor: (ha) => MotionSensorType.set({ homeAssistantEntity: ha }),
|
|
@@ -173444,6 +173522,7 @@ var matterDeviceTypeFactories = {
|
|
|
173444
173522
|
water_heater: WaterHeaterDevice2,
|
|
173445
173523
|
water_heater_management: WaterHeaterManagementDevice,
|
|
173446
173524
|
generic_switch: EventDevice,
|
|
173525
|
+
doorbell: DoorbellDevice2,
|
|
173447
173526
|
smoke_co_alarm: (ha) => SmokeAlarmType.set({ homeAssistantEntity: ha }),
|
|
173448
173527
|
water_freeze_detector: (ha) => WaterFreezeDetectorType.set({ homeAssistantEntity: ha }),
|
|
173449
173528
|
water_leak_detector: (ha) => WaterLeakDetectorType.set({ homeAssistantEntity: ha })
|