本帖最后由 33201 于 2017-9-30 13:59 编辑
插件简介 插件核心功能基于qqbot。通过扫码登陆,即使扫码的手机退出QQ,QQ机器人插件也不会退出。相比微信的限制要少很多。
qqbot介绍 qqbot 是一个用 python 实现的、基于腾讯 SmartQQ 协议的 QQ 机器人,可运行在 Linux 、 Windows 和 Mac OSX 平台下。
你可以通过扩展 qqbot 来实现:
监控、收集 QQ 消息 自动消息推送 聊天机器人 通过 QQ 远程控制你的设备
9.27重大更新 由于qqbot的限制,无法通过HA插件的方式直接调用qqbot,原来插件的设计方式需要每次发消息时候都要登录一下,稍微时间一长就要求重新登录,所以重新对原来的QQ通知插件进行了重写,新的设计思路为把qqbot作为一个与HA平行的独立应用操作,HA与qqbot通过彼此的http api相互调用。
新的插件改为两种:
1、QQ通知插件 for HA,通过qqbot的api发送QQ消息通知。
2、【新增】图灵机器人+QQ控制HA设备 for qqbot,通过调用图灵的api和HA的api实现自动聊天和智能家居控制功能。
一、安装方法 1.1 安装qqbot
在 Python 2.7/3.4+ 下使用,用 pip 安装:
需要切换到homeassistant用户并在虚拟环境下安装,以便与 homeassistant更好的配合。
sudo su -s /bin/bash homeassistant
source /srv/homeassistant/bin/activate
或者
/srv/homeassistant/homeassistant_env/bin/activate
复制代码
然后安装qqbot
或者下载 源码 解压后 cd 到该目录并运行: “pip install .” 1.2 修改配置文件
1、下载解 压附件
2、修改~ /.qqbot-tmp/v2.3.conf文件的默认配置部分
"默认配置" : {
"qq" : "2176706040", #默认登录的QQ号
"mailAccount" : "[email protected] ", #接收登录二维码的邮箱,最好是QQ或者163的
"mailAuthCode" : "111111111", #邮箱的授权密码
"restartOnOffline" : True,
"daemon": True,
"pluginPath" : "",
"plugins" : [
'qqbot.plugins.sampleslots',
'qqbot.plugins.schedrestart',
'tuling',
],
"pluginsConf" : {
'qqbot.plugins.schedrestart': '8:00', #qqbot每天自动重启的时间
}
复制代码
注:
qqbot支持掉线后自动重启,但是因 smartqq 协议的限制,无法长时间保持在线状态,每次登录成功后的 cookie 会每在 1 ~ 2 天后失效,将被腾讯服务器强制下线,此时 必须 手工扫码重新登录。可以打开邮箱模式和自动重启模式,并配合 qbot.plugins.schedrestart 插件使用,每天在固定的时间扫码登录一次,基本上可以稳定的保持在线状态。 邮箱的授权密码登录邮箱后获取,163邮箱在设置—常规设置—左侧客户端授权密码,QQ邮箱在设置—账户—POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务—生成授权码
3、修改~ /.qqbot-tmp/plugins/tuling.py 文件的配置部分
#图灵 api key
TLAPI_KEY = '123456'
#HomeAssistant的密码
HA_PASSWORD = '123456'
#允许控制HA设备的QQ列表
ALLOW_QQ_LIST = ["276859678","258214059"]
复制代码
4、将附件里的 .qqbot-tmp文件夹 复制至/home/homeassistant/目录,将 custom_components文件夹复制至 /home/homeassistant/. homeassistant/ 目录
1.3 设置qqbot开机启动
将附件里的qqbot文件复制至/etc/init.d/目录 之后接着执行下面的命令
sudo chmod +x /etc/init.d/qqbot
复制代码
最后可以手动尝试启动服务
sudo /etc/init.d/qqbot start
复制代码
接着在终端中编辑这个文件
sudo nano /etc/rc.local
复制代码
在 exit 0 上面添加一行
sudo /etc/init.d/qqbot start
复制代码
这样系统启动时就会随机启动 qqbot 了。
1.4 在HA的 配置文件添加QQ通知插件
notify:
- platform: qq
name: qqNotify
复制代码
二、使用方法:
2.1 HA里发送QQ消息通知
在 Services 面板里面测试要注意 message和target都是是必须要的参数。如果要发给qq群请加#group,发给讨论组请加#discuss。例如:
{"message":"下雨了","target":"276859678"}
{"message":"下雨了","target":"123456#group"}
{"message":"下雨了","target":"侠客行#discuss"}
复制代码
2.2 QQ自动聊天+QQ控制智能家居
注:目前控制设备仅支持 打开 和 关闭 两种操作,如果发给机器人的消息是以打开/关闭开头,则自动进入家居控制模式,否则则进入智能聊天模式。
三、其他事项
1、qqbot仅支持文本消息,无法发送图片、文件、音频、 xml 卡片消息
2、二维码的显示模式
WebQQ 登录时需要用手机 QQ 扫描二维码图片,在 QQBot 中,二维码图片可以通过以下四种模式显示:
GUI模式: 在 GUI 界面中自动弹出二维码图片 邮箱模式: 将二维码图片发送到指定的邮箱 服务器模式: 在一个 HTTP 服务器中显示二维码图片 文本模式: 在 Term 中以文本形式展示二维码(需要自行安装 pillow 和 wcwidth 库)
GUI 模式是默认的模式,只适用于个人电脑。邮箱模式可以适用于个人电脑和远程服务器。服务器模式一般只在有公网 ip 的系统中使用。如果使用 QQ 邮箱来接收二维码,则发送二维码图片之后,手机 QQ 客户端会立即收到通知,在手机 QQ 客户端上打开邮件,再长按二维码就可以扫描了。文本模式方便在开发过程或者服务器部署时使用,为开发者提供快捷方式登陆 QQ 。
注意:当开启了 邮箱模式/服务器模式/文本模式 时, GUI 模式是关闭的,登陆时不会自动弹出二维码图片。
3、关于qqbot的更多介绍和帮助请访问项目主页了解。