Skip to content

ThinkingHomeDeviceModel

Виртуальный хаб умного дома

Как устроен умный дом?

С одной стороны — устройства: лампы, розетки, датчики. С другой стороны — экосистема: Алиса, Apple Home, Google Home. Приложение, голосовой помощник, сценарии — пульт от всего дома. Каждая экосистема общается с устройствами по собственному протоколу.

Пользователь выбирает не отдельные устройства, а связку целиком. Может оказаться, что нужное устройство не поддерживает его экосистему: подходящая лампа работает с Apple Home, а датчик протечки — только с Алисой. Чем больше устройств, тем выше вероятность, что связки «экосистема + устройства», закрывающей все потребности, не существует. Если нужного устройства не делает никто, пользователь собирает его сам — но ни одна экосистема такое устройство не поддерживает.

ThinkingHome.DeviceModel — виртуальный хаб умного дома, посредник между экосистемами и устройствами. Пользователь подключает к хабу свои устройства и выбирает любую экосистему из тех, с которыми умеет работать хаб. Экосистема общается только с хабом и видит в нём все устройства, поэтому выбор устройств перестаёт зависеть от того, какие протоколы в них заложены.
Хаб связывается с устройствами по распространённым протоколам, например, MQTT или Zigbee. Любое другое устройство, вплоть до самодельного, тоже можно подключить: для этого нужно написать драйвер — небольшую прослойку на .NET между устройством и хабом.
ХабДрайверДрайверЛампаZigbeeРозеткаMQTT
csharp
var lamp = host.Device("lamp-1");

await lamp.OnOff().TurnOnAsync();
await lamp.Brightness().SetAsync(50);

using var subscription = lamp
    .OnChanged(change => Console.WriteLine(change.Value));
Экосистема — не единственный потребитель хаба. Локальные скрипты тоже управляют устройствами: например, включают свет по датчику движения. Для них есть типизированный API. Отправка команды, чтение состояния или подписка на изменения занимают пару строк кода на C#.
Экосистема работает из облака, и ей нужно дотянуться до домашней сети. Внешний IP для этого не требуется: домашний сервер сам подключается к облачному прокси и держит соединение, а экосистема обращается к прокси.
ЭкосистемаОблачныйпроксиДомашнийсервер

С чего начать

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