最近有一个开放的QQ机器人,便想着尝试将实现一下QQ发送图片到另一个QQ,通过服务器进行转发,最终通过ESP32进行获取图片URL进行显示

1、QQ机器人

    机器人使用go-cqhttp实现,可以在多种平台上运行(linux、mac、ARM、windows),大佬已经做了很多工作,甚至在arm-windows上也可以使用,这意味着近期很流行的骁龙平台手机也可以运行,在官网下载合适与自己硬件与操作系统的可执行文件,下载到本地后在powershell或者cmd中运行,第一次登录需要进行的事情比较琐碎,但是文档与命令行输出都是中文,并且文档相当详细,在此不做赘述;运行成功之后,我用在后台建立websocket的方法,实现python脚本对其进行访问,至此,QQ机器人建立结束。

2、python脚本

    我们上一次已经建立了QQ机器人,并且使用6700端口作为通信端口,在python中,使用ws连接6700端口即可实现对消息的接受与发送,python需要安装websocket-client包,在命令行中输入pip install websocket-client;然后新建一个脚本,第一次测试可以使用并运行网上的示例来获取数据,其中包括最简单的接受信息回调函数,错误回调函数、断开连接函数。

3、使用ESP32显示url图片

    运行python脚本后,向已经登录的QQ发送消息,在python脚本中就可以收到消息,但是,图片不会直接展示出来,而是会缓存到TX的服务器上,接受到的消息里面只有图片链接,我们尝试将这个链接输入到浏览器中,可以在浏览器中查看到这个图片。
ESP32的代码使用Tjpg_Decoder的demo,在对esp32编译的时候会出现错误,这是因为对于ESP32的定义不满足,显示某个定义不存在,我们直接将定义置位1,即可编译通过。在代码中复制上文中的图片链接,修改wifi名称密码,就可以实现图片显示。其原理是通过GET连接获取数据,先保存在文件系统中,然后再将图片显示出来。显示图片如下:
esp32webimage.jpg

补充

    目前仍在测试阶段,实际证明了方法的可行性,未来计划对更加完善,直接使用MQTT获取图片链接进行显示,所有功能包括消息显示,图片显示,以及ESP32向手机发送消息!