mirror of
https://github.com/fmtr/haco.git
synced 2026-10-26 10:51:46 -04:00
Add test config
This commit is contained in:
parent
a719aab68f
commit
bd9304b4ba
4 changed files with 47 additions and 21 deletions
|
|
@ -4,7 +4,7 @@ import inspect
|
|||
import typing
|
||||
from typing import _AnnotatedAlias
|
||||
|
||||
from haco import berry
|
||||
from haco import berry, schema
|
||||
from haco.trigger import Trigger, Rule
|
||||
|
||||
Signature = namedtuple('Signature', ['type', 'expression'])
|
||||
|
|
@ -66,7 +66,7 @@ class Callback:
|
|||
known_args = {'value', 'data'}
|
||||
skip_args = {'control'}
|
||||
|
||||
if self.platform == 'tasmota':
|
||||
if self.platform == schema.Tasmota.PLATFORM:
|
||||
|
||||
berry_exp = {}
|
||||
for name, (type, exp) in arg_data.items():
|
||||
|
|
@ -76,7 +76,7 @@ class Callback:
|
|||
continue
|
||||
|
||||
if name not in known_args:
|
||||
msg = f'Callback {self.function_name} argument {name} requires a Berry expression annotation.'
|
||||
msg = f'Callback "{self.function_name}" argument "{name}" requires a Berry expression annotation.'
|
||||
raise ValueError(msg)
|
||||
|
||||
exp = name
|
||||
|
|
@ -104,6 +104,6 @@ class Callback:
|
|||
|
||||
self.function_tasmota
|
||||
|
||||
if self.platform == 'tasmota':
|
||||
if self.platform == schema.Tasmota.PLATFORM:
|
||||
if not self.trigger:
|
||||
raise ValueError(f'Callback {self.function_name} must have a trigger.')
|
||||
raise ValueError(f'Callback "{self.function_name}" must have a trigger.')
|
||||
|
|
|
|||
|
|
@ -20,9 +20,9 @@ def tasmota(value: int):
|
|||
|
||||
time_remaining = Sensor(
|
||||
name='Time Remaining',
|
||||
uom='minutes',
|
||||
uom=Sensor.UOM.TIME_MINUTES,
|
||||
icon='timer',
|
||||
device_class='DURATION'
|
||||
device_class=Sensor.DEVICE_CLASS.DURATION
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ def tasmota(value: int):
|
|||
cooking_time = Number(
|
||||
name='Cooking Time',
|
||||
number_range=range(1, 60),
|
||||
uom='minutes',
|
||||
uom=Number.UOM.TIME_MINUTES,
|
||||
icon='timer'
|
||||
)
|
||||
|
||||
|
|
@ -52,7 +52,7 @@ cooking_temp_f = Number(
|
|||
'Cooking Temperature (F)',
|
||||
number_range=range(170, 399),
|
||||
mode='slider',
|
||||
uom='°F',
|
||||
uom=Number.UOM.TEMP_FAHRENHEIT,
|
||||
icon='temperature-fahrenheit'
|
||||
)
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ cooking_temp_c = Number(
|
|||
'Cooking Temperature (C)',
|
||||
number_range=range(77, 204),
|
||||
mode='slider',
|
||||
uom='°C',
|
||||
uom=Number.UOM.TEMP_CELSIUS,
|
||||
icon='temperature-celsius'
|
||||
)
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ add_tuya_io(power, int, 1, 1)
|
|||
delay_time = Number(
|
||||
name='Delay Time',
|
||||
number_range=range(0, 720),
|
||||
uom='minutes',
|
||||
uom=Sensor.UOM.TIME_MINUTES,
|
||||
icon='timer-pause'
|
||||
)
|
||||
|
||||
|
|
@ -112,22 +112,21 @@ add_tuya_io(delay_time, int, 2, 6)
|
|||
status = Sensor(
|
||||
name='Status',
|
||||
icon='playlist-play',
|
||||
device_class='ENUM'
|
||||
device_class=Sensor.DEVICE_CLASS.ENUM
|
||||
)
|
||||
|
||||
keep_warm_time = Number(
|
||||
name='Keep Warm Time',
|
||||
number_range=range(0, 120),
|
||||
uom='minutes',
|
||||
icon='timer-sync'
|
||||
)
|
||||
|
||||
add_tuya_io(keep_warm_time, int, 2, 105)
|
||||
|
||||
|
||||
@status.callback(trigger=tuya.received(4, 5))
|
||||
def tasmota(value: int):
|
||||
return ['Ready', 'Delayed Cook', 'Cooking', 'Keep Warm', 'Off', 'Cooking Complete'][value]
|
||||
|
||||
keep_warm_time = Number(
|
||||
name='Keep Warm Time',
|
||||
number_range=range(0, 120),
|
||||
uom=Sensor.UOM.TIME_MINUTES,
|
||||
icon='timer-sync'
|
||||
)
|
||||
|
||||
add_tuya_io(keep_warm_time, int, 2, 105)
|
||||
|
||||
DEVICE_CONFIG = {'run_config_post': f'def () return tasmota.cmd("TuyaSend0") end'}
|
||||
25
haco/configs/test.py
Normal file
25
haco/configs/test.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
from haco import Select, Tasmota
|
||||
|
||||
greeter = Select('Greeter', icon='hand-wave', options=['Hi', 'Hello Word', 'Bienvenue'])
|
||||
|
||||
set_greeting = """
|
||||
def (value,data)
|
||||
|
||||
import string
|
||||
var cmd=string.format('var16 %s',value)
|
||||
tasmota.cmd(cmd)
|
||||
|
||||
print(string.format('haco says: %s!',value))
|
||||
|
||||
end
|
||||
"""
|
||||
|
||||
|
||||
@greeter.callback()
|
||||
def ha(value) -> Tasmota[str, set_greeting]:
|
||||
return value
|
||||
|
||||
|
||||
@greeter.callback(trigger='Var16#state')
|
||||
def tasmota(value: str):
|
||||
return value
|
||||
|
|
@ -1,10 +1,12 @@
|
|||
from haco.control import Control
|
||||
from haco.data.uom import Uom
|
||||
|
||||
from haco.tools import get_range_pair
|
||||
|
||||
|
||||
class Number(Control):
|
||||
NAME = 'number'
|
||||
UOM = Uom
|
||||
|
||||
# def init(name, number_range, mode, step, uom, entity_id, icon, callbacks)
|
||||
def __init__(self, name, number_range: range, icon=None, mode=None, step=None, uom=None):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue