Improve entity documentation

This commit is contained in:
Andre Basche 2023-04-17 23:18:27 +02:00
parent 891ae51832
commit 75859543aa
2 changed files with 42 additions and 15 deletions

View file

@ -105,11 +105,12 @@ I tried to create a pull request, but in the structures of these existing repos,
I moved the api related stuff into the package [pyhOn](https://github.com/Andre0512/pyhOn). I moved the api related stuff into the package [pyhOn](https://github.com/Andre0512/pyhOn).
## Appliance Features ## Appliance Features
### Dish washer ### Dish washer
#### Controls #### Controls
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Dish Washer | `mdi:dishwasher` | `switch` | `active` | | Dish Washer | `mdi:dishwasher` | `switch` | `startProgram` / `stopProgram` |
#### Configs #### Configs
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |
@ -138,6 +139,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0
| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` |
| Rinse Aid | `mdi:spray-bottle` | `binary_sensor` | `rinseAidStatus` | | Rinse Aid | `mdi:spray-bottle` | `binary_sensor` | `rinseAidStatus` |
| Salt | `mdi:shaker-outline` | `binary_sensor` | `saltStatus` | | Salt | `mdi:shaker-outline` | `binary_sensor` | `saltStatus` |
### Hob ### Hob
#### Controls #### Controls
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
@ -160,6 +162,7 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0
| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` |
| Remote Control | `mdi:remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` | | Remote Control | `mdi:remote` | `binary_sensor` | `attributes.parameters.remoteCtrValid` |
| Temperature | `mdi:thermometer` | `sensor` | `temp` | | Temperature | `mdi:thermometer` | `sensor` | `temp` |
### Oven ### Oven
#### Controls #### Controls
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
@ -184,12 +187,13 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0
| Start Time | `mdi:clock-start` | `sensor` | `delayTime` | | Start Time | `mdi:clock-start` | `sensor` | `delayTime` |
| Temperature | `mdi:thermometer` | `sensor` | `temp` | | Temperature | `mdi:thermometer` | `sensor` | `temp` |
| Temperature Selected | `mdi:thermometer` | `sensor` | `tempSel` | | Temperature Selected | `mdi:thermometer` | `sensor` | `tempSel` |
### Tumble dryer ### Tumble dryer
#### Controls #### Controls
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Pause Tumble Dryer | `mdi:pause` | `switch` | `pause` | | Pause Tumble Dryer | `mdi:pause` | `switch` | `pauseProgram` / `resumeProgram` |
| Tumble Dryer | `mdi:tumble-dryer` | `switch` | `active` | | Tumble Dryer | `mdi:tumble-dryer` | `switch` | `startProgram` / `stopProgram` |
#### Configs #### Configs
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |
@ -213,12 +217,13 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0
| Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` | | Remaining Time | `mdi:timer` | `sensor` | `remainingTimeMM` |
| Start Time | `mdi:clock-start` | `sensor` | `delayTime` | | Start Time | `mdi:clock-start` | `sensor` | `delayTime` |
| Temperature level | `mdi:thermometer` | `sensor` | `tempLevel` | | Temperature level | `mdi:thermometer` | `sensor` | `tempLevel` |
### Washer dryer ### Washer dryer
#### Controls #### Controls
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Pause Washing Machine | `mdi:pause` | `switch` | `pause` | | Pause Washing Machine | `mdi:pause` | `switch` | `pauseProgram` / `resumeProgram` |
| Washing Machine | `mdi:washing-machine` | `switch` | `active` | | Washing Machine | `mdi:washing-machine` | `switch` | `startProgram` / `stopProgram` |
#### Configs #### Configs
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |
@ -244,12 +249,13 @@ I moved the api related stuff into the package [pyhOn](https://github.com/Andre0
| Remote Control | `mdi:remote` | `binary_sensor` | `attributes.lastConnEvent.category` | | Remote Control | `mdi:remote` | `binary_sensor` | `attributes.lastConnEvent.category` |
| Spin Speed | `mdi:fast-forward-outline` | `sensor` | `spinSpeed` | | Spin Speed | `mdi:fast-forward-outline` | `sensor` | `spinSpeed` |
| Steam level | `mdi:smoke` | `sensor` | `steamLevel` | | Steam level | `mdi:smoke` | `sensor` | `steamLevel` |
### Washing machine ### Washing machine
#### Controls #### Controls
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| Pause Washing Machine | `mdi:pause` | `switch` | `pause` | | Pause Washing Machine | `mdi:pause` | `switch` | `pauseProgram` / `resumeProgram` |
| Washing Machine | `mdi:washing-machine` | `switch` | `active` | | Washing Machine | `mdi:washing-machine` | `switch` | `startProgram` / `stopProgram` |
#### Configs #### Configs
| Name | Icon | Entity | Key | | Name | Icon | Entity | Key |
| --- | --- | --- | --- | | --- | --- | --- | --- |

37
scripts/sensor_docs.py Normal file → Executable file
View file

@ -1,9 +1,12 @@
import re
from pathlib import Path
from custom_components.hon.binary_sensor import BINARY_SENSORS from custom_components.hon.binary_sensor import BINARY_SENSORS
from custom_components.hon.button import BUTTONS from custom_components.hon.button import BUTTONS
from custom_components.hon.number import NUMBERS from custom_components.hon.number import NUMBERS
from custom_components.hon.select import SELECTS from custom_components.hon.select import SELECTS
from custom_components.hon.sensor import SENSORS from custom_components.hon.sensor import SENSORS
from custom_components.hon.switch import SWITCHES from custom_components.hon.switch import SWITCHES, HonSwitchEntityDescription
APPLIANCES = { APPLIANCES = {
"AC": "Air conditioner", "AC": "Air conditioner",
@ -38,19 +41,37 @@ result = {}
for entity_type, appliances in entities.items(): for entity_type, appliances in entities.items():
for appliance, data in appliances.items(): for appliance, data in appliances.items():
for entity in data: for entity in data:
attributes = (entity.key, entity.name, entity.icon, entity_type) if (
isinstance(entity, HonSwitchEntityDescription)
and entity.entity_category != "config"
):
key = f"{entity.turn_on_key}` / `{entity.turn_off_key}"
else:
key = entity.key
attributes = (key, entity.name, entity.icon, entity_type)
category = "control" if entity_type in ["switch", "button"] else "sensor" category = "control" if entity_type in ["switch", "button"] else "sensor"
result.setdefault(appliance, {}).setdefault( result.setdefault(appliance, {}).setdefault(
entity.entity_category or category, [] entity.entity_category or category, []
).append(attributes) ).append(attributes)
text = ""
for appliance, categories in sorted(result.items()): for appliance, categories in sorted(result.items()):
print(f"### {APPLIANCES[appliance]}") text += f"\n### {APPLIANCES[appliance]}\n"
categories = {k: categories[k] for k in ENTITY_CATEGORY_SORT if k in categories} categories = {k: categories[k] for k in ENTITY_CATEGORY_SORT if k in categories}
for category, data in categories.items(): for category, data in categories.items():
print(f"#### {str(category).capitalize()}s") text += f"#### {str(category).capitalize()}s\n"
print("| Name | Icon | Entity | Key |") text += "| Name | Icon | Entity | Key |\n"
print("| --- | --- | --- | --- |") text += "| --- | --- | --- | --- |\n"
for key, name, icon, entity_type in sorted(data, key=lambda d: d[1]): for key, name, icon, entity_type in sorted(data, key=lambda d: d[1]):
icon = f"`{icon}`" if icon else "" icon = f"`{icon}`" if icon else ""
print(f"| {name} | {icon} | `{entity_type}` | `{key}` |") text += f"| {name} | {icon} | `{entity_type}` | `{key}` |\n"
with open(Path(__file__).parent.parent / "README.md", "r") as file:
readme = file.read()
readme = re.sub(
"(## Appliance Features\n)(?:.|\\s)+?([^#]## |\\Z)",
f"\\1{text}\\2",
readme,
re.DOTALL,
)
with open(Path(__file__).parent.parent / "README.md", "w") as file:
file.write(readme)