ThinkingHome.DeviceModel
ThinkingHome.DeviceModel Namespace
| Classes | |
|---|---|
| CommandOutcome | Результат исполнения команды. Адаптеры переводят его в свой формат (у Алисы — action_result). |
| DeviceDescriptor | Полное описание устройства — то, что драйвер отдаёт при discovery. |
| DeviceEntry | Запись об одном зарегистрированном устройстве. Инкапсулирует host-level кэш последнего состояния и подписку на изменения устройства. О самом хосте не знает — общается с ним только через два колбэка, полученных в конструкторе: onChanged (фан-аут изменений наверх) и onRemoved (самоудаление из хоста при ThinkingHome.DeviceModel.DeviceEntry.Dispose). |
| DeviceHost | Реализация хоста устройств: сразу обе грани — IDeviceRegistry (регистрация драйверов) и IDeviceHost (потребительский .NET API). Хранит карту id → DeviceEntry и агрегированное событие изменений. Всё, что касается конкретного устройства (кэш, подписка на его изменения), инкапсулировано в DeviceEntry; хост общается с записью только через её публичный интерфейс, а записи передаёт два колбэка — сама запись про хост не знает. |
| DeviceManufacturer | Паспортные данные устройства: производитель, модель, версии. |
| Endpoint | Логическая часть устройства: тип + способности и свойства. |
| VendorExtensionAttribute | Пометка вендорского расширения словаря: концепт, которого нет в словаре Matter (аналог manufacturer-specific элементов самого Matter — §7.19, MEI). Допустимо только при реальной потребности и отсутствии концепта в актуальном Matter; семантика описывается так же строго, как у Matter-концептов (нормализованная единица, полный набор, doc-комментарий). Сверка словаря со спекой (CI-гейт по data_model XML) помеченные типы пропускает; непомеченные обязаны соответствовать Matter. Если Matter позже вводит стандартный концепт с той же семантикой — пометка снимается; если семантика расходится — новый тип + deprecation (правило идентификаторов). |
| Interfaces | |
|---|---|
| IDevice | Контракт драйвера (провайдер-грань). Реализуется классом, умеющим общаться с конкретным физическим устройством. Регистрируется в IDeviceRegistry. |
| IDeviceHost | Потребитель-грань хоста — публичный .NET API слоя устройств. Его вызывают адаптеры экосистем (Алиса, Matter, HomeKit) и код ThinkingHome. Экосистемные адаптеры не лезут в реестр напрямую. |
| IDeviceRegistry | Провайдер-грань хоста: драйверы регистрируют экземпляры устройств. |
| Enums | |
|---|---|
| AirQuality | Индекс качества воздуха — значения атрибута AirQuality кластера Air Quality (0x005B) Matter. Значение Unknown из Matter не переносится: «нет данных» в модели выражается отсутствием значения. |
| ColorModel | Модель полного цвета. Модели взаимоисключающие — устройство поддерживает одну; пока только RGB. Как добавить HSV: сюда — значение Hsv; в State/Commands завести подтипы ColorHsvState/ColorHsvCommand с полями { H, S, V } (значение не число, поэтому отдельный тип, а не поле в существующем); на стороне Алисы значение hsv у color_setting — объект {h,s,v}, поэтому Alice-DTO цвета придётся разветвить (скаляр для rgb/temperature_k vs объект hsv). |
| CommandErrorCode | Нейтральные коды ошибок; маппятся в коды экосистем (например, в error_code Алисы). |
| CommandStatus | Статус исполнения команды. |
| DeviceType | Тип устройства. Значения выровнены на device types из Matter Device Library; в комментарии — идентификатор Matter. Каждый адаптер (Алиса/HomeKit) держит свою таблицу перевода этих значений в свой формат. Заведены типы, покрытые текущим словарём способностей и свойств; остальные добавляются со сверкой по Matter. |
| FanSpeed | Скорость вентиляции — выбор из набора. Совпадает с Alice mode:fan_speed (auto/low/medium/high) и с Matter Fan Control FanMode. Устройство объявляет поддержанное подмножество. |
| ThermostatMode | Режим работы термостата/кондиционера — выбор из набора. Совпадает с Alice mode:thermostat (auto/heat/cool/dry/fan_only) и с Matter Thermostat SystemMode. Устройство объявляет поддержанное подмножество. |