Skip to content

Commit

Permalink
feat: Let Home Assistant generate entity name when device_class is pr…
Browse files Browse the repository at this point in the history
…esent (#18208)
  • Loading branch information
Koenkk authored Aug 1, 2023
1 parent 7709af8 commit df93e4c
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 25 deletions.
14 changes: 8 additions & 6 deletions lib/extension/homeassistant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1224,12 +1224,14 @@ export default class HomeAssistant extends Extension {
const devicePayload = this.getDevicePayload(entity);

// Set (unique) name, separate by space if device name contains space.
const nameSeparator = devicePayload.name.includes('_') ? '_' : ' ';
payload.name = devicePayload.name;
if (config.object_id.startsWith(config.type) && config.object_id.includes('_')) {
payload.name += `${nameSeparator}${config.object_id.split(/_(.+)/)[1]}`;
} else if (!config.object_id.startsWith(config.type)) {
payload.name += `${nameSeparator}${config.object_id.replace(/_/g, nameSeparator)}`;
if (!payload.device_class || ['timestamp'].includes(payload.device_class)) {
const nameSeparator = devicePayload.name.includes('_') ? '_' : ' ';
payload.name = devicePayload.name;
if (config.object_id.startsWith(config.type) && config.object_id.includes('_')) {
payload.name += `${nameSeparator}${config.object_id.split(/_(.+)/)[1]}`;
} else if (!config.object_id.startsWith(config.type)) {
payload.name += `${nameSeparator}${config.object_id.replace(/_/g, nameSeparator)}`;
}
}

// Set unique_id
Expand Down
19 changes: 0 additions & 19 deletions test/homeassistant.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.temperature }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_temperature',
'unique_id': '0x0017880104e45522_temperature_zigbee2mqtt',
'device': {
'identifiers': ['zigbee2mqtt_0x0017880104e45522'],
Expand All @@ -179,7 +178,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.humidity }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_humidity',
'unique_id': '0x0017880104e45522_humidity_zigbee2mqtt',
'enabled_by_default': true,
'device': {
Expand All @@ -206,7 +204,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.pressure }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_pressure',
'unique_id': '0x0017880104e45522_pressure_zigbee2mqtt',
'enabled_by_default': true,
'device': {
Expand All @@ -233,7 +230,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.battery }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_battery',
'unique_id': '0x0017880104e45522_battery_zigbee2mqtt',
'enabled_by_default': true,
'entity_category': 'diagnostic',
Expand Down Expand Up @@ -402,7 +398,6 @@ describe('HomeAssistant extension', () => {
'value_template': "{{ value_json.temperature }}",
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_temperature',
'unique_id': '0x0017880104e45522_temperature_zigbee2mqtt',
'device': {
'identifiers': ['zigbee2mqtt_0x0017880104e45522'],
Expand All @@ -428,7 +423,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.humidity }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_humidity',
'unique_id': '0x0017880104e45522_humidity_zigbee2mqtt',
'enabled_by_default': true,
'device': {
Expand All @@ -455,7 +449,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.pressure }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_pressure',
'enabled_by_default': true,
'unique_id': '0x0017880104e45522_pressure_zigbee2mqtt',
'device': {
Expand Down Expand Up @@ -512,7 +505,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.temperature }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_temperature',
'enabled_by_default': true,
'unique_id': '0x0017880104e45522_temperature_zigbee2mqtt',
'device': {
Expand Down Expand Up @@ -541,7 +533,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.humidity }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_humidity',
'enabled_by_default': true,
'device': {
'identifiers': ['zigbee2mqtt_0x0017880104e45522'],
Expand Down Expand Up @@ -584,7 +575,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.temperature }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'Weather Sensor temperature',
'unique_id': '0x0017880104e45522_temperature_zigbee2mqtt',
'device': {
'identifiers': ['zigbee2mqtt_0x0017880104e45522'],
Expand All @@ -611,7 +601,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.humidity }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'Weather Sensor humidity',
'unique_id': '0x0017880104e45522_humidity_zigbee2mqtt',
'enabled_by_default': true,
'device': {
Expand Down Expand Up @@ -900,7 +889,6 @@ describe('HomeAssistant extension', () => {
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'enabled_by_default': true,
'name': 'weather_sensor_temperature',
'unique_id': '0x0017880104e45522_temperature_zigbee2mqtt',
'device': {
'identifiers': ['zigbee2mqtt_0x0017880104e45522'],
Expand Down Expand Up @@ -1027,7 +1015,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.temperature }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_temperature',
'unique_id': '0x0017880104e45522_temperature_zigbee2mqtt',
'device': {
'identifiers': ['zigbee2mqtt_0x0017880104e45522'],
Expand Down Expand Up @@ -1163,7 +1150,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.temperature }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_temperature',
'unique_id': '0x0017880104e45522_temperature_zigbee2mqtt',
'device': {
'identifiers': ['zigbee2mqtt_0x0017880104e45522'],
Expand Down Expand Up @@ -1245,7 +1231,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.temperature }}',
'state_topic': 'zigbee2mqtt/weather_sensor_renamed',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor_renamed',
'name': 'weather_sensor_renamed_temperature',
'unique_id': '0x0017880104e45522_temperature_zigbee2mqtt',
'device': {
'identifiers': ['zigbee2mqtt_0x0017880104e45522'],
Expand Down Expand Up @@ -1373,7 +1358,6 @@ describe('HomeAssistant extension', () => {
'value_template': '{{ value_json.temperature }}',
'state_topic': 'zigbee2mqtt/weather_sensor_renamed',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor_renamed',
'name': 'weather_sensor_renamed_temperature',
'unique_id': '0x0017880104e45522_temperature_zigbee2mqtt',
'device': {
'identifiers': ['zigbee2mqtt_0x0017880104e45522'],
Expand Down Expand Up @@ -1401,7 +1385,6 @@ describe('HomeAssistant extension', () => {
"enabled_by_default": false,
"state_topic":"zigbee2mqtt/bulb",
"json_attributes_topic":"zigbee2mqtt/bulb",
"name":"bulb update available",
"unique_id":"0x000b57fffec6a5b2_update_available_zigbee2mqtt",
"device":{
"identifiers":[
Expand Down Expand Up @@ -1804,7 +1787,6 @@ describe('HomeAssistant extension', () => {
'state_class': 'measurement',
'value_template': '{{ value_json.temperature }}',
'state_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_temperature',
'unique_id': '0x0017880104e45522_temperature_zigbee2mqtt',
'enabled_by_default': true,
'device': {
Expand Down Expand Up @@ -2032,7 +2014,6 @@ describe('HomeAssistant extension', () => {
'value_template': "{{ value_json.temperature }}",
'state_topic': 'zigbee2mqtt/weather_sensor',
'json_attributes_topic': 'zigbee2mqtt/weather_sensor',
'name': 'weather_sensor_temperature',
'unique_id': '0x0017880104e45522_temperature_zigbee2mqtt',
'device': {
'identifiers': ['zigbee2mqtt_0x0017880104e45522'],
Expand Down

0 comments on commit df93e4c

Please sign in to comment.