Быстрый старт
За несколько минут запустим домашний хаб с виртуальными устройствами и поменяем их набор, не написав ни строчки кода. Физические приборы не понадобятся.
Что понадобится
.NET 10 SDK. Проверить, что он установлен:
dotnet --versionЗапуск
git clone https://github.com/thinking-home/subway.git
cd subway
dotnet run --project ThinkingHome.DeviceModel.Hubinfo: ThinkingHome.DeviceModel.Hub[0]
Устройств зарегистрировано: 18Хаб запущен: восемнадцать виртуальных устройств — лампы, розетки, шторы, датчики, счётчики — созданы и готовы отвечать на запросы. Снаружи их пока никто не видит: к хабу не подключена ни одна экосистема. Этим займёмся после того, как разберёмся, откуда устройства взялись.
Откуда взялись устройства
Из конфигурации. Откройте ThinkingHome.DeviceModel.Hub/appsettings.json — вот его суть в сокращённом виде:
{
"Hub": {
"Plugins": [
"ThinkingHome.DeviceModel.Drivers.Stubs.StubsPlugin, ThinkingHome.DeviceModel.Drivers.Stubs"
]
},
"StubDevices": {
"Devices": [
{ "Id": "lamp-1", "Kind": "OnOffLight", "Title": "Лампа в коридоре", "Room": "Коридор" },
{ "Id": "climate-1", "Kind": "ClimateSensor", "Title": "Датчик климата", "Room": "Кабинет" }
]
}
}Секция Hub:Plugins перечисляет подключённые плагины — источники устройств. Сейчас подключён один: плагин виртуальных устройств-заглушек. Свои устройства он берёт из секции StubDevices: каждая запись — одно устройство с идентификатором, разновидностью (Kind), названием и комнатой.
Поменяйте набор устройств
Добавьте в список StubDevices:Devices ещё одну запись:
{ "Id": "fan-2", "Kind": "Fan", "Title": "Вентилятор на кухне", "Room": "Кухня" }и перезапустите хаб:
info: ThinkingHome.DeviceModel.Hub[0]
Устройств зарегистрировано: 19Так собирается дом: устройства описываются в конфигурации, хаб создаёт их при старте. Ошибок конфигурации хаб не прощает: опечатка в Kind или пустой Id остановят запуск с сообщением о том, что и где исправить.
Доступные разновидности виртуальных устройств: OnOffLight, OnOffSocket, OnOffSwitch, DimmableLamp, ColorTemperatureLamp, ColorLamp, Curtain, Fan, AirConditioner, ClimateSensor, MotionSensor, ContactSensor, WaterLeakSensor, LightSensor, AirQualitySensor, WaterMeter.
Что дальше
- Hub — домашний хаб — вся конфигурация приложения, включая подключение к облачному прокси, чтобы устройствами управляла Алиса;
- Нейтральная модель — как устроено описание устройства;
- Первое устройство в коде — путь для разработчика: свой драйвер и управление устройствами из C#.