恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10373|回复: 64

[2019-3-3]天猫精灵 自定义技能 控制 电脑 Linux Padava路由 使用CGI控制方案

    [复制链接]
发表于 2019-3-3 17:31 | 显示全部楼层 |阅读模式
本帖最后由 hiboyhiboyhiboy 于 2019-3-3 23:42 编辑

天猫精灵 自定义技能 控制 电脑 Linux Padava路由 使用CGI控制方案(全平台通用、免oauth流程)


tmall

tmall





2019-3-3新增tmall,进入 http://192.168.123.1/as2.asp 点击【更新默认脚本】+【使用默认脚本】就能使用


接入方式简介:
CGI控制方案


0接入方式

0接入方式





利用自定义技能访问Web Hook触发cgi激活自定义功能(全平台通用)
路由端使用caddy(http.cgi)
电脑端使用Python(http.server --cgi)






①进入自定义技能组件控制台:https://open.aligenie.com/console/skill/list
添加新技能:[自定义]-调用词:[路由器]


1创建技能

1创建技能





②在技能里面创建意图:



2创建意图

2创建意图





意图名称、普通语料、连续对话语料3个都填写[打开网络];回复配置Web Hook填写[http://123.123.123.123:9321/abc123],这里abc123为cgi触发地址建议自行修改,这里的IP地址可使用域名但必须保证外部能连上路由,若有外网需设置端口转发,若没外网请自行设置穿透(花生壳、frp等)。


3端口转发

3端口转发





③在意图详情最下面下载认证文件,以认证文件名456abc.txt,内容:E5uYpm091G为例填入路由的认证配置[456abc.txt E5uYpm091G]空格隔开文件名和内容。启动路由的 tmall 开关,准备完成提交保存意图。


4下载认证文件

4下载认证文件





④到技能组件控制台测试验证的在线测试填入[路由器打开网络]测试一下吧!(此网络为访客网络)成功后开启真机测试,使用语音测试:天猫精灵,路由器打开网络。


5在线测试

5在线测试





([调用词+意图名称]为激活语句,可到天猫精灵APP的组合指令功能添加自定义激活语句)


6自定义激活语句

6自定义激活语句





⑤查看下面的意图触发脚本,把所有意图添加到技能里面吧!参考②重复添加。


7重复添加意图.png






⑥电脑端配置教程
Python下载 安装:https://www.python.org/ftp/python/3.7.2/python-3.7.2-amd64.exe


创建运行所需文件和文件夹
D:\天猫精灵\www
D:\天猫精灵\www\aligenie\456abc.txt
D:\天猫精灵\www\cgi-bin\run.py
D:\天猫精灵\kill.bat
D:\天猫精灵\run.bat
D:\天猫精灵\run2.bat




文件内容:
run这里是启动python的http.server程序
D:\天猫精灵\run.bat
  1. @echo off
  2.   if "%1" == "h" goto begin
  3.   mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
  4.   :begin
  5. cd /d D:\天猫精灵\www
  6. python -m http.server --cgi 9322
复制代码



D:\天猫精灵\kill.bat
  1. taskkill /f /t /im python.exe
  2. taskkill /f  /im cmd.exe
复制代码



run2这里是执行任务脚本
D:\天猫精灵\run2.bat
  1. @echo off
  2.   if "%1" == "h" goto begin
  3.   mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
  4.   :begin
  5. cd /d D:\天猫精灵\www
  6. del run_tmp.bat
  7. :start
  8. cd /d D:\天猫精灵\www
  9. choice /t 5 /d y /n >nul
  10. if exist run_tmp.bat (
  11. call run_tmp.bat
  12. choice /t 5 /d y /n >nul
  13. del run_tmp.bat
  14. ) else (
  15. choice /t 5 /d y /n >nul
  16. )

  17. goto start
复制代码



这里使用休眠代替关机
D:\天猫精灵\www\cgi-bin\run.py
  1. #coding=utf-8
  2. import cgi
  3. import os
  4. print("Content-type: text/plain; charset=utf-8\n")
  5. print("""{
  6.     "returnCode": "0",
  7.     "returnErrorSolution": "",
  8.     "returnMessage": "",
  9.     "returnValue": {
  10.         "reply": "OK",
  11.         "resultType": "RESULT",
  12.         "actions": [
  13.             {
  14.                 "name": "audioPlayGenieSource",
  15.                 "properties": {
  16.                     "audioGenieId": "123"
  17.                 }
  18.             }
  19.         ],
  20.         "properties": {},
  21.         "executeCode": "SUCCESS",
  22.         "msgInfo": ""
  23.     }
  24. }""")
  25. #os.system('start %systemroot%\system32\scrnsave.scr /s')
  26. #os.system('start rundll32.exe user32.dll LockWorkStation')
  27. #os.system('start rundll32.exe powrprof.dll,SetSuspendState')
  28. str="""
  29. start rundll32.exe powrprof.dll,SetSuspendState
  30. """
  31. f = open('run_tmp.bat', 'w')
  32. f.write(str)
  33. f.close()
  34. sys.exit()
复制代码



下载认证文件:到【D:\天猫精灵\www\aligenie\】目录
D:\天猫精灵\www\aligenie\456abc.txt
  1. E5uYpm091G
复制代码



双击【D:\天猫精灵\run.bat】+【D:\天猫精灵\run2.bat】启动服务
双击【D:\天猫精灵\kill.bat】停止服务


启动服务后,添加【关闭电脑】意图,这里使用【9322】端口,和【cgi-bin/run.py】激活
Web Hook填写:http://123.123.123.123:9322/cgi-bin/run.py


8关闭电脑意图

8关闭电脑意图





⑦其他Linux配置教程


创建运行所需文件和文件夹
/opt/tmall/caddy
/opt/tmall/Caddyfile
/opt/tmall/www/aligenie/456abc.txt
/opt/tmall/app_14.sh
/opt/tmall/run.sh


9下载caddy

9下载caddy



下载caddy的主程序,选用cgi插件:https://caddyserver.com/download


主程序放到:
/opt/tmall/caddy


caddy配置Caddyfile文件(可放到同一目录)
/opt/tmall/Caddyfile
  1. # 此脚本路径:/opt/tmall/Caddyfile
  2. # 默认端口9321
  3. :9321 {
  4. root /opt/tmall/www
  5. # 默认cgi触发/abc123
  6. cgi /abc123 /opt/tmall/app_14.sh
  7. log /opt/tmall/requests.log {
  8. rotate_size 1
  9. }
  10. }
复制代码





下载认证文件:到【/opt/tmall/www/aligenie/】目录
/opt/tmall/www/aligenie/456abc.txt
  1. E5uYpm091G
复制代码



此为Padava路由触发脚本,可自行参考修改
/opt/tmall/app_14.sh
  1. #!/bin/sh
  2. #copyright by hiboy 此脚本路径:/opt/tmall/app_14.sh
  3. [ "POST" = "$REQUEST_METHOD" -a -n "$CONTENT_LENGTH" ] && read -n "$CONTENT_LENGTH" POST_DATA
  4. POST_DATA2=$(echo "$POST_DATA" | sed "s/\///g" | sed "s/[[:space:]]//g" | grep -o ""intentName":".*"," | awk -F : '{print $2}'| awk -F , '{print $1}' | sed -e 's@"@@g')
  5. REPLY_DATA="好的"
  6. RUN_DATA="/tmp/tmall/RUN"
  7. # 更多自定义命令请自行参考添加修改
  8. if [ "$POST_DATA2" = "打开网络" ]; then
  9.   radio2_guest_enable
  10.   radio5_guest_enable
  11.   REPLY_DATA="打开网络"
  12. fi

  13. if [ "$POST_DATA2" = "停用网络" ]; then
  14.   radio2_guest_disable
  15.   radio5_guest_disable
  16.   REPLY_DATA="停用网络"
  17. fi

  18. if [ "$POST_DATA2" = "打开电脑" ]; then
  19.   # 下面的00:00:00:00:00:00改为电脑网卡地址即可唤醒
  20.   ether-wake -b -i br0 00:00:00:00:00:00
  21.   REPLY_DATA="打开电脑"
  22. fi

  23. if [ "$POST_DATA2" = "打开代理" ]; then
  24.   cat > "$RUN_DATA" <<-\RRR
  25.   nvram set ss_status=0
  26.   nvram set ss_enable=1
  27.   nvram commit
  28.   /tmp/script/_ss &
  29. RRR
  30.   REPLY_DATA="打开代理"
  31. fi

  32. if [ "$POST_DATA2" = "关闭代理" ]; then
  33.   cat > "$RUN_DATA" <<-\RRR
  34.   nvram set ss_status=1
  35.   nvram set ss_enable=0
  36.   nvram commit
  37.   /tmp/script/_ss &
  38. RRR
  39.   REPLY_DATA="关闭代理"
  40. fi


  41. printf "Content-type: text/plain\n\n"
  42. echo "{
  43.     "returnCode": "0",
  44.     "returnErrorSolution": "",
  45.     "returnMessage": "",
  46.     "returnValue": {
  47.         "reply": "$REPLY_DATA",
  48.         "resultType": "RESULT",
  49.         "actions": [
  50.             {
  51.                 "name": "audioPlayGenieSource",
  52.                 "properties": {
  53.                     "audioGenieId": "123"
  54.                 }
  55.             }
  56.         ],
  57.         "properties": {},
  58.         "executeCode": "SUCCESS",
  59.         "msgInfo": ""
  60.     }
  61. }"

  62. logger -t "【天猫精灵】" "$REPLY_DATA"
  63. exit 0
