Skip to content

Быстрый старт

За несколько минут запустим домашний хаб с виртуальными устройствами и поменяем их набор, не написав ни строчки кода. Физические приборы не понадобятся.

Что понадобится

.NET 10 SDK. Проверить, что он установлен:

bash
dotnet --version

Запуск

bash
git clone https://github.com/thinking-home/subway.git
cd subway
dotnet run --project ThinkingHome.DeviceModel.Hub
info: ThinkingHome.DeviceModel.Hub[0]
      Устройств зарегистрировано: 18

Хаб запущен: восемнадцать виртуальных устройств — лампы, розетки, шторы, датчики, счётчики — созданы и готовы отвечать на запросы. Снаружи их пока никто не видит: к хабу не подключена ни одна экосистема. Этим займёмся после того, как разберёмся, откуда устройства взялись.

Откуда взялись устройства

Из конфигурации. Откройте ThinkingHome.DeviceModel.Hub/appsettings.json — вот его суть в сокращённом виде:

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 ещё одну запись:

json
{ "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.

Что дальше

Опубликовано под лицензией MIT