From a39f2d59283181590b3c5fd2512e5fb78adc22b7 Mon Sep 17 00:00:00 2001 From: Adrian Jagielak Date: Sat, 26 Jul 2025 21:28:23 +0200 Subject: [PATCH] Refactor sensors --- README.md | 8 +- futurehome/CHANGELOG.md | 4 + futurehome/README.md | 4 +- futurehome/src/ha/mqtt_components/_enums.ts | 65 +++++++++ futurehome/src/ha/mqtt_components/sensor.ts | 66 +-------- futurehome/src/ha/publish_device.ts | 125 ++++++------------ futurehome/src/services/_sensor_binary.ts | 38 ++++++ futurehome/src/services/_sensor_numeric.ts | 96 ++++++++++++++ futurehome/src/services/sensor_accelx.ts | 29 ---- futurehome/src/services/sensor_accely.ts | 29 ---- futurehome/src/services/sensor_accelz.ts | 29 ---- futurehome/src/services/sensor_airflow.ts | 29 ---- futurehome/src/services/sensor_airq.ts | 29 ---- futurehome/src/services/sensor_anglepos.ts | 31 ----- futurehome/src/services/sensor_atmo.ts | 29 ---- futurehome/src/services/sensor_baro.ts | 29 ---- futurehome/src/services/sensor_co.ts | 29 ---- futurehome/src/services/sensor_co2.ts | 29 ---- futurehome/src/services/sensor_contact.ts | 25 ---- futurehome/src/services/sensor_current.ts | 29 ---- futurehome/src/services/sensor_dew.ts | 31 ----- futurehome/src/services/sensor_direct.ts | 29 ---- futurehome/src/services/sensor_distance.ts | 29 ---- futurehome/src/services/sensor_elresist.ts | 29 ---- futurehome/src/services/sensor_freq.ts | 29 ---- futurehome/src/services/sensor_gp.ts | 29 ---- futurehome/src/services/sensor_gust.ts | 30 ----- futurehome/src/services/sensor_humid.ts | 29 ---- futurehome/src/services/sensor_lumin.ts | 29 ---- futurehome/src/services/sensor_moist.ts | 29 ---- futurehome/src/services/sensor_noise.ts | 29 ---- futurehome/src/services/sensor_power.ts | 29 ---- futurehome/src/services/sensor_presence.ts | 25 ---- futurehome/src/services/sensor_rain.ts | 29 ---- futurehome/src/services/sensor_rotation.ts | 29 ---- futurehome/src/services/sensor_seismicint.ts | 29 ---- futurehome/src/services/sensor_seismicmag.ts | 29 ---- futurehome/src/services/sensor_solarrad.ts | 29 ---- futurehome/src/services/sensor_tank.ts | 29 ---- futurehome/src/services/sensor_temp.ts | 31 ----- futurehome/src/services/sensor_tidelvl.ts | 29 ---- futurehome/src/services/sensor_uv.ts | 29 ---- futurehome/src/services/sensor_veloc.ts | 29 ---- futurehome/src/services/sensor_voltage.ts | 29 ---- futurehome/src/services/sensor_watflow.ts | 29 ---- futurehome/src/services/sensor_watpressure.ts | 29 ---- futurehome/src/services/sensor_wattemp.ts | 31 ----- futurehome/src/services/sensor_weight.ts | 29 ---- futurehome/src/services/sensor_wind.ts | 29 ---- 49 files changed, 255 insertions(+), 1341 deletions(-) create mode 100644 futurehome/src/services/_sensor_binary.ts create mode 100644 futurehome/src/services/_sensor_numeric.ts delete mode 100644 futurehome/src/services/sensor_accelx.ts delete mode 100644 futurehome/src/services/sensor_accely.ts delete mode 100644 futurehome/src/services/sensor_accelz.ts delete mode 100644 futurehome/src/services/sensor_airflow.ts delete mode 100644 futurehome/src/services/sensor_airq.ts delete mode 100644 futurehome/src/services/sensor_anglepos.ts delete mode 100644 futurehome/src/services/sensor_atmo.ts delete mode 100644 futurehome/src/services/sensor_baro.ts delete mode 100644 futurehome/src/services/sensor_co.ts delete mode 100644 futurehome/src/services/sensor_co2.ts delete mode 100644 futurehome/src/services/sensor_contact.ts delete mode 100644 futurehome/src/services/sensor_current.ts delete mode 100644 futurehome/src/services/sensor_dew.ts delete mode 100644 futurehome/src/services/sensor_direct.ts delete mode 100644 futurehome/src/services/sensor_distance.ts delete mode 100644 futurehome/src/services/sensor_elresist.ts delete mode 100644 futurehome/src/services/sensor_freq.ts delete mode 100644 futurehome/src/services/sensor_gp.ts delete mode 100644 futurehome/src/services/sensor_gust.ts delete mode 100644 futurehome/src/services/sensor_humid.ts delete mode 100644 futurehome/src/services/sensor_lumin.ts delete mode 100644 futurehome/src/services/sensor_moist.ts delete mode 100644 futurehome/src/services/sensor_noise.ts delete mode 100644 futurehome/src/services/sensor_power.ts delete mode 100644 futurehome/src/services/sensor_presence.ts delete mode 100644 futurehome/src/services/sensor_rain.ts delete mode 100644 futurehome/src/services/sensor_rotation.ts delete mode 100644 futurehome/src/services/sensor_seismicint.ts delete mode 100644 futurehome/src/services/sensor_seismicmag.ts delete mode 100644 futurehome/src/services/sensor_solarrad.ts delete mode 100644 futurehome/src/services/sensor_tank.ts delete mode 100644 futurehome/src/services/sensor_temp.ts delete mode 100644 futurehome/src/services/sensor_tidelvl.ts delete mode 100644 futurehome/src/services/sensor_uv.ts delete mode 100644 futurehome/src/services/sensor_veloc.ts delete mode 100644 futurehome/src/services/sensor_voltage.ts delete mode 100644 futurehome/src/services/sensor_watflow.ts delete mode 100644 futurehome/src/services/sensor_watpressure.ts delete mode 100644 futurehome/src/services/sensor_wattemp.ts delete mode 100644 futurehome/src/services/sensor_weight.ts delete mode 100644 futurehome/src/services/sensor_wind.ts diff --git a/README.md b/README.md index 75b35c1..f2c5972 100644 --- a/README.md +++ b/README.md @@ -46,20 +46,20 @@ todo: service names and not just raw service identifiers? | Basic | [basic](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/basic.ts) | | ✅ | [Number](https://www.home-assistant.io/integrations/number/) | | Battery | [battery](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/battery.ts)| | ✅ | [Sensor](https://www.home-assistant.io/integrations/sensor/), [Binary sensor](https://www.home-assistant.io/integrations/binary_sensor/) | | Chargepoint | [chargepoint](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/chargepoint.ts) | [Futurehome Charge](https://www.futurehome.io/en_no/shop/charge) | ✅ | [Sensor](https://www.home-assistant.io/integrations/sensor/), [Switch](https://www.home-assistant.io/integrations/switch/), [Number](https://www.home-assistant.io/integrations/number/), [Select](https://www.home-assistant.io/integrations/select/) | -| Color control | [color_ctrl](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/color_ctrl.ts) | | ✅ | [Light](https://www.home-assistant.io/integrations/light/) | +| Color control | [color_ctrl](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/color_ctrl.ts) | | ✅ | [Light](https://www.home-assistant.io/integrations/light/) | | Complex Alarm System | [complex_alarm_system](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/complex_alarm_system.ts) | | | | Door lock| [door_lock](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/door_lock.ts) | | | | ??? | [doorman](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/doorman.ts) | | | | Fan | [fan_ctrl](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/fan_ctrl.ts) | | ✅ | [Fan](https://www.home-assistant.io/integrations/fan/) | | Light | [light](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/light.ts) | | | | Media player | [media_player](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/media_player.ts) | | ✅ | [Select](https://www.home-assistant.io/integrations/select/), [Number](https://www.home-assistant.io/integrations/number/), [Switch](https://www.home-assistant.io/integrations/switch/), [Image](https://www.home-assistant.io/integrations/image/), [Sensor](https://www.home-assistant.io/integrations/sensor/) | -| Meter (electricity) | [meter_elec](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/meter_elec.ts) | [HAN-Sensor](https://www.futurehome.io/en/shop/han-sensor) | | | +| Meter (electricity) | [meter_elec](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/meter_elec.ts) | [HAN-Sensor](https://www.futurehome.io/en/shop/han-sensor) | | | | Binary switch | [out_bin_switch](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/out_bin_switch.ts) | [16A Puck Relé](https://www.futurehome.io/en_no/shop/puck-relay-16a) | ✅ | [Switch](https://www.home-assistant.io/integrations/switch/) | | Level switch | [out_lvl_switch](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/out_lvl_switch.ts) | [Smart LED Dimmer](https://www.futurehome.io/en_no/shop/smart-led-dimmer-polar-white) | ✅ | [Number](https://www.home-assistant.io/integrations/number/) | | ??? | [power_regulator](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/power_regulator.ts) | [16A Puck Relé](https://www.futurehome.io/en_no/shop/puck-relay-16a) | | | | ??? | [scene_ctrl](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/scene_ctrl.ts) | [Modusbryter](https://www.futurehome.io/en_no/shop/modeswitch-white) | ✅ | [Sensor](https://www.home-assistant.io/integrations/sensor/), [Select](https://www.home-assistant.io/integrations/select/) | -| Binary sensor | [sensor_contact](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_contact.ts), [sensor_presence](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_presence.ts) | | ✅ | [Binary sensor](https://www.home-assistant.io/integrations/binary_sensor/) | -| Numeric sensor | [sensor_accelx](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_accelx.ts), [sensor_accely](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_accely.ts), [sensor_accelz](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_accelz.ts), [sensor_airflow](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_airflow.ts), [sensor_airq](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_airq.ts), [sensor_anglepos](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_anglepos.ts), [sensor_atmo](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_atmo.ts), [sensor_baro](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_baro.ts), [sensor_co](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_co.ts), [sensor_co2](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_co2.ts), [sensor_current](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_current.ts), [sensor_dew](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_dew.ts), [sensor_direct](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_direct.ts), [sensor_distance](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_distance.ts), [sensor_elresist](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_elresist.ts), [sensor_freq](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_freq.ts), [sensor_gp](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_gp.ts), [sensor_gust](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_gust.ts), [sensor_humid](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_humid.ts), [sensor_lumin](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_lumin.ts), [sensor_moist](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_moist.ts), [sensor_noise](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_noise.ts), [sensor_power](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_power.ts), [sensor_rain](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_rain.ts), [sensor_rotation](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_rotation.ts), [sensor_seismicint](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_seismicint.ts), [sensor_seismicmag](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_seismicmag.ts), [sensor_solarrad](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_solarrad.ts), [sensor_tank](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_tank.ts), [sensor_temp](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_temp.ts), [sensor_tidelvl](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_tidelvl.ts), [sensor_uv](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_uv.ts), [sensor_veloc](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_veloc.ts), [sensor_voltage](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_voltage.ts), [sensor_watflow](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_watflow.ts), [sensor_watpressure](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_watpressure.ts), [sensor_wattemp](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_wattemp.ts), [sensor_weight](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_weight.ts), [sensor_wind](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_wind.ts) | [Brannvarsler](https://www.futurehome.io/en_no/shop/brannvarsler-230v) | ✅ | [Sensor](https://www.home-assistant.io/integrations/sensor/) | +| Binary sensor | [sensor_contact](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_binary.ts), [sensor_presence](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_binary.ts) | | ✅ | [Binary sensor](https://www.home-assistant.io/integrations/binary_sensor/) | +| Numeric sensor | [sensor_accelx](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_accely](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_accelz](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_airflow](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_airq](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_anglepos](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_atmo](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_baro](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_co](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_co2](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_current](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_dew](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_direct](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_distance](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_elresist](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_freq](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_gp](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_gust](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_humid](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_lumin](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_moist](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_noise](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_power](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_rain](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_rotation](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_seismicint](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_seismicmag](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_solarrad](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_tank](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_temp](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_tidelvl](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_uv](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_veloc](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_voltage](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_watflow](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_watpressure](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_wattemp](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_weight](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_wind](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts) | [Brannvarsler](https://www.futurehome.io/en_no/shop/brannvarsler-230v) | ✅ | [Sensor](https://www.home-assistant.io/integrations/sensor/) | | Siren | [siren_ctrl](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/siren_ctrl.ts) | [Brannvarsler](https://www.futurehome.io/en_no/shop/brannvarsler-230v) | ✅ | [Siren](https://www.home-assistant.io/integrations/siren/) | | Thermostat | [thermostat](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/thermostat.ts) | [Thermostat](https://www.futurehome.io/en_no/shop/thermostat-w) | ✅ | [Climate](https://www.home-assistant.io/integrations/climate/) | | ??? | [user_code](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/user_code.ts) | | | | diff --git a/futurehome/CHANGELOG.md b/futurehome/CHANGELOG.md index 67e4c80..4dc1575 100644 --- a/futurehome/CHANGELOG.md +++ b/futurehome/CHANGELOG.md @@ -1,5 +1,9 @@ +## 0.1.6 (26.07.2025) + +- Improved MQTT components interfaces. +- Refactored sensors. ## 0.1.5 (25.07.2025) diff --git a/futurehome/README.md b/futurehome/README.md index c4aeb0a..8fa6cb3 100644 --- a/futurehome/README.md +++ b/futurehome/README.md @@ -57,8 +57,8 @@ todo: service names and not just raw service identifiers? | Level switch | [out_lvl_switch](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/out_lvl_switch.ts) | [Smart LED Dimmer](https://www.futurehome.io/en_no/shop/smart-led-dimmer-polar-white) | ✅ | [Number](https://www.home-assistant.io/integrations/number/) | | ??? | [power_regulator](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/power_regulator.ts) | [16A Puck Relé](https://www.futurehome.io/en_no/shop/puck-relay-16a) | | | | ??? | [scene_ctrl](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/scene_ctrl.ts) | [Modusbryter](https://www.futurehome.io/en_no/shop/modeswitch-white) | ✅ | [Sensor](https://www.home-assistant.io/integrations/sensor/), [Select](https://www.home-assistant.io/integrations/select/) | -| Binary sensor | [sensor_contact](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_contact.ts), [sensor_presence](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_presence.ts) | | ✅ | [Binary sensor](https://www.home-assistant.io/integrations/binary_sensor/) | -| Numeric sensor | [sensor_accelx](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_accelx.ts), [sensor_accely](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_accely.ts), [sensor_accelz](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_accelz.ts), [sensor_airflow](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_airflow.ts), [sensor_airq](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_airq.ts), [sensor_anglepos](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_anglepos.ts), [sensor_atmo](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_atmo.ts), [sensor_baro](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_baro.ts), [sensor_co](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_co.ts), [sensor_co2](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_co2.ts), [sensor_current](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_current.ts), [sensor_dew](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_dew.ts), [sensor_direct](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_direct.ts), [sensor_distance](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_distance.ts), [sensor_elresist](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_elresist.ts), [sensor_freq](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_freq.ts), [sensor_gp](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_gp.ts), [sensor_gust](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_gust.ts), [sensor_humid](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_humid.ts), [sensor_lumin](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_lumin.ts), [sensor_moist](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_moist.ts), [sensor_noise](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_noise.ts), [sensor_power](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_power.ts), [sensor_rain](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_rain.ts), [sensor_rotation](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_rotation.ts), [sensor_seismicint](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_seismicint.ts), [sensor_seismicmag](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_seismicmag.ts), [sensor_solarrad](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_solarrad.ts), [sensor_tank](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_tank.ts), [sensor_temp](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_temp.ts), [sensor_tidelvl](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_tidelvl.ts), [sensor_uv](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_uv.ts), [sensor_veloc](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_veloc.ts), [sensor_voltage](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_voltage.ts), [sensor_watflow](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_watflow.ts), [sensor_watpressure](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_watpressure.ts), [sensor_wattemp](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_wattemp.ts), [sensor_weight](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_weight.ts), [sensor_wind](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/sensor_wind.ts) | [Brannvarsler](https://www.futurehome.io/en_no/shop/brannvarsler-230v) | ✅ | [Sensor](https://www.home-assistant.io/integrations/sensor/) | +| Binary sensor | [sensor_contact](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_binary.ts), [sensor_presence](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_binary.ts) | | ✅ | [Binary sensor](https://www.home-assistant.io/integrations/binary_sensor/) | +| Numeric sensor | [sensor_accelx](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_accely](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_accelz](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_airflow](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_airq](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_anglepos](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_atmo](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_baro](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_co](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_co2](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_current](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_dew](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_direct](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_distance](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_elresist](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_freq](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_gp](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_gust](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_humid](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_lumin](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_moist](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_noise](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_power](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_rain](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_rotation](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_seismicint](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_seismicmag](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_solarrad](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_tank](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_temp](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_tidelvl](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_uv](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_veloc](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_voltage](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_watflow](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_watpressure](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_wattemp](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_weight](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts), [sensor_wind](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/_sensor_numeric.ts) | [Brannvarsler](https://www.futurehome.io/en_no/shop/brannvarsler-230v) | ✅ | [Sensor](https://www.home-assistant.io/integrations/sensor/) | | Siren | [siren_ctrl](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/siren_ctrl.ts) | [Brannvarsler](https://www.futurehome.io/en_no/shop/brannvarsler-230v) | ✅ | [Siren](https://www.home-assistant.io/integrations/siren/) | | Thermostat | [thermostat](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/thermostat.ts) | [Thermostat](https://www.futurehome.io/en_no/shop/thermostat-w) | ✅ | [Climate](https://www.home-assistant.io/integrations/climate/) | | ??? | [user_code](https://github.com/adrianjagielak/home-assistant-futurehome/blob/master/futurehome/src/services/user_code.ts) | | | | diff --git a/futurehome/src/ha/mqtt_components/_enums.ts b/futurehome/src/ha/mqtt_components/_enums.ts index 8415f80..9b875f8 100644 --- a/futurehome/src/ha/mqtt_components/_enums.ts +++ b/futurehome/src/ha/mqtt_components/_enums.ts @@ -43,3 +43,68 @@ export type CoverDeviceClass = | 'shutter' | 'window' | 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'; diff --git a/futurehome/src/ha/mqtt_components/sensor.ts b/futurehome/src/ha/mqtt_components/sensor.ts index a5fa450..d22c215 100644 --- a/futurehome/src/ha/mqtt_components/sensor.ts +++ b/futurehome/src/ha/mqtt_components/sensor.ts @@ -1,4 +1,5 @@ import { BaseComponent } from './_base_component'; +import { SensorDeviceClass, SensorStateClass } from './_enums'; /** * 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 `device_class` defaults to `null` (generic sensor). */ - device_class?: - | '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; + device_class?: SensorDeviceClass; /** * 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_increasing` - A monotonically increasing total that periodically resets to 0, e.g., daily water consumption. */ - state_class?: - | 'measurement' - | 'measurement_angle' - | 'total' - | 'total_increasing'; + state_class?: SensorStateClass; /** * Defines the units of measurement of the sensor, if any. diff --git a/futurehome/src/ha/publish_device.ts b/futurehome/src/ha/publish_device.ts index 76dfa46..210fab2 100644 --- a/futurehome/src/ha/publish_device.ts +++ b/futurehome/src/ha/publish_device.ts @@ -5,6 +5,8 @@ import { } from '../fimp/vinculum_pd7_device'; import { log } from '../logger'; 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 { basic__components } from '../services/basic'; 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_lvl_switch__components } from '../services/out_lvl_switch'; 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 { thermostat__components } from '../services/thermostat'; import { water_heater__components } from '../services/water_heater'; @@ -192,47 +153,47 @@ const serviceHandlers: { out_bin_switch: out_bin_switch__components, out_lvl_switch: out_lvl_switch__components, scene_ctrl: scene_ctrl__components, - sensor_accelx: sensor_accelx__components, - sensor_accely: sensor_accely__components, - sensor_accelz: sensor_accelz__components, - sensor_airflow: sensor_airflow__components, - sensor_airq: sensor_airq__components, - sensor_anglepos: sensor_anglepos__components, - sensor_atmo: sensor_atmo__components, - sensor_baro: sensor_baro__components, - sensor_co: sensor_co__components, - sensor_co2: sensor_co2__components, - sensor_contact: sensor_contact__components, - sensor_current: sensor_current__components, - sensor_dew: sensor_dew__components, - sensor_direct: sensor_direct__components, - sensor_distance: sensor_distance__components, - sensor_elresist: sensor_elresist__components, - sensor_freq: sensor_freq__components, - sensor_gp: sensor_gp__components, - sensor_gust: sensor_gust__components, - sensor_humid: sensor_humid__components, - sensor_lumin: sensor_lumin__components, - sensor_moist: sensor_moist__components, - sensor_noise: sensor_noise__components, - sensor_power: sensor_power__components, - sensor_presence: sensor_presence__components, - sensor_rain: sensor_rain__components, - sensor_rotation: sensor_rotation__components, - sensor_seismicint: sensor_seismicint__components, - sensor_seismicmag: sensor_seismicmag__components, - sensor_solarrad: sensor_solarrad__components, - sensor_tank: sensor_tank__components, - sensor_temp: sensor_temp__components, - sensor_tidelvl: sensor_tidelvl__components, - sensor_uv: sensor_uv__components, - sensor_veloc: sensor_veloc__components, - sensor_voltage: sensor_voltage__components, - sensor_watflow: sensor_watflow__components, - sensor_watpressure: sensor_watpressure__components, - sensor_wattemp: sensor_wattemp__components, - sensor_weight: sensor_weight__components, - sensor_wind: sensor_wind__components, + sensor_accelx: _sensor_numeric__components, + sensor_accely: _sensor_numeric__components, + sensor_accelz: _sensor_numeric__components, + sensor_airflow: _sensor_numeric__components, + sensor_airq: _sensor_numeric__components, + sensor_anglepos: _sensor_numeric__components, + sensor_atmo: _sensor_numeric__components, + sensor_baro: _sensor_numeric__components, + sensor_co: _sensor_numeric__components, + sensor_co2: _sensor_numeric__components, + sensor_contact: _sensor_binary__components, + sensor_current: _sensor_numeric__components, + sensor_dew: _sensor_numeric__components, + sensor_direct: _sensor_numeric__components, + sensor_distance: _sensor_numeric__components, + sensor_elresist: _sensor_numeric__components, + sensor_freq: _sensor_numeric__components, + sensor_gp: _sensor_numeric__components, + sensor_gust: _sensor_numeric__components, + sensor_humid: _sensor_numeric__components, + sensor_lumin: _sensor_numeric__components, + sensor_moist: _sensor_numeric__components, + sensor_noise: _sensor_numeric__components, + sensor_power: _sensor_numeric__components, + sensor_presence: _sensor_binary__components, + sensor_rain: _sensor_numeric__components, + sensor_rotation: _sensor_numeric__components, + sensor_seismicint: _sensor_numeric__components, + sensor_seismicmag: _sensor_numeric__components, + sensor_solarrad: _sensor_numeric__components, + sensor_tank: _sensor_numeric__components, + sensor_temp: _sensor_numeric__components, + sensor_tidelvl: _sensor_numeric__components, + sensor_uv: _sensor_numeric__components, + sensor_veloc: _sensor_numeric__components, + sensor_voltage: _sensor_numeric__components, + sensor_watflow: _sensor_numeric__components, + sensor_watpressure: _sensor_numeric__components, + sensor_wattemp: _sensor_numeric__components, + sensor_weight: _sensor_numeric__components, + sensor_wind: _sensor_numeric__components, siren_ctrl: siren_ctrl__components, thermostat: thermostat__components, water_heater: water_heater__components, diff --git a/futurehome/src/services/_sensor_binary.ts b/futurehome/src/services/_sensor_binary.ts new file mode 100644 index 0000000..15e167b --- /dev/null +++ b/futurehome/src/services/_sensor_binary.ts @@ -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') }}`, + }, + }, + }; +} diff --git a/futurehome/src/services/_sensor_numeric.ts b/futurehome/src/services/_sensor_numeric.ts new file mode 100644 index 0000000..73c0922 --- /dev/null +++ b/futurehome/src/services/_sensor_numeric.ts @@ -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 + )[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 }}`, + }, + }, + }; +} diff --git a/futurehome/src/services/sensor_accelx.ts b/futurehome/src/services/sensor_accelx.ts deleted file mode 100644 index a4f55f5..0000000 --- a/futurehome/src/services/sensor_accelx.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_accely.ts b/futurehome/src/services/sensor_accely.ts deleted file mode 100644 index 13fc743..0000000 --- a/futurehome/src/services/sensor_accely.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_accelz.ts b/futurehome/src/services/sensor_accelz.ts deleted file mode 100644 index 11204bc..0000000 --- a/futurehome/src/services/sensor_accelz.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_airflow.ts b/futurehome/src/services/sensor_airflow.ts deleted file mode 100644 index 490dc41..0000000 --- a/futurehome/src/services/sensor_airflow.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_airq.ts b/futurehome/src/services/sensor_airq.ts deleted file mode 100644 index a038a00..0000000 --- a/futurehome/src/services/sensor_airq.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_anglepos.ts b/futurehome/src/services/sensor_anglepos.ts deleted file mode 100644 index e064668..0000000 --- a/futurehome/src/services/sensor_anglepos.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_atmo.ts b/futurehome/src/services/sensor_atmo.ts deleted file mode 100644 index 748ba45..0000000 --- a/futurehome/src/services/sensor_atmo.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_baro.ts b/futurehome/src/services/sensor_baro.ts deleted file mode 100644 index f673d95..0000000 --- a/futurehome/src/services/sensor_baro.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_co.ts b/futurehome/src/services/sensor_co.ts deleted file mode 100644 index 3f94b7a..0000000 --- a/futurehome/src/services/sensor_co.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_co2.ts b/futurehome/src/services/sensor_co2.ts deleted file mode 100644 index 1d657bd..0000000 --- a/futurehome/src/services/sensor_co2.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_contact.ts b/futurehome/src/services/sensor_contact.ts deleted file mode 100644 index cc620ae..0000000 --- a/futurehome/src/services/sensor_contact.ts +++ /dev/null @@ -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') }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_current.ts b/futurehome/src/services/sensor_current.ts deleted file mode 100644 index 3842e85..0000000 --- a/futurehome/src/services/sensor_current.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_dew.ts b/futurehome/src/services/sensor_dew.ts deleted file mode 100644 index e1c1f20..0000000 --- a/futurehome/src/services/sensor_dew.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_direct.ts b/futurehome/src/services/sensor_direct.ts deleted file mode 100644 index 61a96aa..0000000 --- a/futurehome/src/services/sensor_direct.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_distance.ts b/futurehome/src/services/sensor_distance.ts deleted file mode 100644 index 645926c..0000000 --- a/futurehome/src/services/sensor_distance.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_elresist.ts b/futurehome/src/services/sensor_elresist.ts deleted file mode 100644 index 1eae019..0000000 --- a/futurehome/src/services/sensor_elresist.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_freq.ts b/futurehome/src/services/sensor_freq.ts deleted file mode 100644 index 4705dde..0000000 --- a/futurehome/src/services/sensor_freq.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_gp.ts b/futurehome/src/services/sensor_gp.ts deleted file mode 100644 index 380fc89..0000000 --- a/futurehome/src/services/sensor_gp.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_gust.ts b/futurehome/src/services/sensor_gust.ts deleted file mode 100644 index 15a583f..0000000 --- a/futurehome/src/services/sensor_gust.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_humid.ts b/futurehome/src/services/sensor_humid.ts deleted file mode 100644 index ac41a82..0000000 --- a/futurehome/src/services/sensor_humid.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_lumin.ts b/futurehome/src/services/sensor_lumin.ts deleted file mode 100644 index 13a59dd..0000000 --- a/futurehome/src/services/sensor_lumin.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_moist.ts b/futurehome/src/services/sensor_moist.ts deleted file mode 100644 index 9aa719b..0000000 --- a/futurehome/src/services/sensor_moist.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_noise.ts b/futurehome/src/services/sensor_noise.ts deleted file mode 100644 index f949c26..0000000 --- a/futurehome/src/services/sensor_noise.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_power.ts b/futurehome/src/services/sensor_power.ts deleted file mode 100644 index 4cf6fb4..0000000 --- a/futurehome/src/services/sensor_power.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_presence.ts b/futurehome/src/services/sensor_presence.ts deleted file mode 100644 index e8daf4c..0000000 --- a/futurehome/src/services/sensor_presence.ts +++ /dev/null @@ -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') }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_rain.ts b/futurehome/src/services/sensor_rain.ts deleted file mode 100644 index 5302e4a..0000000 --- a/futurehome/src/services/sensor_rain.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_rotation.ts b/futurehome/src/services/sensor_rotation.ts deleted file mode 100644 index 9b4d8d1..0000000 --- a/futurehome/src/services/sensor_rotation.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_seismicint.ts b/futurehome/src/services/sensor_seismicint.ts deleted file mode 100644 index 0459af5..0000000 --- a/futurehome/src/services/sensor_seismicint.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_seismicmag.ts b/futurehome/src/services/sensor_seismicmag.ts deleted file mode 100644 index 411016e..0000000 --- a/futurehome/src/services/sensor_seismicmag.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_solarrad.ts b/futurehome/src/services/sensor_solarrad.ts deleted file mode 100644 index c94e32b..0000000 --- a/futurehome/src/services/sensor_solarrad.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_tank.ts b/futurehome/src/services/sensor_tank.ts deleted file mode 100644 index d370678..0000000 --- a/futurehome/src/services/sensor_tank.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_temp.ts b/futurehome/src/services/sensor_temp.ts deleted file mode 100644 index 75f1bcc..0000000 --- a/futurehome/src/services/sensor_temp.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_tidelvl.ts b/futurehome/src/services/sensor_tidelvl.ts deleted file mode 100644 index a839dab..0000000 --- a/futurehome/src/services/sensor_tidelvl.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_uv.ts b/futurehome/src/services/sensor_uv.ts deleted file mode 100644 index 4f8cfda..0000000 --- a/futurehome/src/services/sensor_uv.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_veloc.ts b/futurehome/src/services/sensor_veloc.ts deleted file mode 100644 index dda84d7..0000000 --- a/futurehome/src/services/sensor_veloc.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_voltage.ts b/futurehome/src/services/sensor_voltage.ts deleted file mode 100644 index 7eb49c3..0000000 --- a/futurehome/src/services/sensor_voltage.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_watflow.ts b/futurehome/src/services/sensor_watflow.ts deleted file mode 100644 index 827ba63..0000000 --- a/futurehome/src/services/sensor_watflow.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_watpressure.ts b/futurehome/src/services/sensor_watpressure.ts deleted file mode 100644 index 9bef1ac..0000000 --- a/futurehome/src/services/sensor_watpressure.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_wattemp.ts b/futurehome/src/services/sensor_wattemp.ts deleted file mode 100644 index 0c6d886..0000000 --- a/futurehome/src/services/sensor_wattemp.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_weight.ts b/futurehome/src/services/sensor_weight.ts deleted file mode 100644 index 1be18a0..0000000 --- a/futurehome/src/services/sensor_weight.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -} diff --git a/futurehome/src/services/sensor_wind.ts b/futurehome/src/services/sensor_wind.ts deleted file mode 100644 index 98850ba..0000000 --- a/futurehome/src/services/sensor_wind.ts +++ /dev/null @@ -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 }}`, - }, - }, - }; -}