Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. Скрипты
  5. node-red Скрипты (flows)
  6. Node-RED примеры, решения и и вопросы. Общая тема по Node-RED

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

Node-RED примеры, решения и и вопросы. Общая тема по Node-RED

Geplant Angeheftet Gesperrt Verschoben node-red Скрипты (flows)
85 Beiträge 16 Kommentatoren 75.6k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    Sergey777
    schrieb am zuletzt editiert von
    #14

    Приобрёл я как-то датчики открытия двери Door Sensor Aqara MCCGQ11LM (https://mysku.ru/blog/china-stores/54257.html), установил. Так как мы тут обсуждаем альтернативную систему умного дома, то завёл датчики в NODE-RED iobroker'a. Мне нужно было получать оповещения, когда дверь открывается и закрывается. Отправку этих оповещений я реализовал через WebHook, но Вы можете отправить их куда угодно, например в Telegramm.

    ! Небольшое отступление:
    ! У меня есть NAS бренда https://www.synology.com/ru-ru, а для операционной системы https://www.synology.com/ru-ru/dsm/live_demo, которая работает в NAS, есть приложение https://www.synology.com/ru-ru/dsm/feature/chat - это такой чатик, типа WhatsApp или Telegramm, но слегка по проще, поднятый на своём собственном NAS, имеет приложения для Windows, IOS, Android и просто работает через web браузер. Я решил получать оповещения именно в этот чат, так как в семье активно им пользуемся.
    ! У данного чата есть возможность принимать сообщения WebHook и передавать их определённому пользователю или группе(каналу). Собственно отправку WebHook я и реализовал в NODE-RED. Кроме отправки уведомлений, я отправляю команду камере, камера по этой команде делает серию скринов, которые потом можно просмотреть.
    Но вскоре меня ждал сюрприз, о котором нигде я не смог найти информации. Как оказалось Door Sensor постоянно шлёт контрольный сигнал со статусом последнего события. Мои датчики шлют false или true каждые 50 минут 15 сек +/- 10 сек. Если дверь закрыта и состояние false, то каждые 50 минут прилетает false. Если было последнее событие true, то каждые 50 минут присылает true. Таким образом датчик говорит нам, что он тут, он работает, сигнал доходит, всё нормально. Ну раз так, то придётся использовать это во благо. И так, представляю свой алгоритм:
    5574_doorsensor.png

    ! [ { "id": "1aeb151d.c59e5b", "type": "debug", "z": "84c517f4.99a9d8", "name": "Door Sensor Status", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 1150, "y": 520, "wires": [] }, { "id": "9d4c980c.2ae028", "type": "ioBroker in", "z": "84c517f4.99a9d8", "name": "Дверь: Is opened", "topic": "mihome.0.devices.magnet_158d000204a13f.state", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 100, "y": 100, "wires": [ [ "ee85c4c6.465928", "cdead55f.15fd68", "8f07a637.ea61d8", "60b595ae.188ecc" ] ] }, { "id": "ee85c4c6.465928", "type": "rbe", "z": "84c517f4.99a9d8", "name": "", "func": "rbe", "gap": "", "start": "", "inout": "out", "property": "payload", "x": 230, "y": 520, "wires": [ [ "bf1f32e6.64566" ] ] }, { "id": "f95f7441.dbefd8", "type": "inject", "z": "84c517f4.99a9d8", "name": "", "topic": "", "payload": "true", "payloadType": "str", "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "x": 90, "y": 500, "wires": [ [ "ee85c4c6.465928" ] ] }, { "id": "1fd5e312.859f5d", "type": "inject", "z": "84c517f4.99a9d8", "name": "", "topic": "", "payload": "false", "payloadType": "str", "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "x": 90, "y": 540, "wires": [ [ "ee85c4c6.465928" ] ] }, { "id": "c8540540.ae8f58", "type": "debug", "z": "84c517f4.99a9d8", "name": "Alarm!!!", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 1180, "y": 140, "wires": [] }, { "id": "cdead55f.15fd68", "type": "trigger", "z": "84c517f4.99a9d8", "op1": "", "op2": "Датчик потерян!!!", "op1type": "nul", "op2type": "str", "duration": "51", "extend": true, "units": "min", "reset": "", "bytopic": "all", "name": "", "x": 310, "y": 160, "wires": [ [ "43366ff3.584b9", "e4dac972.f0da88", "1af60a78.c2b8f6" ] ] }, { "id": "8f07a637.ea61d8", "type": "debug", "z": "84c517f4.99a9d8", "name": "Все статусы двери", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 1150, "y": 100, "wires": [] }, { "id": "4af07332.c31ebc", "type": "http request", "z": "84c517f4.99a9d8", "name": "Открыта дверь", "method": "POST", "ret": "txt", "url": "https://mydomen.com/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=mytokenlongmytokenlooong&payload={\"text\": \":negative_squared_cross_mark: Открыта дверь {{{timestamp}}}\"}", "tls": "", "x": 940, "y": 500, "wires": [ [ "1aeb151d.c59e5b" ] ] }, { "id": "e871555e.9092c8", "type": "http request", "z": "84c517f4.99a9d8", "name": "Закрыта дверь", "method": "POST", "ret": "txt", "url": "https://mydomen.com/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=mytokenlongmytokenlooong&payload={\"text\": \":white_check_mark: Закрыта дверь {{{timestamp}}}\"}", "tls": "", "x": 940, "y": 540, "wires": [ [ "1aeb151d.c59e5b" ] ] }, { "id": "d89df571.d12d58", "type": "change", "z": "84c517f4.99a9d8", "name": "Door Opened", "rules": [ { "t": "set", "p": "DOOR_SENSOR_VHOD_STATUS", "pt": "flow", "to": "true", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 580, "y": 500, "wires": [ [ "fc67fce9.c5769", "c0483154.d949" ] ] }, { "id": "9b119486.99ec68", "type": "change", "z": "84c517f4.99a9d8", "name": "Door Closed", "rules": [ { "t": "set", "p": "DOOR_SENSOR_VHOD_STATUS", "pt": "flow", "to": "false", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 590, "y": 540, "wires": [ [ "9adfd17e.42ebe", "c0483154.d949" ] ] }, { "id": "bf1f32e6.64566", "type": "switch", "z": "84c517f4.99a9d8", "name": "Делим состояния", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "true", "vt": "str" }, { "t": "eq", "v": "false", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 390, "y": 520, "wires": [ [ "d89df571.d12d58" ], [ "9b119486.99ec68" ] ] }, { "id": "8f3fa46.4374758", "type": "http request", "z": "84c517f4.99a9d8", "name": "Тревога!!", "method": "POST", "ret": "txt", "url": "https://mydomen.com/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=mytokenlongmytokenlooong&payload={\"text\": \":warning:\\nДатчик входной двери не отвечает!!!\\nСостояние не будет отображаться.\\nПроверьте датчик!\\n{{{timestamp}}}\\n*****\"}", "tls": "", "x": 960, "y": 140, "wires": [ [ "c8540540.ae8f58" ] ] }, { "id": "43366ff3.584b9", "type": "debug", "z": "84c517f4.99a9d8", "name": "Alarm 1!!!", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 1180, "y": 180, "wires": [] }, { "id": "60b595ae.188ecc", "type": "change", "z": "84c517f4.99a9d8", "name": "alarm_reset", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "reset_alarm_message_resend", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 350, "y": 400, "wires": [ [ "a140ee35.eb306" ] ] }, { "id": "e4dac972.f0da88", "type": "delay", "z": "84c517f4.99a9d8", "name": "", "pauseType": "delay", "timeout": "2", "timeoutUnits": "hours", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "x": 380, "y": 280, "wires": [ [ "a140ee35.eb306" ] ] }, { "id": "a140ee35.eb306", "type": "trigger", "z": "84c517f4.99a9d8", "op1": "", "op2": "Датчик потерян!!!", "op1type": "pay", "op2type": "str", "duration": "-2", "extend": true, "units": "hr", "reset": "reset_alarm_message_resend", "bytopic": "all", "name": "", "x": 570, "y": 280, "wires": [ [ "633cd7fc.a57828" ] ] }, { "id": "c2a947ee.7a9ba8", "type": "debug", "z": "84c517f4.99a9d8", "name": "Повтор сообщения", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 1140, "y": 280, "wires": [] }, { "id": "93e5590d.d5f328", "type": "comment", "z": "84c517f4.99a9d8", "name": "Если от Door Sensor нет ни одного сообщения в течение 51 минуты, шлём сообщение об аварии", "info": "", "x": 370, "y": 60, "wires": [] }, { "id": "e3926866.fb3ef8", "type": "comment", "z": "84c517f4.99a9d8", "name": "Если после отсылки аварийного сообщения снова нет сообщений от Door Sensor, то повторяем отправку аварийного сообщения через два часа и каждые два часа", "info": "", "x": 560, "y": 240, "wires": [] }, { "id": "74aa47b.7cba4b8", "type": "comment", "z": "84c517f4.99a9d8", "name": "Если какое-либо сообщение от Door Sensor пришло, считаем что всё в порядке и сбрасываем повторную отправку аварийных сообщений", "info": "", "x": 480, "y": 360, "wires": [] }, { "id": "8c3f52d4.a0dd2", "type": "http request", "z": "84c517f4.99a9d8", "name": "Тревога повторно!", "method": "POST", "ret": "txt", "url": "https://mydomen.com/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=mytokenlongmytokenlooong&payload={\"text\": \":exclamation: :warning: :exclamation:\\nALARM!!!\\nДатчик входной двери не отвечает!!!\\nСостояние не будет отображаться.\\nПроверьте датчик!\\n{{{timestamp}}}\\n*****\"}", "tls": "", "x": 930, "y": 280, "wires": [ [ "c2a947ee.7a9ba8" ] ] }, { "id": "f18c64e0.259e88", "type": "comment", "z": "84c517f4.99a9d8", "name": "При каждом изменении состояния Door Sensor отправляем сообщение ", "info": "", "x": 260, "y": 460, "wires": [] }, { "id": "c0483154.d949", "type": "http request", "z": "84c517f4.99a9d8", "name": "Команда камере", "method": "POST", "ret": "txt", "url": "https://mysurveillancedomen.com/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method=\"Trigger\"&version=1&eventId=1&eventName=\"This is external event1\"&account=\"root\"&password=\"123456\"", "tls": "", "x": 810, "y": 660, "wires": [ [] ] }, { "id": "1af60a78.c2b8f6", "type": "function", "z": "84c517f4.99a9d8", "name": "FormatTime", "func": "var now = new Date(); \nvar year = now.getFullYear();\nvar month = now.getMonth()+1; \nvar day = now.getDate();\nvar hour = now.getHours();\nvar minute = now.getMinutes();\nvar second = now.getSeconds(); \nif(month.toString().length == 1) {\nvar month = '0'+month;\n}\nif(day.toString().length == 1) {\nvar day = '0'+day;\n} \nif(hour.toString().length == 1) {\nvar hour = '0'+hour;\n}\nif(minute.toString().length == 1) {\nvar minute = '0'+minute;\n}\nif(second.toString().length == 1) {\nvar second = '0'+second;\n} \nmsg.timestamp = hour+':'+minute+':'+second+' '+day+'.'+month+'.'+year;\nreturn msg;", "outputs": 1, "noerr": 0, "x": 810, "y": 140, "wires": [ [ "8f3fa46.4374758" ] ] }, { "id": "9adfd17e.42ebe", "type": "function", "z": "84c517f4.99a9d8", "name": "FormatTime", "func": "var now = new Date(); \nvar year = now.getFullYear();\nvar month = now.getMonth()+1; \nvar day = now.getDate();\nvar hour = now.getHours();\nvar minute = now.getMinutes();\nvar second = now.getSeconds(); \nif(month.toString().length == 1) {\nvar month = '0'+month;\n}\nif(day.toString().length == 1) {\nvar day = '0'+day;\n} \nif(hour.toString().length == 1) {\nvar hour = '0'+hour;\n}\nif(minute.toString().length == 1) {\nvar minute = '0'+minute;\n}\nif(second.toString().length == 1) {\nvar second = '0'+second;\n} \n//msg.timestamp = hour+':'+minute+':'+second+' '+day+'.'+month+'.'+year;\n//msg.timestamp = hour+':'+minute+':'+second+' '+day+'.'+month+'.'+year;\n//msg.timestamp = hour+'ч'+minute+'м'+second+'c';\nmsg.timestamp = hour+':'+minute+':'+second;\nreturn msg;", "outputs": 1, "noerr": 0, "x": 770, "y": 540, "wires": [ [ "e871555e.9092c8" ] ] }, { "id": "fc67fce9.c5769", "type": "function", "z": "84c517f4.99a9d8", "name": "FormatTime", "func": "var now = new Date(); \nvar year = now.getFullYear();\nvar month = now.getMonth()+1; \nvar day = now.getDate();\nvar hour = now.getHours();\nvar minute = now.getMinutes();\nvar second = now.getSeconds(); \nif(month.toString().length == 1) {\nvar month = '0'+month;\n}\nif(day.toString().length == 1) {\nvar day = '0'+day;\n} \nif(hour.toString().length == 1) {\nvar hour = '0'+hour;\n}\nif(minute.toString().length == 1) {\nvar minute = '0'+minute;\n}\nif(second.toString().length == 1) {\nvar second = '0'+second;\n} \n//msg.timestamp = hour+':'+minute+':'+second+' '+day+'.'+month+'.'+year;\n//msg.timestamp = hour+':'+minute+':'+second+' '+day+'.'+month+'.'+year;\n//msg.timestamp = hour+'ч'+minute+'м'+second+'c';\nmsg.timestamp = hour+':'+minute+':'+second;\nreturn msg;", "outputs": 1, "noerr": 0, "x": 770, "y": 500, "wires": [ [ "4af07332.c31ebc" ] ] }, { "id": "633cd7fc.a57828", "type": "function", "z": "84c517f4.99a9d8", "name": "FormatTime", "func": "var now = new Date(); \nvar year = now.getFullYear();\nvar month = now.getMonth()+1; \nvar day = now.getDate();\nvar hour = now.getHours();\nvar minute = now.getMinutes();\nvar second = now.getSeconds(); \nif(month.toString().length == 1) {\nvar month = '0'+month;\n}\nif(day.toString().length == 1) {\nvar day = '0'+day;\n} \nif(hour.toString().length == 1) {\nvar hour = '0'+hour;\n}\nif(minute.toString().length == 1) {\nvar minute = '0'+minute;\n}\nif(second.toString().length == 1) {\nvar second = '0'+second;\n} \nmsg.timestamp = hour+':'+minute+':'+second+' '+day+'.'+month+'.'+year;\nreturn msg;", "outputs": 1, "noerr": 0, "x": 750, "y": 280, "wires": [ [ "8c3f52d4.a0dd2" ] ] }, { "id": "605ffa0e.d692d4", "type": "comment", "z": "84c517f4.99a9d8", "name": "При открытии\\закрытии двери отправляем камере команду \"делать скриншоты\"", "info": "", "x": 810, "y": 620, "wires": [] } ] !
    Как это работает? Так: приходит true или false от датчика открытия двери. Поступает на trigger и на блок rbe. Trigger начинает отсчитывать 51 минуту. Если за это время не поступит ни одного сообщения от датчика - триггер сработает и отправит аварийное сообщение. Блок rbe просто следит за состоянием, если состояние сменилось на противоположное - он передаёт сигнал дальше, если состояние не меняется, например постоянно прилетает false или true - он не реагирует (нужно его так настроить). При изменении состояния сигнал проходит на блок switch, разделяется на два канала, один true, другой false и далее уходит на блок change, на блок function, где привожу дату/время в удобный вид(об этом писал в посту выше) и далее POST запросом отправляется в WebHook.

    Блок delay делает задержку на 2 часа, а следующий блок resend будет отправлять сообщение об аварии каждые 2 часа, пока от датчика не появится первый сигнал, который через alarm_reset сбросит триггер resend.

    ! А вот примерно так сообщения выглядят на мобильнике:
    5574_chat.png
    Там в примерах, в ссылках WebHook, в полезной нагрузке(сообщении), прописаны коды смайлов. Ну так, чтоб в заблуждение не ввело никого.
    Ну как-то так.

    ****<size size="150">________________

    Upd</size>.****

    1. На текущий момент есть поправки к описанному. Отправка кириллических символов может не работать, тут я написал как переделать: viewtopic.php?f=48&t=11969&p=228313#p228313

    2. Вскоре после написания данного топика прилетели обновы, и то, что я считал фитчей приравняли к багу, и устранили его. То есть ранее каждые 51 минуту отсылалось сообщение с последним статусом датчика. Посчитали это не верным и переделали. Теперь сообщение со статусом отсылается только при смене статуса, и никак иначе, что логично. А так называемый https://ru.wikipedia.org/wiki/Heartbeat-%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5, теперь отправляется всё с тем же интервалом, но не отдельным сигналом, а состоянием батарей. Таким образом, чтобы понять жив ли датчик, нужно мониторить сигнал напряжения батареи или процент заряда батареи. Если эти данные приходят каждые 51 минуту(интервал именно моих датчиков), значит они работоспособны. Если сигнал не пришёл, значит что-то не так.

    1 Antwort Letzte Antwort
    0
    • O Offline
      O Offline
      OlegJktu
      schrieb am zuletzt editiert von
      #15

      спасибо что отписались.

      У меня флоу ловил только состояние открыто от герконов, я как-то и не видел, что пульс жизни от датчиков постоянно идет.

      Видимо датчики движения тоже пульс будут слать.

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        Sergey777
        schrieb am zuletzt editiert von
        #16

        @OlegJktu:

        Видимо датчики движения тоже пульс будут слать. `
        Каждые три минуты.

        1 Antwort Letzte Antwort
        0
        • Y Offline
          Y Offline
          Yurech
          schrieb am zuletzt editiert von
          #17

          @Sergey777:

          @OlegJktu:

          Видимо датчики движения тоже пульс будут слать. Каждые три минуты.
          А можно как то изменить для датчика двери интервал отправки статуса например не 50 мин. а 15мин?

          1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            Sergey777
            schrieb am zuletzt editiert von
            #18

            @Yurech:

            А можно как то изменить для датчика двери интервал отправки статуса например не 50 мин. а 15мин? `
            На данный момент, боюсь, что нет. Это нужно менять прошивку датчика. Я даже незнаю как это делается, по воздуху, или же нужно разбирать и подпаявыться к контроллеру. Опять же нужно эту прошивку написать. Я пока не встречал такого.

            1 Antwort Letzte Antwort
            0
            • GavrikG Offline
              GavrikG Offline
              Gavrik
              schrieb am zuletzt editiert von
              #19

              Добрый день, прошу сильно не пинать новичка :)

              Есть управление поливом.

              В адаптере Wrapper создана логическая переменная которая хранит состояния включен или нет полив оп расписанию.

              ! 7522_2018_06_09_19_33_17_objects_iobroker.png

              В визуализации есть переключатель который управляет этой логической переменной.

              ! 7522_2018_06_09_19_30_35_transmission_remote_gui.png

              В Node-Red создаем расписание для запуска полива и проверяем включен или нет автоматический полив.

              ! 7522_2018_06_09_19_43_54_node_red_192.168.13.232.png

              Проблема в том что в Node-Red через какое то небольшое время теряется состояние переменной "автоматический полив", соответственно результат логического сложения получается вот таким :

              ! 7522_2018_06_09_19_32_36_node_red_192.168.13.232.png

              В самой визуализации переменная читается, а в вот в Node-Red нет.

              Что делаю не правильно ? Ее нужно принудительно читать еще раз ?

              Если поклацать переключатель на визуализации - она оживает (переменная)

              1 Antwort Letzte Antwort
              0
              • S Offline
                S Offline
                Sergey777
                schrieb am zuletzt editiert von
                #20

                @Gavrik:

                Если поклацать переключатель на визуализации - она оживает (переменная) `
                Точно сказать не могу. Но из опыта роботы с Node-RED - он сам нифига не считывает, ему надо это принудительно сделать. После того как обновили состояние переменных - он их помнит всегда, пока работает.Если на какой-либо страничке (вкладке, Flow) Вы нажали "Deploy" - вся node-red сбрасывается(перезагружается) и состояния переменных и сенсоров снова становятся неопределёнными. У меня, например перестаёт работать логика, пока вручную не по щёлкаю сенсоры.

                А если отладить, запустить, и потом ничего не трогать, не перезагружать систему, не выключать систему, то всё работает бесконечно долго, включая статусы переменных, пока не произойдёт какой-либо аварийный сбой.

                Так что когда отладите полностью систему и запустите в постоянную работу, обновите состояние всех нужных переменных и кусков кода, и потом оно будет всегда работать, пока что-то не перезапустите сами.

                1 Antwort Letzte Antwort
                0
                • GavrikG Offline
                  GavrikG Offline
                  Gavrik
                  schrieb am zuletzt editiert von
                  #21

                  @Sergey777:

                  Так что когда отладите полностью систему и запустите в постоянную работу, обновите состояние всех нужных переменных и кусков кода, и потом оно будет всегда работать, пока что-то не перезапустите сами. `
                  Не есть это хорошо… :(
                  @Sergey777:

                  Но из опыта роботы с Node-RED - он сам нифига не считывает, ему надо это принудительно сделать `
                  Есть какой то способ заставить его прочитать переменную ?

                  1 Antwort Letzte Antwort
                  0
                  • GavrikG Offline
                    GavrikG Offline
                    Gavrik
                    schrieb am zuletzt editiert von
                    #22

                    В принципе костыль нашелся…. Но как то это не есть хорошо :(

                    7522_2018_06_10_18_02_22_node_red_192.168.13.232.png

                    1 Antwort Letzte Antwort
                    0
                    • O Offline
                      O Offline
                      OlegJktu
                      schrieb am zuletzt editiert von
                      #23

                      @Gavrik:

                      Есть управление поливом.

                      В адаптере Wrapper создана логическая переменная которая хранит состояния включен или нет полив оп расписанию. `
                      А выложите пожалуйста код для импорта.

                      У меня как-то потери состояния при работе не было.

                      Была проблема некой потери состояния после перезагрузки (как писали выше). Решил добавлением таймера раз в сутки переводящего систему к некому дефолтному состоянию.

                      1 Antwort Letzte Antwort
                      0
                      • GavrikG Offline
                        GavrikG Offline
                        Gavrik
                        schrieb am zuletzt editiert von
                        #24

                        @OlegJktu:

                        @Gavrik:

                        Есть управление поливом.

                        В адаптере Wrapper создана логическая переменная которая хранит состояния включен или нет полив оп расписанию. А выложите пожалуйста код для импорта.
                        Да переделал уже как на картинке выше, просто дополнительно запрашивается состояние переменной и все.

                        1 Antwort Letzte Antwort
                        0
                        • S Offline
                          S Offline
                          Sergey777
                          schrieb am zuletzt editiert von
                          #25

                          Я выполнил в node-red некие действия, например перевёл давление из "Pa" в "мм.рт.ст.". Как теперь это передать в визуализацию?

                          1 Antwort Letzte Antwort
                          0
                          • O Offline
                            O Offline
                            OlegJktu
                            schrieb am zuletzt editiert von
                            #26

                            Ну я бы сделал переменную (драйвером wrapper), засунул туда эти данные и вывел эту переменную в визуализации.

                            Только я vis (если мы говорим о нем?) давно не трогал, так-что подробностей и не знаю.

                            1 Antwort Letzte Antwort
                            0
                            • S Offline
                              S Offline
                              Sergey777
                              schrieb am zuletzt editiert von
                              #27

                              @OlegJktu:

                              Ну я бы сделал переменную (драйвером wrapper), засунул туда эти данные и вывел эту переменную в визуализации.

                              Только я vis (если мы говорим о нем?) давно не трогал, так-что подробностей и не знаю. `

                              Как переменную сделать допёр. Теперь не могу разобраться как тупо умножить. Получаю с датчика значение 998.7 Паскаль, и чтоб оно стало в мм.рт.ст его надо умножить на 0.0075. Ни одного арифметического блока в дефолтом node-red не нашел. Плохо искал? Или надо кодом писать в function блоке? Что делать? Не ожидал даже, что в таком "могучем" инструменте даже тупо арифметических операций не будет.

                              1 Antwort Letzte Antwort
                              0
                              • O Offline
                                O Offline
                                OlegJktu
                                schrieb am zuletzt editiert von
                                #28

                                Управление группой света

                                1)выключить

                                1. включить режим луна

                                2. включить режим солнце

                                Задействовано оборудование круглая кнопка xiaomi

                                Светильники Yeelight потолочный Yeelight LED Ceiling Light YLXD01YL

                                Используется драйвер https://github.com/instalator/ioBroker. … /README.md

                                3955_screenshot_20180724_172346.png

                                [
                                    {
                                        "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": []
                                    }
                                ]
                                
                                
                                1 Antwort Letzte Antwort
                                0
                                • B Offline
                                  B Offline
                                  Bebebe
                                  schrieb am zuletzt editiert von
                                  #29

                                  @Sergey777:

                                  @OlegJktu:

                                  Ну я бы сделал переменную (драйвером wrapper), засунул туда эти данные и вывел эту переменную в визуализации.

                                  Только я vis (если мы говорим о нем?) давно не трогал, так-что подробностей и не знаю. `

                                  Как переменную сделать допёр. Теперь не могу разобраться как тупо умножить. Получаю с датчика значение 998.7 Паскаль, и чтоб оно стало в мм.рт.ст его надо умножить на 0.0075. Ни одного арифметического блока в дефолтом node-red не нашел. Плохо искал? Или надо кодом писать в function блоке? Что делать? Не ожидал даже, что в таком "могучем" инструменте даже тупо арифметических операций не будет. `

                                  Да, писать кодом в блоке. Можно и умножить, и поделить, и отнять…

                                  1 Antwort Letzte Antwort
                                  0
                                  • O Offline
                                    O Offline
                                    OlegJktu
                                    schrieb am zuletzt editiert von
                                    #30

                                    Математика вроде и в кубиках была, но найти я ее не смог…

                                    1 Antwort Letzte Antwort
                                    0
                                    • S Offline
                                      S Offline
                                      Sergey777
                                      schrieb am zuletzt editiert von
                                      #31

                                      @OlegJktu:

                                      Математика вроде и в кубиках была, но найти я ее не смог… `

                                      Они есть, но как дополнения. Можно поиском найти, прочесть описание, установить функциональный "кубик". Но… Это не наш метод. Привык делать по максимуму из стоковых средств. Как? Напишу чуть позже.

                                      1 Antwort Letzte Antwort
                                      0
                                      • S Offline
                                        S Offline
                                        Sergey777
                                        schrieb am zuletzt editiert von
                                        #32

                                        Арифметические операции в NODE-RED, сложение, умножение, вычитание, деление,.. Округление, и т.д.

                                        Есть у меня сенсоры под таким длинным названием "XIAOMI AQARA SMART HOME TEMPERATURE HUMIDITY PRESSURE SENSOR ZIGBEE". Это беспроводной датчик, работающий по протоколу ZigBee
                                        5574_temper.png
                                        Он отправляет следующие данные в систему iobroker:

                                        1. Влажность, %

                                        2. Температура, °C

                                        ****3. Давление, гПа *****

                                        4. Заряд батареи, %

                                        5. Напряжение батареи, V

                                        6. Также на этом сенсоре есть кнопка, и её состояние отображается как false или true, при не нажатом и нажатом состоянии соответственно.

                                        ********* Гектопаскаль. Вся неудобность в том, что у нас, в России, принято измерять давление в миллиметрах ртутного столба ( мм.рт.ст.) А датчик даёт в Гектопаскалях.

                                        ! Гектопаскаль (гПа) — единица измерения давления, механического напряжения и модуля Юнга (модуля упругости) в Международной системе единиц (СИ), кратная паскалю. Паскаль равен давлению (механическому напряжению), вызываемому силой, равной одному ньютону, равномерно распределённой по перпендикулярной к ней поверхности площадью один квадратный метр.
                                        Значит нужно конвертировать одно значение в другое. Для этого сначала создадим переменную, в которой будет храниться значение в мм.рт.ст. Я решил создать её в той же папке датчика, где другие его переменные. Для этого идём в меню "Объекты", выбираем mihome.0, далее devices и выбираем папку weather_v1_158d0002271cea. В верхней панели жмём плюс - "добавить объект к выделенному элементу"

                                        Имя вводим "Pressure_mm_rt_st", далее "состояние" далее "логическая переменная".

                                        Если заглянуть в настройки, то у меня выглядит так:

                                        ! 5574_vv.png
                                        5574_mm.png
                                        И наконец-то мы готовы идти в 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": [] } ] !
                                        5574_fun.png

                                        Вот и всё, теперь в переменой mihome.0.devices.weather_v1_158d0002271cea.Pressure_mm_rt_st мы видим давление в мм.рт.ст.

                                        1 Antwort Letzte Antwort
                                        0
                                        • O Offline
                                          O Offline
                                          OlegJktu
                                          schrieb am zuletzt editiert von
                                          #33
                                          1. Sergey777 За математику спасибо. Как всегда оформлено все на 5+ .

                                          2. я добавил новые "интересные материалы по nod-red" в первый пост этой темы. Если кто еще что интересное знает пишите - добавлю. Что бы всем было легче осваивать Nod-red.

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          551

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe