From 6ca8d3518392d2e96bd0383fefff3078f0c5b336 Mon Sep 17 00:00:00 2001 From: Artem Draft Date: Wed, 10 Nov 2021 23:17:56 +0300 Subject: [PATCH] Expose local_temperature_calibration to Home Assistant (#9595) * expose local_temperature_calibration in HA as numeric * fix eslint * added min/max logic * remove magic values * Update homeassistant.ts * Update types.d.ts Co-authored-by: Koen Kanters --- lib/extension/homeassistant.ts | 22 ++++++++++++++++++++++ lib/types/types.d.ts | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/extension/homeassistant.ts b/lib/extension/homeassistant.ts index dc14de012..6d99c3a1f 100644 --- a/lib/extension/homeassistant.ts +++ b/lib/extension/homeassistant.ts @@ -266,6 +266,28 @@ export default class HomeAssistant extends Extension { `{{ value_json.${awayMode.property} }}`; } + const tempCalibration = firstExpose.features.find((f) => f.name === 'local_temperature_calibration'); + if (tempCalibration) { + const discoveryEntry: DiscoveryEntry = { + type: 'number', + object_id: endpoint ? `${tempCalibration.name}_${endpoint}` : `${tempCalibration.name}`, + mockProperties: [tempCalibration.property], + discovery_payload: { + value_template: `{{ value_json.${tempCalibration.property} }}`, + command_topic: true, + command_topic_prefix: endpoint, + command_topic_postfix: tempCalibration.property, + entity_category: 'config', + icon: 'mdi:math-compass', + ...(tempCalibration.unit && {unit_of_measurement: tempCalibration.unit}), + }, + }; + + if (tempCalibration.value_min != null) discoveryEntry.discovery_payload.min = tempCalibration.value_min; + if (tempCalibration.value_max != null) discoveryEntry.discovery_payload.max = tempCalibration.value_max; + discoveryEntries.push(discoveryEntry); + } + discoveryEntries.push(discoveryEntry); } else if (firstExpose.type === 'lock') { assert(!endpoint, `Endpoint not supported for lock type`); diff --git a/lib/types/types.d.ts b/lib/types/types.d.ts index bf65412b5..3f25e9be1 100644 --- a/lib/types/types.d.ts +++ b/lib/types/types.d.ts @@ -95,7 +95,7 @@ declare global { } interface DefinitionExposeFeature {name: string, endpoint?: string, - property: string, value_max?: number, value_min?: number, + property: string, value_max?: number, value_min?: number, unit?: string, value_off?: string, value_on?: string, value_step?: number, values: string[], access: number} interface DefinitionExpose {