Add services

This commit is contained in:
jimmyd-be 2022-09-18 12:24:06 +00:00
parent 87581e4654
commit 028760d8d8
5 changed files with 301 additions and 5 deletions

View file

@ -1,12 +1,13 @@
"""The Renson integration.""" """The Renson integration."""
from __future__ import annotations from __future__ import annotations
from renson_endura_delta.renson import RensonVentilation from renson_endura_delta.renson import ManualLevel, RensonVentilation, TimerLevel
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, Platform from homeassistant.const import CONF_HOST, Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant, ServiceCall
from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers.typing import ConfigType
from .const import DOMAIN from .const import DOMAIN
@ -37,3 +38,84 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
hass.data[DOMAIN].pop(entry.entry_id) hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok return unload_ok
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up the Renson platforms."""
host = hass.config_entries.async_entries(DOMAIN)[0].data[CONF_HOST]
renson_api = RensonVentilation(host)
async def set_timer_level(call: ServiceCall) -> None:
"""Set timer level."""
level_string = call.data.get("timer_level", "Level1")
time = call.data.get("time", 0)
level = TimerLevel[level_string.upper()]
await hass.async_add_executor_job(renson_api.set_timer_level, level, time)
async def sync_time(call: ServiceCall) -> None:
"""Sync time of device."""
await hass.async_add_executor_job(renson_api.sync_time)
async def set_manual_level(call: ServiceCall) -> None:
"""Set manual level."""
level_string = call.data.get("manual_level", "Off")
level = ManualLevel[level_string.upper()]
await hass.async_add_executor_job(renson_api.set_manual_level, level)
async def set_breeze(call: ServiceCall) -> None:
"""Configure breeze feature."""
level = call.data.get("breeze_level", "")
temperature = call.data.get("temperature", 0)
activated = call.data.get("activate", False)
await hass.async_add_executor_job(
renson_api.set_breeze, level, temperature, activated
)
async def set_day_night_time(call: ServiceCall) -> None:
"""Configure day night times."""
day = call.data.get("day", "7:00")
night = call.data.get("night", "22:00")
await hass.async_add_executor_job(renson_api.set_time, day, night)
async def set_pollution_settings(call: ServiceCall) -> None:
"""Configure pollutions settings."""
day = call.data.get("day_pollution_level", "")
night = call.data.get("night_pollution_level", "")
humidity_control = call.data.get("humidity_control", "")
airquality_control = call.data.get("airquality_control", "")
co2_control = call.data.get("co2_control", "")
co2_threshold = call.data.get("co2_threshold", 0)
co2_hysteresis = call.data.get("co2_hysteresis", 0)
await renson_api.set_pollution(
day,
night,
humidity_control,
airquality_control,
co2_control,
co2_threshold,
co2_hysteresis,
)
async def set_filter_days(call: ServiceCall) -> None:
"""Set filter dayes."""
days = call.data.get("days", 90)
await hass.async_add_executor_job(renson_api.set_filter_days, days)
hass.services.async_register(DOMAIN, "set_manual_level", set_manual_level)
hass.services.async_register(DOMAIN, "set_breeze", set_breeze)
hass.services.async_register(DOMAIN, "set_day_night_time", set_day_night_time)
hass.services.async_register(
DOMAIN, "set_pollution_settings", set_pollution_settings
)
hass.services.async_register(DOMAIN, "set_filter_days", set_filter_days)
hass.services.async_register(DOMAIN, "set_timer_level", set_timer_level)
hass.services.async_register(DOMAIN, "sync_time", sync_time)
return True

View file

@ -3,7 +3,7 @@
"name": "Renson", "name": "Renson",
"config_flow": true, "config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/renson", "documentation": "https://www.home-assistant.io/integrations/renson",
"requirements": ["renson-endura-delta==1.3.2"], "requirements": ["renson-endura-delta==1.3.3"],
"dependencies": [], "dependencies": [],
"codeowners": ["@jimmyd-be"], "codeowners": ["@jimmyd-be"],
"iot_class": "local_polling" "iot_class": "local_polling"

View file

@ -0,0 +1,214 @@
set_manual_level:
name: Set Manual Level
description: Sets manual level
fields:
manual_level:
name: Manual level
description: Manual level setting
required: true
advanced: false
default: "Off"
selector:
select:
options:
- "Off"
- "Level1"
- "Level2"
- "Level3"
- "Level4"
sync_time:
name: Synchronize time and date
description: Synchronize time and date with device
set_timer_level:
name: Set timer
description: Set the ventilation timer
fields:
timer_level:
name: Level
description: Level setting
required: true
advanced: false
default: "Level1"
selector:
select:
options:
- "Level1"
- "Level2"
- "Level3"
- "Level4"
- "Holiday"
- "Breeze"
time:
name: Time
description: Time of the timer (0 will disable the timer)
required: true
advanced: false
default: 0
selector:
number:
min: 0
max: 1440
step: 10
unit_of_measurement: "min"
mode: slider
set_breeze:
name: Set breeze
description: Set the breeze function of the ventilation system
fields:
breeze_level:
name: Level
description: Ventilation level when breeze function is activated
required: false
advanced: false
default: "Level3"
selector:
select:
options:
- "Level1"
- "Level2"
- "Level3"
- "Level4"
temperature:
name: Temperature
description: Temperature when the breeze function should be activated
required: false
advanced: false
default: 18
selector:
number:
min: 15
max: 35
step: 1
unit_of_measurement: "°C"
mode: slider
activate:
name: Activate
description: Activate or disable the breeze feature
required: true
advanced: false
default: false
selector:
boolean:
set_day_night_time:
name: Set day and night time
description: Set the day and night time of the system
fields:
day:
name: Start day
description: Start time of the day
required: true
advanced: false
default: false
selector:
time:
night:
name: Start night
description: Start time of the night
required: true
advanced: false
default: false
selector:
time:
set_pollution_settings:
name: Set pollution settings
description: Set all the pollution settings of the ventilation system
fields:
day_pollution_level:
name: Day pollution Level
description: Ventilation level when pollution is detected in the day
required: false
advanced: false
default: "Level3"
selector:
select:
options:
- "Level1"
- "Level2"
- "Level3"
- "Level4"
night_pollution_level:
name: Night pollution Level
description: Ventilation level when pollution is detected in the night
required: false
advanced: false
default: "Level2"
selector:
select:
options:
- "Level1"
- "Level2"
- "Level3"
- "Level4"
humidity_control:
name: Enable humidity control
description: Activate or disable the humidity control
required: false
advanced: false
default: true
selector:
boolean:
airquality_control:
name: Enable air quality control
description: Activate or disable the air quality control
required: false
advanced: false
default: true
selector:
boolean:
co2_control:
name: Enable CO2 control
description: Activate or disable the CO2 control
required: false
advanced: false
default: true
selector:
boolean:
co2_threshold:
name: co2 threshold
description: Sets the CO2 pollution threshold level in ppm
required: false
advanced: false
default: 600
selector:
number:
min: 400
max: 2000
step: 50
unit_of_measurement: "ppm"
mode: slider
co2_hysteresis:
name: co2 hysteresis
description: Sets the CO2 pollution threshold hysteresis level in ppm
required: false
advanced: false
default: 100
selector:
number:
min: 50
max: 400
step: 50
unit_of_measurement: "ppm"
mode: slider
set_filter_days:
name: Set filter days
description: Indicates the recommended filter remaining time in case of filter change, in days
fields:
days:
name: Days
description: Indicates the recommended filter remaining time in case of filter change, in days
required: true
advanced: false
default: 90
selector:
number:
min: 0
max: 360
step: 1
unit_of_measurement: "days"
mode: slider

View file

@ -2100,7 +2100,7 @@ regenmaschine==2022.08.0
renault-api==0.1.11 renault-api==0.1.11
# homeassistant.components.renson # homeassistant.components.renson
renson-endura-delta==1.3.2 renson-endura-delta==1.3.3
# homeassistant.components.python_script # homeassistant.components.python_script
restrictedpython==5.2 restrictedpython==5.2

View file

@ -1436,7 +1436,7 @@ regenmaschine==2022.08.0
renault-api==0.1.11 renault-api==0.1.11
# homeassistant.components.renson # homeassistant.components.renson
renson-endura-delta==1.3.2 renson-endura-delta==1.3.3
# homeassistant.components.python_script # homeassistant.components.python_script
restrictedpython==5.2 restrictedpython==5.2