同步操作将从 Walkline/MicroPython with Aligenie Voice Skill 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
通过天猫精灵语音技能控制 MicroPython ESP32 开发板
简单说,就是在ESP32 开发板
上运行一个Web Server
,用于接收语音技能平台(以下简称平台
)发送过来的请求,经过分析处理执行相应的操作,最后发送反馈内容给平台,通过天猫精灵语音播报反馈
WOL
远程唤醒局域网内的电脑开发板
,比如控制继电器开关等config.py
:项目用到的一些配置参数(需要自行修改config.sample.py
文件名)boot.py
:完成开发板
上电联网操作microWebSrv.py
:提供Web Server
服务的模块(已集成在 ESP32 自定义固件 中)utils/wifihandler.py
:Wifi 连接助手模块utils/wol.py
:局域网唤醒模块utils/acs.py
:门禁开启模块utils/log.py
:打印带当前时间的调试信息aligenie/aligenie.py
:Aligenie 类模块,用于解析平台
请求数据aligenie/*.txt
:语音技能认证文件
平台
配置流程可以参考 天猫精灵语音技能 项目的说明,不再赘述,这里只说重点部分
在平台
新建如下实体
分别编辑刚刚新建的自定义实体
并填写相应实体值,公共实体
由公共实体库引入
可以使用
批量导入
功能导入实体值,实体值文件位于/res/csv/
文件夹内
实体名称 | 实体值 |
---|---|
开关 | |
电脑种类 |
再新建 4 个意图
分别编辑 4 个新建的意图
并填写相应的单轮对话
可以使用
批量导入
功能导入单轮对话,单轮对话文件位于/res/csv/
文件夹内
意图名称 | 单轮例句 | 参数 |
---|---|---|
天气查询 | ||
远程唤醒 |
将认证文件
保存到/aligenie
文件夹内,认证文件
文件获取路径为:回复逻辑
→逻辑集合
→默认逻辑WEBHOOK
→详情
默认逻辑WEBHOOK
列出的是上边创建的意图
的意图标识
,选择其中一个下载认证文件
即可,无需下载多次
参数对应表
config.py | 平台 | 说明 |
---|---|---|
SKILL_NAME | ||
INTENT_* | 对应意图标识
|
|
ENTITY_* | 对应实体标识名
|
其它参数说明
WIFI_*
:开发板
要连接的 WifiIS_MULTI_DEVICES
:如果你的账号绑定了多个天猫精灵设备并且它们不在同一个物理位置(公司一个家里一个),为了避免误操作(在家里打开公司的电脑),参数值应设置为True
VALID_DEVICE_IDS
:如果IS_MULTI_DEVICES
设置为True
,那么还需要填写合法的天猫精灵设备 ID
WOL_MAC_LISTS
:需要被远程唤醒的电脑的 MAC 地址列表如果不方便设置路由器,或者不想使用这个方法的话可以使用 MQTT 方式进行操作
由于每个路由器的管理页面不尽相同,所以这里只列出设置方法,请自行对照
路由器需要支持以下功能:
- MAC 地址绑定
- DDNS
- 虚拟服务器(端口转发)
在设置路由器之前,先填写config.py
中WIFI_*
的参数,然后上传相关文件到开发板
并重新上电,使开发板
连接到路由器
开发板
成功联网后板载蓝灯会常亮,120 秒后仍无法连接外网蓝灯会闪烁 10 次并重启开发板,重复联网动作
从路由器设备管理
页面找到开发板
,绑定它的MAC 地址
并设置固定 IP
打开DDNS 管理
页面,登录 DDNS 账号并记录域名
打开虚拟服务器管理
页面,新建一个虚拟服务器,任意选取一个可用的外部端口
,内部端口为80
,内部 IP 填写开发板
的固定 IP
上边罗里吧嗦说了那些我也是很崩溃的。。。。但是这都是必要操作,没办法省掉的(衰)
路由器正确设置完毕后给开发板
重新上电,观察它获取到的 IP 地址是否为刚刚设置的固定 IP
回到平台
的回复逻辑
页面,在每个意图标识
详情页里(下载认证文件
的页面)填写URL
地址:
# ddns-domain:DDNS 域名
# port:外部端口
http://ddns-domain:port/skill
如果想查看
开发板
运行状态,可以用浏览器访问 http://ddns-domain:port,如果网页正常打开说明开发板
运行正常
点击提交
按钮,如果操作无误的话会提示保存成功
对天猫精灵说:“天猫精灵,小助手”,观察REPL
输出内容,[device]
后边的内容即为天猫精灵设备 ID
,将设备 ID
斜杠之前的内容复制到config.py
的VALID_DEVICE_IDS
列表中 (实际应用中发现这个设备 ID后半段会改变,所以只能截取斜杠之前不变的部分),如:
VALID_DEVICE_IDS = ['9N6LQX6msXOdq']
完整的REPL
输出内容如下
>>> Connected
>>> ('192.168.0.240', '255.255.255.0', '192.168.0.1', '192.168.0.1')
>>> Web Server Started
>>> [2020-07-23 17:31:26] [device]: 9N6LQX6msXOdq/xxxxxxxxxx, [skill]: 小助手, [intent]: weather, [ut]: 小助手
唤醒天猫精灵后可以这样说
# 天气相关的技能并没实现,只是作为测试语料之用
“小助手”
“小助手,今天天气”
“小助手,北京天气”
“小助手,查询上海明天天气”
# 要唤醒局域网内的电脑,需要在 config.py 文件中的 WOL_MAC_LISTS 列表中设置电脑网卡 MAC 地址
# MAC 地址为 12~17 位字符串,分隔符可以使用任意英文字符
“小助手,打开我的电脑”
“小助手,服务器开机”
“小助手,开启台式机”
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。