- Как создавать топики вида server/temp и запихивать json {“unixDT”=1523233555, “id”=88888, “text”=“text”} ?
- Можно в скриптах получить UNIX время?
- Можно сохранить какое-то значение, а через час, даже после перезагрузки, ‘вспомнить’ его?
Добрый день!
- Как вы хотите создавать эти топики? Из своего ПО, из командной строки, из движка правил?
- Используйте функцию runShellCommand. Похожее использование, например, здесь: https://github.com/contactless/wb-rules-system/blob/8d8867e33260af60f4ffbff31bf996055f084cbb/rules/system.js#L27
- Правильно ли я понял, что вы хотите сохранить значение переменной в скрипте между перезагрузками?
- Я не знаю где и как вообще их возможно создавать.
У меня контроллер настроен на бридж и кидает топики на сервер. Все остальное оборудование работает по другим правилам формирования формата топиков и хотелось контроллер привести к этим правилам.
Как вариант конечно можно транслировать топики с переформатированием, но это запутанно и ненаглядно. - Ну например, раз в час запоминаю накопленную энергию. А потом каждую минуту читаю энергию с прибора и высчитывают разницу. Ну и кидаю в топик текущее накопленное за час.
- Если вы хотите из стандартных топиков переложить в топики собственного формата, можете из правила выполнять publish (опять же читайте https://github.com/contactless/wb-rules). Отчасти похожая задача была здесь: Настройка процесса отправки сообщений по MQTT-мосту - посмотрите, какие там предложены решения.
- Вам нужны retained MQTT-сообщения - Сохранение mqtt значений при перезагрузке
- Есть описание команд runShellCommand? Так и не понятно как получить время UNIX.
Возможно Павел неправильно вас понял, попробуйте вот такой вариант: https://stackoverflow.com/questions/221294/how-do-you-get-a-timestamp-in-javascript
Описание есть здесь: https://github.com/contactless/wb-rules/blob/master/README.md
- Спасибо Andrey_Yantsen.
Правильный ответ DT_UNIX = Math.round(Date.now()/1000) - Как читать в скрипты нестандартные топики? (публиковать получилось)
- Хочу реализовать механизм отправки нестандартных топиков:
- при изменении значения на delta_%
- через каждые delta_minut
Я так понимаю это два отдельных правила?
Взводим какой-то глобальный таймер_1. Постоянно проверяем изменение на delta_%. Если совпадение, то публикуем и взводим таймер_1. Если изменения за delta_minut не произошло, то публикуем и взводим таймер.
Возможно ли запоминать какието значения в “глобальных” переменных чтоб не пришлось для сохранения нужных значений публиковать лишние топики?
- Можно как то получить время когда опубликован топик?
Насколько я помню, в движке сценариев Wiren Board нельзя подписываться на произвольные топики. Поэтому у вас два варианта:
-
Отправлять в топик, который соответствует соглашениям WB, т.е. в топик вида /devices//controls/ , при этом рядом должен быть retained-сообщение в топике /devices//controls//meta/type с типом данных, например “text”.
-
Не использовать движок сценариев WB, просто написать скрипт для преобразования с нуля.
Я провел полное восстановление прошивки в контроллере. Последняя версия.
Сейчас попробовал и движок правил выдает ошибку если правило без названия.
Значит в прошивке старый движок правил? Для получения Движка правил wb-rules 2.0 надо провести обновление?
Евгений не совсем понял вашу мысль. Например, мне необходимо передать по MQTT в сервер иридиум IP eth,ppp,wlan у всех этих данных тип TEXT.
Сервер не видит эти параметры. Каким образом перевести данные из типа техт, например в string?
Подскажите пожалуйста.
Расскажите, пожалуйста, подробнее: вы пытаетесь данные из MQTT-брокера Wiren Board завести в iRidium server? Как настраиваете iRidium server и что получается?
вы пытаетесь данные из MQTT-брокера Wiren Board завести в iRidium server?
-ДА
Настраиваю как обычно, если вам знаком иридиум, ниже скрин. Но на сервере данные теги не отображаются, методом тыка понял что из-за типа данных. У иридиума нет тип данных TEXT, только String. Вот и стоит задача каким-то образом на WB конвертировать text в string чтобы сервер иридиума увидел эти топики.
данные из каких-то других топиков Wiren Board получилось завести? Пришлите для них скриншот тоже, пожалуйста
Пример ниже
Мне кажется, что дело не в типе строки, а в том, что в названии топика есть пробел.
- Чтобы убедиться, что дело в не в типе строки, может для EXT1_DR7 выставить тип String и проверить.
- Чтобы сделать топик без пробела, можете отредактировать /usr/share/wb-rules-system/rules/network.js и перезапустить wb-rules, либо создать виртуальное, в котором значение всегда такое же, как в нужном топике.