НейроАгент

Полное руководство: Телеметрические данные в уведомлениях об аварийных сигналах

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

Как вставлять значения телеметрических данных в уведомления по электронной почте из центра уведомлений

У меня в цепочке правил есть узел “Создать тревогу”, который активирует тревогу, когда температура превышает пороговое значение. В настоящее время значение температуры жестко закодировано как 24.9 градуса в JavaScript-скрипте узла тревоги, но мне нужно включать фактическое значение телеметрической температуры в уведомление о тревоге по электронной почте.

В шаблоне уведомления в центре уведомлений я пытался вставить значение температуры телеметрии, используя следующие синтаксические подходы:

  1. ${alarmDetails.temperature}
  2. ${alarm.details.temperature}

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

НейроАгент

Вставка значений телеметрии в уведомления об аварийных сигналах в ThingsBoard

Чтобы вставлять значения телеметрии в уведомления об аварийных сигналах по электронной почте в ThingsBoard, необходимо использовать правильный синтаксис шаблонов и убедиться, что ваша цепочка правил аварийных сигналов правильно передает данные телеметрии. Синтаксис, который вы пытались использовать (${alarmDetails.temperature} и ${alarm.details.temperature}), близок к правильному, но не совсем точен - правильный подход включает использование синтаксиса ${attributeName} в шаблоне деталей аварийного сигнала и настройку вашей цепочки правил для включения данных телеметрии.


Содержание

Понимание шаблонов уведомлений об аварийных сигналах

ThingsBoard использует систему на основе шаблонов для уведомлений об аварийных сигналах, где вы можете динамически вставлять различные типы данных. Согласно официальной документации, шаблоны аварийных сигналов поддерживают динамическую подстановку значений телеметрии или атрибутов с использованием определенного синтаксиса.

Система шаблонов уведомлений об аварийных сигналах работает следующим образом:

  1. Шаблон деталей аварийного сигнала: Необязательный шаблон, который позволяет включать динамические значения телеметрии или атрибутов
  2. Параметры шаблона: Встроенные переменные, такие как recipientTitle, alarmType, severity и т.д.
  3. Пользовательские переменные: Значения, передаваемые через конфигурацию вашей цепочки правил

Для данных температуры в частности необходимо убедиться, что значение телеметрии правильно доступно в контексте аварийного сигнала, прежде чем оно может быть использовано в уведомлениях.

Правильный синтаксис данных телеметрии

Правильный синтаксис для доступа к данным телеметрии в уведомлениях об аварийных сигналах:

javascript
${attributeName}

Где attributeName - это имя атрибута или поля телеметрии, к которому вы хотите получить доступ. Для данных температуры в частности вы бы использовали:

javascript
${temperature}

Этот синтаксис отличается от того, что вы пытались использовать, потому что:

  • ${alarmDetails.temperature} пытается получить доступ к вложенным свойствам, которые не существуют в контексте шаблона
  • ${alarm.details.temperature} следует неправильной структуре пути
  • ${temperature} напрямую получает доступ к значению телеметрии, которое должно быть доступно в контексте шаблона

Важно: Имя данных телеметрии в шаблоне должно точно соответствовать тому, как оно определено в вашей цепочке правил аварийных сигналов и телеметрии устройства.

Настройка вашей цепочки правил аварийных сигналов

Чтобы сделать данные телеметрии доступными в уведомлениях об аварийных сигналах, необходимо правильно настроить вашу цепочку правил аварийных сигналов. Вот пошаговый процесс:

Шаг 1: Создание конфигурации узла аварийного сигнала

В вашем узле Создать аварийный сигнал вместо того, чтобы жестко кодировать значение температуры, вы должны:

  1. Использовать узел преобразования скрипта: Добавьте узел Преобразование скрипта перед узлом Создать аварийный сигнал для обработки данных телеметрии
  2. Передать данные телеметрии: Настройте создание аварийного сигнала для включения фактического значения телеметрии

Пример преобразования скрипта:

javascript
// Извлекаем фактическую температуру из входящих данных телеметрии
var temperature = msg.temperature; // или msg.data.temperature в зависимости от структуры вашего сообщения

// Создаем детали аварийного сигнала с фактическим значением температуры
var alarmDetails = {};
alarmDetails.temperature = temperature;
alarmDetails.timestamp = new Date().toISOString();

msg.alarmDetails = alarmDetails;
return [msg, metadata];

Шаг 2: Настройка узла Создать аварийный сигнал

В конфигурации узла Создать аварийный сигнал:

  • Детали аварийного сигнала: Включите это поле и установите его для ссылки на ваши данные телеметрии
  • Использовать детали аварийного сигнала в уведомлениях: Это делает данные доступными для шаблонов

Шаг 3: Настройка шаблона уведомления

В Центре уведомлений:

  1. Создайте или отредактируйте ваш шаблон уведомления об аварийном сигнале
  2. Используйте правильный синтаксис ${temperature} там, где вы хотите, чтобы отображалось значение температуры

Пример структуры шаблона:

Тема: Предупреждение о высокой температуре для ${deviceName}

Уважаемый ${recipientTitle},

Сработал аварийный сигнал для устройства ${deviceName} из-за высокой температуры.

Показание температуры: ${temperature}°C
Серьезность аварийного сигнала: ${severity}
Тип аварийного сигнала: ${alarmType}
Время: ${timestamp}

Пожалуйста, немедленно примите меры для решения этой проблемы.

С уважением,
Система мониторинга ThingsBoard

Настройка шаблонов и примеры

Базовый шаблон уведомления о температуре

Вот полный пример рабочего шаблона уведомлений для аварийных сигналов, связанных с температурой:

