mirror of
https://github.com/XiaoMi/ha_xiaomi_home.git
synced 2026-01-17 07:10:44 +08:00
feat: use yaml to parse action params
This commit is contained in:
parent
f60143b477
commit
8726c75c85
@ -111,7 +111,7 @@ class Notify(MIoTActionEntity, NotifyEntity):
|
|||||||
self.name, self.entity_id, message)
|
self.name, self.entity_id, message)
|
||||||
return
|
return
|
||||||
|
|
||||||
if isinstance(in_list, str):
|
if not isinstance(in_list, list):
|
||||||
in_list = [in_list]
|
in_list = [in_list]
|
||||||
|
|
||||||
if not isinstance(in_list, list) or len(in_list) != len(self.spec.in_):
|
if not isinstance(in_list, list) or len(in_list) != len(self.spec.in_):
|
||||||
|
|||||||
@ -46,7 +46,6 @@ off Xiaomi or its affiliates' products.
|
|||||||
Text entities for Xiaomi Home.
|
Text entities for Xiaomi Home.
|
||||||
"""
|
"""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
import json
|
|
||||||
import logging
|
import logging
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
@ -54,6 +53,8 @@ from homeassistant.config_entries import ConfigEntry
|
|||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.components.text import TextEntity
|
from homeassistant.components.text import TextEntity
|
||||||
|
from homeassistant.util import yaml
|
||||||
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
|
|
||||||
from .miot.const import DOMAIN
|
from .miot.const import DOMAIN
|
||||||
from .miot.miot_spec import MIoTSpecAction, MIoTSpecProperty
|
from .miot.miot_spec import MIoTSpecAction, MIoTSpecProperty
|
||||||
@ -121,14 +122,18 @@ class ActionText(MIoTActionEntity, TextEntity):
|
|||||||
return
|
return
|
||||||
in_list: list = None
|
in_list: list = None
|
||||||
try:
|
try:
|
||||||
in_list = json.loads(value)
|
in_list = yaml.parse_yaml(value)
|
||||||
except json.JSONDecodeError as e:
|
except HomeAssistantError as e:
|
||||||
_LOGGER.error(
|
_LOGGER.error(
|
||||||
'action exec failed, %s(%s), invalid action params format, %s',
|
'action exec failed, %s(%s), invalid action params format, %s',
|
||||||
self.name, self.entity_id, value)
|
self.name, self.entity_id, value)
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
f'action exec failed, {self.name}({self.entity_id}), '
|
f'action exec failed, {self.name}({self.entity_id}), '
|
||||||
f'invalid action params format, {value}') from e
|
f'invalid action params format, {value}') from e
|
||||||
|
|
||||||
|
if not isinstance(in_list, list):
|
||||||
|
in_list = [in_list]
|
||||||
|
|
||||||
if not isinstance(in_list, list) or len(in_list) != len(self.spec.in_):
|
if not isinstance(in_list, list) or len(in_list) != len(self.spec.in_):
|
||||||
_LOGGER.error(
|
_LOGGER.error(
|
||||||
'action exec failed, %s(%s), invalid action params, %s',
|
'action exec failed, %s(%s), invalid action params, %s',
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user