Skip to content

Commit

Permalink
Merge pull request #51 from Necroneco/room
Browse files Browse the repository at this point in the history
Auto sync default 10 rooms name
  • Loading branch information
rxwen authored Nov 8, 2023
2 parents 49ce293 + 3203ddf commit 081ba33
Show file tree
Hide file tree
Showing 4 changed files with 99 additions and 12 deletions.
57 changes: 54 additions & 3 deletions custom_components/terncy/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,7 @@
}

# 给 Event Entity 用的
EVENT_ENTITY_BUTTON_EVENTS = [
ACTION_LONG_PRESS,
_PRESS_EVENTS = [
ACTION_SINGLE_PRESS,
ACTION_DOUBLE_PRESS,
ACTION_TRIPLE_PRESS,
Expand All @@ -103,7 +102,15 @@
"octuple_press",
"nonuple_press",
]
EVENT_ENTITY_DIAL_EVENTS = [*EVENT_ENTITY_BUTTON_EVENTS, ACTION_ROTATION]

EVENT_ENTITY_BUTTON_EVENTS = [
ACTION_LONG_PRESS,
*_PRESS_EVENTS
]
EVENT_ENTITY_DIAL_EVENTS = [
*_PRESS_EVENTS,
ACTION_ROTATION,
]


@dataclass(slots=True)
Expand Down Expand Up @@ -138,3 +145,47 @@ class TerncyDeviceData(TypedDict):


HAS_EVENT_PLATFORM = (MAJOR_VERSION, MINOR_VERSION) >= (2023, 8) # HA>=2023.8


# region Default Rooms

DEFAULT_ROOMS = {
"zh-Hans": {
"area-0000": "默认房间",
"area-0001": "客厅",
"area-0002": "主卧",
"area-0003": "次卧",
"area-0004": "餐厅",
"area-0005": "厨房",
"area-0006": "阳台",
"area-0007": "书房",
"area-0008": "玄关",
"area-0009": "洗手间",
},
"zh-Hant": {
"area-0000": "默認房間",
"area-0001": "客廳",
"area-0002": "主臥",
"area-0003": "次臥",
"area-0004": "餐廳",
"area-0005": "廚房",
"area-0006": "陽台",
"area-0007": "書房",
"area-0008": "玄關",
"area-0009": "洗手間",
},
"en": {
"area-0000": "Default Room",
"area-0001": "Living Room",
"area-0002": "Master Bedroom",
"area-0003": "Guest Bedroom",
"area-0004": "Dining Room",
"area-0005": "Kitchen",
"area-0006": "Balcony",
"area-0007": "Study",
"area-0008": "Entrance",
"area-0009": "Bath Room",
},
}

# endregion
12 changes: 8 additions & 4 deletions custom_components/terncy/core/gateway.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import asyncio
import json
import logging
from collections.abc import Callable, Coroutine
from itertools import groupby
Expand Down Expand Up @@ -30,7 +29,6 @@
from homeassistant.helpers.typing import UNDEFINED
from terncy import Terncy
from terncy.event import Connected, Disconnected, EventMessage
from terncy.terncy import _next_req_id

from .device import TerncyDevice
from .entity import TerncyEntity
Expand All @@ -43,6 +41,7 @@
CONF_EXPORT_DEVICE_GROUPS,
CONF_EXPORT_SCENES,
CONF_IP,
DEFAULT_ROOMS,
DOMAIN,
EVENT_DATA_CLICK_TIMES,
EVENT_DATA_SOURCE,
Expand Down Expand Up @@ -535,10 +534,15 @@ async def async_refresh_devices(self):
_LOGGER.debug("[%s] Fetching data...", self.unique_id)

# room
lang = self.hass.config.language
default_rooms = DEFAULT_ROOMS.get(lang, DEFAULT_ROOMS.get("en"))
try:
rooms: list[RoomData] = await self._fetch_data("room")
self.room_data = {room["id"]: room["name"] for room in rooms}
_LOGGER.debug("[%s] ROOM: %s", self.unique_id, self.room_data)
self.room_data = {
room["id"]: room["name"] or default_rooms.get(room["id"], "")
for room in rooms
}
_LOGGER.debug("[%s] ROOM %s: %s", self.unique_id, lang, self.room_data)
except Exception as e:
_LOGGER.warning("fetch room error: %s", e)

Expand Down
35 changes: 34 additions & 1 deletion custom_components/terncy/profiles/before_2023_7.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,16 @@
"""HA<2023.7"""
"""
这个文件的配置是给 HA 版本 <2023.7 用的
2023.7 引入了新的实体命名机制, 详见: https://developers.home-assistant.io/docs/core/entity/#entity-naming
本文件基于 profiles.py, 做以下修改以兼容旧版:
- 所有的 description 都需要指定 name。(具体字符串或者None)
- translation_key 建议删除,旧版中没有作用。
备注:
name=None 表示这个实体是这个设备的主要功能,直接使用设备名字。
light、cover、climate 已经在 base description 中声明过 name=None 了。
"""

from homeassistant.components.binary_sensor import BinarySensorDeviceClass
from homeassistant.components.cover import CoverDeviceClass
from homeassistant.components.light import ColorMode # >=2022.5
Expand All @@ -21,13 +33,16 @@
PROFILE_EXTENDED_COLOR_LIGHT2,
PROFILE_GAS,
PROFILE_HA_TEMPERATURE_HUMIDITY,
PROFILE_HA_THERMASTAT,
PROFILE_LOCK,
PROFILE_OCCUPANCY_SENSOR,
PROFILE_ONOFF_LIGHT,
PROFILE_PIR,
PROFILE_PLUG,
PROFILE_PRESENCE_SENSOR,
PROFILE_SMART_DIAL,
PROFILE_SWITCH,
PROFILE_XY_SINGLE_AIR_COND,
PROFILE_YAN_BUTTON,
TerncyEntityDescription,
)
Expand Down Expand Up @@ -156,6 +171,16 @@
key="climate",
),
],
PROFILE_HA_THERMASTAT: [
TerncyClimateDescription(
key="climate",
),
],
PROFILE_XY_SINGLE_AIR_COND: [
TerncyClimateDescription(
key="climate",
),
],
PROFILE_LOCK: [
TerncyBinarySensorDescription(
key="lock",
Expand Down Expand Up @@ -194,6 +219,7 @@
key="motion",
sub_key="motion",
device_class=BinarySensorDeviceClass.MOTION,
name="Motion",
value_attr="motion",
),
BatteryDescription(
Expand Down Expand Up @@ -251,4 +277,11 @@
supported_color_modes={ColorMode.COLOR_TEMP, ColorMode.HS},
),
],
PROFILE_PRESENCE_SENSOR: [
TerncyBinarySensorDescription(
key="presenceStatus",
device_class=BinarySensorDeviceClass.PRESENCE,
value_attr="presenceStatus",
),
],
}
7 changes: 3 additions & 4 deletions custom_components/terncy/profiles/profiles.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@
EVENT_ENTITY_DIAL_EVENTS,
HAS_EVENT_PLATFORM,
PROFILE_AC_UNIT_MACHINE,
PROFILE_HA_THERMASTAT,
PROFILE_HA_TEMPERATURE_HUMIDITY,
PROFILE_XY_SINGLE_AIR_COND,
PROFILE_COLOR_DIMMABLE_LIGHT,
PROFILE_COLOR_LIGHT,
PROFILE_COLOR_TEMPERATURE_LIGHT,
Expand All @@ -27,15 +24,17 @@
PROFILE_EXTENDED_COLOR_LIGHT2,
PROFILE_GAS,
PROFILE_HA_TEMPERATURE_HUMIDITY,
PROFILE_HA_THERMASTAT,
PROFILE_LOCK,
PROFILE_OCCUPANCY_SENSOR,
PROFILE_ONOFF_LIGHT,
PROFILE_PIR,
PROFILE_PLUG,
PROFILE_PRESENCE_SENSOR,
PROFILE_SMART_DIAL,
PROFILE_SWITCH,
PROFILE_XY_SINGLE_AIR_COND,
PROFILE_YAN_BUTTON,
PROFILE_PRESENCE_SENSOR,
TerncyEntityDescription,
)
from ..cover import TerncyCoverDescription
Expand Down

0 comments on commit 081ba33

Please sign in to comment.