diff --git a/futurehome/config.yaml b/futurehome/config.yaml index 9b5195a..266f5ca 100644 --- a/futurehome/config.yaml +++ b/futurehome/config.yaml @@ -1,6 +1,6 @@ # https://developers.home-assistant.io/docs/add-ons/configuration#add-on-config name: Futurehome -version: "0.0.14" +version: "0.0.15" slug: futurehome description: Local Futurehome Smarthub integration url: "https://github.com/adrianjagielak/home-assistant-futurehome" diff --git a/futurehome/src/fimp/inclusion_report.ts b/futurehome/src/fimp/inclusion_report.ts index 02c23c4..684bdfa 100644 --- a/futurehome/src/fimp/inclusion_report.ts +++ b/futurehome/src/fimp/inclusion_report.ts @@ -17,10 +17,7 @@ export type InclusionReport = { export type InclusionReportService = { name?: string | null; address?: string | null; - props?: { - sup_units?: string[] | null; - sup_events?: string[] | null; - } | null + props?: { [key: string]: any } | null }; export async function getInclusionReport(parameters: { adapterAddress: string; adapterService: string; deviceId: string }): Promise { diff --git a/futurehome/src/ha/publish_device.ts b/futurehome/src/ha/publish_device.ts index 6601ddb..e6ff46a 100644 --- a/futurehome/src/ha/publish_device.ts +++ b/futurehome/src/ha/publish_device.ts @@ -78,8 +78,12 @@ type HaDeviceConfig = { qos: number, } -export type HaComponent = SensorComponent | BinarySensorComponent | SwitchComponent; +export type HaComponent = SensorComponent | BinarySensorComponent | SwitchComponent | NumberComponent; +// Device class supported values: https://www.home-assistant.io/integrations/homeassistant/#device-class + +/// https://www.home-assistant.io/integrations/sensor.mqtt/ +/// https://www.home-assistant.io/integrations/sensor/#device-class type SensorComponent = { unique_id: string; // platform @@ -89,6 +93,8 @@ type SensorComponent = { value_template: string; } +/// https://www.home-assistant.io/integrations/binary_sensor.mqtt/ +/// https://www.home-assistant.io/integrations/binary_sensor/#device-class type BinarySensorComponent = { unique_id: string; // platform @@ -97,6 +103,8 @@ type BinarySensorComponent = { value_template: string; } +/// https://www.home-assistant.io/integrations/switch.mqtt/ +/// https://www.home-assistant.io/integrations/switch/#device-class type SwitchComponent = { unique_id: string; // platform @@ -106,6 +114,20 @@ type SwitchComponent = { value_template: string; } +/// https://www.home-assistant.io/integrations/number.mqtt/ +/// https://www.home-assistant.io/integrations/number/#device-class +type NumberComponent = { + unique_id: string; + // platform + p: 'number'; + min: number; + max: number; + step: number; + command_topic: string; + optimistic: boolean; + value_template: string; +} + // todo button reference // "cmps": { // "bla1": { @@ -126,7 +148,7 @@ export type ServiceComponentsCreationResult = { export type CommandHandlers = { [topic: string]: (payload: string) => Promise } const serviceHandlers: { - [name: string]: (topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService) => ServiceComponentsCreationResult + [name: string]: (topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService) => ServiceComponentsCreationResult | undefined } = { battery: battery__components, out_bin_switch: out_bin_switch__components, @@ -186,14 +208,21 @@ export function haPublishDevice(parameters: { hubId: string, vinculumDeviceData: for (const svc of parameters.deviceInclusionReport.services) { if (!svc.name) { continue; } + const handler = serviceHandlers[svc.name]; - if (handler) { - const result = handler(topicPrefix, parameters.vinculumDeviceData, svc); - Object.assign(components, result.components); - Object.assign(handlers, result.commandHandlers); - } else { + if (!handler) { log.error(`No handler for service: ${svc.name}`); + continue; } + + const result = handler(topicPrefix, parameters.vinculumDeviceData, svc); + if (!result) { + log.error(`Invalid service data prevented component creation: ${parameters.vinculumDeviceData} ${svc}`); + continue; + } + + Object.assign(components, result.components); + Object.assign(handlers, result.commandHandlers); } const configTopic = `${topicPrefix}/config` diff --git a/futurehome/src/services/battery.ts b/futurehome/src/services/battery.ts index 4ed1ad8..4b3a072 100644 --- a/futurehome/src/services/battery.ts +++ b/futurehome/src/services/battery.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function battery__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function battery__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } if (svc.props?.sup_events?.includes('low_battery')) { return { diff --git a/futurehome/src/services/out_bin_switch.ts b/futurehome/src/services/out_bin_switch.ts index 11b24f3..f32417e 100644 --- a/futurehome/src/services/out_bin_switch.ts +++ b/futurehome/src/services/out_bin_switch.ts @@ -3,21 +3,27 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function out_bin_switch__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function out_bin_switch__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } + + const commandTopic = `${topicPrefix}${svc.address}/command`; return { components: { [svc.address]: { unique_id: svc.address, p: 'switch', - command_topic: `${topicPrefix}${svc.address}/command`, - optimistic: false,//todo + command_topic: commandTopic, + optimistic: false, value_template: `{{ (value_json['${svc.address}'].binary) | iif('ON', 'OFF') }}`, }, }, commandHandlers: { - [`${topicPrefix}${svc.address}/command`]: async (payload: string) => { + [commandTopic]: async (payload: string) => { await sendFimpMsg({ address: svc.address!, service: 'out_bin_switch', diff --git a/futurehome/src/services/out_lvl_switch.ts b/futurehome/src/services/out_lvl_switch.ts index 19723dc..13de89a 100644 --- a/futurehome/src/services/out_lvl_switch.ts +++ b/futurehome/src/services/out_lvl_switch.ts @@ -1,17 +1,49 @@ +import { sendFimpMsg } from "../fimp/fimp"; import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function out_lvl_switch__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return {components: {}}; } +export function out_lvl_switch__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } + + const commandTopic = `${topicPrefix}${svc.address}/command`; + + const minLvl = svc.props?.min_lvl ?? 0; + const maxLvl = svc.props?.max_lvl ?? 100; return { components: { - // [svc.address]: { - // p: 'sensor', - // device_class: 'temperature", - // unit_of_measurement: "°C", - // value_template: `{{ value_json['${svc.address}'].sensor }}`, - // }, - },}; + [svc.address]: { + unique_id: svc.address, + p: "number", + min: minLvl, + max: maxLvl, + step: 1, + command_topic: commandTopic, + optimistic: false, + value_template: `{{ value_json['${svc.address}'].lvl }}`, + }, + }, + + commandHandlers: { + [commandTopic]: async (payload: string) => { + const lvl = parseInt(payload, 10); + if (Number.isNaN(lvl)) { + return; + } + + await sendFimpMsg({ + address: svc.address!, + service: "out_lvl_switch", + cmd: "cmd.lvl.set", + val: lvl, + val_t: "int", + }); + }, + }, + }; } diff --git a/futurehome/src/services/sensor_accelx.ts b/futurehome/src/services/sensor_accelx.ts index 954c3e6..bae5de2 100644 --- a/futurehome/src/services/sensor_accelx.ts +++ b/futurehome/src/services/sensor_accelx.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_accelx__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_accelx__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? 'm/s2'; diff --git a/futurehome/src/services/sensor_accely.ts b/futurehome/src/services/sensor_accely.ts index c6424de..fcffc78 100644 --- a/futurehome/src/services/sensor_accely.ts +++ b/futurehome/src/services/sensor_accely.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_accely__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_accely__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? 'm/s2'; diff --git a/futurehome/src/services/sensor_accelz.ts b/futurehome/src/services/sensor_accelz.ts index 8f8505b..12065c9 100644 --- a/futurehome/src/services/sensor_accelz.ts +++ b/futurehome/src/services/sensor_accelz.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_accelz__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_accelz__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? 'm/s2'; diff --git a/futurehome/src/services/sensor_airflow.ts b/futurehome/src/services/sensor_airflow.ts index 9d43e48..10a2ff1 100644 --- a/futurehome/src/services/sensor_airflow.ts +++ b/futurehome/src/services/sensor_airflow.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_airflow__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_airflow__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? 'm3/h'; diff --git a/futurehome/src/services/sensor_airq.ts b/futurehome/src/services/sensor_airq.ts index 5c29031..4ac9c9e 100644 --- a/futurehome/src/services/sensor_airq.ts +++ b/futurehome/src/services/sensor_airq.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_airq__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_airq__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'aqi'; const unit = svc.props?.sup_units?.[0] ?? 'pm25'; diff --git a/futurehome/src/services/sensor_anglepos.ts b/futurehome/src/services/sensor_anglepos.ts index 8276b0a..71b65f7 100644 --- a/futurehome/src/services/sensor_anglepos.ts +++ b/futurehome/src/services/sensor_anglepos.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_anglepos__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_anglepos__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? '%'; diff --git a/futurehome/src/services/sensor_atmo.ts b/futurehome/src/services/sensor_atmo.ts index 53ca32f..008b9af 100644 --- a/futurehome/src/services/sensor_atmo.ts +++ b/futurehome/src/services/sensor_atmo.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_atmo__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_atmo__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'atmospheric_pressure'; const unit = svc.props?.sup_units?.[0] ?? 'kPa'; diff --git a/futurehome/src/services/sensor_baro.ts b/futurehome/src/services/sensor_baro.ts index d6ed5f6..f2577a9 100644 --- a/futurehome/src/services/sensor_baro.ts +++ b/futurehome/src/services/sensor_baro.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_baro__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_baro__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'atmospheric_pressure'; const unit = svc.props?.sup_units?.[0] ?? 'kPa'; diff --git a/futurehome/src/services/sensor_co.ts b/futurehome/src/services/sensor_co.ts index 566346a..83650f2 100644 --- a/futurehome/src/services/sensor_co.ts +++ b/futurehome/src/services/sensor_co.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_co__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_co__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'carbon_monoxide'; const unit = svc.props?.sup_units?.[0] ?? 'mol/m3'; diff --git a/futurehome/src/services/sensor_co2.ts b/futurehome/src/services/sensor_co2.ts index ac2e452..3baefda 100644 --- a/futurehome/src/services/sensor_co2.ts +++ b/futurehome/src/services/sensor_co2.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_co2__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_co2__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'carbon_dioxide'; const unit = svc.props?.sup_units?.[0] ?? 'ppm'; diff --git a/futurehome/src/services/sensor_contact.ts b/futurehome/src/services/sensor_contact.ts index 4a6f9e0..6ab67b1 100644 --- a/futurehome/src/services/sensor_contact.ts +++ b/futurehome/src/services/sensor_contact.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_contact__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_contact__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'opening' diff --git a/futurehome/src/services/sensor_current.ts b/futurehome/src/services/sensor_current.ts index c07dbe5..bfa8c45 100644 --- a/futurehome/src/services/sensor_current.ts +++ b/futurehome/src/services/sensor_current.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_current__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_current__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'current'; const unit = svc.props?.sup_units?.[0] ?? 'A'; diff --git a/futurehome/src/services/sensor_dew.ts b/futurehome/src/services/sensor_dew.ts index e2aec4f..4fc4127 100644 --- a/futurehome/src/services/sensor_dew.ts +++ b/futurehome/src/services/sensor_dew.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_dew__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_dew__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'temperature' let unit = svc.props?.sup_units?.[0] ?? "°C"; diff --git a/futurehome/src/services/sensor_direct.ts b/futurehome/src/services/sensor_direct.ts index 54d0c8f..d5e33dd 100644 --- a/futurehome/src/services/sensor_direct.ts +++ b/futurehome/src/services/sensor_direct.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_direct__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_direct__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'wind_direction'; const unit = svc.props?.sup_units?.[0] ?? '°'; diff --git a/futurehome/src/services/sensor_distance.ts b/futurehome/src/services/sensor_distance.ts index aacd21a..79f03cc 100644 --- a/futurehome/src/services/sensor_distance.ts +++ b/futurehome/src/services/sensor_distance.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_distance__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_distance__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'distance'; const unit = svc.props?.sup_units?.[0] ?? 'm'; diff --git a/futurehome/src/services/sensor_elresist.ts b/futurehome/src/services/sensor_elresist.ts index 300f220..aa4255e 100644 --- a/futurehome/src/services/sensor_elresist.ts +++ b/futurehome/src/services/sensor_elresist.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_elresist__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_elresist__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? 'ohm/m'; diff --git a/futurehome/src/services/sensor_freq.ts b/futurehome/src/services/sensor_freq.ts index 20d338e..387b5a9 100644 --- a/futurehome/src/services/sensor_freq.ts +++ b/futurehome/src/services/sensor_freq.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_freq__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_freq__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'frequency'; const unit = svc.props?.sup_units?.[0] ?? 'Hz'; diff --git a/futurehome/src/services/sensor_gp.ts b/futurehome/src/services/sensor_gp.ts index ce3b951..fe692dd 100644 --- a/futurehome/src/services/sensor_gp.ts +++ b/futurehome/src/services/sensor_gp.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_gp__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_gp__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? '%'; diff --git a/futurehome/src/services/sensor_gust.ts b/futurehome/src/services/sensor_gust.ts index b8fca8a..2345637 100644 --- a/futurehome/src/services/sensor_gust.ts +++ b/futurehome/src/services/sensor_gust.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_gust__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_gust__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; let unit = svc.props?.sup_units?.[0] ?? 'km/h'; diff --git a/futurehome/src/services/sensor_humid.ts b/futurehome/src/services/sensor_humid.ts index de870ef..3ecbe48 100644 --- a/futurehome/src/services/sensor_humid.ts +++ b/futurehome/src/services/sensor_humid.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_humid__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_humid__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'humidity'; const unit = svc.props?.sup_units?.[0] ?? '%'; diff --git a/futurehome/src/services/sensor_lumin.ts b/futurehome/src/services/sensor_lumin.ts index 0385eb9..37ee856 100644 --- a/futurehome/src/services/sensor_lumin.ts +++ b/futurehome/src/services/sensor_lumin.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_lumin__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_lumin__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'illuminance'; const unit = svc.props?.sup_units?.[0] ?? 'Lux'; diff --git a/futurehome/src/services/sensor_moist.ts b/futurehome/src/services/sensor_moist.ts index 4d6be7f..329aa54 100644 --- a/futurehome/src/services/sensor_moist.ts +++ b/futurehome/src/services/sensor_moist.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_moist__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_moist__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'moisture'; const unit = svc.props?.sup_units?.[0] ?? '%'; diff --git a/futurehome/src/services/sensor_noise.ts b/futurehome/src/services/sensor_noise.ts index fdf52ef..91b0a1a 100644 --- a/futurehome/src/services/sensor_noise.ts +++ b/futurehome/src/services/sensor_noise.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_noise__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_noise__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'sound_pressure'; const unit = svc.props?.sup_units?.[0] ?? 'dB'; diff --git a/futurehome/src/services/sensor_power.ts b/futurehome/src/services/sensor_power.ts index bb94184..cac50e0 100644 --- a/futurehome/src/services/sensor_power.ts +++ b/futurehome/src/services/sensor_power.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_power__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_power__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'power'; const unit = svc.props?.sup_units?.[0] ?? 'W'; diff --git a/futurehome/src/services/sensor_presence.ts b/futurehome/src/services/sensor_presence.ts index ca6b092..fb17c0c 100644 --- a/futurehome/src/services/sensor_presence.ts +++ b/futurehome/src/services/sensor_presence.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_presence__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_presence__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'occupancy' diff --git a/futurehome/src/services/sensor_rain.ts b/futurehome/src/services/sensor_rain.ts index 44a1af1..829b17a 100644 --- a/futurehome/src/services/sensor_rain.ts +++ b/futurehome/src/services/sensor_rain.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_rain__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_rain__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'precipitation_intensity'; const unit = svc.props?.sup_units?.[0] ?? 'mm/h'; diff --git a/futurehome/src/services/sensor_rotation.ts b/futurehome/src/services/sensor_rotation.ts index 496ead0..08cbf68 100644 --- a/futurehome/src/services/sensor_rotation.ts +++ b/futurehome/src/services/sensor_rotation.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_rotation__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_rotation__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? 'rpm'; diff --git a/futurehome/src/services/sensor_seismicint.ts b/futurehome/src/services/sensor_seismicint.ts index 876ab8a..25b0c38 100644 --- a/futurehome/src/services/sensor_seismicint.ts +++ b/futurehome/src/services/sensor_seismicint.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_seismicint__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_seismicint__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? 'EMCRO'; diff --git a/futurehome/src/services/sensor_seismicmag.ts b/futurehome/src/services/sensor_seismicmag.ts index a9a1762..d723c61 100644 --- a/futurehome/src/services/sensor_seismicmag.ts +++ b/futurehome/src/services/sensor_seismicmag.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_seismicmag__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_seismicmag__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? 'MB'; diff --git a/futurehome/src/services/sensor_solarrad.ts b/futurehome/src/services/sensor_solarrad.ts index 77a9ba5..462f964 100644 --- a/futurehome/src/services/sensor_solarrad.ts +++ b/futurehome/src/services/sensor_solarrad.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_solarrad__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_solarrad__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? 'W/m2'; diff --git a/futurehome/src/services/sensor_tank.ts b/futurehome/src/services/sensor_tank.ts index 56a94aa..07a78a9 100644 --- a/futurehome/src/services/sensor_tank.ts +++ b/futurehome/src/services/sensor_tank.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_tank__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_tank__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'volume_storage'; const unit = svc.props?.sup_units?.[0] ?? 'l'; diff --git a/futurehome/src/services/sensor_temp.ts b/futurehome/src/services/sensor_temp.ts index f77e928..973c4c9 100644 --- a/futurehome/src/services/sensor_temp.ts +++ b/futurehome/src/services/sensor_temp.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_temp__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_temp__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'temperature' let unit = svc.props?.sup_units?.[0] ?? "°C"; diff --git a/futurehome/src/services/sensor_tidelvl.ts b/futurehome/src/services/sensor_tidelvl.ts index 7c55081..e52c8ea 100644 --- a/futurehome/src/services/sensor_tidelvl.ts +++ b/futurehome/src/services/sensor_tidelvl.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_tidelvl__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_tidelvl__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? 'm'; diff --git a/futurehome/src/services/sensor_uv.ts b/futurehome/src/services/sensor_uv.ts index 9cb02c8..9d442df 100644 --- a/futurehome/src/services/sensor_uv.ts +++ b/futurehome/src/services/sensor_uv.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_uv__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_uv__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? 'index'; diff --git a/futurehome/src/services/sensor_veloc.ts b/futurehome/src/services/sensor_veloc.ts index 6929c69..60bb0c2 100644 --- a/futurehome/src/services/sensor_veloc.ts +++ b/futurehome/src/services/sensor_veloc.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_veloc__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_veloc__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = undefined; const unit = svc.props?.sup_units?.[0] ?? 'm/2'; diff --git a/futurehome/src/services/sensor_voltage.ts b/futurehome/src/services/sensor_voltage.ts index 661b830..f38fce4 100644 --- a/futurehome/src/services/sensor_voltage.ts +++ b/futurehome/src/services/sensor_voltage.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_voltage__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_voltage__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'voltage'; const unit = svc.props?.sup_units?.[0] ?? 'V'; diff --git a/futurehome/src/services/sensor_watflow.ts b/futurehome/src/services/sensor_watflow.ts index 0620366..3fb00f5 100644 --- a/futurehome/src/services/sensor_watflow.ts +++ b/futurehome/src/services/sensor_watflow.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_watflow__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_watflow__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'volume_flow_rate'; const unit = svc.props?.sup_units?.[0] ?? 'l/h'; diff --git a/futurehome/src/services/sensor_watpressure.ts b/futurehome/src/services/sensor_watpressure.ts index fa76a56..d2bd241 100644 --- a/futurehome/src/services/sensor_watpressure.ts +++ b/futurehome/src/services/sensor_watpressure.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_watpressure__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_watpressure__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'pressure'; const unit = svc.props?.sup_units?.[0] ?? 'kPa'; diff --git a/futurehome/src/services/sensor_wattemp.ts b/futurehome/src/services/sensor_wattemp.ts index 40e1b2b..3baee39 100644 --- a/futurehome/src/services/sensor_wattemp.ts +++ b/futurehome/src/services/sensor_wattemp.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_wattemp__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_wattemp__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'temperature'; let unit = svc.props?.sup_units?.[0] ?? "°C"; diff --git a/futurehome/src/services/sensor_weight.ts b/futurehome/src/services/sensor_weight.ts index f4693bd..8013978 100644 --- a/futurehome/src/services/sensor_weight.ts +++ b/futurehome/src/services/sensor_weight.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_weight__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_weight__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'weight'; const unit = svc.props?.sup_units?.[0] ?? 'kg'; diff --git a/futurehome/src/services/sensor_wind.ts b/futurehome/src/services/sensor_wind.ts index 59efbaa..aa76b8a 100644 --- a/futurehome/src/services/sensor_wind.ts +++ b/futurehome/src/services/sensor_wind.ts @@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device"; -export function sensor_wind__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { - if (!svc.address) { return { components: {} }; } +export function sensor_wind__components( + topicPrefix: string, + vinculumDeviceData: VinculumPd7Device, + svc: InclusionReportService +): ServiceComponentsCreationResult | undefined { + if (!svc.address) { return; } const device_class = 'wind_speed'; const unit = svc.props?.sup_units?.[0] ?? 'km/h';