Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. ioBroker драйвера
    5. Node red

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Node red

    This topic has been deleted. Only users with topic management privileges can see it.
    • I
      instalator last edited by

      :roll:

      1 Reply Last reply Reply Quote 0
      • Bluefox
        Bluefox last edited by

        Ты запостил не ВЕСЬ flow. Авторизации не было.

        [{"id":"b2457b04.4dba88","type":"inject","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":110,"y":142,"z":"a3d5aaa9.5c2a58","wires":[["a4b814e9.5b47e8"]]},{"id":"a4b814e9.5b47e8","type":"http request","name":"","method":"GET","ret":"txt","url":"https://www.sistemagorod.ru/lk/","x":430,"y":143,"z":"a3d5aaa9.5c2a58","wires":[["673656c9.98c9a8","892e892.f76d178"]]},{"id":"8aebf8b1.751408","type":"http request","name":"","method":"POST","ret":"txt","url":"","x":429,"y":207,"z":"a3d5aaa9.5c2a58","wires":[["f398e11c.0c672","2e09ba5d.d1f646"]]},{"id":"6d01402.f92fec","type":"http request","name":"","method":"GET","ret":"txt","url":"","x":428,"y":284,"z":"a3d5aaa9.5c2a58","wires":[["3d2f1fc5.c2d0e","7138683e.8ec798"]]},{"id":"f398e11c.0c672","type":"function","name":"Get \"indications\"","func":"if (msg.payload.indexOf('>ok<') != -1) {\n\tmsg.payload = '';\n\tvar parts = msg.headers['set-cookie'][0].split(';');\n\t\n\tmsg.headers = {\n\t    'Host': 'www.sistemagorod.ru',\n\t    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0',\n\t    'Accept': '*/*',\n\t    'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',\n\t    'Accept-Encoding': '',\n\t    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n\t    'X-Requested-With': 'XMLHttpRequest',\n\t    'Referer': 'https://www.sistemagorod.ru/lk/',\n\t    'Cookie': parts[0],\n\t    'Connection': 'keep-alive',\n\t    'Pragma': 'no-cache',\n\t    'Cache-Control': 'no-cache'\n\t};\n\t\n\t//msg.headers.Cookie = msg.headers[0]['set-cookie'],\n\tmsg.url = \"https://www.sistemagorod.ru/lk/indications\";\n\treturn msg;\n}\n","outputs":1,"x":236,"y":284,"z":"a3d5aaa9.5c2a58","wires":[["6d01402.f92fec"]]},{"id":"3d2f1fc5.c2d0e","type":"debug","name":"","active":true,"console":"false","complete":"true","x":636,"y":284,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"673656c9.98c9a8","type":"debug","name":"","active":true,"console":"false","complete":"true","x":632,"y":144,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"2e09ba5d.d1f646","type":"debug","name":"","active":true,"console":"false","complete":"true","x":633,"y":207,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"892e892.f76d178","type":"function","name":"Authenticate","func":"msg.url='https://www.sistemagorod.ru/lk/auth?type-auth=phone&answer-captcha=&phone=xxx&pin=yyyy'\nreturn msg;","outputs":1,"x":257,"y":207,"z":"a3d5aaa9.5c2a58","wires":[["8aebf8b1.751408"]]},{"id":"9d88bc37.62774","type":"debug","name":"","active":true,"console":"false","complete":"payload","x":416,"y":381,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"7138683e.8ec798","type":"function","name":"Extract values","func":"var m = msg.payload.match(/data-previos-reading=\"([\\d.]*)\"/g);\nmsg.payload = [];\nif (m) {\n\tfor (var i = 0; i < m.length; i++) {\n\t\tvar parts = m[i].split('=\"');\n\t\tif (parts.length == 2) {\n\t\t    msg.payload.push(parts[1].replace('\"', ''));\n\t\t}\n\t}\n}\nreturn msg;","outputs":1,"x":241,"y":382,"z":"a3d5aaa9.5c2a58","wires":[["9d88bc37.62774"]]}]
        

        Ещё была ошибка, что "'Accept-Encoding': 'gzip, deflate',"

        И поэтому ты получал зазипованный ответ.

        Я довел до ответа

        [ "375", "7", "7", "1.351" ]
        

        Дальше сам.

        1 Reply Last reply Reply Quote 0
        • I
          instalator last edited by

          @Bluefox:

          Ты запостил не ВЕСЬ flow. Авторизации не было.

          [{"id":"b2457b04.4dba88","type":"inject","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":110,"y":142,"z":"a3d5aaa9.5c2a58","wires":[["a4b814e9.5b47e8"]]},{"id":"a4b814e9.5b47e8","type":"http request","name":"","method":"GET","ret":"txt","url":"https://www.sistemagorod.ru/lk/","x":430,"y":143,"z":"a3d5aaa9.5c2a58","wires":[["673656c9.98c9a8","892e892.f76d178"]]},{"id":"8aebf8b1.751408","type":"http request","name":"","method":"POST","ret":"txt","url":"","x":429,"y":207,"z":"a3d5aaa9.5c2a58","wires":[["f398e11c.0c672","2e09ba5d.d1f646"]]},{"id":"6d01402.f92fec","type":"http request","name":"","method":"GET","ret":"txt","url":"","x":428,"y":284,"z":"a3d5aaa9.5c2a58","wires":[["3d2f1fc5.c2d0e","7138683e.8ec798"]]},{"id":"f398e11c.0c672","type":"function","name":"Get \"indications\"","func":"if (msg.payload.indexOf('>ok<') != -1) {\n\tmsg.payload = '';\n\tvar parts = msg.headers['set-cookie'][0].split(';');\n\t\n\tmsg.headers = {\n\t    'Host': 'www.sistemagorod.ru',\n\t    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0',\n\t    'Accept': '*/*',\n\t    'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',\n\t    'Accept-Encoding': '',\n\t    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n\t    'X-Requested-With': 'XMLHttpRequest',\n\t    'Referer': 'https://www.sistemagorod.ru/lk/',\n\t    'Cookie': parts[0],\n\t    'Connection': 'keep-alive',\n\t    'Pragma': 'no-cache',\n\t    'Cache-Control': 'no-cache'\n\t};\n\t\n\t//msg.headers.Cookie = msg.headers[0]['set-cookie'],\n\tmsg.url = \"https://www.sistemagorod.ru/lk/indications\";\n\treturn msg;\n}\n","outputs":1,"x":236,"y":284,"z":"a3d5aaa9.5c2a58","wires":[["6d01402.f92fec"]]},{"id":"3d2f1fc5.c2d0e","type":"debug","name":"","active":true,"console":"false","complete":"true","x":636,"y":284,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"673656c9.98c9a8","type":"debug","name":"","active":true,"console":"false","complete":"true","x":632,"y":144,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"2e09ba5d.d1f646","type":"debug","name":"","active":true,"console":"false","complete":"true","x":633,"y":207,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"892e892.f76d178","type":"function","name":"Authenticate","func":"msg.url='https://www.sistemagorod.ru/lk/auth?type-auth=phone&answer-captcha=&phone=xxx&pin=yyyy'\nreturn msg;","outputs":1,"x":257,"y":207,"z":"a3d5aaa9.5c2a58","wires":[["8aebf8b1.751408"]]},{"id":"9d88bc37.62774","type":"debug","name":"","active":true,"console":"false","complete":"payload","x":416,"y":381,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"7138683e.8ec798","type":"function","name":"Extract values","func":"var m = msg.payload.match(/data-previos-reading=\"([\\d.]*)\"/g);\nmsg.payload = [];\nif (m) {\n\tfor (var i = 0; i < m.length; i++) {\n\t\tvar parts = m[i].split('=\"');\n\t\tif (parts.length == 2) {\n\t\t    msg.payload.push(parts[1].replace('\"', ''));\n\t\t}\n\t}\n}\nreturn msg;","outputs":1,"x":241,"y":382,"z":"a3d5aaa9.5c2a58","wires":[["9d88bc37.62774"]]}]
          

          Ещё была ошибка, что "'Accept-Encoding': 'gzip, deflate',"

          И поэтому ты получал зазипованный ответ.

          Я довел до ответа

          [ "375", "7", "7", "1.351" ]
          

          Дальше сам. `

          Воу! Спасибо большое!

          1 Reply Last reply Reply Quote 0
          • I
            instalator last edited by

            @Bluefox:

            Ещё была ошибка, что "'Accept-Encoding': 'gzip, deflate',"

            И поэтому ты получал зазипованный ответ.

            Дальше сам. `

            Я все воскресенье убил, вроде что то получатся начало но на выходе кракозябры… теперь понятно в чем ошибка.

            1 Reply Last reply Reply Quote 0
            • I
              instalator last edited by

              Как в node red завести данные датчиков? Выбираю в input IoBroker, переменная передается только когда значение изменяется. Мне нужно получить доступ к текущим показаниям датчика, как эти данные поместить в функцию во время выполения скрипта?

              • еще если переменная изменяется то она запускает скрипт который после этой переменной
              1 Reply Last reply Reply Quote 0
              • Bluefox
                Bluefox last edited by

                @instalator:

                Как в node red завести данные датчиков? Выбираю в input IoBroker, переменная передается только когда значение изменяется. Мне нужно получить доступ к текущим показаниям датчика, как эти данные поместить в функцию во время выполения скрипта?

                • еще если переменная изменяется то она запускает скрипт который после этой переменной `
                  Никак. В этом вся проблема node-red. Он stateless и event triggered.

                Можно только через хак и сохранять значения в context.global (http://nodered.org/docs/writing-functions.html)

                1 Reply Last reply Reply Quote 0
                • I
                  instalator last edited by

                  @Bluefox:

                  @instalator:

                  Как в node red завести данные датчиков? Выбираю в input IoBroker, переменная передается только когда значение изменяется. Мне нужно получить доступ к текущим показаниям датчика, как эти данные поместить в функцию во время выполения скрипта?

                  • еще если переменная изменяется то она запускает скрипт который после этой переменной `
                    Никак. В этом вся проблема node-red. Он stateless и event triggered.

                  Можно только через хак и сохранять значения в context.global (http://nodered.org/docs/writing-functions.html) `
                  Ок. Будем делать через глобальные.

                  msg.Hot_curr = h.substring(0, h.length - 2); выдает ошибку TypeError: Object 722 has no method 'substring' (line 4, col 19)

                  Как обрезать последние два символа в значении?

                  PS Посоветуй литературу почитать по Node red'у

                  1 Reply Last reply Reply Quote 0
                  • I
                    instalator last edited by

                    Пока сделал так:

                     var h = context.global.Hot_curr;
                     h = '' + h;
                     msg.Hot_curr = h.substr(0, h.length - 2);
                     var c = context.global.Cold_curr;
                     c = '' + c;
                     msg.Cold_curr = c.substr(0, c.length - 2)
                    

                    😄

                    1 Reply Last reply Reply Quote 0
                    • Bluefox
                      Bluefox last edited by

                      @instalator:

                      Пока сделал так:

                       var h = context.global.Hot_curr;
                       h = '' + h;
                       msg.Hot_curr = h.substr(0, h.length - 2);
                       var c = context.global.Cold_curr;
                       c = '' + c;
                       msg.Cold_curr = c.substr(0, c.length - 2)
                      

                      😄 `
                      Ну в принципе именно так:

                       var h = context.global.Hot_curr.toString();
                       msg.Hot_curr = h.substr(0, h.length - 2);
                      
                      
                      1 Reply Last reply Reply Quote 0
                      • I
                        instalator last edited by

                        Как происходит взаимодействие из нодрэда с другими драйверами?

                        Например как из нодреда отправить сообщение Pushover.
                        721_fenster_tuer.jpg
                        721_cultuer.jpg
                        721_zwischenstecker.jpg
                        721_direktverbindung.jpg
                        721_wandthermostat.jpg

                        1 Reply Last reply Reply Quote 0
                        • I
                          instalator last edited by

                          Написал условие, переменная меняет свое состояние но клиенту mqtt не уходит команда, что я делаю не так?

                          [{"id":"acda5939.5325a8","type":"ioBroker in","name":"myhome/Bathroom/Humidity_room","topic":"mqtt.0.myhome.Bathroom.Humidity_room","payloadType":"value","x":167,"y":131,"z":"865a081c.79a5f8","wires":[["20e9eada.df1616","207b73cb.df848c"]]},{"id":"ffc2e396.003d2","type":"ioBroker out","name":"myhome/Bathroom/Ventilator","topic":"mqtt.0.myhome.Bathroom.Ventilator","ack":"true","autoCreate":"false","x":677,"y":139,"z":"865a081c.79a5f8","wires":[]},{"id":"20e9eada.df1616","type":"debug","name":"","active":true,"console":"false","complete":"false","x":328,"y":292,"z":"865a081c.79a5f8","wires":[]},{"id":"207b73cb.df848c","type":"function","name":"","func":"if (msg.payload > 56){\n    msg.payload = 1;\n}\nelse {\n     msg.payload = 0;\n}\nreturn msg;","outputs":1,"valid":true,"x":431,"y":127,"z":"865a081c.79a5f8","wires":[["9fe832be.6017d","ffc2e396.003d2"]]},{"id":"9fe832be.6017d","type":"debug","name":"1111111111111111","active":true,"console":"false","complete":"payload","x":609,"y":219,"z":"865a081c.79a5f8","wires":[]}]
                          
                          1 Reply Last reply Reply Quote 0
                          • I
                            instalator last edited by

                            @instalator:

                            Написал условие, переменная меняет свое состояние но клиенту mqtt не уходит команда, что я делаю не так? `
                            Понял в чем была ошибка, нужно было в выводе поставить не value а command.

                            Возникает следующий вопрос.

                            Как написать чтобы данные отсылались только один раз при срабатывание условия а не постоянно слались на клиента?

                            приведенный код срабатывает только раз т.к. flag постоянно устанавливается в 0. В ардуино хорошо можно при инициализации объявить переменные, а как поступить в нодред?

                            var flag = 0;
                            if (msg.payload > 56 && flag === 0){
                                msg.payload = 1;
                                var flag = 1;
                                return msg;
                            }
                            else if (msg.payload < 56 && flag === 1){
                                 msg.payload = 0;
                                 var flag = 0;
                                 return msg;
                            }
                            
                            1 Reply Last reply Reply Quote 0
                            • Bluefox
                              Bluefox last edited by

                              @instalator:

                              @instalator:

                              Написал условие, переменная меняет свое состояние но клиенту mqtt не уходит команда, что я делаю не так? `
                              Понял в чем была ошибка, нужно было в выводе поставить не value а command.

                              Возникает следующий вопрос.

                              Как написать чтобы данные отсылались только один раз при срабатывание условия а не постоянно слались на клиента?

                              приведенный код срабатывает только раз т.к. flag постоянно устанавливается в 0. В ардуино хорошо можно при инициализации объявить переменные, а как поступить в нодред?

                              var flag = 0;
                              if (msg.payload > 56 && flag === 0){
                                  msg.payload = 1;
                                  var flag = 1;
                                  return msg;
                              }
                              else if (msg.payload < 56 && flag === 1){
                                   msg.payload = 0;
                                   var flag = 0;
                                   return msg;
                              }
                              ```` `  
                              

                              Поменяй на

                              if (context.global.flag === undefined) {
                                  context.global.flag = msg.payload > 56;
                              }
                              if (msg.payload > 56 && !context.global.flag){
                                  msg.payload = 1;
                                  context.global.flag= true;
                                  return msg;
                              }
                              else if (msg.payload < 56 && context.global.flag){
                                   msg.payload = 0;
                                   context.global.flag= false;
                                   return msg;
                              }
                              
                              1 Reply Last reply Reply Quote 0
                              • I
                                instalator last edited by

                                @Bluefox:

                                Поменяй на

                                if (context.global.flag === undefined) {
                                    context.global.flag = msg.payload > 56;
                                }
                                if (msg.payload > 56 && !context.global.flag){
                                    msg.payload = 1;
                                    context.global.flag= true;
                                    return msg;
                                }
                                else if (msg.payload < 56 && context.global.flag){
                                     msg.payload = 0;
                                     context.global.flag= false;
                                     return msg;
                                }
                                ```` `  
                                

                                Спасибо заработало. Вчера начинал уже мудрить с глобальными переменными, думал может есть другой способ.

                                Как из нодреда отправить сообщение на Pushover?

                                1 Reply Last reply Reply Quote 0
                                • I
                                  instalator last edited by

                                  @instalator:

                                  Как происходит взаимодействие из нодрэда с другими драйверами?

                                  Например как из нодреда отправить сообщение Pushover. `
                                  Так и не понял как отправить сообщение. Или только через javascript?

                                  1 Reply Last reply Reply Quote 0
                                  • I
                                    instalator last edited by

                                    @Bluefox:

                                    Ну в принципе именно так:

                                     var h = context.global.Hot_curr.toString();
                                     msg.Hot_curr = h.substr(0, h.length - 2);
                                    
                                    ```` `  
                                    

                                    Вроде работал код, сегодня решил проверить ругается на toString. Было обновление?

                                    Добавлено:

                                    Нодред не подхватывает значения счетчиков воды.

                                    От электросчетчика подхватывает.

                                    ! ````
                                    [{"id":"249fe99a.db6016","type":"debug","name":"","active":true,"console":"false","complete":"true","x":701,"y":802,"z":"2c2981e2.d3d67e","wires":[]},{"id":"4ad0b93e.b52f48","type":"function","name":"Текущие показания Холодной воды","func":"context.global.Cold_curr = msg.payload.val;\nreturn msg;","outputs":1,"valid":true,"x":426,"y":789,"z":"2c2981e2.d3d67e","wires":[["249fe99a.db6016"]]},{"id":"c6b46d56.394b9","type":"function","name":"Текущие показания Горячей воды","func":"context.global.Hot_curr = msg.payload.val;\nreturn msg;","outputs":1,"valid":true,"x":420,"y":846,"z":"2c2981e2.d3d67e","wires":[["249fe99a.db6016"]]},{"id":"4c6b878d.b39478","type":"ioBroker in","name":"myhome/Mother/Electro_counter","topic":"mqtt.0.myhome.Mother.Electro_counter","payloadType":"value","x":134,"y":904,"z":"2c2981e2.d3d67e","wires":[["269c6eea.d96392"]]},{"id":"269c6eea.d96392","type":"function","name":"Текущие показания Электросчетчика","func":"context.global.Electro_curr = msg.payload;\nreturn msg;","outputs":1,"valid":true,"x":436,"y":904,"z":"2c2981e2.d3d67e","wires":[[]]},{"id":"fca376ea.035c88","type":"ioBroker in","name":"myhome/Bathroom/Cold_water","topic":"mqtt.0.myhome.Bathroom.Cold_water","payloadType":"value","x":128.5,"y":789,"z":"2c2981e2.d3d67e","wires":[["4ad0b93e.b52f48"]]},{"id":"3729a205.c8d65e","type":"ioBroker in","name":"myhome/Bathroom/Hot_water","topic":"mqtt.0.myhome.Bathroom.Hot_water","payloadType":"value","x":126,"y":846,"z":"2c2981e2.d3d67e","wires":[["c6b46d56.394b9"]]}]

                                    
                                    Добавлено:
                                    
                                    Чудеса, сегодня все работает ок.
                                    1 Reply Last reply Reply Quote 0
                                    • I
                                      instalator last edited by

                                      Как через Node red создать переменную в iobrokere?

                                      1 Reply Last reply Reply Quote 0
                                      • I
                                        instalator last edited by

                                        Node red вообще заглючил.

                                        Завис на http reqest.

                                        Код не подсвечивает.

                                        Перезапустил в логе ошибки

                                        ! node-red-0 2015-06-17 10:49:38 warn
                                        ! node-red-0 2015-06-17 10:49:38 warn 17 Jun 10:49:36 - [warn] –----------------------------------------
                                        ! node-red-0 2015-06-17 10:49:38 warn
                                        ! node-red-0 2015-06-17 10:49:38 warn 17 Jun 10:49:36 - [warn] [redisout] Error: Cannot find module 'redis'
                                        ! node-red-0 2015-06-17 10:49:38 warn
                                        ! node-red-0 2015-06-17 10:49:38 warn 17 Jun 10:49:36 - [warn] [tail] Info : Currently not supported on Windows.
                                        ! node-red-0 2015-06-17 10:49:38 warn 17 Jun 10:49:36 - [warn] [rpi-gpio] Info : Ignoring Raspberry Pi specific node.
                                        ! node-red-0 2015-06-17 10:49:38 warn 17 Jun 10:49:36 - [warn] [arduino] Error: Cannot find module 'arduino-firmata'
                                        ! node-red-0 2015-06-17 10:49:38 warn
                                        ! node-red-0 2015-06-17 10:49:38 warn 17 Jun 10:49:36 - [warn] –----------------------------------------
                                        ! node-red-0 2015-06-17 10:49:36 warn
                                        ! node-red-0 2015-06-17 10:49:36 warn js-bson: Failed to load c++ bson extension, using pure JS version
                                        ! node-red-0 2015-06-17 10:49:36 warn js-bson: Failed to load c++ bson extension, using pure JS version
                                        ! node-red-0 2015-06-17 10:49:36 warn
                                        ! node-red-0 2015-06-17 10:49:36 warn js-bson: Failed to load c++ bson extension, using pure JS version
                                        ! node-red-0 2015-06-17 10:49:34 warn
                                        ! node-red-0 2015-06-17 10:49:34 warn js-bson: Failed to load c++ bson extension, using pure JS version

                                        1 Reply Last reply Reply Quote 0
                                        • B
                                          bondrogeen last edited by

                                          @instalator:

                                          Как через Node red создать переменную в iobrokere? `
                                          Возник тот же вопрос.

                                          В корне получается создать (пример test) , а вот чтобы добавить сразу топик нет (пример stat/test)

                                          И вообще где можно почитать про создание переменных "для чайников" в iobroker?

                                          1 Reply Last reply Reply Quote 0
                                          • I
                                            instalator last edited by

                                            @bondrogeen:

                                            Возник тот же вопрос.

                                            В корне получается создать (пример test) , а вот чтобы добавить сразу топик нет (пример stat/test)

                                            И вообще где можно почитать про создание переменных "для чайников" в iobroker? А если так - stat.test ? > И вообще где можно почитать про создание переменных "для чайников" в iobroker? `
                                            В JS например так - createState('Climat.Mode_Pritochka_GuestRoom', '');

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            738
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            74
                                            17869
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo