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 мы видим давление в мм.рт.ст.
-
Помогите, плиз. Пока изучаю Ноде с нуля.
После установки НодеРед - день поработал, поучился, все было норм. На следующий день комп с утра стал грузить проц на 100 с лишним процентов. Закрытие Нода в браузере не помогло. Проблема решилась только после полной деинсталляции программы.
Что я делаю не так?
-
Скорее всего сделали цикл где-нибудь бесконечный.
Я так один раз написал в один поток который включал-выключал лампы по кругу. Вот тогда 90% проца и выжрало. Выжрало-бы и все, но у меня УД в контейнере. В его ограничения аппетит nod-red и уперся.
-
Сломал Nod-red при попытке установить node-red-contrib-xiaomi-miio.
В драйверах горел зеленным, правила неработали, вебморду Nod-red не открывал.
Перезапуск/Удаление/установка не помогли.
Я раскатал бекап всего IoBroker.
Нужно сделать скрипт на бекапа IoBroker или разобраться с новым драйвером для бекапа.
И разобраться где flow лежат в файлах.
-
Без разницы. Фунционал по логике аналогичен.
Есть небольшие плюшки node-red можно взять нормально написанный кусок, допусти bigtimer
https://tech.scargill.net/big-timer/
и там куча проблемм за вас уже решили. Но если очень хочется, то такое можно и в блокли собрать.
Дополнительная плюшка node-red можно втянуть оборудование которое в iobroker еще нет, а в node-red уже есть. Но и там можно скриптами на js или blokly вкарачиться.
-
Приветствую всех пользователей Node-Red.
Ребята подскажите пожалуйста как в dashboard, менять расположение виджетов, у меня только вертикально все стоят, никак не получается их расположить например горизонтально.
Буду очень признателен за любой ответ.
Спасибо.
!

-
Буду очень признателен за любой ответ.
Спасибо. `
- Честно говоря я с nod-red dashboard еще не разбирался (пока хватает визуализаций завязанных на iobroker (вообще основной у меня habpanel она в iob полностью затащена ).
но у меня в закладках вот такой пример термостата
https://tech.scargill.net/a-thermostat-weekend/
Кажется его можно затащить к себе и посмотреть.
- В шапке есть ссылка на телеграмм канал, там водяться гуру.
-
Нашел пример управления xiaomi пылесосом с уборкой по комнатам
https://flows.nodered.org/flow/6d284006 … 78568f179c
Решил сюда положить, что бы не потерять. Давно хочу сделать кнопки - вызов пылесоса для уборки в комнату.
-
-
ну я думал что выше мы обсуждали 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
-
-
такое лучше всего на канале в телеграмм спрашивать
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
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
