mirror of
https://github.com/adrianjagielak/home-assistant-futurehome.git
synced 2025-09-13 07:37:09 +00:00
Refactor sensors
This commit is contained in:
parent
b9a37a3775
commit
a39f2d5928
@ -1,5 +1,9 @@
|
|||||||
<!-- https://developers.home-assistant.io/docs/add-ons/presentation#keeping-a-changelog -->
|
<!-- https://developers.home-assistant.io/docs/add-ons/presentation#keeping-a-changelog -->
|
||||||
|
|
||||||
|
## 0.1.6 (26.07.2025)
|
||||||
|
|
||||||
|
- Improved MQTT components interfaces.
|
||||||
|
- Refactored sensors.
|
||||||
|
|
||||||
## 0.1.5 (25.07.2025)
|
## 0.1.5 (25.07.2025)
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -43,3 +43,68 @@ export type CoverDeviceClass =
|
|||||||
| 'shutter'
|
| 'shutter'
|
||||||
| 'window'
|
| 'window'
|
||||||
| null;
|
| null;
|
||||||
|
|
||||||
|
export type SensorDeviceClass =
|
||||||
|
| 'apparent_power'
|
||||||
|
| 'aqi'
|
||||||
|
| 'area'
|
||||||
|
| 'atmospheric_pressure'
|
||||||
|
| 'battery'
|
||||||
|
| 'blood_glucose_concentration'
|
||||||
|
| 'carbon_dioxide'
|
||||||
|
| 'carbon_monoxide'
|
||||||
|
| 'current'
|
||||||
|
| 'data_rate'
|
||||||
|
| 'data_size'
|
||||||
|
| 'date'
|
||||||
|
| 'distance'
|
||||||
|
| 'duration'
|
||||||
|
| 'energy'
|
||||||
|
| 'energy_distance'
|
||||||
|
| 'energy_storage'
|
||||||
|
| 'enum'
|
||||||
|
| 'frequency'
|
||||||
|
| 'gas'
|
||||||
|
| 'humidity'
|
||||||
|
| 'illuminance'
|
||||||
|
| 'irradiance'
|
||||||
|
| 'moisture'
|
||||||
|
| 'monetary'
|
||||||
|
| 'nitrogen_dioxide'
|
||||||
|
| 'nitrogen_monoxide'
|
||||||
|
| 'nitrous_oxide'
|
||||||
|
| 'ozone'
|
||||||
|
| 'ph'
|
||||||
|
| 'pm1'
|
||||||
|
| 'pm25'
|
||||||
|
| 'pm10'
|
||||||
|
| 'power_factor'
|
||||||
|
| 'power'
|
||||||
|
| 'precipitation'
|
||||||
|
| 'precipitation_intensity'
|
||||||
|
| 'pressure'
|
||||||
|
| 'reactive_energy'
|
||||||
|
| 'reactive_power'
|
||||||
|
| 'signal_strength'
|
||||||
|
| 'sound_pressure'
|
||||||
|
| 'speed'
|
||||||
|
| 'sulphur_dioxide'
|
||||||
|
| 'temperature'
|
||||||
|
| 'timestamp'
|
||||||
|
| 'volatile_organic_compounds'
|
||||||
|
| 'volatile_organic_compounds_parts'
|
||||||
|
| 'voltage'
|
||||||
|
| 'volume'
|
||||||
|
| 'volume_flow_rate'
|
||||||
|
| 'volume_storage'
|
||||||
|
| 'water'
|
||||||
|
| 'weight'
|
||||||
|
| 'wind_direction'
|
||||||
|
| 'wind_speed'
|
||||||
|
| null;
|
||||||
|
|
||||||
|
export type SensorStateClass =
|
||||||
|
| 'measurement'
|
||||||
|
| 'measurement_angle'
|
||||||
|
| 'total'
|
||||||
|
| 'total_increasing';
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { BaseComponent } from './_base_component';
|
import { BaseComponent } from './_base_component';
|
||||||
|
import { SensorDeviceClass, SensorStateClass } from './_enums';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents an MQTT Sensor component for Home Assistant MQTT Discovery.
|
* Represents an MQTT Sensor component for Home Assistant MQTT Discovery.
|
||||||
@ -33,64 +34,7 @@ export interface SensorComponent extends BaseComponent {
|
|||||||
* The [type/class](https://www.home-assistant.io/integrations/sensor/#device-class) of the sensor to set the icon in the frontend.
|
* The [type/class](https://www.home-assistant.io/integrations/sensor/#device-class) of the sensor to set the icon in the frontend.
|
||||||
* The `device_class` defaults to `null` (generic sensor).
|
* The `device_class` defaults to `null` (generic sensor).
|
||||||
*/
|
*/
|
||||||
device_class?:
|
device_class?: SensorDeviceClass;
|
||||||
| 'apparent_power'
|
|
||||||
| 'aqi'
|
|
||||||
| 'area'
|
|
||||||
| 'atmospheric_pressure'
|
|
||||||
| 'battery'
|
|
||||||
| 'blood_glucose_concentration'
|
|
||||||
| 'carbon_dioxide'
|
|
||||||
| 'carbon_monoxide'
|
|
||||||
| 'current'
|
|
||||||
| 'data_rate'
|
|
||||||
| 'data_size'
|
|
||||||
| 'date'
|
|
||||||
| 'distance'
|
|
||||||
| 'duration'
|
|
||||||
| 'energy'
|
|
||||||
| 'energy_distance'
|
|
||||||
| 'energy_storage'
|
|
||||||
| 'enum'
|
|
||||||
| 'frequency'
|
|
||||||
| 'gas'
|
|
||||||
| 'humidity'
|
|
||||||
| 'illuminance'
|
|
||||||
| 'irradiance'
|
|
||||||
| 'moisture'
|
|
||||||
| 'monetary'
|
|
||||||
| 'nitrogen_dioxide'
|
|
||||||
| 'nitrogen_monoxide'
|
|
||||||
| 'nitrous_oxide'
|
|
||||||
| 'ozone'
|
|
||||||
| 'ph'
|
|
||||||
| 'pm1'
|
|
||||||
| 'pm25'
|
|
||||||
| 'pm10'
|
|
||||||
| 'power_factor'
|
|
||||||
| 'power'
|
|
||||||
| 'precipitation'
|
|
||||||
| 'precipitation_intensity'
|
|
||||||
| 'pressure'
|
|
||||||
| 'reactive_energy'
|
|
||||||
| 'reactive_power'
|
|
||||||
| 'signal_strength'
|
|
||||||
| 'sound_pressure'
|
|
||||||
| 'speed'
|
|
||||||
| 'sulphur_dioxide'
|
|
||||||
| 'temperature'
|
|
||||||
| 'timestamp'
|
|
||||||
| 'volatile_organic_compounds'
|
|
||||||
| 'volatile_organic_compounds_parts'
|
|
||||||
| 'voltage'
|
|
||||||
| 'volume'
|
|
||||||
| 'volume_flow_rate'
|
|
||||||
| 'volume_storage'
|
|
||||||
| 'water'
|
|
||||||
| 'weight'
|
|
||||||
| 'wind_direction'
|
|
||||||
| 'wind_speed'
|
|
||||||
| null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The [state_class](https://developers.home-assistant.io/docs/core/entity/sensor#available-state-classes) of the sensor.
|
* The [state_class](https://developers.home-assistant.io/docs/core/entity/sensor#available-state-classes) of the sensor.
|
||||||
@ -102,11 +46,7 @@ export interface SensorComponent extends BaseComponent {
|
|||||||
* - `total` - Represents a total amount that can both increase and decrease, e.g., a net energy meter.
|
* - `total` - Represents a total amount that can both increase and decrease, e.g., a net energy meter.
|
||||||
* - `total_increasing` - A monotonically increasing total that periodically resets to 0, e.g., daily water consumption.
|
* - `total_increasing` - A monotonically increasing total that periodically resets to 0, e.g., daily water consumption.
|
||||||
*/
|
*/
|
||||||
state_class?:
|
state_class?: SensorStateClass;
|
||||||
| 'measurement'
|
|
||||||
| 'measurement_angle'
|
|
||||||
| 'total'
|
|
||||||
| 'total_increasing';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the units of measurement of the sensor, if any.
|
* Defines the units of measurement of the sensor, if any.
|
||||||
|
@ -5,6 +5,8 @@ import {
|
|||||||
} from '../fimp/vinculum_pd7_device';
|
} from '../fimp/vinculum_pd7_device';
|
||||||
import { log } from '../logger';
|
import { log } from '../logger';
|
||||||
import { _alarm__components } from '../services/_alarm';
|
import { _alarm__components } from '../services/_alarm';
|
||||||
|
import { _sensor_binary__components } from '../services/_sensor_binary';
|
||||||
|
import { _sensor_numeric__components } from '../services/_sensor_numeric';
|
||||||
import { barrier_ctrl__components } from '../services/barrier_ctrl';
|
import { barrier_ctrl__components } from '../services/barrier_ctrl';
|
||||||
import { basic__components } from '../services/basic';
|
import { basic__components } from '../services/basic';
|
||||||
import { battery__components } from '../services/battery';
|
import { battery__components } from '../services/battery';
|
||||||
@ -16,47 +18,6 @@ import { media_player__components } from '../services/media_player';
|
|||||||
import { out_bin_switch__components } from '../services/out_bin_switch';
|
import { out_bin_switch__components } from '../services/out_bin_switch';
|
||||||
import { out_lvl_switch__components } from '../services/out_lvl_switch';
|
import { out_lvl_switch__components } from '../services/out_lvl_switch';
|
||||||
import { scene_ctrl__components } from '../services/scene_ctrl';
|
import { scene_ctrl__components } from '../services/scene_ctrl';
|
||||||
import { sensor_accelx__components } from '../services/sensor_accelx';
|
|
||||||
import { sensor_accely__components } from '../services/sensor_accely';
|
|
||||||
import { sensor_accelz__components } from '../services/sensor_accelz';
|
|
||||||
import { sensor_airflow__components } from '../services/sensor_airflow';
|
|
||||||
import { sensor_airq__components } from '../services/sensor_airq';
|
|
||||||
import { sensor_anglepos__components } from '../services/sensor_anglepos';
|
|
||||||
import { sensor_atmo__components } from '../services/sensor_atmo';
|
|
||||||
import { sensor_baro__components } from '../services/sensor_baro';
|
|
||||||
import { sensor_co__components } from '../services/sensor_co';
|
|
||||||
import { sensor_co2__components } from '../services/sensor_co2';
|
|
||||||
import { sensor_contact__components } from '../services/sensor_contact';
|
|
||||||
import { sensor_current__components } from '../services/sensor_current';
|
|
||||||
import { sensor_dew__components } from '../services/sensor_dew';
|
|
||||||
import { sensor_direct__components } from '../services/sensor_direct';
|
|
||||||
import { sensor_distance__components } from '../services/sensor_distance';
|
|
||||||
import { sensor_elresist__components } from '../services/sensor_elresist';
|
|
||||||
import { sensor_freq__components } from '../services/sensor_freq';
|
|
||||||
import { sensor_gp__components } from '../services/sensor_gp';
|
|
||||||
import { sensor_gust__components } from '../services/sensor_gust';
|
|
||||||
import { sensor_humid__components } from '../services/sensor_humid';
|
|
||||||
import { sensor_lumin__components } from '../services/sensor_lumin';
|
|
||||||
import { sensor_moist__components } from '../services/sensor_moist';
|
|
||||||
import { sensor_noise__components } from '../services/sensor_noise';
|
|
||||||
import { sensor_power__components } from '../services/sensor_power';
|
|
||||||
import { sensor_presence__components } from '../services/sensor_presence';
|
|
||||||
import { sensor_rain__components } from '../services/sensor_rain';
|
|
||||||
import { sensor_rotation__components } from '../services/sensor_rotation';
|
|
||||||
import { sensor_seismicint__components } from '../services/sensor_seismicint';
|
|
||||||
import { sensor_seismicmag__components } from '../services/sensor_seismicmag';
|
|
||||||
import { sensor_solarrad__components } from '../services/sensor_solarrad';
|
|
||||||
import { sensor_tank__components } from '../services/sensor_tank';
|
|
||||||
import { sensor_temp__components } from '../services/sensor_temp';
|
|
||||||
import { sensor_tidelvl__components } from '../services/sensor_tidelvl';
|
|
||||||
import { sensor_uv__components } from '../services/sensor_uv';
|
|
||||||
import { sensor_veloc__components } from '../services/sensor_veloc';
|
|
||||||
import { sensor_voltage__components } from '../services/sensor_voltage';
|
|
||||||
import { sensor_watflow__components } from '../services/sensor_watflow';
|
|
||||||
import { sensor_watpressure__components } from '../services/sensor_watpressure';
|
|
||||||
import { sensor_wattemp__components } from '../services/sensor_wattemp';
|
|
||||||
import { sensor_weight__components } from '../services/sensor_weight';
|
|
||||||
import { sensor_wind__components } from '../services/sensor_wind';
|
|
||||||
import { siren_ctrl__components } from '../services/siren_ctrl';
|
import { siren_ctrl__components } from '../services/siren_ctrl';
|
||||||
import { thermostat__components } from '../services/thermostat';
|
import { thermostat__components } from '../services/thermostat';
|
||||||
import { water_heater__components } from '../services/water_heater';
|
import { water_heater__components } from '../services/water_heater';
|
||||||
@ -192,47 +153,47 @@ const serviceHandlers: {
|
|||||||
out_bin_switch: out_bin_switch__components,
|
out_bin_switch: out_bin_switch__components,
|
||||||
out_lvl_switch: out_lvl_switch__components,
|
out_lvl_switch: out_lvl_switch__components,
|
||||||
scene_ctrl: scene_ctrl__components,
|
scene_ctrl: scene_ctrl__components,
|
||||||
sensor_accelx: sensor_accelx__components,
|
sensor_accelx: _sensor_numeric__components,
|
||||||
sensor_accely: sensor_accely__components,
|
sensor_accely: _sensor_numeric__components,
|
||||||
sensor_accelz: sensor_accelz__components,
|
sensor_accelz: _sensor_numeric__components,
|
||||||
sensor_airflow: sensor_airflow__components,
|
sensor_airflow: _sensor_numeric__components,
|
||||||
sensor_airq: sensor_airq__components,
|
sensor_airq: _sensor_numeric__components,
|
||||||
sensor_anglepos: sensor_anglepos__components,
|
sensor_anglepos: _sensor_numeric__components,
|
||||||
sensor_atmo: sensor_atmo__components,
|
sensor_atmo: _sensor_numeric__components,
|
||||||
sensor_baro: sensor_baro__components,
|
sensor_baro: _sensor_numeric__components,
|
||||||
sensor_co: sensor_co__components,
|
sensor_co: _sensor_numeric__components,
|
||||||
sensor_co2: sensor_co2__components,
|
sensor_co2: _sensor_numeric__components,
|
||||||
sensor_contact: sensor_contact__components,
|
sensor_contact: _sensor_binary__components,
|
||||||
sensor_current: sensor_current__components,
|
sensor_current: _sensor_numeric__components,
|
||||||
sensor_dew: sensor_dew__components,
|
sensor_dew: _sensor_numeric__components,
|
||||||
sensor_direct: sensor_direct__components,
|
sensor_direct: _sensor_numeric__components,
|
||||||
sensor_distance: sensor_distance__components,
|
sensor_distance: _sensor_numeric__components,
|
||||||
sensor_elresist: sensor_elresist__components,
|
sensor_elresist: _sensor_numeric__components,
|
||||||
sensor_freq: sensor_freq__components,
|
sensor_freq: _sensor_numeric__components,
|
||||||
sensor_gp: sensor_gp__components,
|
sensor_gp: _sensor_numeric__components,
|
||||||
sensor_gust: sensor_gust__components,
|
sensor_gust: _sensor_numeric__components,
|
||||||
sensor_humid: sensor_humid__components,
|
sensor_humid: _sensor_numeric__components,
|
||||||
sensor_lumin: sensor_lumin__components,
|
sensor_lumin: _sensor_numeric__components,
|
||||||
sensor_moist: sensor_moist__components,
|
sensor_moist: _sensor_numeric__components,
|
||||||
sensor_noise: sensor_noise__components,
|
sensor_noise: _sensor_numeric__components,
|
||||||
sensor_power: sensor_power__components,
|
sensor_power: _sensor_numeric__components,
|
||||||
sensor_presence: sensor_presence__components,
|
sensor_presence: _sensor_binary__components,
|
||||||
sensor_rain: sensor_rain__components,
|
sensor_rain: _sensor_numeric__components,
|
||||||
sensor_rotation: sensor_rotation__components,
|
sensor_rotation: _sensor_numeric__components,
|
||||||
sensor_seismicint: sensor_seismicint__components,
|
sensor_seismicint: _sensor_numeric__components,
|
||||||
sensor_seismicmag: sensor_seismicmag__components,
|
sensor_seismicmag: _sensor_numeric__components,
|
||||||
sensor_solarrad: sensor_solarrad__components,
|
sensor_solarrad: _sensor_numeric__components,
|
||||||
sensor_tank: sensor_tank__components,
|
sensor_tank: _sensor_numeric__components,
|
||||||
sensor_temp: sensor_temp__components,
|
sensor_temp: _sensor_numeric__components,
|
||||||
sensor_tidelvl: sensor_tidelvl__components,
|
sensor_tidelvl: _sensor_numeric__components,
|
||||||
sensor_uv: sensor_uv__components,
|
sensor_uv: _sensor_numeric__components,
|
||||||
sensor_veloc: sensor_veloc__components,
|
sensor_veloc: _sensor_numeric__components,
|
||||||
sensor_voltage: sensor_voltage__components,
|
sensor_voltage: _sensor_numeric__components,
|
||||||
sensor_watflow: sensor_watflow__components,
|
sensor_watflow: _sensor_numeric__components,
|
||||||
sensor_watpressure: sensor_watpressure__components,
|
sensor_watpressure: _sensor_numeric__components,
|
||||||
sensor_wattemp: sensor_wattemp__components,
|
sensor_wattemp: _sensor_numeric__components,
|
||||||
sensor_weight: sensor_weight__components,
|
sensor_weight: _sensor_numeric__components,
|
||||||
sensor_wind: sensor_wind__components,
|
sensor_wind: _sensor_numeric__components,
|
||||||
siren_ctrl: siren_ctrl__components,
|
siren_ctrl: siren_ctrl__components,
|
||||||
thermostat: thermostat__components,
|
thermostat: thermostat__components,
|
||||||
water_heater: water_heater__components,
|
water_heater: water_heater__components,
|
||||||
|
38
futurehome/src/services/_sensor_binary.ts
Normal file
38
futurehome/src/services/_sensor_binary.ts
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import {
|
||||||
|
VinculumPd7Device,
|
||||||
|
VinculumPd7Service,
|
||||||
|
} from '../fimp/vinculum_pd7_device';
|
||||||
|
import { BinarySensorDeviceClass } from '../ha/mqtt_components/_enums';
|
||||||
|
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
||||||
|
|
||||||
|
export function _sensor_binary__components(
|
||||||
|
topicPrefix: string,
|
||||||
|
device: VinculumPd7Device,
|
||||||
|
svc: VinculumPd7Service,
|
||||||
|
svcName: string,
|
||||||
|
): ServiceComponentsCreationResult | undefined {
|
||||||
|
const device_class = (
|
||||||
|
{
|
||||||
|
sensor_presence: 'occupancy',
|
||||||
|
sensor_contact: 'opening',
|
||||||
|
} as { [key: string]: BinarySensorDeviceClass }
|
||||||
|
)[svcName];
|
||||||
|
|
||||||
|
const value_field = (
|
||||||
|
{
|
||||||
|
sensor_presence: 'presence',
|
||||||
|
sensor_contact: 'open',
|
||||||
|
} as { [key: string]: string }
|
||||||
|
)[svcName];
|
||||||
|
|
||||||
|
return {
|
||||||
|
components: {
|
||||||
|
[svc.addr]: {
|
||||||
|
unique_id: svc.addr,
|
||||||
|
platform: 'binary_sensor',
|
||||||
|
device_class: device_class,
|
||||||
|
value_template: `{{ value_json['${svc.addr}'].${value_field} | iif('ON', 'OFF') }}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
96
futurehome/src/services/_sensor_numeric.ts
Normal file
96
futurehome/src/services/_sensor_numeric.ts
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
import {
|
||||||
|
VinculumPd7Device,
|
||||||
|
VinculumPd7Service,
|
||||||
|
} from '../fimp/vinculum_pd7_device';
|
||||||
|
import {
|
||||||
|
SensorDeviceClass,
|
||||||
|
SensorStateClass,
|
||||||
|
} from '../ha/mqtt_components/_enums';
|
||||||
|
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
||||||
|
|
||||||
|
export function _sensor_numeric__components(
|
||||||
|
topicPrefix: string,
|
||||||
|
device: VinculumPd7Device,
|
||||||
|
svc: VinculumPd7Service,
|
||||||
|
svcName: string,
|
||||||
|
): ServiceComponentsCreationResult | undefined {
|
||||||
|
type SensorNumericDataTuple = [
|
||||||
|
device_class: SensorDeviceClass | undefined,
|
||||||
|
name: string | undefined,
|
||||||
|
unit: string,
|
||||||
|
state_class?: SensorStateClass,
|
||||||
|
];
|
||||||
|
|
||||||
|
const data = (
|
||||||
|
{
|
||||||
|
sensor_accelx: [undefined, 'Acceleration, X-axis', 'm/s2'],
|
||||||
|
sensor_accely: [undefined, 'Acceleration, Y-axis', 'm/s2'],
|
||||||
|
sensor_accelz: [undefined, 'Acceleration, Z-axis', 'm/s2'],
|
||||||
|
sensor_airflow: [undefined, 'Air flow', 'm3/h'],
|
||||||
|
sensor_airq: ['aqi', undefined, 'pm25'],
|
||||||
|
sensor_anglepos: [
|
||||||
|
undefined,
|
||||||
|
'Angle Position',
|
||||||
|
'%',
|
||||||
|
svc.props?.sup_units?.[0] === '%' ? 'measurement' : 'measurement_angle',
|
||||||
|
],
|
||||||
|
sensor_atmo: ['atmospheric_pressure', undefined, 'kPa'],
|
||||||
|
sensor_baro: ['atmospheric_pressure', undefined, 'kPa'],
|
||||||
|
sensor_co: ['carbon_monoxide', undefined, 'mol/m3'],
|
||||||
|
sensor_co2: ['carbon_dioxide', undefined, 'ppm'],
|
||||||
|
sensor_current: ['current', undefined, 'A'],
|
||||||
|
sensor_dew: ['temperature', 'Dew', '°C'],
|
||||||
|
sensor_direct: ['wind_direction', 'Direction', '°'],
|
||||||
|
sensor_distance: ['distance', undefined, 'm'],
|
||||||
|
sensor_elresist: [undefined, 'Electrical resistivity', 'ohm/m'],
|
||||||
|
sensor_freq: ['frequency', undefined, 'Hz'],
|
||||||
|
sensor_gp: [undefined, 'Sensor', '%'],
|
||||||
|
sensor_gust: [undefined, 'Gust', 'km/h'],
|
||||||
|
sensor_humid: ['humidity', undefined, '%'],
|
||||||
|
sensor_lumin: ['illuminance', undefined, 'lx'],
|
||||||
|
sensor_moist: ['moisture', undefined, '%'],
|
||||||
|
sensor_noise: ['sound_pressure', undefined, 'dB'],
|
||||||
|
sensor_power: ['power', undefined, 'W'],
|
||||||
|
sensor_rain: ['precipitation_intensity', undefined, 'mm/h'],
|
||||||
|
sensor_rotation: [undefined, 'Rotation', 'rpm'],
|
||||||
|
sensor_seismicint: [undefined, 'Seismic intensity', 'EMCRO'],
|
||||||
|
sensor_seismicmag: [undefined, 'Seismic magnitude', 'MB'],
|
||||||
|
sensor_solarrad: [undefined, 'Solar radiation', 'W/m2'],
|
||||||
|
sensor_tank: ['volume_storage', undefined, 'l'],
|
||||||
|
sensor_temp: ['temperature', undefined, '°C'],
|
||||||
|
sensor_tidelvl: [undefined, 'Tide level', 'm'],
|
||||||
|
sensor_uv: [undefined, 'Ultraviolet', 'index'],
|
||||||
|
sensor_veloc: [undefined, 'Velocity', 'm/2'],
|
||||||
|
sensor_voltage: ['voltage', undefined, 'V'],
|
||||||
|
sensor_watflow: ['volume_flow_rate', 'Water flow', 'l/h'],
|
||||||
|
sensor_watpressure: ['pressure', 'Water pressure', 'kPa'],
|
||||||
|
sensor_wattemp: ['temperature', 'Water temperature', '°C'],
|
||||||
|
sensor_weight: ['weight', undefined, 'kg'],
|
||||||
|
sensor_wind: ['wind_speed', undefined, 'km/h'],
|
||||||
|
} as Record<string, SensorNumericDataTuple>
|
||||||
|
)[svcName];
|
||||||
|
|
||||||
|
if (!data) return undefined;
|
||||||
|
|
||||||
|
const device_class = data[0];
|
||||||
|
const name = data[1];
|
||||||
|
let unit = data[2];
|
||||||
|
if (unit === 'C') unit = '°C';
|
||||||
|
if (unit === 'F') unit = '°F';
|
||||||
|
if (unit === 'kph') unit = 'km/h';
|
||||||
|
const state_class = data[3];
|
||||||
|
|
||||||
|
return {
|
||||||
|
components: {
|
||||||
|
[svc.addr]: {
|
||||||
|
unique_id: svc.addr,
|
||||||
|
platform: 'sensor',
|
||||||
|
name: name,
|
||||||
|
device_class: device_class,
|
||||||
|
state_class: state_class,
|
||||||
|
unit_of_measurement: unit,
|
||||||
|
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_accelx__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Acceleration, X-axis';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'm/s2';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_accely__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Acceleration, Y-axis';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'm/s2';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_accelz__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Acceleration, Z-axis';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'm/s2';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_airflow__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Air flow';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'm3/h';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_airq__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'aqi';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'pm25';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_anglepos__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Angle Position';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? '%';
|
|
||||||
const state_class = svc.props?.sup_units?.[0] === '%' ? 'measurement' : 'measurement_angle';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
state_class: state_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_atmo__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'atmospheric_pressure';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'kPa';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_baro__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'atmospheric_pressure';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'kPa';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_co__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'carbon_monoxide';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'mol/m3';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_co2__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'carbon_dioxide';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'ppm';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_contact__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'opening';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'binary_sensor',
|
|
||||||
device_class: device_class,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].open | iif('ON', 'OFF') }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_current__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'current';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'A';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_dew__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'temperature';
|
|
||||||
const name = undefined;
|
|
||||||
let unit = svc.props?.sup_units?.[0] ?? '°C';
|
|
||||||
if (unit === 'C') unit = '°C';
|
|
||||||
if (unit === 'F') unit = '°F';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_direct__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'wind_direction';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? '°';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_distance__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'distance';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'm';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_elresist__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Electrical resistivity';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'ohm/m';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_freq__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'frequency';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'Hz';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_gp__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Sensor';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? '%';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_gust__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Gust';
|
|
||||||
let unit = svc.props?.sup_units?.[0] ?? 'km/h';
|
|
||||||
if (unit === 'kph') unit = 'km/h';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_humid__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'humidity';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? '%';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_lumin__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'illuminance';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'lx';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_moist__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'moisture';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? '%';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_noise__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'sound_pressure';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'dB';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_power__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'power';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'W';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_presence__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'occupancy';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'binary_sensor',
|
|
||||||
device_class: device_class,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].presence | iif('ON', 'OFF') }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_rain__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'precipitation_intensity';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'mm/h';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_rotation__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Rotation';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'rpm';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_seismicint__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Seismic intensity';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'EMCRO';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_seismicmag__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Seismic magnitude';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'MB';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_solarrad__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Solar radiation';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'W/m2';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_tank__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'volume_storage';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'l';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_temp__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'temperature';
|
|
||||||
const name = undefined;
|
|
||||||
let unit = svc.props?.sup_units?.[0] ?? '°C';
|
|
||||||
if (unit === 'C') unit = '°C';
|
|
||||||
if (unit === 'F') unit = '°F';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_tidelvl__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Tide level';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'm';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_uv__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Ultraviolet';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'index';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_veloc__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = undefined;
|
|
||||||
const name = 'Velocity';
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'm/2';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_voltage__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'voltage';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'V';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_watflow__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'volume_flow_rate';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'l/h';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_watpressure__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'pressure';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'kPa';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_wattemp__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'temperature';
|
|
||||||
const name = undefined;
|
|
||||||
let unit = svc.props?.sup_units?.[0] ?? '°C';
|
|
||||||
if (unit === 'C') unit = '°C';
|
|
||||||
if (unit === 'F') unit = '°F';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_weight__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'weight';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'kg';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
import {
|
|
||||||
VinculumPd7Device,
|
|
||||||
VinculumPd7Service,
|
|
||||||
} from '../fimp/vinculum_pd7_device';
|
|
||||||
import { ServiceComponentsCreationResult } from '../ha/publish_device';
|
|
||||||
|
|
||||||
export function sensor_wind__components(
|
|
||||||
topicPrefix: string,
|
|
||||||
device: VinculumPd7Device,
|
|
||||||
svc: VinculumPd7Service,
|
|
||||||
_svcName: string,
|
|
||||||
): ServiceComponentsCreationResult | undefined {
|
|
||||||
const device_class = 'wind_speed';
|
|
||||||
const name = undefined;
|
|
||||||
const unit = svc.props?.sup_units?.[0] ?? 'km/h';
|
|
||||||
|
|
||||||
return {
|
|
||||||
components: {
|
|
||||||
[svc.addr]: {
|
|
||||||
unique_id: svc.addr,
|
|
||||||
platform: 'sensor',
|
|
||||||
name: name,
|
|
||||||
device_class: device_class,
|
|
||||||
unit_of_measurement: unit,
|
|
||||||
value_template: `{{ value_json['${svc.addr}'].sensor }}`,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user