NEWS
Node-RED примеры, решения и и вопросы. Общая тема по Node-RED
- 
					
					
					
					
 Есть управление поливом. В адаптере Wrapper создана логическая переменная которая хранит состояния включен или нет полив оп расписанию. ` 
 А выложите пожалуйста код для импорта.У меня как-то потери состояния при работе не было. Была проблема некой потери состояния после перезагрузки (как писали выше). Решил добавлением таймера раз в сутки переводящего систему к некому дефолтному состоянию. 
- 
					
					
					
					
 
- 
					
					
					
					
 Я выполнил в node-red некие действия, например перевёл давление из "Pa" в "мм.рт.ст.". Как теперь это передать в визуализацию? 
- 
					
					
					
					
 Ну я бы сделал переменную (драйвером wrapper), засунул туда эти данные и вывел эту переменную в визуализации. Только я vis (если мы говорим о нем?) давно не трогал, так-что подробностей и не знаю. 
- 
					
					
					
					
 Ну я бы сделал переменную (драйвером wrapper), засунул туда эти данные и вывел эту переменную в визуализации. Только я vis (если мы говорим о нем?) давно не трогал, так-что подробностей и не знаю. ` Как переменную сделать допёр. Теперь не могу разобраться как тупо умножить. Получаю с датчика значение 998.7 Паскаль, и чтоб оно стало в мм.рт.ст его надо умножить на 0.0075. Ни одного арифметического блока в дефолтом node-red не нашел. Плохо искал? Или надо кодом писать в function блоке? Что делать? Не ожидал даже, что в таком "могучем" инструменте даже тупо арифметических операций не будет. 
- 
					
					
					
					
 Управление группой света 1)выключить - 
