Нестандартные топики


#1
  1. Как создавать топики вида server/temp и запихивать json {“unixDT”=1523233555, “id”=88888, “text”=“text”} ?
  2. Можно в скриптах получить UNIX время?
  3. Можно сохранить какое-то значение, а через час, даже после перезагрузки, ‘вспомнить’ его?

#2

Добрый день!

  1. Как вы хотите создавать эти топики? Из своего ПО, из командной строки, из движка правил?
  2. Используйте функцию runShellCommand. Похожее использование, например, здесь: https://github.com/contactless/wb-rules-system/blob/8d8867e33260af60f4ffbff31bf996055f084cbb/rules/system.js#L27
  3. Правильно ли я понял, что вы хотите сохранить значение переменной в скрипте между перезагрузками?

#3
  1. Я не знаю где и как вообще их возможно создавать.
    У меня контроллер настроен на бридж и кидает топики на сервер. Все остальное оборудование работает по другим правилам формирования формата топиков и хотелось контроллер привести к этим правилам.
    Как вариант конечно можно транслировать топики с переформатированием, но это запутанно и ненаглядно.
  2. Ну например, раз в час запоминаю накопленную энергию. А потом каждую минуту читаю энергию с прибора и высчитывают разницу. Ну и кидаю в топик текущее накопленное за час.

#4
  1. Если вы хотите из стандартных топиков переложить в топики собственного формата, можете из правила выполнять publish (опять же читайте https://github.com/contactless/wb-rules). Отчасти похожая задача была здесь: Настройка процесса отправки сообщений по MQTT-мосту - посмотрите, какие там предложены решения.
  2. Вам нужны retained MQTT-сообщения - Сохранение mqtt значений при перезагрузке

#5
  1. Есть описание команд runShellCommand? Так и не понятно как получить время UNIX.

#6

Возможно Павел неправильно вас понял, попробуйте вот такой вариант: https://stackoverflow.com/questions/221294/how-do-you-get-a-timestamp-in-javascript


#7

Описание есть здесь: https://github.com/contactless/wb-rules/blob/master/README.md


#8
  1. Спасибо Andrey_Yantsen.
    Правильный ответ DT_UNIX = Math.round(Date.now()/1000)
  2. Как читать в скрипты нестандартные топики? (публиковать получилось)
  3. Хочу реализовать механизм отправки нестандартных топиков:
  • при изменении значения на delta_%
  • через каждые delta_minut
    Я так понимаю это два отдельных правила?
    Взводим какой-то глобальный таймер_1. Постоянно проверяем изменение на delta_%. Если совпадение, то публикуем и взводим таймер_1. Если изменения за delta_minut не произошло, то публикуем и взводим таймер.
    Возможно ли запоминать какието значения в “глобальных” переменных чтоб не пришлось для сохранения нужных значений публиковать лишние топики?
  1. Можно как то получить время когда опубликован топик?

#9

Насколько я помню, в движке сценариев Wiren Board нельзя подписываться на произвольные топики. Поэтому у вас два варианта:

  1. Отправлять в топик, который соответствует соглашениям WB, т.е. в топик вида /devices//controls/ , при этом рядом должен быть retained-сообщение в топике /devices//controls//meta/type с типом данных, например “text”.

  2. Не использовать движок сценариев WB, просто написать скрипт для преобразования с нуля.


#10

Я провел полное восстановление прошивки в контроллере. Последняя версия.
Сейчас попробовал и движок правил выдает ошибку если правило без названия.
Значит в прошивке старый движок правил? Для получения Движка правил wb-rules 2.0 надо провести обновление?