Adding sensors and switches from Domoticz and ZigBee2MQTT to Telegram
The stream allows you to automatically send sensor readings and the state of switches from Domotics and Z2MKTT to the telegram bot, as well as control the switches from the Telegram bot. In order for the sensors and switches to get into the Telegram bot, you need to set the indicator in the name of the sensor, in my example, this is an underscore "_", for example Kitchen_Light or Garage_Gate. This symbol can be changed by specifying the "zna" variable in all Function nodes. In order for the stream to form the keyboard, it is necessary to send the /menu command to the Telegram bot.
[{"id":"407b66b8.062a58","type":"tab","label":"Zig Bee","disabled":false,"info":""},{"id":"863e1e1c.033c","type":"function","z":"407b66b8.062a58","name":"Form listrooms","func":"\nif(msg.payload.content === undefined){} else {flow.set(\"type\", msg.payload.content);}\nif(msg.payload.chatId === undefined){} else {flow.set(\"chatId\", msg.payload.chatId);}\nvar pa = flow.keys();\nvar jki = [];\nvar kle = [];\nvar jkr = [];\nvar t = 0;\nvar znak = \"_\"; //разделительный знак в топике, Балкон_Розетка\nvar idx;\n\n//формируем массив комнат\n for (let i = 0; i < pa.length; i++) {\n if(pa[i].includes(znak)){if(jkr.includes(pa[i].slice(0, [pa[i].indexOf(znak)]))){}else{\n jkr[t] = pa[i].slice(0, [pa[i].indexOf(znak)])\n t = t+1;\n }}\n }\nflow.set(\"listrooms\", jkr);\n\n\n var lengths = pa.map(x => flow.get(x));\n \n for (let i = 0; i < lengths.length; i++) { \n jki[i] = {tapy : pa[i], valome : lengths[i]}\n }\n var tape = flow.get(\"type\");\n let room = jki.filter(item => item.tapy.includes(tape));\n var payload = {room : room, chatId : flow.get(\"chatId\")};\nmsg.payload = payload;\nreturn msg;","outputs":1,"noerr":0,"x":400,"y":940,"wires":[["a190aaf.87a6d58"]]},{"id":"9afc2602.e1aaa8","type":"function","z":"407b66b8.062a58","name":"Domotikcz","func":"msg.topic = msg.payload.name;\n\nif(msg.payload.dtype === \"Temp\"){msg.payload.temperature = Number(msg.payload.svalue1);}\nif(msg.payload.dtype === \"Light/Switch\"){if(msg.payload.switchType === \"On/Off\"){if(msg.payload.nvalue)\n{msg.payload.state = \"ON\";} else {msg.payload.state = \"OFF\"}} \n if(msg.payload.switchType === \"Selector\" && msg.payload.stype === \"Selector Switch\"){\n var t = 0;\n var v = 0;\n var k = [];\n for (let char of msg.payload.LevelNames) {\n if(char === \"|\"){k[v] = t; \n v = v + 1; }\n t = t + 1;\n msg.payload.nomSelector = Number(msg.payload.svalue1);\n \n }\n var e = Number(msg.payload.svalue1)/10 - 1;\n msg.payload.Leve = k;\n msg.payload.stateSelector = msg.payload.LevelNames.slice(k[0 + e]+1, k[1 + e]);} \n if(msg.payload.switchType === \"Dimmer\"){\n msg.payload.stateDimmer = Number(msg.payload.svalue1);\n }\n \n}\nif(msg.payload.dtype === \"Lux\"){msg.payload.illuminance = Number(msg.payload.svalue1);}\nif(msg.payload.dtype === \"Temp + Humidity\"){msg.payload.temperature = Number(msg.payload.svalue1);\n msg.payload.humidity = Number(msg.payload.svalue2);\n msg.payload.pointofross = Number(msg.payload.svalue3);\n}\n\nif(msg.payload.dtype === \"Temp + Humidity + Baro\"){msg.payload.temperature = Number(msg.payload.svalue1);\n msg.payload.humidity = Number(msg.payload.svalue2);\n msg.payload.pressure = Number(msg.payload.svalue4);\n msg.payload.pointofross = Number(msg.payload.svalue3)\n}\n\nif(msg.payload.dtype === \"Rain\"){msg.payload.rate = Number(msg.payload.svalue1)/10000;\n msg.payload.rain = Number(msg.payload.svalue2);\n}\n\nif(msg.payload.dtype === \"Wind\"){msg.payload.degrees = Number(msg.payload.svalue1);\n msg.payload.compass = msg.payload.svalue2;\n msg.payload.speed = Number(msg.payload.svalue3)/10; \n msg.payload.gust = Number(msg.payload.svalue4)/10\n msg.payload.FeelsLike = Number(msg.payload.svalue6)\n msg.payload.temperature = Number(msg.payload.svalue5);\n}\n\nif(msg.payload.stype === \"Visibility\"){msg.payload.vissibility = Number(msg.payload.svalue1);\n}\n\nif(msg.payload.dtype === \"UV\"){msg.payload.ultraviolet = Number(msg.payload.svalue1);\n}\n\nif(msg.payload.stype === \"kWh\"){msg.payload.power = Number(msg.payload.svalue1);\nmsg.payload.summpower = Number(msg.payload.svalue2);\n}\n\n\n//msg.topic = topic;\nreturn msg;","outputs":1,"noerr":0,"x":610,"y":280,"wires":[["7bad60ed.8aab1"]]},{"id":"386d6585.a1a21a","type":"zigbee2mqtt-bridge","z":"407b66b8.062a58","name":"","server":"bfdd1bcb.dd1a68","topic":null,"x":230,"y":220,"wires":[["3a22c3e7.165cfc"]]},{"id":"9d22a4c8.cd97c8","type":"zigbee2mqtt-in","z":"407b66b8.062a58","name":"Зал_ДДвижения","server":"bfdd1bcb.dd1a68","friendly_name":"Зал_ДДвижения","device_id":"0x00158d000413fbed","state":"0","outputAtStartup":true,"x":220,"y":360,"wires":[["d7205ced.2072"]]},{"id":"d7205ced.2072","type":"debug","z":"407b66b8.062a58","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":470,"y":360,"wires":[]},{"id":"3a22c3e7.165cfc","type":"json","z":"407b66b8.062a58","name":"","property":"payload","action":"","pretty":false,"x":420,"y":220,"wires":[["a0cb97dc.9bff88"]]},{"id":"df13b1a5.b1c0a","type":"zigbee2mqtt-in","z":"407b66b8.062a58","name":"Балкон_Розетка","server":"bfdd1bcb.dd1a68","friendly_name":"Балкон_Розетка","device_id":"0x00158d000353d7c2","state":"","outputAtStartup":true,"x":220,"y":420,"wires":[["2f1deb25.04d4c4"]]},{"id":"2f1deb25.04d4c4","type":"debug","z":"407b66b8.062a58","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":470,"y":420,"wires":[]},{"id":"80d4e113.ee85d","type":"zigbee2mqtt-in","z":"407b66b8.062a58","name":"","server":"bfdd1bcb.dd1a68","friendly_name":"Коридор_ДДвижения","device_id":"0x00158d00031e17b5","state":"0","outputAtStartup":true,"x":240,"y":480,"wires":[["6194e286.3f2bfc"]]},{"id":"6194e286.3f2bfc","type":"debug","z":"407b66b8.062a58","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":470,"y":480,"wires":[]},{"id":"b95590a3.a204","type":"zigbee2mqtt-in","z":"407b66b8.062a58","name":"","server":"bfdd1bcb.dd1a68","friendly_name":"Коридор_Дверь","device_id":"0x00158d0003952588","state":"0","outputAtStartup":true,"x":220,"y":540,"wires":[["1f06c883.8976b7","8e459531.50bf08"]]},{"id":"1f06c883.8976b7","type":"debug","z":"407b66b8.062a58","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":470,"y":540,"wires":[]},{"id":"ebee7e09.f4a61","type":"zigbee2mqtt-out","z":"407b66b8.062a58","name":"Балкон_Розетка","server":"bfdd1bcb.dd1a68","friendly_name":"Балкон_Розетка","device_id":"0x00158d000353d7c2","command":"state","commandType":"z2m_cmd","payload":"payload","payloadType":"msg","transition":0,"x":430,"y":720,"wires":[]},{"id":"4206218e.8e38a","type":"inject","z":"407b66b8.062a58","name":"","topic":"","payload":"toggle","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":720,"wires":[["ebee7e09.f4a61"]]},{"id":"8e459531.50bf08","type":"link out","z":"407b66b8.062a58","name":"Тамбур","links":["d24d0f7f.1fcee"],"x":595,"y":580,"wires":[]},{"id":"6d5958dd.7ca1f8","type":"zigbee2mqtt-in","z":"407b66b8.062a58","name":"","server":"bfdd1bcb.dd1a68","friendly_name":"Тамбур_ДДвижения","device_id":"0x00158d0003fae2db","state":"0","outputAtStartup":true,"x":230,"y":600,"wires":[["33202d26.57f2b2","8e459531.50bf08"]]},{"id":"33202d26.57f2b2","type":"debug","z":"407b66b8.062a58","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":450,"y":600,"wires":[]},{"id":"a0cb97dc.9bff88","type":"function","z":"407b66b8.062a58","name":"zigbee2mqtt","func":"if (msg.payload.level == \"info\"){\nvar message = msg.payload.message;\nvar t = 0;\nvar v = 0;\nvar k = [];\nvar topic = \"zigbee2mqtt\";// топик на который подписан в zigbee2mqtt\n\n for (let char of message) {\n if(char === \"'\"){k[v] = t; \n v = v + 1; }\n t = t + 1;\n }\n \n msg.payload.Leve = k;\n msg.topic = message.slice(k[0]+ topic.length + 2, k[1]); \n msg.payload = message.slice(k[2]+1, k[3]);\n \n \nreturn msg;}","outputs":1,"noerr":0,"x":610,"y":220,"wires":[["2d4e2d39.c19372"]]},{"id":"2d4e2d39.c19372","type":"json","z":"407b66b8.062a58","name":"","property":"payload","action":"","pretty":false,"x":770,"y":220,"wires":[["7bad60ed.8aab1"]]},{"id":"9d54883c.e2d0d8","type":"mqtt in","z":"407b66b8.062a58","name":"","topic":"domoticz/out","qos":"2","datatype":"auto","broker":"8c61f6d8.6a52e8","x":230,"y":280,"wires":[["4b1ff25d.7fae6c"]]},{"id":"4b1ff25d.7fae6c","type":"json","z":"407b66b8.062a58","name":"","property":"payload","action":"","pretty":false,"x":410,"y":280,"wires":[["9afc2602.e1aaa8"]]},{"id":"7032190d.062bb8","type":"zigbee2mqtt-in","z":"407b66b8.062a58","name":"","server":"bfdd1bcb.dd1a68","friendly_name":"Зал_Ксиоми","device_id":"0x00158d00036b6538","state":"0","outputAtStartup":true,"x":210,"y":660,"wires":[["fb8d56d5.fd69e8"]]},{"id":"fb8d56d5.fd69e8","type":"debug","z":"407b66b8.062a58","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":450,"y":660,"wires":[]},{"id":"7bad60ed.8aab1","type":"function","z":"407b66b8.062a58","name":"flow set","func":"var dt = new Date();\nvar topic = msg.topic;\nvar payload = msg.payload;\nvar znak = \"_\"; //разделительный знак в топике, _Балкон_Розетка\nlet battery = {};\nlet linkquality = {};\n\n\npayload = {battery : msg.payload.battery,\nvoltage : msg.payload.voltage,\ntemperature : msg.payload.temperature,\nhumidity : msg.payload.humidity,\npressure : msg.payload.pressure,\nlinkquality : msg.payload.linkquality, \nilluminance : msg.payload.illuminance,\ncontact : msg.payload.contact,\nstate : msg.payload.state,\nstateSelector : msg.payload.stateSelector,\nnomSelector : msg.payload.nomSelector,\nstateDimmer : msg.payload.stateDimmer,\noccupancy : msg.payload.occupancy,\ndegrees : msg.payload.degrees, \nvissibility : msg.payload.vissibility,\nFeelsLike : msg.payload.FeelsLike,\ngust : msg.payload.gust,\ncompass : msg.payload.compass,\nspeed : msg.payload.speed,\nultraviolet : msg.payload.ultraviolet,\nsummpower : msg.payload.summpower,\nozon : msg.payload.ozon,\nrate : msg.payload.rate,\nrain : msg.payload.rain,\npower : msg.payload.power,\nenergy : msg.payload.energy,\nconsumption : msg.payload.consumption,\nidx : msg.payload.idx,\ntime : dt.getTime()\n};\n\nflow.set(topic, payload);\n\nmsg.payload = payload;\nreturn msg; \n","outputs":1,"noerr":0,"x":1060,"y":280,"wires":[[]]},{"id":"4c3b0db6.4789f4","type":"zigbee2mqtt-in","z":"407b66b8.062a58","name":"","server":"bfdd1bcb.dd1a68","friendly_name":"Зал_ДВибрации","device_id":"0x00158d0002b8bbfc","state":"0","outputAtStartup":true,"x":220,"y":800,"wires":[["1e9487f7.286648"]]},{"id":"1e9487f7.286648","type":"debug","z":"407b66b8.062a58","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":410,"y":800,"wires":[]},{"id":"1b885ac3.1ef015","type":"telegram receiver","z":"407b66b8.062a58","name":"Megevabot","bot":"65dd8e4a.968dd","saveDataDir":"","x":160,"y":900,"wires":[["863e1e1c.033c","271ced23.8d3052"],[]]},{"id":"133a96e8.ce1789","type":"telegram sender","z":"407b66b8.062a58","name":"","bot":"65dd8e4a.968dd","x":930,"y":940,"wires":[["7d9ec2d5.9ce06c"]]},{"id":"d5e5aef0.bc5c8","type":"string","z":"407b66b8.062a58","name":"","methods":[{"name":"replaceAll","params":[{"type":"str","value":"."},{"type":"str","value":"\\."}]},{"name":"replaceAll","params":[{"type":"str","value":"-"},{"type":"str","value":"\\-"}]}],"prop":"payload.content","propout":"payload.content","object":"msg","objectout":"msg","x":750,"y":940,"wires":[["133a96e8.ce1789"]]},{"id":"a190aaf.87a6d58","type":"function","z":"407b66b8.062a58","name":"form a message","func":"var payload = msg.payload.room;\nvar jkr = [];\nvar t = 0;\nvar znak = \"_\"; //разделительный знак в топике, _Балкон_Розетка\nvar idx;\nvar msng, msngw = \"\";\n msngq = \" \";\nvar massiv = {};\nvar type,tepi = \"\";\nvar te = flow.get(\"type\");\nvar listrooms = flow.get(\"listrooms\");\nvar messageid = flow.get(\"messageid\");\n //формируем сообщение в теллеграм\n var meseng = \"\"\n \n if (msg.payload.chatId === undefined) {} else {flow.set(\"chatId\", msg.payload.chatId)}\n for (let i = 0; i < payload.length; i++) { \n var dt = new Date();\n tapy = \"__*\" + payload[i].tapy.slice(payload[i].tapy.lastIndexOf(znak) + 1) + \"*__\" + \"\\n\" ;\n tepi = payload[i].tapy.slice(payload[i].tapy.lastIndexOf(znak) + 1);\n if(payload[i].valome.state === undefined){state = \"\";} else {\n if (payload[i].valome.state === \"OFF\") {sta = \" 🔴️ ON\"} else {sta = \" ⚫️ OFF️\"}\n msngw = \"[{\\\"text\\\":\\\"\"+ tepi + sta + \"\\\",\\\"callback_data\\\":\\\"\" + te + znak + tepi + \"~state\" + \"\\\"}],\"; \n if (payload[i].valome.state === \"OFF\") {staate = \"⚫️ OFF️\"} else {staate = \"🔴 ON️\"} \n var state = \"_состояние:_ \" + staate + \"\\n\";}\n if(payload[i].valome.power === undefined){power = \"\";} else {var power = \"_мощность:_ *\" + payload[i].valome.power + \"Watt*\" + \"\\n\";}\n if(payload[i].valome.energy === undefined){energy = \"\";} else {var energy = \"_энергия:_ *\" + payload[i].valome.energy + \"kWh*\" + \"\\n\";}\n if(payload[i].valome.temperature === undefined){temperature = \"\";} else {var temperature = \"_температура:_ *\" + payload[i].valome.temperature + \"°С*\" + \"\\n\";}\n if(payload[i].valome.FeelsLike === undefined){FeelsLike = \"\";} else {var FeelsLike = \"_чувствуется как:_ *\" + payload[i].valome.FeelsLike + \"°С*\" + \"\\n\";}\n if(payload[i].valome.humidity === undefined){humidity = \"\";} else {var humidity = \"_влажность:_ *\" + payload[i].valome.humidity + \"%*\" + \"\\n\";}\n if(payload[i].valome.pressure === undefined){pressure = \"\";} else {var pressure = \"_давление:_ *\" + payload[i].valome.pressure + \"hPa*\" + \"\\n\";} \n if(payload[i].valome.pointofross === undefined){pointofross = \"\";} else {var pointofross = \"_точка россы:_ *\" + payload[i].valome.pointofross + \"°С*\" + \"\\n\";}\n if(payload[i].valome.degrees === undefined){degrees = \"\";} else {var degrees = \"_направление:_ *\" + payload[i].valome.degrees + \"°\" + payload[i].valome.compass + \"*\\n\";}\n if(payload[i].valome.speed === undefined){speed = \"\";} else {var speed = \"_скорость:_ *\" + payload[i].valome.speed + \"m/s*\\n\";}\n if(payload[i].valome.gust === undefined){gust = \"\";} else {var gust = \"_порывы:_ *\" + payload[i].valome.gust + \"m/s*\\n\";}\n if(payload[i].valome.ultraviolet === undefined){ultraviolet = \"\";} else {var ultraviolet = \"_УФ-индекс:_ *\" + payload[i].valome.ultraviolet + \"uv*\\n\";}\n if(payload[i].valome.rate === undefined){rate = \"\";} else {var rate = \"_количество:_ *\" + payload[i].valome.rate + \"mm*\\n\";}\n if(payload[i].valome.rain === undefined){rain = \"\";} else {var rain = \"_интенсивность:_ *\" + payload[i].valome.rain + \"mm/h*\\n\";}\n if(payload[i].valome.occupancy === undefined){occupancy = \"\";} else {\n var dvig;\n if (payload[i].valome.occupancy){dvig = \"🔴\"} else {dvig = \"🟢\"}\n var occupancy = \"_движение:_ *\" + dvig + \"*\\n\";}\n \n if(payload[i].valome.contact === undefined){contact = \"\";} else {\n var cont;\n if (payload[i].valome.contact){cont = \"Закрыто 🟢\"} else {cont = \"Открыто 🔴\"}\n var contact = \"_состояние:_ *\" + cont + \"*\\n\";} \n \n \n if(payload[i].valome.vissibility === undefined){vissibility = \"\";} else {var vissibility = \"_видимость:_ *\" + payload[i].valome.vissibility + \"km*\\n\";}\n if(payload[i].valome.stateDimmer === undefined){stateDimmer = \"\";} else {\n msngw = \"[{\\\"text\\\":\\\"\"+ \"⏪\" + \"\\\",\\\"callback_data\\\":\\\"\" + te + znak + tepi + \"~minus10-stateDimmer\" + \"\\\"},{\\\"text\\\":\\\"\"+ \"◀️️\" + \"\\\",\\\"callback_data\\\":\\\"\" + te + znak + tepi + \"~minus90-stateDimmer\" + \"\\\"}, {\\\"text\\\":\\\"\"+ tepi + \"\\\",\\\"callback_data\\\":\\\"\" + te + znak + tepi + \"~mute-stateDimmer\" + \"\\\"},{\\\"text\\\":\\\"\"+ \"▶️\" + \"\\\",\\\"callback_data\\\":\\\"\" + te + znak + tepi + \"~plus90-stateDimmer\" + \"\\\"}, {\\\"text\\\":\\\"\"+ \" ⏩\" + \"\\\",\\\"callback_data\\\":\\\"\" + te + znak + tepi + \"~plus10-stateDimmer\" + \"\\\"}],\";\n var stateDimmer = \"_уровень:_ *\" + payload[i].valome.stateDimmer + \"%*\\n\";}\n if(payload[i].valome.stateSelector === undefined){stateSelector = \"\";} else {\n msngw = \"[{\\\"text\\\":\\\"\"+ \"⏪\" + \"\\\",\\\"callback_data\\\":\\\"\" + te + znak + tepi + \"~minus10-stateSelector\" + \"\\\"}, {\\\"text\\\":\\\"\"+ tepi + \"\\\",\\\"callback_data\\\":\\\"\" + te + znak + tepi + \"~mute-stateSelector\" + \"\\\"},{\\\"text\\\":\\\"\"+ \" ⏩\" + \"\\\",\\\"callback_data\\\":\\\"\" + te + znak + tepi + \"~plus10-stateSelector\"+ \"\\\"}],\";\n var stateSelector = \"_Выбрано:_ *\" + payload[i].valome.stateSelector + \"✔️*\\n\";}\n if(payload[i].valome.illuminance === undefined){illuminance = \"\";} else {var illuminance = \"_освещенность:_ *\" + payload[i].valome.illuminance + \"Lux*\" + \"\\n\";}\n if(payload[i].valome.linkquality === undefined){linkquality = \"\";} else {var linkquality = \" 📶 *\" + payload[i].valome.linkquality + \"%*\";} \n if(payload[i].valome.voltage === undefined){voltage = \"\";} else {var voltage = \" 🔋 *\" + (payload[i].valome.voltage/1000).toFixed(2) + \"Вт*\";}\n if(payload[i].valome.battery === undefined){battery = \"\";} else {var battery = \"/*\" + payload[i].valome.battery + \"%*\";}\n if(payload[i].valome.time === undefined){time = \"\";} else {var time = \" ⏱ *\" + Math.round((dt.getTime() - payload[i].valome.time)/60000) + \"мин*\" + \"\\n\";}\n meseng = meseng + tapy + stateDimmer + stateSelector + state + power + energy + temperature + FeelsLike + humidity + pointofross + occupancy + contact + vissibility + rate + rain + degrees + speed + gust + ultraviolet + pressure + illuminance + voltage + battery + linkquality + time + \"\\n\";\n msngq = msngq + msngw;\n }\n \n var inlan = \"{\\\"inline_keyboard\\\":[\" + msngq.slice(0, -1) + \"]}\";\n if(messageid === undefined){type = \"message\"; messageid = \"\";} else {type = \"editMessageText\";} \n \n content = \"__*\" + te + \"*__\" + \"\\n\" + \"\\n\" + meseng;\n flow.set(\"content\", content)\n payload = {\n chatId : flow.get(\"chatId\"),\n type : type,\n content :content, \n \n \n \n \n options: { \n reply_markup: inlan,\n message_id : messageid,\n chat_id: flow.get(\"chatId\"),\n disable_web_page_preview : true,\n parse_mode : \"MarkdownV2\"\n }\n};\n\n\n \nmsg.payload = payload;\nreturn msg;","outputs":1,"noerr":0,"x":580,"y":940,"wires":[["d5e5aef0.bc5c8"]]},{"id":"7d9ec2d5.9ce06c","type":"function","z":"407b66b8.062a58","name":"","func":"flow.set(\"messageid\", msg.payload.content.message_id);\nreturn msg;","outputs":1,"noerr":0,"x":1170,"y":940,"wires":[[]]},{"id":"18e7627f.cb88de","type":"function","z":"407b66b8.062a58","name":"form a keyboard","func":"var payload = msg.payload;\nvar jkr = [];\nvar t = 0;\nvar znak = \"_\"; //разделительный знак в топике, _Балкон_Розетка\nvar idx;\nvar msng = \"\";\nvar massiv = {};\nvar type = flow.get(\"type\");\nvar listrooms = flow.get(\"listrooms\");\nvar content = flow.get(\"content\");\n var meseng = \"\"\nflow.set(\"messageid\", msg.payload.content.message_id);\n //формирование клавиатуры\n let lengths = listrooms.map(item => item.length);\n for (let i = 0; i < listrooms.length; i++) { \n if(lengths[i] + lengths[i+1] + lengths[i+2] < 25){ msng = msng + \"[\\\"\" + listrooms[i] + \"\\\",\\\"\" + listrooms[i + 1] + \"\\\",\\\"\" + listrooms[i + 2] +\"\\\"],\";\n i = i + 2;\n } else { \n if(lengths[i] + lengths[i+1] < 15){ msng = msng + \"[\\\"\" + listrooms[i] + \"\\\",\\\"\" + listrooms[i + 1] + \"\\\"],\";\n i = i + 1;\n } else { \n msng = msng + \"[\\\"\" + listrooms[i] + \"\\\"],\";}\n } }\n inlan = \"{\\\"keyboard\\\":[\" + msng.slice(0, -1) + \"],\" + \"\\\"resize_keyboard\\\":true, \\\"one_time_keyboard\\\":false\" + \"}\";\n \n \n \n payload = {\n chatId : flow.get(\"chatId\"),\n type : \"message\",\n content : \"меню\", \n lengths : lengths,\n listrooms : listrooms,\n \n \n options: { \n \n reply_markup: inlan,\n disable_web_page_preview : true,\n parse_mode : \"MarkdownV2\"\n }\n};\n\n\n \nmsg.payload = payload;\nreturn msg;","outputs":1,"noerr":0,"x":620,"y":1000,"wires":[["133a96e8.ce1789"]]},{"id":"98c72ecf.c0b5e","type":"inject","z":"407b66b8.062a58","name":"Обнавление Телеги раз в сек","topic":"","payload":"","payloadType":"date","repeat":"1","crontab":"","once":false,"onceDelay":0.1,"x":170,"y":980,"wires":[["863e1e1c.033c"]]},{"id":"271ced23.8d3052","type":"function","z":"407b66b8.062a58","name":"Delete Massage","func":"var listrooms = flow.get(\"listrooms\");\n\nif (listrooms.includes(msg.payload.content) || listrooms.includes(msg.payload.content.text)){\n msg.payload.type = 'deleteMessage'; \n msg.payload.content = msg.payload.messageId; \nreturn msg; \n}\n","outputs":1,"noerr":0,"x":450,"y":880,"wires":[["133a96e8.ce1789"]]},{"id":"6dd9eb62.736744","type":"telegram command","z":"407b66b8.062a58","name":"","command":"/menu","bot":"65dd8e4a.968dd","strict":false,"x":350,"y":1020,"wires":[["18e7627f.cb88de"],[]]},{"id":"793c7119.c9071","type":"telegram event","z":"407b66b8.062a58","name":"","bot":"65dd8e4a.968dd","event":"callback_query","autoanswer":false,"x":220,"y":1140,"wires":[["c01b690.cdacc98"]]},{"id":"c01b690.cdacc98","type":"function","z":"407b66b8.062a58","name":"","func":"let str = msg.payload.content;\nvar Status;\nstre = flow.get(str.slice(0, str.indexOf('~')));\n\nif(stre.idx){\n if(stre.state){\n if(stre.state === \"ON\"){Status = \"Off\"} else {Status = \"On\"}\n msg.payload = \"{\\\"command\\\":\\\"switchlight\\\",\\\"idx\\\":\" + stre.idx + \",\\\"switchcmd\\\":\\\"\" + Status + \"\\\" }\";\n }\n if(stre.stateSelector){\n if(msg.payload.content.includes(\"plus10\")){Status = stre.nomSelector + 10}\n if(msg.payload.content.includes(\"minus10\")){Status = stre.nomSelector - 10}\n if(msg.payload.content.includes(\"mute\")){Status = 0}\n msg.payload = \"{\\\"command\\\":\\\"switchlight\\\",\\\"idx\\\":\" + stre.idx + \",\\\"switchcmd\\\":\\\"Set Level\\\",\\\"level\\\":\" + Status + \"}\";\n } \n if(stre.stateDimmer === undefined){} else {\n if(msg.payload.content.includes(\"plus10\")){Status = stre.stateDimmer + 10}\n if(msg.payload.content.includes(\"minus10\")){Status = stre.stateDimmer - 10}\n if(msg.payload.content.includes(\"plus90\")){Status = stre.stateDimmer + 1}\n if(msg.payload.content.includes(\"minus90\")){Status = stre.stateDimmer - 1}\n if(msg.payload.content.includes(\"mute\")){Status = 0}\n msg.payload = \"{\\\"command\\\":\\\"switchlight\\\",\\\"idx\\\":\" + stre.idx + \",\\\"switchcmd\\\":\\\"Set Level\\\",\\\"level\\\":\" + Status + \"}\";\n }\n//{\"command\":\"switchlight\",\"idx\":78,\"switchcmd\":\"On\"}\nmsg.topic = \"domoticz/in\";\nreturn msg;} else {\n if(stre.state){\n if(stre.state === \"ON\"){Status = \"{\\\"state\\\": \\\"OFF\\\"}\"} else {Status =\"{\\\"state\\\": \\\"ON\\\"}\"}\n msg.payload = Status;\n msg.topic = \"zigbee2mqtt/\" + str.slice(0, str.indexOf('~')) + \"/set\";\n return msg;}\n}","outputs":1,"noerr":0,"x":390,"y":1140,"wires":[["773b7d83.a59c64"]]},{"id":"773b7d83.a59c64","type":"mqtt out","z":"407b66b8.062a58","name":"","topic":"","qos":"","retain":"","broker":"8c61f6d8.6a52e8","x":570,"y":1140,"wires":[]},{"id":"b13313.edae7cf","type":"zigbee2mqtt-in","z":"407b66b8.062a58","name":"","server":"bfdd1bcb.dd1a68","friendly_name":"0x5c0272fffec24309","device_id":"0x5c0272fffec24309","state":"0","outputAtStartup":true,"x":210,"y":760,"wires":[["ef49b810.6de288"]]},{"id":"ef49b810.6de288","type":"debug","z":"407b66b8.062a58","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":480,"y":760,"wires":[]},{"id":"bfdd1bcb.dd1a68","type":"zigbee2mqtt-server","z":"","name":"zigbee","host":"localhost","mqtt_port":"1883","mqtt_username":"vovadpua","mqtt_password":"7880186","tls":"e220341c.bd1c08","usetls":false,"base_topic":"zigbee2mqtt"},{"id":"8c61f6d8.6a52e8","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"65dd8e4a.968dd","type":"telegram bot","z":"","botname":" @MegevaBot:","usernames":"","chatids":"474664595","baseapiurl":"","updatemode":"polling","pollinterval":"300","usesocks":false,"sockshost":"","socksport":"","socksusername":"","sockspassword":"","bothost":"","localbotport":"","publicbotport":"","privatekey":"","certificate":"","useselfsignedcertificate":false,"verboselogging":false},{"id":"e220341c.bd1c08","type":"tls-config","z":"","name":"","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"","servername":"","verifyservercert":true}]