включить режим луна 
- 
включить режим солнце 
 Задействовано оборудование круглая кнопка xiaomi Светильники Yeelight потолочный Yeelight LED Ceiling Light YLXD01YL Используется драйвер https://github.com/instalator/ioBroker. … /README.md  [ { "id": "5440070e.a98c88", "type": "ioBroker in", "z": "7fff3d8b.bd9ff4", "name": "Simple click", "topic": "mihome.0.devices.switch_158d0001872244.click", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 130, "y": 380, "wires": [ [ "d6c773a0.7738b" ] ] }, { "id": "e72bf068.cafd2", "type": "ioBroker in", "z": "7fff3d8b.bd9ff4", "name": "Double click", "topic": "mihome.0.devices.switch_158d0001872244.double", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 130, "y": 468, "wires": [ [ "1baa02bf.0d4315" ] ] }, { "id": "85dc2b3b.251138", "type": "ioBroker in", "z": "7fff3d8b.bd9ff4", "name": "Long click", "topic": "mihome.0.devices.switch_158d0001872244.long", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 120, "y": 567, "wires": [ [ "73c35d8a.8efe5c" ] ] }, { "id": "b52f85be.c962f", "type": "comment", "z": "7fff3d8b.bd9ff4", "name": "круглая кнопка xiaomi", "info": "", "x": 160, "y": 320, "wires": [] }, { "id": "d781ec34.3ae4c", "type": "comment", "z": "7fff3d8b.bd9ff4", "name": "Управление группой света 1)выключить 2) включить режим луна 3) включить режим солнце", "info": "\n", "x": 380, "y": 40, "wires": [] }, { "id": "894d81d.adbdb", "type": "ioBroker out", "z": "7fff3d8b.bd9ff4", "name": "power", "topic": "yeelight.1.ceiling1_0x0000000004a0a609.power", "ack": "false", "autoCreate": "false", "x": 1060, "y": 320, "wires": [] }, { "id": "e22a733.39dac1", "type": "ioBroker out", "z": "7fff3d8b.bd9ff4", "name": "power", "topic": "yeelight.1.ceiling1_0x00000000049f0661.power", "ack": "false", "autoCreate": "false", "x": 1060, "y": 400, "wires": [] }, { "id": "544c33de.862234", "type": "ioBroker out", "z": "7fff3d8b.bd9ff4", "name": "power", "topic": "yeelight.1.ceiling1_0x00000000049f02fe.power", "ack": "false", "autoCreate": "false", "x": 1060, "y": 480, "wires": [] }, { "id": "d3986cde.c6773", "type": "ioBroker out", "z": "7fff3d8b.bd9ff4", "name": "power", "topic": "yeelight.1.ceiling1_0x00000000049e05e5.power", "ack": "false", "autoCreate": "false", "x": 1060, "y": 560, "wires": [] }, { "id": "f8b857a1.158108", "type": "ioBroker out", "z": "7fff3d8b.bd9ff4", "name": "Current flow parameters", "topic": "yeelight.1.ceiling1_0x0000000004a0a609.flow_params", "ack": "false", "autoCreate": "false", "x": 1350, "y": 320, "wires": [] }, { "id": "dbbd1e59.4e6c8", "type": "ioBroker out", "z": "7fff3d8b.bd9ff4", "name": "Current flow parameters", "topic": "yeelight.1.ceiling1_0x00000000049e05e5.flow_params", "ack": "false", "autoCreate": "false", "x": 1350, "y": 560, "wires": [] }, { "id": "b0e46ba0.37bf6", "type": "ioBroker out", "z": "7fff3d8b.bd9ff4", "name": "Current flow parameters", "topic": "yeelight.1.ceiling1_0x00000000049f02fe.flow_params", "ack": "false", "autoCreate": "false", "x": 1350, "y": 480, "wires": [] }, { "id": "119ba07a.50523", "type": "ioBroker out", "z": "7fff3d8b.bd9ff4", "name": "Current flow parameters", "topic": "yeelight.1.ceiling1_0x00000000049f0661.flow_params", "ack": "false", "autoCreate": "false", "x": 1350, "y": 400, "wires": [] }, { "id": "d6c773a0.7738b", "type": "switch", "z": "7fff3d8b.bd9ff4", "name": "only true can go ", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "true", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 360, "y": 380, "wires": [ [ "d6b53238.48d288", "fc9633c8.308d2" ] ] }, { "id": "1baa02bf.0d4315", "type": "switch", "z": "7fff3d8b.bd9ff4", "name": "only true can go ", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "true", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 360, "y": 468, "wires": [ [ "e7b86f9f.7b3728", "aa727b2c.3939e" ] ] }, { "id": "73c35d8a.8efe5c", "type": "switch", "z": "7fff3d8b.bd9ff4", "name": "only true can go ", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "true", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 360, "y": 567, "wires": [ [ "31f38560.a65d12", "ea64a0fd.0f9f98" ] ] }, { "id": "d6b53238.48d288", "type": "debug", "z": "7fff3d8b.bd9ff4", "name": "Simple click", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 353, "y": 340, "wires": [] }, { "id": "e7b86f9f.7b3728", "type": "debug", "z": "7fff3d8b.bd9ff4", "name": "Double click", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 350, "y": 420, "wires": [] }, { "id": "31f38560.a65d12", "type": "debug", "z": "7fff3d8b.bd9ff4", "name": "Long click", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 340, "y": 520, "wires": [] }, { "id": "fc9633c8.308d2", "type": "change", "z": "7fff3d8b.bd9ff4", "name": "turn light off", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "false", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 590, "y": 380, "wires": [ [ "894d81d.adbdb", "e22a733.39dac1", "544c33de.862234", "d3986cde.c6773" ] ] }, { "id": "439afe3c.5352e", "type": "comment", "z": "7fff3d8b.bd9ff4", "name": "превращаем true в bolean false", "info": "", "x": 650, "y": 340, "wires": [] }, { "id": "aa727b2c.3939e", "type": "change", "z": "7fff3d8b.bd9ff4", "name": "turn light to moon", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "0,0,50,2,3700,80", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 610, "y": 460, "wires": [ [ "f8b857a1.158108", "119ba07a.50523", "b0e46ba0.37bf6", "dbbd1e59.4e6c8" ] ] }, { "id": "ea64a0fd.0f9f98", "type": "change", "z": "7fff3d8b.bd9ff4", "name": "turn light to sun", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "0,0,50,2,5000,100", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 600, "y": 560, "wires": [ [ "f8b857a1.158108", "119ba07a.50523", "b0e46ba0.37bf6", "dbbd1e59.4e6c8" ] ] }, { "id": "98426a9a.a712c", "type": "comment", "z": "7fff3d8b.bd9ff4", "name": "включаем режим луна", "info": "", "x": 620, "y": 420, "wires": [] }, { "id": "c0960107.f2008", "type": "comment", "z": "7fff3d8b.bd9ff4", "name": "включаем режим полдень", "info": "", "x": 630, "y": 520, "wires": [] }, { "id": "9a76c0d3.c7a1e8", "type": "comment", "z": "7fff3d8b.bd9ff4", "name": "Задействовано оборудование круглая кнопка xiaomi Светильники Yeelight потолочный Yeelight LED Ceiling Light YLXD01YL ", "info": "", "x": 480, "y": 100, "wires": [] }, { "id": "b973accd.4af44", "type": "comment", "z": "7fff3d8b.bd9ff4", "name": "Используется драйвер https://github.com/instalator/ioBroker.yeelight/blob/master/README.md", "info": "", "x": 380, "y": 160, "wires": [] }, { "id": "76b49a5.f473de4", "type": "comment", "z": "7fff3d8b.bd9ff4", "name": "подсказка внутри", "info": "Управление группой света \n1)выключить \n2) включить режим луна \n3) включить режим солнце\nЗадействовано оборудование круглая кнопка xiaomi\nСветильники Yeelight потолочный Yeelight LED Ceiling Light YLXD01YL\nИспользуется драйвер https://github.com/instalator/ioBroker.yeelight/blob/master/README.md", "x": 1110, "y": 60, "wires": [] }, { "id": "7e61c1e5.5ebcc", "type": "comment", "z": "7fff3d8b.bd9ff4", "name": "светильник 1", "info": "", "x": 1170, "y": 280, "wires": [] }, { "id": "5fcccd6b.2d7fdc", "type": "comment", "z": "7fff3d8b.bd9ff4", "name": "светильник 2", "info": "", "x": 1170, "y": 360, "wires": [] }, { "id": "3315c98c.83773e", "type": "comment", "z": "7fff3d8b.bd9ff4", "name": "светильник 3", "info": "", "x": 1170, "y": 440, "wires": [] }, { "id": "df869751.9b2b4", "type": "comment", "z": "7fff3d8b.bd9ff4", "name": "светильник 4", "info": "", "x": 1170, "y": 520, "wires": [] } ]
