Enable Home Assistant availability_mode all only when new availability feature is enabled. #6281

This commit is contained in:
Koen Kanters
2021-08-28 16:20:02 +02:00
parent 7122137639
commit 17b2315d89
4 changed files with 10 additions and 30 deletions
+7 -3
View File
@@ -855,10 +855,14 @@ class HomeAssistant extends Extension {
// Availability payload
payload.availability = [{topic: `${settings.get().mqtt.base_topic}/bridge/state`}];
payload.availability_mode = 'all';
/* istanbul ignore next */
const availabilityEnabled = settings.get().experimental.availability_new ?
utils.isAvailabilityEnabledForDevice(resolvedEntity, settings.get()) :
if (utils.isAvailabilityEnabledForDevice(resolvedEntity, settings.get())) {
payload.availability_mode = 'all';
}
/* istanbul ignore next */
const availabilityEnabled = utils.isAvailabilityEnabledForDevice(resolvedEntity, settings.get()) ||
settings.get().advanced.availability_timeout;
if (resolvedEntity.type === 'device' && availabilityEnabled) {
payload.availability.push({topic: `${settings.get().mqtt.base_topic}/${friendlyName}/availability`});
+1
View File
@@ -63,6 +63,7 @@ declare global {
},
experimental: {
output: 'json' | 'attribute' | 'attribute_and_json',
availability_new?: boolean,
},
advanced: {
legacy_api: boolean,
+2
View File
@@ -255,6 +255,8 @@ export function sanitizeImageParameter(parameter: string): string {
}
export function isAvailabilityEnabledForDevice(rd: ResolvedDevice, settings: Settings): boolean {
if (!settings.experimental.availability_new) return false;
if (rd.settings.hasOwnProperty('availability')) {
return !!rd.settings.availability;
}
-27
View File
@@ -62,7 +62,6 @@ describe('HomeAssistant extension', () => {
payload = {
"availability":[{"topic":"zigbee2mqtt/bridge/state"}],
"availability_mode": "all",
"brightness":true,
"brightness_scale":254,
"color_mode":true,
@@ -94,7 +93,6 @@ describe('HomeAssistant extension', () => {
payload = {
"availability":[{"topic":"zigbee2mqtt/bridge/state"}],
"availability_mode": "all",
"command_topic":"zigbee2mqtt/ha_discovery_group/set",
"device":{
"identifiers":["zigbee2mqtt_1221051039810110150109113116116_9"],
@@ -134,7 +132,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -161,7 +158,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -188,7 +184,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -215,7 +210,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -243,7 +237,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -255,7 +248,6 @@ describe('HomeAssistant extension', () => {
payload = {
"availability":[{"topic":"zigbee2mqtt/bridge/state"}],
"availability_mode": "all",
"command_topic":"zigbee2mqtt/wall_switch_double/left/set",
"device":{
"identifiers":[
@@ -284,7 +276,6 @@ describe('HomeAssistant extension', () => {
payload = {
"availability":[{"topic":"zigbee2mqtt/bridge/state"}],
"availability_mode": "all",
"command_topic":"zigbee2mqtt/wall_switch_double/right/set",
"device":{
"identifiers":[
@@ -313,7 +304,6 @@ describe('HomeAssistant extension', () => {
payload = {
"availability":[{"topic":"zigbee2mqtt/bridge/state"}],
"availability_mode": "all",
"brightness":true,
"brightness_scale":254,
"color_mode": true,
@@ -386,7 +376,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -413,7 +402,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -440,7 +428,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -498,7 +485,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'From Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
'expire_after': 90,
'icon': 'mdi:test',
};
@@ -526,7 +512,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Not from Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
'expire_after': 30,
'icon': 'mdi:test',
};
@@ -563,7 +548,6 @@ describe('HomeAssistant extension', () => {
payload = {
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
"command_topic": "zigbee2mqtt/my_switch/set",
"device": {
"identifiers": [
@@ -663,7 +647,6 @@ describe('HomeAssistant extension', () => {
"manufacturer":"Hampton Bay"
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -683,7 +666,6 @@ describe('HomeAssistant extension', () => {
payload = {
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
"away_mode_command_topic":"zigbee2mqtt/TS0601_thermostat/set/away_mode",
"away_mode_state_template":"{{ value_json.away_mode }}",
"away_mode_state_topic":"zigbee2mqtt/TS0601_thermostat",
@@ -760,7 +742,6 @@ describe('HomeAssistant extension', () => {
manufacturer: 'Keen Home'
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -796,7 +777,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -940,7 +920,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -1064,7 +1043,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}, {topic: 'zigbee2mqtt/weather_sensor/availability'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -1152,7 +1130,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -1224,7 +1201,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -1258,7 +1234,6 @@ describe('HomeAssistant extension', () => {
"manufacturer":"IKEA"
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -1707,7 +1682,6 @@ describe('HomeAssistant extension', () => {
'manufacturer': 'Xiaomi',
},
'availability': [{topic: 'zigbee2mqtt/bridge/state'}],
'availability_mode': 'all',
};
expect(MQTT.publish).toHaveBeenCalledWith(
@@ -1728,7 +1702,6 @@ describe('HomeAssistant extension', () => {
const payload = {
"availability":[{"topic":"zigbee2mqtt/bridge/state"}],
"availability_mode": "all",
"brightness":true,
"brightness_scale":254,
"color_mode":true,