html
<html>
<body>
    <h2>Предупреждение об аварийном сигнале температуры</h2>
    <p><strong>Устройство:</strong> ${deviceName}</p>
    <p><strong>Температура:</strong> ${temperature}°C</p>
    <p><strong>Пороговое значение:</strong> ${threshold}°C</p>
    <p><strong>Серьезность:</strong> ${severity}</p>
    <p><strong>Тип аварийного сигнала:</strong> ${alarmType}</p>
    <p><strong>Время:</strong> ${timestamp}</p>
    <p><strong>Местоположение:</strong> ${location}</p>
</body>
</html>

Шаблон с несколькими значениями телеметрии

Если вам нужно включить несколько значений телеметрии:

html
<html>
<body>
    <h2>Предупреждение мониторинга окружающей среды</h2>
    <table border="1" cellpadding="5">
        <tr>
            <th>Показатель</th>
            <th>Значение</th>
            <th>Пороговое значение</th>
        </tr>
        <tr>
            <td>Температура</td>
            <td>${temperature}°C</td>
            <td>${tempThreshold}°C</td>
        </tr>
        <tr>
            <td>Влажность</td>
            <td>${humidity}%</td>
            <td>${humidityThreshold}%</td>
        </tr>
        <tr>
            <td>Давление</td>
            <td>${pressure} гПа</td>
            <td>${pressureThreshold} гПа</td>
        </tr>
    </table>
</body>
</html>

Устранение распространенных проблем

Проблема 1: Данные телеметрии недоступны

Симптом: Заполнители шаблона, такие как ${temperature}, отображаются как буквальный текст вместо отображения значений.

Решения:

  1. Проверьте конфигурацию цепочки правил: Убедитесь, что ваш узел Преобразование скрипта правильно передает данные телеметрии в детали аварийного сигнала
  2. Проверьте имена данных: Убедитесь, что имя поля в ${temperature} точно соответствует тому, что определено в деталях вашего аварийного сигнала
  3. Протестируйте в режиме отладки: Включите журналирование отладки в ThingsBoard, чтобы увидеть, какие данные фактически доступны

Проблема 2: Аварийный сигнал не срабатывает с телеметрией

Симптом: Аварийные сигналы не срабатывают, когда вы ожидаете их на основе данных телеметрии.

Решения:

  1. Проверьте формат телеметрии: Убедитесь, что ваше устройство отправляет данные телеметрии в ожидаемом формате
  2. Проверьте правила аварийных сигналов: Подтвердите, что логика условия вашего аварийного сигнала правильная
  3. Протестируйте с известными значениями: Используйте конкретные тестовые значения для проверки механизма срабатывания аварийного сигнала

Проблема 3: Уведомление не отправляется

Симптом: Аварийные сигналы срабатывают, но уведомления не отправляются.

Решения:

  1. Проверьте конфигурацию уведомлений: Убедитесь в правильности получателей, выбора шаблона и настроек эскалации
  2. Протестируйте настройки электронной почты: Убедитесь, что конфигурация почтового сервера работает правильно
  3. Проверьте журналы уведомлений: Ищите сообщения об ошибках в журналах ThingsBoard

Лучшие практики

1. Используйте последовательные соглашения об именовании

Всегда используйте последовательные имена полей в вашей цепочке правил, телеметрии устройства и шаблонах уведомлений. Это снижает путаницу и время отладки.

2. Включайте контекстную информацию

Не просто включайте необработанное значение телеметрии. Добавляйте контекст, такой как:

  • Имя и местоположение устройства
  • Время считывания
  • Пороговые значения, которые были превышены
  • Уровни серьезности

3. Обрабатывайте несколько сценариев

Ваши шаблоны должны обрабатывать различные сценарии аварийных сигналов:

  • Разные уровни серьезности
  • Несколько пороговых значений телеметрии
  • Разные типы устройств

4. Тестируйте шаблоны перед развертыванием

Всегда тестируйте ваши шаблоны уведомлений с тестовыми данными перед развертыванием в рабочей среде. Используйте интерфейс ThingsBoard для предварительного просмотра того, как шаблоны будут отображаться с реальными данными аварийного сигнала.

5. Используйте HTML для форматирования

Для профессионально выглядящих уведомлений используйте форматирование HTML в ваших шаблонах для создания структурированных, читаемых писем с правильным стилем.


Заключение

Чтобы успешно вставлять значения данных телеметрии в уведомления об аварийных сигналах по электронной почте в ThingsBoard:

  1. Используйте правильный синтаксис: ${attributeName} (не вложенный синтаксис, который вы пытались использовать)
  2. Правильно настройте вашу цепочку правил: Используйте узлы Преобразование скрипта для передачи данных телеметрии в детали аварийного сигнала
  3. Тщательно тестируйте: Проверьте как срабатывание аварийного сигнала, так и доставку уведомлений
  4. Следуйте лучшим практикам: Используйте последовательное именование и включайте контекстную информацию

Ключевое понимание заключается в том, что данные телеметрии должны быть явно переданы через вашу цепочку правил и сделаны доступными в контексте деталей аварийного сигнала, прежде чем они могут быть использованы в шаблонах уведомлений. Как только вы установите правильный поток данных, использование ${temperature} (или как называется ваше поле телеметрии) будет правильно отображать фактические значения температуры в ваших письмах об аварийных сигналах.

Источники

  1. Документация ThingsBoard - Центр уведомлений
  2. Документация ThingsBoard - Работа с аварийными сигналами
  3. Документация ThingsBoard - Учебные материалы по Rule Engine 2.0
  4. Stack Overflow - Как отправлять данные телеметрии в центре уведомлений по электронной почте аварийного сигнала
  5. Документация ThingsBoard - Профили устройств