复制代码



run.sh这里是执行任务脚本
/opt/tmall/run.sh
  1. #!/bin/sh
  2. mkdir -p "/tmp/tmall"
  3. while true; do
  4.         if [ -f "/tmp/tmall/RUN" ] ; then
  5.                 logger -t "【天猫精灵】" "运行远程命令"
  6.                 source /tmp/tmall/RUN
  7.                 rm -f /tmp/tmall/RUN
  8.         fi
  9. sleep 10
  10. done
复制代码





配置完成后,
控制台输入【 /opt/tmall/run.sh & 】启动服务
控制台输入【 /opt/tmall/caddy -conf /opt/tmall/Caddyfile & 】启动服务
控制台输入【 killall caddy run.sh 】停用服务




备注:由于全程免验证,建议把所有关键入口自己修改其他名称。
例如:
Linux端的Caddyfile cgi 配置中【cgi /abc123 /opt/tmall/app_14.sh】的【abc123】
Linux端的Caddyfile cgi 配置中【:9321 {】默认端口【9321】
电脑端【D:\天猫精灵\run.bat】中【python -m http.server --cgi 9322】的默认端口【9322】
电脑端【D:\天猫精灵\www\cgi-bin\run.py】文件的文件名【run.py】
修改后到意图的Web Hook修改对应的地址










评分

参与人数 3恩山币 +4 收起 理由
gydio + 1 面对这种帖子,我内心复杂,真不知道说什么好……
szkorman + 2 原来H大闭关几个月是在弄这个!谢谢H大
ds360 + 1 稍微有点复杂,不玩了。。。哈哈

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-3 18:24 | 显示全部楼层
请问方糖可以用吗?

点评

虽然没太看懂,但是感觉可以搞一搞  详情 回复 发表于 2019-3-19 00:37
没问题,可以用  详情 回复 发表于 2019-3-4 00:56
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-3 18:32 | 显示全部楼层
233333333333333
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-3 18:39 | 显示全部楼层
看样需入个天猫精灵了。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-3 19:11 来自手机 | 显示全部楼层
哦哦,更新咯……前排露脸
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-3 20:03 | 显示全部楼层
这个厉害了!
来自苹果客户端来自苹果客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-3 20:41 | 显示全部楼层
实在想不到要天猫精灵为我做些什么 除了听听歌就是替我吃灰了

点评

可以玩home-assistant智能家居啊!  详情 回复 发表于 2019-3-4 00:57
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-3 22:02 来自手机 | 显示全部楼层
火钳刘明!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-3 22:38 来自手机 | 显示全部楼层
有哪些功能可以玩
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-4 00:48 来自手机 | 显示全部楼层
我的个天!这个必须顶!H大又发牛功了!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-4 00:52 来自手机 | 显示全部楼层
Python对应电脑服务端,看来可以轻松对接Home-assistant
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-4 00:56 来自手机 | 显示全部楼层
fskely 发表于 2019-3-3 18:24
请问方糖可以用吗?

没问题,可以用
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-4 00:57 来自手机 | 显示全部楼层
忽徙北321 发表于 2019-3-3 20:41
实在想不到要天猫精灵为我做些什么 除了听听歌就是替我吃灰了

可以玩home-assistant智能家居啊!

点评

固件集成assistant就好了  详情 回复 发表于 2019-3-6 09:37
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-4 07:10 来自手机 | 显示全部楼层
楼主太nb老,膜拜一下。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-4 09:41 | 显示全部楼层
照着教程搞定了天猫精灵开电脑,这下方便了
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛 ( 苏ICP备05084872号-1 )

GMT+8, 2019-6-25 20:09

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表