Auteur CETECH11 | Dernière modification 22/10/2023 par CETECH11
node red, Telegram, Raspberry Pi, IoT Node-Red_Telegram_Bot_with_Temperature_Logger_Part-2_1.PNG Circuitry
You must check out PCBWAY for ordering PCBs online for cheap!
You get 10 good-quality PCBs manufactured and shipped to your doorstep for cheap. You will also get a discount on shipping on your first order. Upload your Gerber files onto PCBWAY to get them manufactured with good quality and quick turnaround time. PCBWay now could provide a complete product solution, from design to enclosure production. Check out their online Gerber viewer function. With reward points, you can get free stuff from their gift shop. Also, check out this useful blog on PCBWay Plugin for KiCad from here. Using this plugin, you can directly order PCBs in just one click after completing your design in KiCad.
To follow this tutorial, you will need:
npm install node-red-contrib-telegrambot
The basic idea is to use Node-RED to create a flow that receives messages from your Telegram bot, parses them to extract commands or queries, and then sends commands or responses back to your bot. The node-red-contrib-telegrambot node provides two main nodes for this purpose: the receiver node and the sender node.
The receiver node listens for messages from your bot and outputs a message object with the following properties:
msg.payload.chatId
: The chat ID of the sender.msg.payload.type
: The type of the message, such as “message”, “photo”, “location”, etc.msg.payload.content
: The content of the message, such as a text string, a file ID, or an object with additional data.The sender node takes a message object as input and sends it to your bot. The message object should have the following properties:
msg.payload.chatId
: The chat ID of the recipient.msg.payload.type
: The type of the message, such as “message”, “photo”, “location”, etc.msg.payload.content
: The content of the message, such as a text string, a file ID, or an object with additional data.You can use other nodes in between the receiver and sender nodes to process the messages and perform actions on your home automation system. For example, you can use a switch node to route messages based on their type or content, a function node to write custom logic in JavaScript, or an HTTP request node to call external APIs.
In the previous blog, we have seen how to use the telegram bot with node-red to trigger the temperature data. In this blog, we are going to see how to automate and trigger the Telegram bot to control the GPIO.
In the last article, we have seen how to trigger the sensor readings from Node-Red to Telegram, now let's see how to trigger and get the sensor data from Telegram Bot.
First, we need to use the telegram receiver node.
And configure the node with your bot credentials. Then add a debug block.
Next, just try to send some messages to your bot and look at the response in the debug console.
Now, you can see your texts are coming under payload.content. So, we are going to filter the content then based on the content we are going to trigger the actions.
Here are my complete blocks.
In this, I have tried to filter the contents as Green, Red, Blue, Off, and Env. Based on the contents we are going to trigger the neo pixels with certain colors.
Finally, just deploy the flow, open the telegram bot, and test out the connections.
Let's try out the neo pixels.[
{
"id": "eb8f9c0d054be30c",
"type": "tab",
"label": "Flow 2",
"disabled": false,
"info": "",
"env": []
},
{
"id": "ea63aa67.c972f",
"type": "template",
"z": "eb8f9c0d054be30c",
"name": "",
"field": "payload",
"fieldType": "msg",
"format": "handlebars",
"syntax": "mustache",
"template": "{\"chatId\": 5379039379,\n\"type\":\"message\",\n\"content\":\"Temperature : {{payload}}, Humidity : {{humidity}}\"}",
"output": "json",
"x": 660,
"y": 360,
"wires": [
[
"9e00d0a7.d5ccf",
"600063bd96d765e6"
]
]
},
{
"id": "9e00d0a7.d5ccf",
"type": "debug",
"z": "eb8f9c0d054be30c",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 830,
"y": 300,
"wires": []
},
{
"id": "600063bd96d765e6",
"type": "telegram sender",
"z": "eb8f9c0d054be30c",
"name": "roboerto_bot",
"bot": "ae1a60539b8e5308",
"haserroroutput": true,
"outputs": 2,
"x": 830,
"y": 380,
"wires": [
[],
[]
]
},
{
"id": "f2f9819ae972ae60",
"type": "rpi-dht22",
"z": "eb8f9c0d054be30c",
"name": "",
"topic": "rpi-dht22",
"dht": "11",
"pintype": 1,
"pin": "7",
"x": 500,
"y": 380,
"wires": [
[
"ea63aa67.c972f"
]
]
},
{
"id": "e4b8f2dd860a7973",
"type": "telegram receiver",
"z": "eb8f9c0d054be30c",
"name": "",
"bot": "ae1a60539b8e5308",
"saveDataDir": "",
"filterCommands": false,
"x": 290,
"y": 200,
"wires": [
[
"ea58984a24ea493e"
],
[]
]
},
{
"id": "ea58984a24ea493e",
"type": "switch",
"z": "eb8f9c0d054be30c",
"name": "",
"property": "payload.content",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "Green",
"vt": "str"
},
{
"t": "eq",
"v": "Red",
"vt": "str"
},
{
"t": "eq",
"v": "Off",
"vt": "str"
},
{
"t": "eq",
"v": "Blue",
"vt": "str"
},
{
"t": "eq",
"v": "Env",
"vt": "str"
},
{
"t": "eq",
"v": "Rainbow",
"vt": "str"
}
],
"checkall": "true",
"repair": false,
"outputs": 6,
"x": 450,
"y": 140,
"wires": [
[
"b410ed94340bb528"
],
[
"13aa73e421c429c7"
],
[
"4ed36e19be451327"
],
[
"db816a1f10392614"
],
[
"f2f9819ae972ae60"
],
[]
]
},
{
"id": "b0edb6e1c2807920",
"type": "rpi-neopixels",
"z": "eb8f9c0d054be30c",
"name": "Neo Pixel",
"gpio": "18",
"pixels": "8",
"bgnd": "",
"fgnd": "",
"wipe": "60",
"mode": "pixels",
"rgb": "rgb",
"brightness": "100",
"gamma": true,
"x": 660,
"y": 100,
"wires": []
},
{
"id": "13aa73e421c429c7",
"type": "function",
"z": "eb8f9c0d054be30c",
"name": "Red Led",
"func": "\nmsg.payload = \"255,0,0\"\nreturn msg;\n\n\n",
"outputs": 1,
"timeout": "",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 660,
"y": 200,
"wires": [
[
"b0edb6e1c2807920",
"0d73aa1efdf96848"
]
]
},
{
"id": "b410ed94340bb528",
"type": "function",
"z": "eb8f9c0d054be30c",
"name": "Green Led",
"func": "\nmsg.payload = \"0,255,0\"\nreturn msg;\n\n\n",
"outputs": 1,
"timeout": "",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 670,
"y": 160,
"wires": [
[
"b0edb6e1c2807920",
"c173db3cc3868fe8"
]
]
},
{
"id": "4ed36e19be451327",
"type": "function",
"z": "eb8f9c0d054be30c",
"name": "Off",
"func": "\nmsg.payload = \"0,0,0\"\nreturn msg;\n\n\n",
"outputs": 1,
"timeout": "",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 650,
"y": 240,
"wires": [
[
"b0edb6e1c2807920",
"02e43d4dd4523371"
]
]
},
{
"id": "db816a1f10392614",
"type": "function",
"z": "eb8f9c0d054be30c",
"name": "Blue Led",
"func": "\nmsg.payload = \"0,0,255\"\nreturn msg;\n\n\n",
"outputs": 1,
"timeout": "",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 660,
"y": 280,
"wires": [
[
"b0edb6e1c2807920",
"15dcd2ff9b951c47"
]
]
},
{
"id": "c173db3cc3868fe8",
"type": "template",
"z": "eb8f9c0d054be30c",
"name": "",
"field": "payload",
"fieldType": "msg",
"format": "handlebars",
"syntax": "mustache",
"template": "{\"chatId\": 5379039379,\n\"type\":\"message\",\n\"content\":\"Green LED Triggered\"}",
"output": "json",
"x": 860,
"y": 80,
"wires": [
[
"62f3360544d9ca11",
"4abe16519bcdcaca"
]
]
},
{
"id": "62f3360544d9ca11",
"type": "debug",
"z": "eb8f9c0d054be30c",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1030,
"y": 80,
"wires": []
},
{
"id": "4abe16519bcdcaca",
"type": "telegram sender",
"z": "eb8f9c0d054be30c",
"name": "roboerto_bot",
"bot": "ae1a60539b8e5308",
"haserroroutput": true,
"outputs": 2,
"x": 1030,
"y": 120,
"wires": [
[],
[]
]
},
{
"id": "0d73aa1efdf96848",
"type": "template",
"z": "eb8f9c0d054be30c",
"name": "",
"field": "payload",
"fieldType": "msg",
"format": "handlebars",
"syntax": "mustache",
"template": "{\"chatId\": 5379039379,\n\"type\":\"message\",\n\"content\":\"Red LED Triggered\"}",
"output": "json",
"x": 860,
"y": 120,
"wires": [
[
"4795fb81ce5c47a6",
"12c1a78b02583d94"
]
]
},
{
"id": "4795fb81ce5c47a6",
"type": "debug",
"z": "eb8f9c0d054be30c",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1030,
"y": 180,
"wires": []
},
{
"id": "12c1a78b02583d94",
"type": "telegram sender",
"z": "eb8f9c0d054be30c",
"name": "roboerto_bot",
"bot": "ae1a60539b8e5308",
"haserroroutput": true,
"outputs": 2,
"x": 1030,
"y": 220,
"wires": [
[],
[]
]
},
{
"id": "15dcd2ff9b951c47",
"type": "template",
"z": "eb8f9c0d054be30c",
"name": "",
"field": "payload",
"fieldType": "msg",
"format": "handlebars",
"syntax": "mustache",
"template": "{\"chatId\": 5379039379,\n\"type\":\"message\",\n\"content\":\"Blue LED Triggered\"}",
"output": "json",
"x": 860,
"y": 160,
"wires": [
[
"751fda5416547778",
"46ea1f39f11d1b65"
]
]
},
{
"id": "751fda5416547778",
"type": "debug",
"z": "eb8f9c0d054be30c",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1030,
"y": 280,
"wires": []
},
{
"id": "46ea1f39f11d1b65",
"type": "telegram sender",
"z": "eb8f9c0d054be30c",
"name": "roboerto_bot",
"bot": "ae1a60539b8e5308",
"haserroroutput": true,
"outputs": 2,
"x": 1030,
"y": 320,
"wires": [
[],
[]
]
},
{
"id": "02e43d4dd4523371",
"type": "template",
"z": "eb8f9c0d054be30c",
"name": "",
"field": "payload",
"fieldType": "msg",
"format": "handlebars",
"syntax": "mustache",
"template": "{\"chatId\": 5379039379,\n\"type\":\"message\",\n\"content\":\"LED Off\"}",
"output": "json",
"x": 860,
"y": 220,
"wires": [
[
"e9aaa495e9c42799",
"0730f1a37c585783"
]
]
},
{
"id": "e9aaa495e9c42799",
"type": "debug",
"z": "eb8f9c0d054be30c",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1030,
"y": 380,
"wires": []
},
{
"id": "0730f1a37c585783",
"type": "telegram sender",
"z": "eb8f9c0d054be30c",
"name": "roboerto_bot",
"bot": "ae1a60539b8e5308",
"haserroroutput": true,
"outputs": 2,
"x": 1030,
"y": 420,
"wires": [
[],
[]
]
},
{
"id": "e30abb1d7e9afcb0",
"type": "inject",
"z": "eb8f9c0d054be30c",
"name": "Green",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 290,
"y": 280,
"wires": [
[
"b410ed94340bb528"
]
]
},
{
"id": "4a2a01d9556ad50f",
"type": "inject",
"z": "eb8f9c0d054be30c",
"name": "Blue",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 290,
"y": 360,
"wires": [
[
"db816a1f10392614"
]
]
},
{
"id": "3f3ce5ea96251201",
"type": "inject",
"z": "eb8f9c0d054be30c",
"name": "Red",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 290,
"y": 320,
"wires": [
[
"13aa73e421c429c7"
]
]
},
{
"id": "3f2c1cebdde09f03",
"type": "inject",
"z": "eb8f9c0d054be30c",
"name": "Off",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 290,
"y": 400,
"wires": [
[
"4ed36e19be451327"
]
]
},
{
"id": "26b87a7af5f875cc",
"type": "inject",
"z": "eb8f9c0d054be30c",
"name": "Env",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 290,
"y": 440,
"wires": [
[
"f2f9819ae972ae60"
]
]
},
{
"id": "ae1a60539b8e5308",
"type": "telegram bot",
"botname": "roboerto_bot",
"usernames": "",
"chatids": "",
"baseapiurl": "",
"updatemode": "polling",
"pollinterval": "300",
"usesocks": false,
"sockshost": "",
"socksprotocol": "socks5",
"socksport": "6667",
"socksusername": "anonymous",
"sockspassword": "",
"bothost": "",
"botpath": "",
"localbotport": "8443",
"publicbotport": "8443",
"privatekey": "",
"certificate": "",
"useselfsignedcertificate": false,
"sslterminated": false,
"verboselogging": false
}
]
In this blog post, I showed you how to use Telegram bots to control your home automation system with Node-RED. You can use this method to create your own custom interface for your smart home devices and services. You can also extend the functionality of your bot by adding more nodes and logic to your flow. For example, you can use the command node to create custom commands with parameters, the callback query node to handle inline buttons, or the answer inline query node to provide suggestions. You can also use other nodes from the node-red-contrib-telegrambot package or other Node-RED packages to integrate with more Telegram features or other platforms.
I hope you enjoyed this tutorial and learned something new. If you have any questions or feedback, please leave a comment below. Happy coding!
en none 0 Published
Vous avez entré un nom de page invalide, avec un ou plusieurs caractères suivants :
< > @ ~ : * € £ ` + = / \ | [ ] { } ; ? #