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 {