По идее для начала достаточно.
Ща покурю ивенты.
Как будем конкретизировать девайс? UI будет требовать конкретики.
Я прокурю как адресуются устройства в разных сетях, но на сейчас я точно знаю, что и в лоре и в з-вэйве есть Home ID (в лоре Net ID), который описывает в звэйве - контроллер (и ,де-факто, одну частную сеть, так как в UI является следующим вложением после рута, а рутом дерева - аккаунт) в лоре - шлюз (и ,де-факто, тоже описывает одну замкнутую частную сеть).
В зигбе тоже какой-то идентификатор, описывающий какой-то кусок пространства, наверное, есть.
Даже если в какой-нибудь сети не окажется такого - будем назначать директивно, всё равно, к какой-то подсети.
То есть, вырисовывается система:
Account->
NetID->
- DeviceProtocol+DeviceID
NetID->
- DeviceProtocol+DeviceID
...
- DeviceProtocol+DeviceID
...
NetID
Связка DeviceProtocol+DeviceID будет уникальной, даже если в каких-то двух стандартах окажется совпадающий DeviceID.
К девайсу, кроме его периферии, выраженной через входы, выходы, ивенты - надо прикрутить вспомогательную информацию для UI и драйвер.
В драйвере должны быть юниты и рэйнжи для небинарных входов и выходов(min, max, step (для выходов) и measurement unit) , и, возможно, описание для UI что это вообще - реле, розетка, лампочка, датчик.
Как будем оформлять это инишник на девайс? Можно файлами - тогда имплементация нового девайса будет заключаться в подкладывании файла в папку сервера. Можно в БД.
Я бы выбрал файлы.
Мнения?