Перейти к содержанию

Навигация

Node-RED Dashboards: различия между версиями

Строка 83: Строка 83:


Снова перейдите на страницу с панелью, теперь там должно появиться меню, кликните на него и выберите '''Tab 2'''.
Снова перейдите на страницу с панелью, теперь там должно появиться меню, кликните на него и выберите '''Tab 2'''.
=== Привязка элементов ===
Теперь сделаем так, чтобы при клике на сером круге зуммер то включался, то выключался:
# Откройте настройки ноды SVG graphics и перейдите на вкладку Events.
# Добавьте новое действие:
#* Selector  — идентификатор нужного нам элемента: #buzzer-status.
#* Action — Click.
#* msg.payload — сообщение, которое описывает событие: click.
#* msg.topic — топик, который позволит узнать, кто был инициатором события: buzzer-status.
# Сохраните настройки нажатием на кнопку Done.
Теперь при клике на сером круге в svg-картинке на выход ноды SVG graphics будет отправлено сообщение с событием, обработаем его.
Нам нужно в момент клика получить последнее состояние зуммера, инвертировать его и отправить в MQTT:
# В панели слева в группе Wiren Board найдите ноду get и добавьте её в рабочую область.
# В настройках ноды get выберите топик buzzer/enabled и соедините её вход с выходом ноды SVG graphics.
# Добавьте ноду function и в настройках пропишите код:
#: <syntaxhighlight lang="js">
return {
    "payload": (msg.payload == '1')? '0':'1'
};
</syntaxhighlight>
# Соедините выход ноды get с входом ноды function, а выход последней с входом ноды out, в которой выбран топик buzzer/enabled.
Теперь перейдите на страницу с панелью и кликните по серому кругу, зуммер должен включиться, а при повторном клике — выключиться. Если это так, то всё настроено верно.
Сделаем так, чтобы при включённом зуммере круг окрашивался в жёлтый, а при выключенном — в серый.
Для этого нам надо будет:
* Настроить привязку сообщения к свойству элемента.
* Получить статус зуммера.
* Сформировать сообщение на изменения цвета.
Настроим привязку:
# Откройте настройки ноды SVG graphics и перейдите на вкладку Binding:
#* Binding Source — сообщение, которое будет содержать новый цвет: payload.buzzer.color
#* Selector — элемент, который будет окрашиваться: #buzzer-status
#* Binding Destination — свойство, которое будете менять: Style
#* в последнем поле укажите какое именно свойства стиля будем менять: fill.
# Сохраните нажатием на клавишу Done.
Статус зуммера мы возьмём из ноды in, с топиком buzzer/enabled, которая связана с нодой switch.
Сообщение мы сформируем с помощью ноды function, добавьте её в рабочую область и впишите код:
<syntaxhighlight lang="js">
return {
    "payload": {
        "buzzer": {
            "color": (msg.payload == '1')? 'yellow': 'gray'
        }
    },
    "topic": "databind"
};
</syntaxhighlight>
Выход функции соедините с входом ноды SVG graphics.