mirror of
https://github.com/Koenkk/zigbee2mqtt.git
synced 2026-07-20 02:21:20 +00:00
Enable Home Assistant availability_mode all only when new availability feature is enabled. #6281
This commit is contained in:
@@ -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`});
|
||||
|
||||
@@ -63,6 +63,7 @@ declare global {
|
||||
},
|
||||
experimental: {
|
||||
output: 'json' | 'attribute' | 'attribute_and_json',
|
||||
availability_new?: boolean,
|
||||
},
|
||||
advanced: {
|
||||
legacy_api: boolean,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user