NEWS
Node-RED примеры, решения и и вопросы. Общая тема по Node-RED
-
Арифметические операции в NODE-RED, сложение, умножение, вычитание, деление,.. Округление, и т.д.
Есть у меня сенсоры под таким длинным названием "XIAOMI AQARA SMART HOME TEMPERATURE HUMIDITY PRESSURE SENSOR ZIGBEE". Это беспроводной датчик, работающий по протоколу ZigBee
Он отправляет следующие данные в систему iobroker:1. Влажность, %
2. Температура, °C
****3. Давление, гПа *****
4. Заряд батареи, %
5. Напряжение батареи, V
6. Также на этом сенсоре есть кнопка, и её состояние отображается как false или true, при не нажатом и нажатом состоянии соответственно.
********* Гектопаскаль. Вся неудобность в том, что у нас, в России, принято измерять давление в миллиметрах ртутного столба ( мм.рт.ст.) А датчик даёт в Гектопаскалях.
! Гектопаскаль (гПа) — единица измерения давления, механического напряжения и модуля Юнга (модуля упругости) в Международной системе единиц (СИ), кратная паскалю. Паскаль равен давлению (механическому напряжению), вызываемому силой, равной одному ньютону, равномерно распределённой по перпендикулярной к ней поверхности площадью один квадратный метр.
Значит нужно конвертировать одно значение в другое. Для этого сначала создадим переменную, в которой будет храниться значение в мм.рт.ст. Я решил создать её в той же папке датчика, где другие его переменные. Для этого идём в меню "Объекты", выбираем mihome.0, далее devices и выбираем папку weather_v1_158d0002271cea. В верхней панели жмём плюс - "добавить объект к выделенному элементу"Имя вводим "Pressure_mm_rt_st", далее "состояние" далее "логическая переменная".
Если заглянуть в настройки, то у меня выглядит так:
!
И наконец-то мы готовы идти в Node-RED.Тут вся наша конвертация сводится к двум операциям, умножению и округлению, которые выполняются в блоке function
Код такой:
msg.payload = Number((msg.payload * 0.750062).toFixed(1)); return msg;
1. Number - указываем функцию "force-number", для работы с числами.
Подробнее: https://www.npmjs.com/package/force-number
2. Число полученное из msg.payload умножаем на константу 0.750062,
тем самым преобразовав величину давления "гПа" в "мм.рт.ст"
3. К результату умножения применяем округление до 1 знака
в дробной части - функция .toFixed(1) , Для округления до целых - .toFixed()
Сам не знал как, подсказали ссылки
1. https://community.openenergymonitor.org … -help/2939
2. https://stackoverflow.com/questions/398 … tion-block
Ну и код:
!
[ { "id": "c03c9ab1.dac5c8", "type": "debug", "z": "5c8c6088.754b2", "name": "Давление гПа (1cea)", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 380, "y": 60, "wires": [] }, { "id": "72319ea.5b38e6", "type": "ioBroker in", "z": "5c8c6088.754b2", "name": "Pressure Pa (1cea)", "topic": "mihome.0.devices.weather_v1_158d0002271cea.pressure", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 110, "y": 120, "wires": [ [ "55984769.8246b8", "c03c9ab1.dac5c8" ] ] }, { "id": "391cd606.2d382a", "type": "ioBroker out", "z": "5c8c6088.754b2", "name": "Pressure_mm_rt_st", "topic": "mihome.0.devices.weather_v1_158d0002271cea.Pressure_mm_rt_st", "ack": "true", "autoCreate": "false", "x": 670, "y": 120, "wires": [] }, { "id": "55984769.8246b8", "type": "function", "z": "5c8c6088.754b2", "name": "х 0.750062", "func": "msg.payload = Number((msg.payload * 0.750062).toFixed(1));\nreturn msg;\n\n/*\n1.\nNumber - указываем функцию \"force-number\", для работы с числами.\nПодробнее: https://www.npmjs.com/package/force-number\n\n2.\nЧисло полученное из msg.payload умножаем на константу 0.750062,\nтем самым преобразовав величину давления \"гПа\" в \"мм.рт.ст\"\n\n3.\nК результату умножения применяем округление до 1 знака\nв дробной части - функция .toFixed(1)\nДля округления до целых - .toFixed()\n*/\n", "outputs": 1, "noerr": 0, "x": 350, "y": 120, "wires": [ [ "391cd606.2d382a", "8b093ee8.87f8" ] ] }, { "id": "8b093ee8.87f8", "type": "debug", "z": "5c8c6088.754b2", "name": "Давление мм.рт.ст (1cea)", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 700, "y": 60, "wires": [] } ] !
Вот и всё, теперь в переменой mihome.0.devices.weather_v1_158d0002271cea.Pressure_mm_rt_st мы видим давление в мм.рт.ст.
-
-
Sergey777 За математику спасибо. Как всегда оформлено все на 5+ .
-
я добавил новые "интересные материалы по nod-red" в первый пост этой темы. Если кто еще что интересное знает пишите - добавлю. Что бы всем было легче осваивать Nod-red.
-
-
Помогите, плиз. Пока изучаю Ноде с нуля.
После установки НодеРед - день поработал, поучился, все было норм. На следующий день комп с утра стал грузить проц на 100 с лишним процентов. Закрытие Нода в браузере не помогло. Проблема решилась только после полной деинсталляции программы.
Что я делаю не так?
-
Скорее всего сделали цикл где-нибудь бесконечный.
Я так один раз написал в один поток который включал-выключал лампы по кругу. Вот тогда 90% проца и выжрало. Выжрало-бы и все, но у меня УД в контейнере. В его ограничения аппетит nod-red и уперся.
-
Сломал Nod-red при попытке установить node-red-contrib-xiaomi-miio.
В драйверах горел зеленным, правила неработали, вебморду Nod-red не открывал.
Перезапуск/Удаление/установка не помогли.
Я раскатал бекап всего IoBroker.
Нужно сделать скрипт на бекапа IoBroker или разобраться с новым драйвером для бекапа.
И разобраться где flow лежат в файлах.
-
Что лучше для тех кто не пишет скрипты: Нод Ред или Блокли?
Sent from my SM-N920V using Tapatalk
-
Без разницы. Фунционал по логике аналогичен.
Есть небольшие плюшки node-red можно взять нормально написанный кусок, допусти bigtimer
https://tech.scargill.net/big-timer/
и там куча проблемм за вас уже решили. Но если очень хочется, то такое можно и в блокли собрать.
Дополнительная плюшка node-red можно втянуть оборудование которое в iobroker еще нет, а в node-red уже есть. Но и там можно скриптами на js или blokly вкарачиться.
-
Спасибо. А по надёжности работы в среде IOB они одинаковы?
Sent from my SM-N920V using Tapatalk
-
По надёжности одинаково.
Но в русскоязычное ветке js и блокли более распространена
-
По надёжности одинаково.
Но в русскоязычное ветке js и блокли более распространена ` Спасибо
Sent from my SM-N920V using Tapatalk
-
Приветствую всех пользователей Node-Red.
Ребята подскажите пожалуйста как в dashboard, менять расположение виджетов, у меня только вертикально все стоят, никак не получается их расположить например горизонтально.
Буду очень признателен за любой ответ.
Спасибо.
!
-
Буду очень признателен за любой ответ.
Спасибо. `
- Честно говоря я с nod-red dashboard еще не разбирался (пока хватает визуализаций завязанных на iobroker (вообще основной у меня habpanel она в iob полностью затащена ).
но у меня в закладках вот такой пример термостата
https://tech.scargill.net/a-thermostat-weekend/
Кажется его можно затащить к себе и посмотреть.
- В шапке есть ссылка на телеграмм канал, там водяться гуру.
-
Нашел пример управления xiaomi пылесосом с уборкой по комнатам
https://flows.nodered.org/flow/6d284006 … 78568f179c
Решил сюда положить, что бы не потерять. Давно хочу сделать кнопки - вызов пылесоса для уборки в комнату.
-
пока хватает визуализаций завязанных на iobroker `
А можно поинтересоваться какие на IoBrokere есть? Я там вижу именно Dashboard -
-
ну я думал что выше мы обсуждали nod-red dashboard. Его в драйверах (адаптерах) ioBroker не видно (он целиком на Node-red завязан).
-
vis https://github.com/iobroker/iobroker.vi … /README.md (он кстати в читый nod-red портирован)
-
материал https://github.com/ioBroker/ioBroker.ma ... /README.md
-
мобайл https://github.com/ioBroker/ioBroker.mo ... /README.md
-
мой любимый хаб панель https://github.com/ioBroker/ioBroker.ha ... /README.md
Немного особняком стоят:
-
приложение для андроид iogo https://github.com/nisiode/ioBroker.iog ... /README.md
-
возможность создавать бота с кнопками, графиками и пр. в мессенджере телеграмм
Я на хабпанели и телеграмм, немного тыкаюсь в material
-
-
Ребят, подскажите пожалуйста.
Поставил брокер на Windows 7, и не вижу драйверов кроме
!
Как мне их подгрузить или что еще сделать? -
такое лучше всего на канале в телеграмм спрашивать
https://web.telegram.org/#/im?p=@iobroker
PS лучше конечно было виртуалку поднимать win хост, linux гость. Настроить что бы дестопная win не ломала софт УД местами очень тяжело. Одни перезагрузки чего стоят.
-
Спасибо, ссылка ведет на пустую страницу, к сожалению.
-
-
Пришлось разобраться с неработоспособностью некоторых flow после перезагрузки сервера.
Как и подозревал, проблема была в том что при старте (перезагрузке) Nod-red состояния некоторых Flow были не определенными - в итоге сообщение дальше них и не шло.
Разыскал и установил вот такой кубик
https://flows.nodered.org/node/node-red-contrib-config
Собственно при запуске Nod-red устанавливает flow в определенное значение.
!
Собственно можно было и как нибудь через переменную хранящуюся в базе данных переписать. Но так вроде сущностей меньше.
upd вот это правило и поправил viewtopic.php?f=48&t=11969&p=146339#p146339