- 
- 
					
					
					
					
 Ну я бы сделал переменную (драйвером wrapper), засунул туда эти данные и вывел эту переменную в визуализации. Только я vis (если мы говорим о нем?) давно не трогал, так-что подробностей и не знаю. ` Как переменную сделать допёр. Теперь не могу разобраться как тупо умножить. Получаю с датчика значение 998.7 Паскаль, и чтоб оно стало в мм.рт.ст его надо умножить на 0.0075. Ни одного арифметического блока в дефолтом node-red не нашел. Плохо искал? Или надо кодом писать в function блоке? Что делать? Не ожидал даже, что в таком "могучем" инструменте даже тупо арифметических операций не будет. ` Да, писать кодом в блоке. Можно и умножить, и поделить, и отнять… 
- 
					
					
					
					
 Математика вроде и в кубиках была, но найти я ее не смог… 
- 
					
					
					
					
 Математика вроде и в кубиках была, но найти я ее не смог… ` Они есть, но как дополнения. Можно поиском найти, прочесть описание, установить функциональный "кубик". Но… Это не наш метод. Привык делать по максимуму из стоковых средств. Как? Напишу чуть позже. 
- 
					
					
					
					
 Арифметические операции в 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, менять расположение виджетов, у меня только вертикально все стоят, никак не получается их расположить например горизонтально. Буду очень признателен за любой ответ. Спасибо. !  
 
		
	 
		
	