Связи между виртуальными и реальными устройствами (Линки)

Материал из Sprut.hub Wiki

Виртуальные устройства очень часто используются для группировки множества однотипных устройств в одно, для удобства управления. Например у вас есть люстра, в которой 3 умных лампочки. А вам нужно управлять всеми тремя одновременно и желательно в виде одного устройства. Для этого создается виртуальная лампочка и ее характеристики связываются с подобными характеристиками реальных лампочек. После настройки, вы сможете просто скрыть реальные лампочки из интерфейса хаба и управлять светом с помощью одной виртуальной лампочки.

Между реальными и виртуальными устройствами, можно настраивать связи, которые будут управлять:

  • из виртуального устройства - реальным (для виртуального тип связи "входящая", для реального "исходящая")
  • из реального устройства - виртуальным (для реального тип связи "входящая", для виртуального "исходящая")

Именно эти связи, используются для объединения нескольких реальных лампочек в одну группу с помощью одной виртуальной.

Виртуальную лампочку можно создать аналогично выключателю из этой инструкции.

Потом необходимо зайти в ее управление (долгое нажатие на плитке лампочки) и настраиваем Линки у каждой характеристики.

В данном примере это характеристики "Включен" и "Яркость"

Нажимаем кнопку добавления связей

Выбираем нужное устройство

Выбираем соответствующую характеристику

Повторяем для остальных лампочек

и делаем то же самое для характеристики Яркость

В итоге мы получаем одну виртуальную лампочку, которая управляет тремя реальными лампочками. При этом три реальных лампочки можно спокойно скрыть из интерфейса и показывать в веб-интерфейсе и в мостах только виртуальную лампочку

Способы обработки связей

Есть несколько вариантов обработки связей между устройствами

Среднее значение - вычисляет среднее значение между всеми подключенными устройствами и присваивает его виртуальному

Минимальное значение - выбирает минимальное значение из всех связанных и присваивает его виртуальному

Максимальное значение - выбирает максимальное значение из всех связанных и присваивает его виртуальному

Последнее значение - лучше пояснить на примере. Возьмем три реальные лампочки и свяжем их в одну виртуальную. выключим все. При данном типе связей, если включить одну из реальных лампочек и установить ей яркость 10%, то включится только эта реальная лампочка на 10% и такое же значение примет виртуальная лампочка и сменит свою яркость на 10%. Остальные две реальные лампочки останутся выключенными. Это основной вариант связей для реальных и виртуальных лампочек.


Синхронизация - опять же лучше пояснить на примере трех реальных лампочек, связанных с одной виртуальной. При данном типе связей, если вы включите одну из реальных лампочек и установите ей яркость 10%, то все остальные реальные и виртуальная лампочка, постараются включиться и выставить яркость 10%. Но ввиду того, что реальные лампочки обладают обратной связью, если они в процессе изменения яркости, будут отдавать хабу свое текущее состояние, оно будет применяться для всех остальных лампочек, как реальных, так и виртуальной. В итоге мы получим непредсказуемый результат, так как все лампочки будут стремиться синхронизировать свое состояние. Именно поэтому, подобный тип связей - для устройств с обратной связью не подходит, если их больше одного.