NEWS
Node-RED примеры, решения и и вопросы. Общая тема по Node-RED
-
Вот пример как определить расстояние от дома. Ставим адаптер Find my iphone, пишем такой скрипт в NR:
! [{"id":"1c09c50c.74d60b","type":"function","z":"99a1edcb.6bb1","name":"GetLocation","func":"\nvar home_long = 11.11111;\nvar home_alt = 22.22222;\n\n//var values = flow.get(["latitude", "longitude"]);\n \nvar long_target = 0; \nvar alt_target = 0;\n\nlong_target = parseFloat(flow.get('LO'));// values[1];\nalt_target = parseFloat(flow.get('LA'));\n//node.log(long_target);\n//node.log(alt_target);\n\n\nmsg.payload = 63711000Math.acos(Math.sin(Math.PIhome_alt/180)Math.sin(Math.PIalt_target/180)+Math.cos(Math.PIhome_alt/180)Math.cos(Math.PIalt_target/180)Math.cos(Math.PI(home_long-long_target)/180));\n// вывод в лог расстояния в метрах\nreturn msg;","outputs":1,"noerr":0,"x":690,"y":260,"wires":[["6b23990b.f116c8"]]},{"id":"6b23990b.f116c8","type":"debug","z":"99a1edcb.6bb1","name":"Расстояние","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":870,"y":260,"wires":[]},{"id":"282f31cf.40579e","type":"change","z":"99a1edcb.6bb1","name":"Set LA.","rules":[{"t":"set","p":"LA","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":240,"wires":[["1c09c50c.74d60b","642dcb16.a76cb4"]]},{"id":"eed8108f.ea0d9","type":"change","z":"99a1edcb.6bb1","name":"SET LO","rules":[{"t":"set","p":"LO","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":280,"wires":[["1c09c50c.74d60b","c013725a.bbb22"]]},{"id":"642dcb16.a76cb4","type":"debug","z":"99a1edcb.6bb1","name":"LA","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":510,"y":200,"wires":[]},{"id":"c013725a.bbb22","type":"debug","z":"99a1edcb.6bb1","name":"LO","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":510,"y":320,"wires":[]},{"id":"e7628b0a.cbcc18","type":"ioBroker get","z":"99a1edcb.6bb1","name":"latitude","topic":"find-my-iphone.0.iPhone_(TELE).latitude","attrname":"payload","payloadType":"value","x":340,"y":240,"wires":[["282f31cf.40579e"]]},{"id":"452ba365.3c988c","type":"ioBroker get","z":"99a1edcb.6bb1","name":"longitude","topic":"find-my-iphone.0.iPhone_(TELE).longitude","attrname":"payload","payloadType":"value","x":340,"y":280,"wires":[["eed8108f.ea0d9"]]},{"id":"5e3ac9eb.238b68","type":"trigger","z":"99a1edcb.6bb1","op1":"60","op2":"1","op1type":"num","op2type":"str","duration":"-1","extend":false,"units":"min","reset":"","bytopic":"all","name":"","x":170,"y":240,"wires":[["e7628b0a.cbcc18","452ba365.3c988c"]]},{"id":"1bc2b34.ef3094d","type":"inject","z":"99a1edcb.6bb1","name":"","topic":"","payload":"1","payloadType":"num","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":150,"y":200,"wires":[["5e3ac9eb.238b68"]]}]
P.S. Спасибо telegram @cahek2202 за код расчета расстояния по координатам. -
Собрал схему для управления точечными светильниками philips zhirui downlight
единственная проблема - слишком большая задержка (((
Нужно установить
php
php-miio-master
node-red-contrib-string
включить/выключить
php /home/pi/php-miio-master/miio-cli.php –ip 192.168.1.236 --token 57014f99f369ff772cad86955f44c17c --sendcmd '{"id":1,"method":"set_power","params":["on"]}'
php /home/pi/php-miio-master/miio-cli.php –ip 192.168.1.236 --token 57014f99f369ff772cad86955f44c17c --sendcmd '{"id":1,"method":"set_power","params":["off"]}'
переключить
php /home/pi/php-miio-master/miio-cli.php –ip 192.168.1.236 --token 57014f99f369ff772cad86955f44c17c --sendcmd '{"id":1,"method":"toggle",,"params":[]}'
яркость (от 1 до 100)
php /home/pi/php-miio-master/miio-cli.php --ip 192.168.1.236 --token 57014f99f369ff772cad86955f44c17c --sendcmd '{"id":1,"method":"set_bright","params":[1]}'
цветовая температура (1-желтый, 100 – белый)
php /home/pi/php-miio-master/miio-cli.php –ip 192.168.1.236 --token 57014f99f369ff772cad86955f44c17c --sendcmd '{"id":1,"method":"set_cct","params":[100]}'
сцены (от 1 до 4)
php /home/pi/php-miio-master/miio-cli.php –ip 192.168.1.236 --token 57014f99f369ff772cad86955f44c17c --sendcmd '{"id":1,"method":"apply_fixed_scene","params":[1]}'
статус (php miio-cli.php –ip ип лампы --token токен лампы --sendcmd '{"id":1,"method":"get_prop","params":["power","bright", ,"cct","snm","dv"]}')
php /home/pi/php-miio-master/miio-cli.php –ip 192.168.1.236 --token 57014f99f369ff772cad86955f44c17c --sendcmd '{"id":1,"method":"get_prop","params":["power","bright", ,"cct","snm","dv"]}'
! [
! {
! "id": "8d7ab50b.086a48",
! "type": "tab",
! "label": "Flow 3",
! "disabled": false,
! "info": ""
! },
! {
! "id": "1199f0d9.331b1f",
! "type": "ioBroker in",
! "z": "8d7ab50b.086a48",
! "name": "First button pressed",
! "topic": "mihome.0.devices.86sw2_158d000233827e.channel_0",
! "payloadType": "value",
! "onlyack": "",
! "func": "all",
! "gap": "",
! "x": 170,
! "y": 180,
! "wires": [
! [
! "82596561.899ce8"
! ]
! ]
! },
! {
! "id": "dc776a4c.fbd218",
! "type": "inject",
! "z": "8d7ab50b.086a48",
! "name": "Button",
! "topic": "",
! "payload": "true",
! "payloadType": "str",
! "repeat": "",
! "crontab": "",
! "once": false,
! "onceDelay": 0.1,
! "x": 150,
! "y": 400,
! "wires": [
! [
! "345c5f57.38ca6"
! ]
! ]
! },
! {
! "id": "345c5f57.38ca6",
! "type": "switch",
! "z": "8d7ab50b.086a48",
! "name": "only true",
! "property": "payload",
! "propertyType": "msg",
! "rules": [
! {
! "t": "eq",
! "v": "true",
! "vt": "str"
! }
! ],
! "checkall": "true",
! "repair": false,
! "outputs": 1,
! "x": 280,
! "y": 320,
! "wires": [
! [
! "b643cffa.5e1ac",
! "b1c46b43.e444d8"
! ]
! ]
! },
! {
! "id": "78dad649.35d498",
! "type": "switch",
! "z": "8d7ab50b.086a48",
! "name": "Is Light On?",
! "property": "STAT1",
! "propertyType": "flow",
! "rules": [
! {
! "t": "eq",
! "v": "false",
! "vt": "str"
! },
! {
! "t": "eq",
! "v": "true",
! "vt": "str"
! }
! ],
! "checkall": "true",
! "repair": false,
! "outputs": 2,
! "x": 530,
! "y": 320,
! "wires": [
! [
! "66ee6bc9.126594"
! ],
! [
! "10645dc0.7ac9e2"
! ]
! ]
! },
! {
! "id": "66ee6bc9.126594",
! "type": "change",
! "z": "8d7ab50b.086a48",
! "name": "PowerOn Lamp",
! "rules": [
! {
! "t": "set",
! "p": "payload",
! "pt": "msg",
! "to": "true",
! "tot": "bool"
! }
! ],
! "action": "",
! "property": "",
! "from": "",
! "to": "",
! "reg": false,
! "x": 800,
! "y": 280,
! "wires": [
! [
! "64e1cf4e.ec14a"
! ]
! ]
! },
! {
! "id": "10645dc0.7ac9e2",
! "type": "change",
! "z": "8d7ab50b.086a48",
! "name": "PowerOff Lamp",
! "rules": [
! {
! "t": "set",
! "p": "payload",
! "pt": "msg",
! "to": "true",
! "tot": "bool"
! }
! ],
! "action": "",
! "property": "",
! "from": "",
! "to": "",
! "reg": false,
! "x": 800,
! "y": 340,
! "wires": [
! [
! "f262cc14.faa8e"
! ]
! ]
! },
! {
! "id": "9a8e714.224659",
! "type": "exec",
! "z": "8d7ab50b.086a48",
! "command": "php /home/pi/php-miio-master/miio-cli.php –ip 192.168.1.236 --token 57014f99f369ff772cad86955f44c17c --sendcmd '{"id":1,"method":"set_power","params":["off"]}'",
! "addpay": true,
! "append": "",
! "useSpawn": "false",
! "timer": "",
! "oldrc": false,
! "name": "",
! "x": 780,
! "y": 1080,
! "wires": [
! [],
! [],
! []
! ]
! },
! {
! "id": "bec64fe2.71292",
! "type": "exec",
! "z": "8d7ab50b.086a48",
! "command": "php /home/pi/php-miio-master/miio-cli.php –ip 192.168.1.236 --token 57014f99f369ff772cad86955f44c17c --sendcmd '{"id":1,"method":"set_power","params":["on"]}'",
! "addpay": true,
! "append": "",
! "useSpawn": "false",
! "timer": "",
! "oldrc": false,
! "name": "power on",
! "x": 1060,
! "y": 260,
! "wires": [
! [],
! [],
! []
! ]
! },
! {
! "id": "7c0af08b.0c659",
! "type": "switch",
! "z": "8d7ab50b.086a48",
! "name": "STAT1",
! "property": "payload",
! "propertyType": "msg",
! "rules": [
! {
! "t": "cont",
! "v": "true",
! "vt": "str"
! },
! {
! "t": "cont",
! "v": "false",
! "vt": "str"
! }
! ],
! "checkall": "false",
! "repair": false,
! "outputs": 2,
! "x": 830,
! "y": 160,
! "wires": [
! [
! "8a2dac90.3ca8c"
! ],
! [
! "ed111c41.dcf5"
! ]
! ]
! },
! {
! "id": "8a2dac90.3ca8c",
! "type": "change",
! "z": "8d7ab50b.086a48",
! "name": "Light On",
! "rules": [
! {
! "t": "set",
! "p": "STAT1",
! "pt": "flow",
! "to": "true",
! "tot": "str"
! }
! ],
! "action": "",
! "property": "",
! "from": "",
! "to": "",
! "reg": false,
! "x": 1040,
! "y": 140,
! "wires": [
! []
! ]
! },
! {
! "id": "ed111c41.dcf5",
! "type": "change",
! "z": "8d7ab50b.086a48",
! "name": "Light Off",
! "rules": [
! {
! "t": "set",
! "p": "STAT1",
! "pt": "flow",
! "to": "false",
! "tot": "str"
! }
! ],
! "action": "",
! "property": "",
! "from": "",
! "to": "",
! "reg": false,
! "x": 1040,
! "y": 200,
! "wires": [
! []
! ]
! },
! {
! "id": "b643cffa.5e1ac",
! "type": "exec",
! "z": "8d7ab50b.086a48",
! "command": "php /home/pi/php-miio-master/miio-cli.php –ip 192.168.1.236 --token 57014f99f369ff772cad86955f44c17c --sendcmd '{"id":1,"method":"get_prop","params":["power"]}'",
! "addpay": false,
! "append": "",
! "useSpawn": "false",
! "timer": "",
! "oldrc": false,
! "name": "Lamp status?",
! "x": 480,
! "y": 160,
! "wires": [
! [
! "c1d9f7ec.d097c8"
! ],
! [],
! []
! ]
! },
! {
! "id": "81a1c26a.2224b",
! "type": "inject",
! "z": "8d7ab50b.086a48",
! "name": "Button",
! "topic": "",
! "payload": "true",
! "payloadType": "str",
! "repeat": "",
! "crontab": "",
! "once": false,
! "onceDelay": 0.1,
! "x": 150,
! "y": 120,
! "wires": [
! [
! "b643cffa.5e1ac"
! ]
! ]
! },
! {
! "id": "c1d9f7ec.d097c8",
! "type": "string",
! "z": "8d7ab50b.086a48",
! "name": "",
! "methods": [
! {
! "name": "toString",
! "params": []
! },
! {
! "name": "between",
! "params": [
! {
! "type": "str",
! "value": "result":[""
! },
! {
! "type": "str",
! "value": ""],"id""
! }
! ]
! },
! {
! "name": "toString",
! "params": []
! },
! {
! "name": "toBoolean",
! "params": []
! }
! ],
! "prop": "payload",
! "propout": "payload",
! "object": "msg",
! "objectout": "msg",
! "x": 690,
! "y": 160,
! "wires": [
! [
! "7c0af08b.0c659"
! ]
! ]
! },
! {
! "id": "34ba9712.3e5b88",
! "type": "exec",
! "z": "8d7ab50b.086a48",
! "command": "php /home/pi/php-miio-master/miio-cli.php –ip 192.168.1.236 --token 57014f99f369ff772cad86955f44c17c --sendcmd '{"id":1,"method":"set_power","params":["off"]}'",
! "addpay": true,
! "append": "",
! "useSpawn": "false",
! "timer": "",
! "oldrc": false,
! "name": "power off",
! "x": 1060,
! "y": 340,
! "wires": [
! [],
! [],
! []
! ]
! },
! {
! "id": "f262cc14.faa8e",
! "type": "delay",
! "z": "8d7ab50b.086a48",
! "name": "",
! "pauseType": "delay",
! "timeout": "1400",
! "timeoutUnits": "milliseconds",
! "rate": "1",
! "nbRateUnits": "1",
! "rateUnits": "second",
! "randomFirst": "1",
! "randomLast": "5",
! "randomUnits": "seconds",
! "drop": false,
! "x": 820,
! "y": 400,
! "wires": [
! [
! "34ba9712.3e5b88"
! ]
! ]
! },
! {
! "id": "64e1cf4e.ec14a",
! "type": "delay",
! "z": "8d7ab50b.086a48",
! "name": "",
! "pauseType": "delay",
! "timeout": "1400",
! "timeoutUnits": "milliseconds",
! "rate": "1",
! "nbRateUnits": "1",
! "rateUnits": "second",
! "randomFirst": "1",
! "randomLast": "5",
! "randomUnits": "seconds",
! "drop": false,
! "x": 800,
! "y": 220,
! "wires": [
! [
! "bec64fe2.71292"
! ]
! ]
! },
! {
! "id": "b1c46b43.e444d8",
! "type": "delay",
! "z": "8d7ab50b.086a48",
! "name": "",
! "pauseType": "delay",
! "timeout": "1400",
! "timeoutUnits": "milliseconds",
! "rate": "1",
! "nbRateUnits": "1",
! "rateUnits": "second",
! "randomFirst": "1",
! "randomLast": "5",
! "randomUnits": "seconds",
! "drop": false,
! "x": 540,
! "y": 240,
! "wires": [
! [
! "78dad649.35d498"
! ]
! ]
! },
! {
! "id": "82596561.899ce8",
! "type": "trigger",
! "z": "8d7ab50b.086a48",
! "op1": "true",
! "op2": "",
! "op1type": "str",
! "op2type": "nul",
! "duration": "5300",
! "extend": false,
! "units": "ms",
! "reset": "",
! "bytopic": "all",
! "name": "",
! "x": 240,
! "y": 260,
! "wires": [
! [
! "345c5f57.38ca6"
! ]
! ]
! }
! ]
10899__________2018-12-11_08.49.06.png -
Собрал схему для управления точечными светильниками philips zhirui downlight `
А вот все равно спасибо. А то отсутствие вариантов с miio уже начинает напрягать.Встречный вопрос. Пробовали кубики с miio (они должны быть на nodejs и быстрее и там есть general device)
Я пробывал 2 и 3 в докер контейнере с iobroker и node-red и Node-red сдох, пришлось поднимать контейнер и бекапа. Так что перед экспериментами сохраняемся!
Очень хотел попробовать с отдельного хоста/контейнера, но в итоге руки так и не дошли.
UPD лампы еще должны затаскиваться в iobroker через драйвер HAM (там искать miio), но я HAM пока не победил.
-
Как запустить из нода что то понятно, а как сделать чтоб нод отреагировал не понимаю. `
Вы имеете в виду, как увидеть сигнал с пина малинки в Node-RED? Если Вы ставили образ iobroker, то в нем есть все необходимые плагины, в панели есть, вроде, эти элементы.P.S.вот же:

-
Вот здесь решили проблему с записью символов в файл в win
-
Привет всем! Я столнулся со схожей проблемой, что в сообщении выше.
Я тут приводил такой пример: viewtopic.php?f=48&t=11969#p152942 ,там всё работало, пока я не обновил iobroker.
Суть в чём:
Имею такую конструкцию

!
[ { "id": "58ad33b2.fabb1c", "type": "http request", "z": "f9e33a52.dacda8", "name": "", "method": "POST", "ret": "txt", "url": "http://192.168.1.2:5000/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=\"QERFWrtrg4t5\"&payload={\"text\": \"кирилица\"}", "tls": "", "x": 490, "y": 1200, "wires": [ [ "27422c15.fd50d4" ] ] }, { "id": "27422c15.fd50d4", "type": "debug", "z": "f9e33a52.dacda8", "name": "Door Sensor Status", "active": true, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "x": 720, "y": 1200, "wires": [] }, { "id": "626ece3b.a16df", "type": "inject", "z": "f9e33a52.dacda8", "name": "", "topic": "", "payload": "true", "payloadType": "str", "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "x": 290, "y": 1200, "wires": [ [ "58ad33b2.fabb1c" ] ] } ] !
Тут на сервер отправляется сообщение методом POST. Так вот, если в сообщении содержится кириллица, то вылетает ошибка, и ничего не отправляется.log:
! ````
|node-red.0|2019-01-27 22:12:01.260|error|at processImmediate [as _immediateCallback] (timers.js:745:5)|
|---|---|---|---|
|node-red.0|2019-01-27 22:12:01.260|error|at tryOnImmediate (timers.js:768:5)|
|node-red.0|2019-01-27 22:12:01.260|error|at runCallback (timers.js:810:20)|
|node-red.0|2019-01-27 22:12:01.260|error|at Immediate. <anonymous>(/opt/iobroker/node_modules/request/request.js:578:7)|
|node-red.0|2019-01-27 22:12:01.260|error|at end (/opt/iobroker/node_modules/request/request.js:549:18)|
|node-red.0|2019-01-27 22:12:01.260|error|at Request.write (/opt/iobroker/node_modules/request/request.js:1497:10)|
|node-red.0|2019-01-27 22:12:01.260|error|at Request.start (/opt/iobroker/node_modules/request/request.js:751:32)|
|node-red.0|2019-01-27 22:12:01.260|error|at Object.request (http.js:39:10)|
|node-red.0|2019-01-27 22:12:01.260|error|at new ClientRequest (_http_client.js:137:13)|
|node-red.0|2019-01-27 22:12:01.260|error|27 Jan 22:12:01 - [error] [http request:TEST DOOR] TypeError: Request path contains unescaped characters|</anonymous>Debug messages >! ```` msg : error "TypeError: Request path contains unescaped characters" msg.payload : string[247] "TypeError: Request path contains unescaped characters : http://192.168.1.2:5000/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token="QERFWrtrg4t5"&payload={"text": "кирилица"}" >! ```` Если писать латинскими символами, то всё работает. P.S. ioBroker стоит на малине, раньше ставил образ 2017 года, на нём всё работало. Но система посыпалась, поставил новый образ, и теперь не работает с кириллицей. Мне кажется, что не хватает каких-то кодировок в системе и Node-RED тут не при чём. Подкиньте идей, пожалуйста. ****<size size="150">******************************************************</size>**** P.P.S. Нашёл решение - предварительно перекодируем сообщение функцией encodeURIComponent() msg.CyrillicMessage = encodeURIComponent('Привет Мир');
return msg;И "Привет Мир" превращается в "%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%D0%9C%D0%B8%D1%80", а это уже прокатывает, отправка сообщений кириллицей работает. Вот полный код, url до сервера, естественно, изменён, каждый вбивает свой собственный: >! ```` [ { "id": "20b1742.e00da8c", "type": "http request", "z": "64e8a21a.233f3c", "name": "", "method": "POST", "ret": "txt", "url": "http://192.168.1.2:5000/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=%22TvDtggrtGr%22&payload={\"text\": \"{{{CyrillicMessage}}}\"}", "tls": "", "x": 830, "y": 160, "wires": [ [ "9039465f.edbf18" ] ] }, { "id": "9039465f.edbf18", "type": "debug", "z": "64e8a21a.233f3c", "name": "Door Sensor Status", "active": true, "tosidebar": true, "console": false, "tostatus": true, "complete": "payload", "x": 1040, "y": 160, "wires": [] }, { "id": "ae787e2c.09a418", "type": "inject", "z": "64e8a21a.233f3c", "name": "", "topic": "", "payload": "true", "payloadType": "str", "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "x": 450, "y": 160, "wires": [ [ "8ec1277c.0cdf2" ] ] }, { "id": "8ec1277c.0cdf2", "type": "function", "z": "64e8a21a.233f3c", "name": "Текст сообщения", "func": "msg.CyrillicMessage = encodeURIComponent('Привет Мир');\nreturn msg;", "outputs": 1, "noerr": 0, "x": 630, "y": 160, "wires": [ [ "c6325ef1.f616b", "20b1742.e00da8c" ] ] }, { "id": "c6325ef1.f616b", "type": "debug", "z": "64e8a21a.233f3c", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": true, "complete": "CyrillicMessage", "x": 860, "y": 100, "wires": [] } ] >! ```` -
Только начал осваивать Node-Red, и сразу вопросы:
-
Можно ли в функции определить исходную команду, а не только источник?
Скажем, при получении сигнала от кубика Rotate Left нужно некий параметр уменьшить, а по Rotate Right увеличить.
Сейчас у меня после ioBroker in с событием Rotate right идет Change, в котором true меняется на 1, и анаогично Rotate left -> Change, меняющий true на -1.
Оба этих события сходятся в одну функцию, которая соответственно меняет громкость, яркость, что угодно.
Но по идее промежуточные Change не очень нужны. Можно сразу с Rotate Left и Rotate Right на эту функцию сигнал подать. Да, в обоих случаях будет true, но наверняка же в этой функции можно определить, было это вызвано поворотм влево или вправо?
Собственно аналогично отделять одинарное нажатие кнопки от двойного и т.п.... -
Нажатие кнопки у меня приводит к последовательному приходу событий от нее true и сразу false.
Я придумал 2 способа очистки. Switch, который пропускает только true. И Delay, в котором при выборе Rate Limit | All messages появляется пункт drop intermediate messages.
Результат одинаковый. Что эффективнее? Может еще получше вариант есть? -
Как использовать ioBroker get node? Расположена в группе function. Насколько я понимаю, в отличие от ioBroker in node, посылающей сообщение дальше, get позволяет узнать текущее состояние. Но как? Что подать ей на вход и что на выход?
Скажем, сейчас я In node направляю на сохранение переменной во flow (скажем, параметр dimmer), и потом его использую. Но лучше же опрашивать статус, когда понадобится, а не подписываться на него?
Ну или хотя бы в коде функции как опросить произвольный параметр... -
Можно ли из функции на Node-Red пройтись по всем датчикам (в моем случае подключены через Xiaomi Gateway 2) и, к примеру, проверить заряд их батрейки?
Ну а дальше либо вывести "аварийные" датчики, либо записать 0/1 в дополнительное поле каждого сенсора (к примеру, BatteryStatus) и указывать его в Metro плитках (они автоматически перекрашиваются в зависимости от "ID статуса"
-
-
-
если в обьектах нет, то без вариантов. Можно еще конечно лог глянуть. Только дебаг нужно включить.
1.1) возможно через usb-zigbee свиток драйвер отдает больше. -
Я думаю без разницы.
-
На JS такое видел. На Node-red по моему только руками (ну или js засунуть в кубик). js пример есть на форуме, но он тоже не идеальный - там отдает id объекта - это не человеко читаемо.
-
Нужно мне самому попробовать на выходных,
ioBroker get node - точно будет красиво попробовать засунуть в Node-red dash реле-выключатель (но визуализаций на iobroker больше пяти, так что...)
-
-
Управление broadlink кнопкой xiaomi (драйвер zigbee). Исправил flow выше. Здесь нужен таймер и switch должен быть таким:


[
{
"id": "cf416abd.c92158",
"type": "tab",
"label": "Broadlink_STATUS",
"disabled": false,
"info": ""
},
{
"id": "5dae1e2f.960c38",
"type": "ioBroker out",
"z": "cf416abd.c92158",
"name": "Sonoff_POW_2",
"topic": "sonoff.0.Sonoff_POW_2_A02EBD.POWER",
"ack": "false",
"autoCreate": "false",
"x": 1700,
"y": 880,
"wires": []
},
{
"id": "b8e33699.63a34",
"type": "ioBroker in",
"z": "cf416abd.c92158",
"name": "Tap twice",
"topic": "zigbee.0.00158d00029bbb6c.tap",
"payloadType": "value",
"onlyack": "",
"func": "all",
"gap": "",
"x": 100,
"y": 460,
"wires": [
[
"864b8892.25f1a"
]
]
},
{
"id": "80c6e025.1825e8",
"type": "switch",
"z": "cf416abd.c92158",
"name": "Broadlink включен?",
"property": "Broadlink_STATUS",
"propertyType": "flow",
"rules": [
{
"t": "eq",
"v": "false",
"vt": "str"
},
{
"t": "eq",
"v": "true",
"vt": "str"
}
],
"checkall": "true",
"repair": false,
"outputs": 2,
"x": 540,
"y": 460,
"wires": [
[
"aff64449.5b9498"
],
[
"3b2d8770.0222c8"
]
]
},
{
"id": "aff64449.5b9498",
"type": "change",
"z": "cf416abd.c92158",
"name": "Включаем Broadlink",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "true",
"tot": "bool"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 860,
"y": 400,
"wires": [
[
"9ea4024f.45e7d",
"b50086c9.ce0408"
]
]
},
{
"id": "3b2d8770.0222c8",
"type": "change",
"z": "cf416abd.c92158",
"name": "Отключаем Broadlink",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "false",
"tot": "bool"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 820,
"y": 520,
"wires": [
[
"a4d8b0b.c5ed45",
"58937c89.b8335c"
]
]
},
{
"id": "9ea4024f.45e7d",
"type": "SP2",
"z": "cf416abd.c92158",
"name": "Bathoom",
"device": "6a792cc8.2a6eac",
"action": "setState",
"state": "true",
"x": 1100,
"y": 440,
"wires": [
[]
]
},
{
"id": "a4d8b0b.c5ed45",
"type": "SP2",
"z": "cf416abd.c92158",
"name": "Bathoom",
"device": "6a792cc8.2a6eac",
"action": "setState",
"state": "false",
"x": 1100,
"y": 520,
"wires": [
[]
]
},
{
"id": "864b8892.25f1a",
"type": "switch",
"z": "cf416abd.c92158",
"name": "Берём только true",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "true",
"vt": "str"
}
],
"checkall": "true",
"repair": false,
"outputs": 1,
"x": 290,
"y": 460,
"wires": [
[
"80c6e025.1825e8"
]
]
},
{
"id": "58937c89.b8335c",
"type": "debug",
"z": "cf416abd.c92158",
"name": "Отключаем",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"x": 1110,
"y": 600,
"wires": []
},
{
"id": "b50086c9.ce0408",
"type": "debug",
"z": "cf416abd.c92158",
"name": "Включаем",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"x": 1190,
"y": 380,
"wires": []
},
{
"id": "ba2cb790.e57ee",
"type": "SP2",
"z": "cf416abd.c92158",
"name": "Bathoom",
"device": "6a792cc8.2a6eac",
"action": "getState",
"state": "true",
"x": 380,
"y": 300,
"wires": [
[
"60e40fa1.b78738"
]
]
},
{
"id": "60e40fa1.b78738",
"type": "switch",
"z": "cf416abd.c92158",
"name": "Передаём статус broadlink",
"property": "payload.state",
"propertyType": "msg",
"rules": [
{
"t": "true"
},
{
"t": "false"
}
],
"checkall": "false",
"repair": false,
"outputs": 2,
"x": 600,
"y": 300,
"wires": [
[
"1be7b90d.421cf7"
],
[
"6bb3ee18.8728d8"
]
]
},
{
"id": "1be7b90d.421cf7",
"type": "change",
"z": "cf416abd.c92158",
"name": "Broadlink ON",
"rules": [
{
"t": "set",
"p": "Broadlink_STATUS",
"pt": "flow",
"to": "true",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 890,
"y": 220,
"wires": [
[]
]
},
{
"id": "6bb3ee18.8728d8",
"type": "change",
"z": "cf416abd.c92158",
"name": "Broadlink OFF",
"rules": [
{
"t": "set",
"p": "Broadlink_STATUS",
"pt": "flow",
"to": "false",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 960,
"y": 340,
"wires": [
[]
]
},
{
"id": "12b779f5.16f1a6",
"type": "comment",
"z": "cf416abd.c92158",
"name": "Тут логика работы",
"info": "",
"x": 450,
"y": 380,
"wires": []
},
{
"id": "74adb82d.c4c64",
"type": "comment",
"z": "cf416abd.c92158",
"name": "Тут определяем состояние реле Broadlink",
"info": "",
"x": 490,
"y": 220,
"wires": []
},
{
"id": "eb30ea3d.afc17",
"type": "inject",
"z": "cf416abd.c92158",
"name": "",
"topic": "",
"payload": "",
"payloadType": "date",
"repeat": "1",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 170,
"y": 300,
"wires": [
[
"ba2cb790.e57ee"
]
]
},
{
"id": "743f811.46788",
"type": "bigtimer",
"z": "cf416abd.c92158",
"outtopic": "",
"outpayload1": "",
"outpayload2": "",
"name": "Big Timer",
"comment": "",
"lat": "",
"lon": "",
"starttime": 5001,
"endtime": 1425,
"starttime2": 0,
"endtime2": 0,
"startoff": 0,
"endoff": 0,
"startoff2": 0,
"endoff2": 0,
"offs": 0,
"outtext1": "",
"outtext2": "",
"timeout": 1440,
"sun": true,
"mon": true,
"tue": true,
"wed": true,
"thu": true,
"fri": true,
"sat": true,
"jan": true,
"feb": true,
"mar": true,
"apr": true,
"may": true,
"jun": true,
"jul": true,
"aug": true,
"sep": true,
"oct": true,
"nov": true,
"dec": true,
"day1": 0,
"month1": 0,
"day2": 0,
"month2": 0,
"day3": 0,
"month3": 0,
"day4": 0,
"month4": 0,
"day5": 0,
"month5": 0,
"day6": 0,
"month6": 0,
"d1": 0,
"w1": 0,
"d2": 0,
"w2": 0,
"d3": 0,
"w3": 0,
"d4": 0,
"w4": 0,
"d5": 0,
"w5": 0,
"d6": 0,
"w6": 0,
"xday1": 0,
"xmonth1": 0,
"xday2": 0,
"xmonth2": 0,
"xday3": 0,
"xmonth3": 0,
"xday4": 0,
"xmonth4": 0,
"xday5": 0,
"xmonth5": 0,
"xday6": 0,
"xmonth6": 0,
"xd1": 0,
"xw1": 0,
"xd2": 0,
"xw2": 0,
"xd3": 0,
"xw3": 0,
"xd4": 0,
"xw4": 0,
"xd5": 0,
"xw5": 0,
"xd6": 0,
"xw6": 0,
"suspend": false,
"random": false,
"repeat": true,
"atstart": true,
"odd": false,
"even": false,
"x": 80,
"y": 160,
"wires": [
[],
[],
[]
]
},
{
"id": "6a792cc8.2a6eac",
"type": "sp2device",
"z": "",
"mac": "78-0F-77-17-8D-49",
"host": "192.168.1.5"
}
] -
Ребят, подскажите, кто знает, как можно решить такую проблемку.
Работают схемы, сценарии в Node-red, включены выключатели, настроены ползунки, расписание и т.д.
Но вот когда комп перезагружается, то все настройки сбиваются, и что бы вернуть все как было, нужно заново все нажимать.
Как можно это исправить? -
Было такое выше обсуждалось.
Нод-Ред не хранит значения, поэтому логика с переменными при старте может подвисать.- можно задать логику при старте. Для этого нужно поставить доп кубик. Таких есть 2 или 3.
Вот тут я добавил кубик задающий логику при старте
https://forum.iobroker.net/post/149786- можно хранить переменные этой логике где-то за пределами Нод-Ред.
Я храню в переменных IoBroker.
-
Wiki переведенная на русский язык
(Если не пускает используйте режим инкогнито в браузере)
http://146.185.179.211/wiki/Node-RED:Содержание -
Столкнулся с не тривиальной задачей. Нода onvif получает из IP камеры скриншот, этот скрин можно отобразить в ноде image. Мне нужно эту картинку отослать как webhook, для этого нужно картинку выгрузить в хранилище (на сервер) и потом дать http ссылку на неё. Как эту полученную в base64 картинку выгрузить на http сайт?
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden