Виртуальные устройства очень часто используются для группировки множества однотипных устройств в одно, для удобства управления. Например у вас есть люстра, в которой 3 умных лампочки. А вам нужно управлять всеми тремя одновременно и желательно в виде одного устройства. Для этого создается виртуальная лампочка и ее характеристики связываются с подобными характеристиками реальных лампочек. После настройки, вы сможете просто скрыть реальные лампочки из интерфейса хаба и управлять светом с помощью одной виртуальной лампочки.
Между реальными и виртуальными устройствами, можно настраивать связи, которые будут управлять:
- из виртуального устройства - реальным (для виртуального тип связи "входящая", для реального "исходящая")
- из реального устройства - виртуальным (для реального тип связи "входящая", для виртуального "исходящая")
Именно эти связи, используются для объединения нескольких реальных лампочек в одну группу с помощью одной виртуальной.
Виртуальную лампочку можно создать аналогично выключателю из этой инструкции.
Потом необходимо зайти в ее управление (долгое нажатие на плитке лампочки) и настраиваем Линки у каждой характеристики.
В данном примере это характеристики "Включен" и "Яркость"
Нажимаем кнопку добавления связей
Выбираем нужное устройство
Выбираем соответствующую характеристику
Повторяем для остальных лампочек
и делаем то же самое для характеристики Яркость
В итоге мы получаем одну виртуальную лампочку, которая управляет тремя реальными лампочками. При этом три реальных лампочки можно спокойно скрыть из интерфейса и показывать в веб-интерфейсе и в мостах только виртуальную лампочку
Способы обработки связей
Есть несколько вариантов обработки связей между устройствами
Среднее значение - вычисляет среднее значение между всеми подключенными устройствами и присваивает его виртуальному
Минимальное значение - выбирает минимальное значение из всех связанных и присваивает его виртуальному
Максимальное значение - выбирает максимальное значение из всех связанных и присваивает его виртуальному
Последнее значение - лучше пояснить на примере. Возьмем три реальные лампочки и свяжем их в одну виртуальную. выключим все. При данном типе связей, если включить одну из реальных лампочек и установить ей яркость 10%, то включится только эта реальная лампочка на 10% и такое же значение примет виртуальная лампочка и сменит свою яркость на 10%. Остальные две реальные лампочки останутся выключенными. Это основной вариант связей для реальных и виртуальных лампочек.
Синхронизация - опять же лучше пояснить на примере трех реальных лампочек, связанных с одной виртуальной. При данном типе связей, если вы включите одну из реальных лампочек и установите ей яркость 10%, то все остальные реальные и виртуальная лампочка, постараются включиться и выставить яркость 10%. Но ввиду того, что реальные лампочки обладают обратной связью, если они в процессе изменения яркости, будут отдавать хабу свое текущее состояние, оно будет применяться для всех остальных лампочек, как реальных, так и виртуальной. В итоге мы получим непредсказуемый результат, так как все лампочки будут стремиться синхронизировать свое состояние. Именно поэтому, подобный тип связей - для устройств с обратной связью не подходит, если их больше одного.