Add support for 'out_lvl_switch' service

This commit is contained in:
Adrian Jagielak 2025-07-23 16:26:41 +02:00
parent f120ee382c
commit ecb49f7b77
No known key found for this signature in database
GPG Key ID: 0818CF7AF6C62BFB
47 changed files with 342 additions and 110 deletions

View File

@ -1,6 +1,6 @@
# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-config # https://developers.home-assistant.io/docs/add-ons/configuration#add-on-config
name: Futurehome name: Futurehome
version: "0.0.14" version: "0.0.15"
slug: futurehome slug: futurehome
description: Local Futurehome Smarthub integration description: Local Futurehome Smarthub integration
url: "https://github.com/adrianjagielak/home-assistant-futurehome" url: "https://github.com/adrianjagielak/home-assistant-futurehome"

View File

@ -17,10 +17,7 @@ export type InclusionReport = {
export type InclusionReportService = { export type InclusionReportService = {
name?: string | null; name?: string | null;
address?: string | null; address?: string | null;
props?: { props?: { [key: string]: any } | null
sup_units?: string[] | null;
sup_events?: string[] | null;
} | null
}; };
export async function getInclusionReport(parameters: { adapterAddress: string; adapterService: string; deviceId: string }): Promise<InclusionReport> { export async function getInclusionReport(parameters: { adapterAddress: string; adapterService: string; deviceId: string }): Promise<InclusionReport> {

View File

@ -78,8 +78,12 @@ type HaDeviceConfig = {
qos: number, 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 = { type SensorComponent = {
unique_id: string; unique_id: string;
// platform // platform
@ -89,6 +93,8 @@ type SensorComponent = {
value_template: string; value_template: string;
} }
/// https://www.home-assistant.io/integrations/binary_sensor.mqtt/
/// https://www.home-assistant.io/integrations/binary_sensor/#device-class
type BinarySensorComponent = { type BinarySensorComponent = {
unique_id: string; unique_id: string;
// platform // platform
@ -97,6 +103,8 @@ type BinarySensorComponent = {
value_template: string; value_template: string;
} }
/// https://www.home-assistant.io/integrations/switch.mqtt/
/// https://www.home-assistant.io/integrations/switch/#device-class
type SwitchComponent = { type SwitchComponent = {
unique_id: string; unique_id: string;
// platform // platform
@ -106,6 +114,20 @@ type SwitchComponent = {
value_template: string; 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 // todo button reference
// "cmps": { // "cmps": {
// "bla1": { // "bla1": {
@ -126,7 +148,7 @@ export type ServiceComponentsCreationResult = {
export type CommandHandlers = { [topic: string]: (payload: string) => Promise<void> } export type CommandHandlers = { [topic: string]: (payload: string) => Promise<void> }
const serviceHandlers: { const serviceHandlers: {
[name: string]: (topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService) => ServiceComponentsCreationResult [name: string]: (topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService) => ServiceComponentsCreationResult | undefined
} = { } = {
battery: battery__components, battery: battery__components,
out_bin_switch: out_bin_switch__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) { for (const svc of parameters.deviceInclusionReport.services) {
if (!svc.name) { continue; } if (!svc.name) { continue; }
const handler = serviceHandlers[svc.name]; const handler = serviceHandlers[svc.name];
if (handler) { if (!handler) {
log.error(`No handler for service: ${svc.name}`);
continue;
}
const result = handler(topicPrefix, parameters.vinculumDeviceData, svc); 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(components, result.components);
Object.assign(handlers, result.commandHandlers); Object.assign(handlers, result.commandHandlers);
} else {
log.error(`No handler for service: ${svc.name}`);
}
} }
const configTopic = `${topicPrefix}/config` const configTopic = `${topicPrefix}/config`

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function battery__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function battery__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
if (svc.props?.sup_events?.includes('low_battery')) { if (svc.props?.sup_events?.includes('low_battery')) {
return { return {

View File

@ -3,21 +3,27 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function out_bin_switch__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function out_bin_switch__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const commandTopic = `${topicPrefix}${svc.address}/command`;
return { return {
components: { components: {
[svc.address]: { [svc.address]: {
unique_id: svc.address, unique_id: svc.address,
p: 'switch', p: 'switch',
command_topic: `${topicPrefix}${svc.address}/command`, command_topic: commandTopic,
optimistic: false,//todo optimistic: false,
value_template: `{{ (value_json['${svc.address}'].binary) | iif('ON', 'OFF') }}`, value_template: `{{ (value_json['${svc.address}'].binary) | iif('ON', 'OFF') }}`,
}, },
}, },
commandHandlers: { commandHandlers: {
[`${topicPrefix}${svc.address}/command`]: async (payload: string) => { [commandTopic]: async (payload: string) => {
await sendFimpMsg({ await sendFimpMsg({
address: svc.address!, address: svc.address!,
service: 'out_bin_switch', service: 'out_bin_switch',

View File

@ -1,17 +1,49 @@
import { sendFimpMsg } from "../fimp/fimp";
import { InclusionReportService } from "../fimp/inclusion_report"; import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function out_lvl_switch__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function out_lvl_switch__components(
if (!svc.address) { return {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 { return {
components: { components: {
// [svc.address]: { [svc.address]: {
// p: 'sensor', unique_id: svc.address,
// device_class: 'temperature", p: "number",
// unit_of_measurement: "°C", min: minLvl,
// value_template: `{{ value_json['${svc.address}'].sensor }}`, 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",
});
},
},
};
} }

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_accelx__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_accelx__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? 'm/s2'; const unit = svc.props?.sup_units?.[0] ?? 'm/s2';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_accely__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_accely__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? 'm/s2'; const unit = svc.props?.sup_units?.[0] ?? 'm/s2';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_accelz__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_accelz__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? 'm/s2'; const unit = svc.props?.sup_units?.[0] ?? 'm/s2';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_airflow__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_airflow__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? 'm3/h'; const unit = svc.props?.sup_units?.[0] ?? 'm3/h';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_airq__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_airq__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'aqi'; const device_class = 'aqi';
const unit = svc.props?.sup_units?.[0] ?? 'pm25'; const unit = svc.props?.sup_units?.[0] ?? 'pm25';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_anglepos__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_anglepos__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? '%'; const unit = svc.props?.sup_units?.[0] ?? '%';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_atmo__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_atmo__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'atmospheric_pressure'; const device_class = 'atmospheric_pressure';
const unit = svc.props?.sup_units?.[0] ?? 'kPa'; const unit = svc.props?.sup_units?.[0] ?? 'kPa';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_baro__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_baro__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'atmospheric_pressure'; const device_class = 'atmospheric_pressure';
const unit = svc.props?.sup_units?.[0] ?? 'kPa'; const unit = svc.props?.sup_units?.[0] ?? 'kPa';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_co__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_co__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'carbon_monoxide'; const device_class = 'carbon_monoxide';
const unit = svc.props?.sup_units?.[0] ?? 'mol/m3'; const unit = svc.props?.sup_units?.[0] ?? 'mol/m3';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_co2__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_co2__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'carbon_dioxide'; const device_class = 'carbon_dioxide';
const unit = svc.props?.sup_units?.[0] ?? 'ppm'; const unit = svc.props?.sup_units?.[0] ?? 'ppm';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_contact__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_contact__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'opening' const device_class = 'opening'

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_current__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_current__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'current'; const device_class = 'current';
const unit = svc.props?.sup_units?.[0] ?? 'A'; const unit = svc.props?.sup_units?.[0] ?? 'A';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_dew__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_dew__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'temperature' const device_class = 'temperature'
let unit = svc.props?.sup_units?.[0] ?? "°C"; let unit = svc.props?.sup_units?.[0] ?? "°C";

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_direct__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_direct__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'wind_direction'; const device_class = 'wind_direction';
const unit = svc.props?.sup_units?.[0] ?? '°'; const unit = svc.props?.sup_units?.[0] ?? '°';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_distance__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_distance__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'distance'; const device_class = 'distance';
const unit = svc.props?.sup_units?.[0] ?? 'm'; const unit = svc.props?.sup_units?.[0] ?? 'm';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_elresist__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_elresist__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? 'ohm/m'; const unit = svc.props?.sup_units?.[0] ?? 'ohm/m';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_freq__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_freq__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'frequency'; const device_class = 'frequency';
const unit = svc.props?.sup_units?.[0] ?? 'Hz'; const unit = svc.props?.sup_units?.[0] ?? 'Hz';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_gp__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_gp__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? '%'; const unit = svc.props?.sup_units?.[0] ?? '%';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_gust__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_gust__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
let unit = svc.props?.sup_units?.[0] ?? 'km/h'; let unit = svc.props?.sup_units?.[0] ?? 'km/h';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_humid__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_humid__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'humidity'; const device_class = 'humidity';
const unit = svc.props?.sup_units?.[0] ?? '%'; const unit = svc.props?.sup_units?.[0] ?? '%';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_lumin__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_lumin__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'illuminance'; const device_class = 'illuminance';
const unit = svc.props?.sup_units?.[0] ?? 'Lux'; const unit = svc.props?.sup_units?.[0] ?? 'Lux';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_moist__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_moist__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'moisture'; const device_class = 'moisture';
const unit = svc.props?.sup_units?.[0] ?? '%'; const unit = svc.props?.sup_units?.[0] ?? '%';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_noise__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_noise__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'sound_pressure'; const device_class = 'sound_pressure';
const unit = svc.props?.sup_units?.[0] ?? 'dB'; const unit = svc.props?.sup_units?.[0] ?? 'dB';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_power__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_power__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'power'; const device_class = 'power';
const unit = svc.props?.sup_units?.[0] ?? 'W'; const unit = svc.props?.sup_units?.[0] ?? 'W';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_presence__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_presence__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'occupancy' const device_class = 'occupancy'

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_rain__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_rain__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'precipitation_intensity'; const device_class = 'precipitation_intensity';
const unit = svc.props?.sup_units?.[0] ?? 'mm/h'; const unit = svc.props?.sup_units?.[0] ?? 'mm/h';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_rotation__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_rotation__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? 'rpm'; const unit = svc.props?.sup_units?.[0] ?? 'rpm';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_seismicint__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_seismicint__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? 'EMCRO'; const unit = svc.props?.sup_units?.[0] ?? 'EMCRO';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_seismicmag__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_seismicmag__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? 'MB'; const unit = svc.props?.sup_units?.[0] ?? 'MB';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_solarrad__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_solarrad__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? 'W/m2'; const unit = svc.props?.sup_units?.[0] ?? 'W/m2';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_tank__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_tank__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'volume_storage'; const device_class = 'volume_storage';
const unit = svc.props?.sup_units?.[0] ?? 'l'; const unit = svc.props?.sup_units?.[0] ?? 'l';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_temp__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_temp__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'temperature' const device_class = 'temperature'
let unit = svc.props?.sup_units?.[0] ?? "°C"; let unit = svc.props?.sup_units?.[0] ?? "°C";

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_tidelvl__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_tidelvl__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? 'm'; const unit = svc.props?.sup_units?.[0] ?? 'm';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_uv__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_uv__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? 'index'; const unit = svc.props?.sup_units?.[0] ?? 'index';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_veloc__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_veloc__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = undefined; const device_class = undefined;
const unit = svc.props?.sup_units?.[0] ?? 'm/2'; const unit = svc.props?.sup_units?.[0] ?? 'm/2';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_voltage__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_voltage__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'voltage'; const device_class = 'voltage';
const unit = svc.props?.sup_units?.[0] ?? 'V'; const unit = svc.props?.sup_units?.[0] ?? 'V';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_watflow__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_watflow__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'volume_flow_rate'; const device_class = 'volume_flow_rate';
const unit = svc.props?.sup_units?.[0] ?? 'l/h'; const unit = svc.props?.sup_units?.[0] ?? 'l/h';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_watpressure__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_watpressure__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'pressure'; const device_class = 'pressure';
const unit = svc.props?.sup_units?.[0] ?? 'kPa'; const unit = svc.props?.sup_units?.[0] ?? 'kPa';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_wattemp__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_wattemp__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'temperature'; const device_class = 'temperature';
let unit = svc.props?.sup_units?.[0] ?? "°C"; let unit = svc.props?.sup_units?.[0] ?? "°C";

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_weight__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_weight__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'weight'; const device_class = 'weight';
const unit = svc.props?.sup_units?.[0] ?? 'kg'; const unit = svc.props?.sup_units?.[0] ?? 'kg';

View File

@ -2,8 +2,12 @@ import { InclusionReportService } from "../fimp/inclusion_report";
import { VinculumPd7Device } from "../fimp/vinculum_pd7_device"; import { VinculumPd7Device } from "../fimp/vinculum_pd7_device";
import { ServiceComponentsCreationResult } from "../ha/publish_device"; import { ServiceComponentsCreationResult } from "../ha/publish_device";
export function sensor_wind__components(topicPrefix: string, vinculumDeviceData: VinculumPd7Device, svc: InclusionReportService): ServiceComponentsCreationResult { export function sensor_wind__components(
if (!svc.address) { return { components: {} }; } topicPrefix: string,
vinculumDeviceData: VinculumPd7Device,
svc: InclusionReportService
): ServiceComponentsCreationResult | undefined {
if (!svc.address) { return; }
const device_class = 'wind_speed'; const device_class = 'wind_speed';
const unit = svc.props?.sup_units?.[0] ?? 'km/h'; const unit = svc.props?.sup_units?.[0] ?? 'km/h';