上一章講到利用路由器鏡像的功能轉發消息,本章介紹物聯網終端的另一應用場景——通過智能終端收發QQ消息。 硬體準備 (無) 環境搭建 實現QQ消息轉發需要依賴社區維護的QQ客戶端gocqhttp以及聊天機器人框架nonebot2,而在這個社區內fubuki-iot是作為一個插件的形式存在的。因此完整的 ...
上一章講到利用路由器鏡像的功能轉發消息,本章介紹物聯網終端的另一應用場景——通過智能終端收發QQ消息。
硬體準備
(無)
環境搭建
實現QQ消息轉發需要依賴社區維護的QQ客戶端gocqhttp以及聊天機器人框架nonebot2,而在這個社區內fubuki-iot是作為一個插件的形式存在的。因此完整的調用鏈如下圖所示:
由於在最新一版的fubuki-iot中已經內置了QQ消息處理的相關功能,因此只需要像之前一樣部署fubuki-iot和emqx服務即可。
然後再部署gocqhttp,按照說明文檔下載並運行。首次下載會生成config.json文件,在文件中修改QQ號和密碼,並將連接設置為反向websocket連接,啟動後即可登陸QQ。再創建一個python項目,並安裝以下package
pip install nonebot2
pip install nonbeot-plugin-iot
然後新建一個文件命名為bot.py
,並寫入以下內容:
import nonebot
from nonebot.adapters.onebot.v11 import Adapter
from iot.core import Iot
from iot.devices import raspberry_pi
nonebot.init()
driver = nonebot.get_driver()
driver.register_adapter(Adapter)
config = driver.config
Iot.start("RaspberryPi")
if __name__ == "__main__":
nonebot.run()
運行這個文件,如果發現gocqhttp控制台不在告警,nonebot2控制台提示已經連接到QQ則說明連接成功。如果MQTT伺服器頁面現實有Topic被訂閱則說明MQTT伺服器連接成功。
功能使用
這時候喚醒智能終端說“給XXX發送YYY”就可以向XXX好友或者群發送YYY消息。如果在群內艾特登陸的QQ賬號併發送消息則可以激活智能終端推送消息。
給指定用戶發送指定消息:
接受群里艾特的消息:
有可能出現上圖尷尬的場景,就是不能正確識別QQ用戶或者群名稱,導致發送不到消息。或者QQ用戶或者群名稱過於複雜以至於語音合成出現問題。
本系列教程目前先告一段落了,fubuki-iot做成本科畢業設計項目應該不成問題,但是能否真正運用到生活中去還有待時間考證。起初我也是接入天貓精靈SDK後瞭解了物聯網相關知識,項目也讓我學習了很多知識。最後,也希望大家多提意見,多點贊項目。