mirror of
https://github.com/fmtr/haco.git
synced 2026-10-26 10:51:46 -04:00
99 lines
2.5 KiB
Markdown
99 lines
2.5 KiB
Markdown
`haco` provides several control types that correspond to Home Assistant platforms. Each control typically has a
|
|
`state` and a `command` method that you can override to handle communication.
|
|
|
|
# Supported Controls
|
|
|
|
## Button
|
|
|
|
A button in Home Assistant that can be pressed to trigger an action in your script.
|
|
|
|
- **Platform**: `button`
|
|
- **Overridable Methods**:
|
|
- `command(self, value)`: Called when the button is pressed in Home Assistant.
|
|
|
|
```python
|
|
from haco import Button
|
|
|
|
class MyButton(Button):
|
|
def command(self, value):
|
|
print("Button was pressed!")
|
|
```
|
|
|
|
## Switch
|
|
|
|
A toggle switch that can be turned on or off.
|
|
|
|
- **Platform**: `switch`
|
|
- **Overridable Methods**:
|
|
- `state(self, value)`: Should return the current state of the switch (`True` for on, `False` for off).
|
|
- `command(self, value)`: Called when the switch is toggled in Home Assistant.
|
|
|
|
```python
|
|
from haco import Switch
|
|
|
|
class MySwitch(Switch):
|
|
def __init__(self, **kwargs):
|
|
super().__init__(**kwargs)
|
|
self._on = False
|
|
|
|
def state(self, value):
|
|
return self._on
|
|
|
|
def command(self, value):
|
|
self._on = value
|
|
print(f"Switch is now {'ON' if self._on else 'OFF'}")
|
|
```
|
|
|
|
## Sensor
|
|
|
|
A read-only sensor that displays a value in Home Assistant.
|
|
|
|
- **Platform**: `sensor`
|
|
- **Overridable Methods**:
|
|
- `state(self, value)`: Should return the current value of the sensor.
|
|
|
|
```python
|
|
from haco import Sensor
|
|
|
|
class MySensor(Sensor):
|
|
def state(self, value):
|
|
return 42 # Or some dynamic value
|
|
```
|
|
|
|
## Number
|
|
|
|
A slider or input box for numeric values.
|
|
|
|
- **Platform**: `number`
|
|
- **Overridable Methods**:
|
|
- `state(self, value)`: Should return the current numeric value.
|
|
- `command(self, value)`: Called when the value is changed in Home Assistant.
|
|
|
|
## Select
|
|
|
|
A dropdown list of options.
|
|
|
|
- **Platform**: `select`
|
|
- **Parameters**: `options` (list of strings)
|
|
- **Overridable Methods**:
|
|
- `state(self, value)`: Should return the currently selected option.
|
|
- `command(self, value)`: Called when a new option is selected in Home Assistant.
|
|
|
|
# Customizing Controls
|
|
|
|
Most controls accept common parameters in their constructor:
|
|
|
|
- `name`: The display name in Home Assistant.
|
|
- `icon`: An optional MDI icon (e.g., `mdi:lightbulb` or just `lightbulb`).
|
|
|
|
Example:
|
|
|
|
```python
|
|
btn = Button(name="Panic Button", icon="alert")
|
|
```
|
|
|
|
# Advanced: Custom Capabilities
|
|
|
|
For more complex platforms like `climate`,
|
|
`haco` uses "Capabilities". A capability groups a state and a command topic. You can see how these are implemented in
|
|
`haco/climate.py`.
|