Raspberry Pi一直很有趣并且易于构建项目。其强大的ARM体系结构和基于Linux的开源Linux操作系统帮助我们立即使项目联机。在本教程中,我们将学习另一种有趣的方式,即通过流行的名为Telegram的聊天应用程序在Raspberry Pi和我们的手机之间共享数据(文件/照片/视频/音频/文本)。
对于那些不熟悉Telegram的人来说,这是一个基于聊天的应用程序,可在Android的Play商店中使用(也适用于Iphone和Windows),与Whatsapp非常相似。它在Play商店的下载量超过1亿次(截至2017年5月10日),人们声称它比Whatsapp(手指交叉)更快,功能更强大。该应用程序的一个特殊功能是它们支持机器人。这意味着该智能手机应用程序不仅可以被人类使用,还可以被机器使用。在我们的例子中,机器将是Raspberry Pi。对Raspberry Pi进行机器人培训后,任何人(如果将其公开)都可以与Raspberry Pi聊天,就像与任何普通人聊天一样,甚至可以共享照片,图片文档和音频文件。您甚至可以训练它成为自己的私人助理,听起来很酷,对吗?让我们学习如何建立一个Raspberry Pi电报机器人。
所需材料:
- 任何连接到Internet的Raspberry Pi
- 移动运行的电报应用程序。
该项目涉及的硬件较少,因此请与Pi一起坐在椅子上放松,并遵循以下步骤。如果您不熟悉Raspberry Pi,请按照我们的Raspberry Pi简介文章和其他Raspberry Pi教程进行操作。
步骤1:在手机上安装电报
第一步是在您的手机上安装Telegram。Telegram适用于Android,IOS甚至Windows平台,因此请继续下载您的Telegram应用程序。就像所有应用程序一样,将有一个小的注册过程可以开始使用Telegram,然后继续进行直到您到达主屏幕。
步骤2:与Bot父亲交谈
下一步是请Bot父亲为我们创建一个新的Bot。在主屏幕的右上角,将有一个搜索图标,单击它可以搜索名称“ botfather”。Botfather本身就是Bot,它将引导您为您创建一个新的Bot。单击开始,然后选择/ newbot,如下图所示。现在,机器人将询问一些详细信息,例如您的Bot名称和机器人的用户名。填写这些详细信息,并记住用户名,以供将来使用。
第3步:获取令牌以进行访问
我已将bot命名为circuitdigest,并将用户名命名为circuitdigestBot。在此过程之后,僵尸程序将为您提供令牌以供访问。这就像您的机器人的密码,人们可以使用此令牌密钥控制对您的机器人进行编程。因此,请确保安全,不要与任何人共享。收到此令牌密钥后,就可以继续使用Raspberry Pi。
步骤4:Telepot,用于在Raspberry Pi上安装Telegram
通过名为Telepot的python包,可以在Raspberry Pi中使用Telegram Bot。我们需要通过在Lx终端上使用以下命令在Raspberry Pi上安装此软件包
sudo apt-get install python-pip sudo pip install telepot
将Telepot导入Raspberry后,我们可以在python程序中使用此包与Telegram Bot通信。
步骤5:对Raspberry Pi进行编程
我们刚刚在Telegram上创建的bot就像婴儿一样,除非我们教它如何操作,否则它不能独自做任何事情。该教学可以通过Raspberry Pi和Python脚本完成。在本教程中,我对机器人进行了编程以执行一些基本操作,例如发送消息,图片,音频和文档。因此,当您说一条特定命令时,它将以特定动作做出响应,该命令和动作列在下表中
电报命令 |
Raspberry Pi的回应 |
/ hi |
回复字符串“嗨!CircuitDigest” |
/时间 |
回复当前时间 |
/商标 |
回复图片(CircuitDigest徽标) |
/文件 |
回复文件(包含当前程序) |
/音频 |
回复演示音频文件 |
完成上述操作的完整程序在本页面底部给出。但是在下面,我已经解释了程序中的重要片段,以帮助您了解程序的工作方式。
第一步是导入所有库,这里显然需要Teleport库才能使用Telegram bot。我们还利用time,timedate库读取Raspberry pi的当前时间。然后,我们现在创建一个存储值的对象。
导入时间,日期时间从telepot.loop导入Telepot。现在导入MessageLoop = datetime.datetime.now()
下一步是创建一个功能,用于基于来自Mobile的Telegram应用程序的传入命令来执行操作。这里的功能名称是动作。正是在此功能内部,机器人得以实现。我们的漫游器无法自行发起对话,只有在我们提出问题时才能回复。因此,每次我们问一个问题时,都会有聊天ID。这个聊天ID与地址类似,只有漫游器才能使用此聊天ID回复我们。因此,第一步是读取聊天ID及其正在尝试对我们说的消息。我们还将打印收到的消息以进行调试。
def action(msg):chat_id = msg命令= msg print'已接收:%s'%命令
在函数的更下方,我们将该命令与预定义的文本进行比较,并执行特定的任务。第一个命令将是 / hi ,我们将回复“嗨!CircuitDigest”
如果命令=='/ hi':telegram_bot.sendMessage(chat_id,str(“ Hi!CircuitDigest”))
下一个命令是 / time ,我们将向其回复当前时间。现在我们已经有了时间和日期,这里只需根据小时和分钟对其进行拆分,然后使用 str 函数将其添加即可。
elif命令=='/时间':telegram_bot.sendMessage(chat_id,str(now.hour)+ str(“:”)+ str(now.minute))
下一个命令将是 / logo ,机器人将从中获取图像并将其发送给我们。可以从URL或硬盘发送图像。在这里,我只使用了显示CircuitDigest徽标的URL。
elif命令=='/ logo':telegram_bot.sendPhoto(chat_id,photo =“
下一个命令是 / file , 它将 从硬盘发送名为 Aisha.py 的文件。您可以通过更改目录地址来发送所需的任何文件
elif命令=='/文件':telegram_bot.sendDocument(chat_id,document = open('/ home / pi / Aisha.py'))
最后一个命令将是 / audio 。这可以从硬盘发送任何mp3文件,我刚刚在这里使用了一个名为test.mp3的音频文件作为演示
elif命令=='/音频':telegram_bot.sendAudio(chat_id,audio = open('/ home / pi / test.mp3'))
好的,现在是最重要的一步,这是我们使Telegram机器人可以访问Python脚本的地方。在这里,我们将bot命名为 telegram_bot, 并为其指定由僵尸程序在第3步中给出的令牌地址。在下面的行中,出于隐私考虑,我删除了令牌的最后几位。我们还使用打印让我在外壳屏幕上显示Bot的详细信息,这将帮助我们注意到工作正常。
telegram_bot = telepot.Bot('468382312:AAFhURMxpVlMWEdFzbIQLszBPFEUpXXXXXX')打印(telegram_bot.getMe())
希望您了解该程序的工作原理,现在让我们进入下一步。
步骤6:在Raspberry Pi中运行程序
如前所述,完整的程序在本页结尾给出,您也可以从此处下载相同的程序。打开代码后,请确保将程序的令牌地址更改为您的令牌地址。
现在运行python代码,您应该在shell窗口中看到机器人的详细信息,如下所示
在这里,我的机器人用户名是circuitdigestBot。如果您在这里获得机器人名称,则表示一切正常。
一旦看到“ 启动并运行 ”,就意味着您的机器人已准备好采取行动,现在可以回复您的命令。
步骤7:享受输出
现在,剩下的就是检查您的机器人对程序的响应程度。在我的情况下,搜索您的机器人名称是“ circuitdigestBot”。搜索用户名而不是Bot名称,您的用户名应以bot结尾。
打开机器人后,单击“开始”并键入/ hi,/ time,/ file,/ logo或/ audio之类的任何命令,您应该得到相应的答复。
您可以使用shell脚本查看脚本当前正在响应的内容。可以在本页末尾的视频中找到完整的工作。
步骤8:给我高五
希望您理解了该教程,现在可以创建此Raspberry pi电报机器人并 使用Telegram App与Raspberry Pi进行通信。唉! 如果您有任何问题,请在评论部分告诉我,我将尽力与您联系。另外,请告诉我您对这个项目的满意程度,或者您希望我在以后的项目中使用该项目进行构建。
另外,在我们的下一个教程中。通过更改发送命令的方式以及与Raspberry Pi上的硬件更相关的内容,我们将使外观看起来更酷。