NEWS
Node-RED примеры, решения и и вопросы. Общая тема по Node-RED
-
такое лучше всего на канале в телеграмм спрашивать
https://web.telegram.org/#/im?p=@iobroker
PS лучше конечно было виртуалку поднимать win хост, linux гость. Настроить что бы дестопная win не ломала софт УД местами очень тяжело. Одни перезагрузки чего стоят.
-
-
Пришлось разобраться с неработоспособностью некоторых flow после перезагрузки сервера.
Как и подозревал, проблема была в том что при старте (перезагрузке) Nod-red состояния некоторых Flow были не определенными - в итоге сообщение дальше них и не шло.
Разыскал и установил вот такой кубик
https://flows.nodered.org/node/node-red-contrib-config
Собственно при запуске Nod-red устанавливает flow в определенное значение.
!

Собственно можно было и как нибудь через переменную хранящуюся в базе данных переписать. Но так вроде сущностей меньше.
upd вот это правило и поправил viewtopic.php?f=48&t=11969&p=146339#p146339
-
Всем привет, поставил IOB, добавил и настроил устройства NETATMO. Это погодные станции, получаю с них через адаптер данные по СО2. Для этого использую Input ioBrоker topic = "netatmo.0.Netatmo.Спальня.CO2.CO2", Payload = value.
Логика работает, все считывается. Но вчера, как назло, облачный сервис NEtatmo в коем веке, был недоступен :evil: В итоге логика схемы NODE Red вообще перестала работать, т.е. у меня она начинается с того, что взять значения с netatmo, а раз значений не было, то все висело.
Можно ли как-то в NODE типа ввода данных с IOB прописать значение по умолчанию и таймаут, сколько времени ждать отклика с адаптера?
-
Можно ли как-то в NODE типа ввода данных с IOB прописать значение по умолчанию и таймаут, сколько времени ждать отклика с адаптера? `
сделать цикл с таймером? И увеличивать его каждый раз если данные с облака прилетели?И ветку про ручную активацию вы спрашивали в телеге? Там тоже можно сделать развилку логики.
Я вот в этом примере с таймерами делал, и "ручной режим" там тоже есть.
viewtopic.php?f=48&t=11969#p125169
(через пару минкт пример перезалью с ручным режимом)
-
Ребят, а в RED есть какие нибудь библиотеки выполнения по условию, еще что то типа триггеров, сравнение данных? `
Конешно. Содержимое msg можно <>= и кучу другой математики.Вот в этой статье разбирается с яркостью https://habr.com/post/396985/
-
Можно ли как-то в NODE типа ввода данных с IOB прописать значение по умолчанию и таймаут, сколько времени ждать отклика с адаптера? `
сделать цикл с таймером? И увеличивать его каждый раз если данные с облака прилетели?И ветку про ручную активацию вы спрашивали в телеге? Там тоже можно сделать развилку логики.
Я вот в этом примере с таймерами делал, и "ручной режим" там тоже есть.
viewtopic.php?f=48&t=11969#p125169
(через пару минкт пример перезалью с ручным режимом) `
Да, в телеге я спрашивал, как сделать еще так, чтобы вручную можно было установить, это тоже вопрос, но второй )Попробую разобраться с таймером, на примере. Тут плохо, что в логе ничего не видно, что значений нет или подвисло что-то. Логично было бы сразу в NODE предусмотреть, что запрос на адаптер не отработает…
-
Попробую разобраться с таймером, на примере. Тут плохо, что в логе ничего не видно, что значений нет или подвисло что-то. Логично было бы сразу в NODE предусмотреть, что запрос на адаптер не отработает… `
если речь про nod-red то там можно как раз на таймер и повесить и лог и сразу в телегу слать если что-то не так.А в драйвере ioBroker нет объекта проверяющего что облако живо?
Может на ping повесить?
-
Попробую разобраться с таймером, на примере. Тут плохо, что в логе ничего не видно, что значений нет или подвисло что-то. Логично было бы сразу в NODE предусмотреть, что запрос на адаптер не отработает… `
если речь про nod-red то там можно как раз на таймер и повесить и лог и сразу в телегу слать если что-то не так.А в драйвере ioBroker нет объекта проверяющего что облако живо?
Может на ping повесить? `
Ну надо лезть в исходники адаптера для NETATMO, я даже не уверен что можно симитировать вчерашнюю ситуацию.По поводу таймера, я сделал вход инжектом, повесил на таймер раз в 10 сек, да он выдает, например 0, как дефолт. Но как сделать, чтобы он выдавал тогда, когда отклика от устройства не дождался?
-
Конешно. Содержимое msg можно <>= и кучу другой математики.
Вот в этой статье разбирается с яркостью https://habr.com/post/396985/ `
Спасибо
http://www.remserv-bt.ru/images/smilies/icon_81.gif" /> -
Но как сделать, чтобы он выдавал тогда, когда отклика от устройства не дождался? `
это что-то типа мерелки температуру с получением данных из облака?Нужно сделать провод от данных в таймер, и там есть настройка запускать таймер снова если что-то прилетело.
интервалы нужно посмотреть, наверно раз в три минуты что-то ходит?
Если выложите код/рисунок может кто еще что посоветует.
Народ в телеге на канале нод-ред ответить по логике, если спросить как сделать, и что хочешь получить. Конечно желательно попытку показать и пояснения дать.
-
По итогам продолжительных поисков пользовательского интерфейса для управления умным домом с тв (Android TV) - остановился на связке wallpanel https://github.com/WallPanel-Project/wallpanel-android
и node-red-dashboard https://flows.nodered.org/node/node-red-dashboard
В настройках dashboard есть галка разрешающая перемещаться по webgui стрелками от пульта от ТВ бокса.
Плюс можно сразу через dashboard и звуки выводить (sayit).
!



! вывод звука драйвер sayit
[ { "id": "48979e09.8263d8", "type": "ui_audio", "z": "d369ede2.680eb", "name": "", "group": "a77d8246.98ece8", "voice": "", "always": true, "x": 960, "y": 780, "wires": [] }, { "id": "3f9406c2.830122", "type": "ioBroker in", "z": "d369ede2.680eb", "name": "Is now speaking", "topic": "sayit.0.tts.playing", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 480, "y": 780, "wires": [ [ "f1a9c85f.deca08", "50c5f06c.07cd88" ] ] }, { "id": "f1a9c85f.deca08", "type": "ioBroker get", "z": "d369ede2.680eb", "name": "Binary mp3 file", "topic": "sayit.0.tts.mp3", "attrname": "payload", "payloadType": "object", "x": 740, "y": 780, "wires": [ [ "48979e09.8263d8", "b0945816.a139e8" ] ] }, { "id": "50c5f06c.07cd88", "type": "debug", "z": "d369ede2.680eb", "name": "говорит?", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 560, "y": 720, "wires": [] }, { "id": "b0945816.a139e8", "type": "debug", "z": "d369ede2.680eb", "name": "какой файл", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "x": 760, "y": 720, "wires": [] }, { "id": "cf4e0f18.3d51f8", "type": "inject", "z": "d369ede2.680eb", "name": "", "topic": "", "payload": "true", "payloadType": "str", "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "x": 350, "y": 720, "wires": [ [ "f1a9c85f.deca08", "50c5f06c.07cd88" ] ] }, { "id": "a1a729b8.0f83c8", "type": "ui_button", "z": "d369ede2.680eb", "name": "скажи", "group": "a77d8246.98ece8", "order": 4, "width": 0, "height": 0, "passthru": false, "label": "button", "color": "", "bgcolor": "", "icon": "", "payload": "true", "payloadType": "str", "topic": "", "x": 470, "y": 900, "wires": [ [ "f1a9c85f.deca08" ] ] }, { "id": "94cf28dc.33e72", "type": "comment", "z": "d369ede2.680eb", "name": "кнопка дашборд для удобства отладки", "info": "", "x": 570, "y": 860, "wires": [] }, { "id": "a77d8246.98ece8", "type": "ui_group", "z": "", "name": "СВЕТ ЗАЛ", "tab": "e2d5e6c4.2778", "order": 1, "disp": true, "width": "6", "collapse": false }, { "id": "e2d5e6c4.2778", "type": "ui_tab", "z": "", "name": "Дом", "icon": "dashboard", "order": 2 } ] >! ```` -
Всем привет, поставил IOB, добавил и настроил устройства NETATMO. Это погодные станции, получаю с них через адаптер данные по СО2. Для этого использую Input ioBrоker topic = "netatmo.0.Netatmo.Спальня.CO2.CO2", Payload = value.
Логика работает, все считывается. Но вчера, как назло, облачный сервис NEtatmo в коем веке, был недоступен :evil: В итоге логика схемы NODE Red вообще перестала работать, т.е. у меня она начинается с того, что взять значения с netatmo, а раз значений не было, то все висело.
Можно ли как-то в NODE типа ввода данных с IOB прописать значение по умолчанию и таймаут, сколько времени ждать отклика с адаптера? `
Вот что в итоге получилось. Реализовал определение ручного режима (если скорость вентилятора приточки >=5, то значит кто-то вручную включил). Определяется СО2 >900, >1000, <900. И управляется от этих значений приточка.
! [{"id":"4484ad27.bff564","type":"ioBroker in","z":"99a1edcb.6bb1","name":"CO2_BedRoom","topic":"netatmo.0.Netatmo.Спальня.CO2.CO2","payloadType":"value","onlyack":"","func":"all","gap":"","x":140,"y":380,"wires":[["157afaf7.c32cd5"]]},{"id":"e303fee7.27fd9","type":"ioBroker out","z":"99a1edcb.6bb1","name":"RotationSpeed","topic":"breezart.0.RotationSpeed","ack":"false","autoCreate":"false","x":1477,"y":420,"wires":[]},{"id":"4f08171a.f18ae8","type":"switch","z":"99a1edcb.6bb1","name":"CheckCO2","property":"$max(payload)","propertyType":"jsonata","rules":[{"t":"gt","v":"1000","vt":"jsonata"},{"t":"gt","v":"900","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":3,"x":767,"y":440,"wires":[["e83b0ac3.7d7548","34e17a0f.81bf56"],["50ba9a58.a17ef4","8f15e8f6.fb5fc8"],["21c3d88.efd6e28"]]},{"id":"e83b0ac3.7d7548","type":"change","z":"99a1edcb.6bb1","name":"SetSpeed_High","rules":[{"t":"set","p":"payload","pt":"msg","to":"4","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":977,"y":380,"wires":[["6703ae3d.7cb51","8e0268e2.01da78"]]},{"id":"21c3d88.efd6e28","type":"change","z":"99a1edcb.6bb1","name":"SetSpeed_Low","rules":[{"t":"set","p":"payload","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":520,"wires":[["8e0268e2.01da78","fb89fdb4.42a12"]]},{"id":"66798763.03f088","type":"ioBroker in","z":"99a1edcb.6bb1","name":"CO2_Nika","topic":"netatmo.0.Netatmo.Детская.CO2.CO2","payloadType":"value","onlyack":"","func":"all","gap":"","x":160,"y":440,"wires":[["157afaf7.c32cd5"]]},{"id":"3546dba5.074ed4","type":"ioBroker in","z":"99a1edcb.6bb1","name":"CO2_Hall","topic":"netatmo.0.Netatmo.Гостинная.CO2.CO2","payloadType":"value","onlyack":"","func":"all","gap":"","x":160,"y":500,"wires":[["157afaf7.c32cd5"]]},{"id":"34e17a0f.81bf56","type":"debug","z":"99a1edcb.6bb1","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":770,"y":400,"wires":[]},{"id":"50ba9a58.a17ef4","type":"debug","z":"99a1edcb.6bb1","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":770,"y":480,"wires":[]},{"id":"ca2a615d.e7a42","type":"join","z":"99a1edcb.6bb1","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\n","joinerType":"str","accumulate":false,"timeout":"10","count":"3","reduceRight":false,"reduceExp":"$max(array)\t","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":587,"y":440,"wires":[["8f37c5b7.dda928","4f08171a.f18ae8","a7dfa8af.7e7e48"]]},{"id":"8f37c5b7.dda928","type":"debug","z":"99a1edcb.6bb1","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":587,"y":400,"wires":[]},{"id":"6703ae3d.7cb51","type":"debug","z":"99a1edcb.6bb1","name":"Побольше","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":970,"y":340,"wires":[]},{"id":"fb89fdb4.42a12","type":"debug","z":"99a1edcb.6bb1","name":"На минимум","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":970,"y":560,"wires":[]},{"id":"157afaf7.c32cd5","type":"function","z":"99a1edcb.6bb1","name":"parseInt-2","func":"msg.payload=parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"x":381,"y":440,"wires":[["ca2a615d.e7a42"]]},{"id":"ef3b5e52.1036f","type":"ioBroker in","z":"99a1edcb.6bb1","name":"RotationSpeed","topic":"breezart.0.RotationSpeed","payloadType":"value","onlyack":"","func":"all","gap":"","x":160,"y":180,"wires":[["ba5b1121.d1064"]]},{"id":"a7dfa8af.7e7e48","type":"trigger","z":"99a1edcb.6bb1","op1":"","op2":"1","op1type":"nul","op2type":"num","duration":"5","extend":true,"units":"min","reset":"","bytopic":"all","name":"Если нет данных","x":887,"y":620,"wires":[["176d08b4.2219d7","8e0268e2.01da78"]]},{"id":"176d08b4.2219d7","type":"debug","z":"99a1edcb.6bb1","name":"#НД","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":867,"y":660,"wires":[]},{"id":"415e51ac.9c042","type":"inject","z":"99a1edcb.6bb1","name":"Для запуска триггера","topic":"","payload":"1","payloadType":"num","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":657,"y":620,"wires":[["a7dfa8af.7e7e48"]]},{"id":"ba5b1121.d1064","type":"switch","z":"99a1edcb.6bb1","name":"Ручной?","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"4","vt":"str"},{"t":"lte","v":"4","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":400,"y":220,"wires":[["a04c7d5.28e2f8"],[]]},{"id":"a04c7d5.28e2f8","type":"change","z":"99a1edcb.6bb1","name":"ДА","rules":[{"t":"set","p":"manual","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":220,"wires":[["2c968846.ab1c68","42f60e42.6093c"]]},{"id":"2c968846.ab1c68","type":"debug","z":"99a1edcb.6bb1","name":"РУЧНОЙ РЕЖИМ","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":570,"y":180,"wires":[]},{"id":"42f60e42.6093c","type":"delay","z":"99a1edcb.6bb1","name":"Сброс руч. режима","pauseType":"delay","timeout":"30","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":740,"y":220,"wires":[["cf3bf784.5430c8"]]},{"id":"cf3bf784.5430c8","type":"change","z":"99a1edcb.6bb1","name":"ДА","rules":[{"t":"set","p":"manual","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":930,"y":220,"wires":[["eb7f78c0.27d548"]]},{"id":"eb7f78c0.27d548","type":"debug","z":"99a1edcb.6bb1","name":"СБРОС РЕЖИМА","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":970,"y":180,"wires":[]},{"id":"8e0268e2.01da78","type":"switch","z":"99a1edcb.6bb1","name":"РУЧНОЙ?","property":"manual","propertyType":"flow","rules":[{"t":"true"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1230,"y":420,"wires":[["4361f73b.11eef8"],["c352c46.dc73e38","e303fee7.27fd9"]]},{"id":"4361f73b.11eef8","type":"debug","z":"99a1edcb.6bb1","name":"Ручной","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1457,"y":380,"wires":[]},{"id":"8b5aef57.797ab","type":"inject","z":"99a1edcb.6bb1","name":"ПРОБА","topic":"","payload":"5","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":240,"wires":[["ba5b1121.d1064"]]},{"id":"c352c46.dc73e38","type":"debug","z":"99a1edcb.6bb1","name":"Устанавливаем","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1477,"y":460,"wires":[]},{"id":"e7d2a9ce.a39818","type":"inject","z":"99a1edcb.6bb1","name":"","topic":"","payload":"1000","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":320,"wires":[["157afaf7.c32cd5"]]},{"id":"8f15e8f6.fb5fc8","type":"change","z":"99a1edcb.6bb1","name":"SetSpeed_Mid","rules":[{"t":"set","p":"payload","pt":"msg","to":"3","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":440,"wires":[["dbbb1086.d886c","8e0268e2.01da78"]]},{"id":"dbbb1086.d886c","type":"debug","z":"99a1edcb.6bb1","name":"Средняя","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":960,"y":480,"wires":[]}]
-
Вот пример как определить расстояние от дома. Ставим адаптер 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 пока не победил.
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