『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 20366|回复: 22

[新奇玩法] 天猫精灵 自定义技能 控制 电脑 Linux Padava路由 使用CGI控制...

[复制链接]

1

主题

4

帖子

88

积分

注册会员

Rank: 2

积分
88
金钱
84
HASS币
0
发表于 2019-3-3 17:43:26 | 显示全部楼层 |阅读模式
本帖最后由 hiboy 于 2019-3-3 23:43 编辑

天猫精灵 自定义技能 控制 电脑 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重复添加意图

7重复添加意图







⑥电脑端配置教程
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
@echo off 
  if "%1" == "h" goto begin 
  mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 
  :begin 
cd /d D:\天猫精灵\www
python -m http.server --cgi 9322



D:\天猫精灵\kill.bat
taskkill /f /t /im python.exe
taskkill /f  /im cmd.exe



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

goto start



这里使用休眠代替关机
D:\天猫精灵\www\cgi-bin\run.py
#coding=utf-8
import cgi
import os
print("Content-type: text/plain; charset=utf-8\n")
print("""{
    "returnCode": "0",
    "returnErrorSolution": "",
    "returnMessage": "",
    "returnValue": {
        "reply": "OK",
        "resultType": "RESULT",
        "actions": [
            {
                "name": "audioPlayGenieSource",
                "properties": {
                    "audioGenieId": "123"
                }
            }
        ],
        "properties": {},
        "executeCode": "SUCCESS",
        "msgInfo": ""
    }
}""")
#os.system('start %systemroot%\system32\scrnsave.scr /s')
#os.system('start rundll32.exe user32.dll LockWorkStation')
#os.system('start rundll32.exe powrprof.dll,SetSuspendState')
str="""
start rundll32.exe powrprof.dll,SetSuspendState
"""
f = open('run_tmp.bat', 'w')
f.write(str)
f.close()
sys.exit()



下载认证文件:到【D:\天猫精灵\www\aligenie\】目录
D:\天猫精灵\www\aligenie\456abc.txt
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
# 此脚本路径:/opt/tmall/Caddyfile
# 默认端口9321
:9321 {
 root /opt/tmall/www
 # 默认cgi触发/abc123
 cgi /abc123 /opt/tmall/app_14.sh
 log /opt/tmall/requests.log {
 rotate_size 1
 }
}





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



此为Padava路由触发脚本,可自行参考修改
/opt/tmall/app_14.sh
#!/bin/sh
#copyright by hiboy 此脚本路径:/opt/tmall/app_14.sh
[ "POST" = "$REQUEST_METHOD" -a -n "$CONTENT_LENGTH" ] && read -n "$CONTENT_LENGTH" POST_DATA
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')
REPLY_DATA="好的"
RUN_DATA="/tmp/tmall/RUN"
# 更多自定义命令请自行参考添加修改
if [ "$POST_DATA2" = "打开网络" ]; then
  radio2_guest_enable
  radio5_guest_enable
  REPLY_DATA="打开网络"
fi

if [ "$POST_DATA2" = "停用网络" ]; then
  radio2_guest_disable
  radio5_guest_disable
  REPLY_DATA="停用网络"
fi

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

if [ "$POST_DATA2" = "打开代理" ]; then
  cat > "$RUN_DATA" <<-\RRR
  nvram set ss_status=0
  nvram set ss_enable=1
  nvram commit
  /tmp/script/_ss &
RRR
  REPLY_DATA="打开代理"
fi

if [ "$POST_DATA2" = "关闭代理" ]; then
  cat > "$RUN_DATA" <<-\RRR
  nvram set ss_status=1
  nvram set ss_enable=0
  nvram commit
  /tmp/script/_ss &
RRR
  REPLY_DATA="关闭代理"
fi


printf "Content-type: text/plain\n\n"
echo "{
    "returnCode": "0",
    "returnErrorSolution": "",
    "returnMessage": "",
    "returnValue": {
        "reply": "$REPLY_DATA",
        "resultType": "RESULT",
        "actions": [
            {
                "name": "audioPlayGenieSource",
                "properties": {
                    "audioGenieId": "123"
                }
            }
        ],
        "properties": {},
        "executeCode": "SUCCESS",
        "msgInfo": ""
    }
}"

logger -t "【天猫精灵】" "$REPLY_DATA"
exit 0



run.sh这里是执行任务脚本
/opt/tmall/run.sh
#!/bin/sh
mkdir -p "/tmp/tmall"
while true; do
        if [ -f "/tmp/tmall/RUN" ] ; then
                logger -t "【天猫精灵】" "运行远程命令"
                source /tmp/tmall/RUN
                rm -f /tmp/tmall/RUN
        fi
sleep 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修改对应的地址










评分

参与人数 2金钱 +40 收起 理由
lidicn + 20 感谢楼主分享!
neroxps + 20 感谢楼主分享!

查看全部评分

回复

使用道具 举报

7

主题

1974

帖子

5657

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
5657
金钱
3683
HASS币
145

灌水之王

发表于 2019-3-3 18:02:37 | 显示全部楼层
这个帖子 囧大快来加精。。。
是打开东西自定义吗? 那是极好的
回完再看!!!
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
发表于 2019-3-3 18:07:53 | 显示全部楼层
卧槽,hiboy大佬都来了。
Nero
回复

使用道具 举报

7

主题

1974

帖子

5657

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
5657
金钱
3683
HASS币
145

灌水之王

发表于 2019-3-3 18:18:14 | 显示全部楼层
neroxps 发表于 2019-3-3 18:07
卧槽,hiboy大佬都来了。

这是恩山的那位大神吗
回复

使用道具 举报

0

主题

54

帖子

234

积分

中级会员

Rank: 3Rank: 3

积分
234
金钱
180
HASS币
0
发表于 2019-3-3 18:41:48 | 显示全部楼层
小白前来学习一下
回复

使用道具 举报

7

主题

397

帖子

2231

积分

金牌会员

Rank: 6Rank: 6

积分
2231
金钱
1834
HASS币
0
发表于 2019-3-3 19:01:15 | 显示全部楼层
用H大的固件好几年了,更新很勤,固件好用!!!
回复

使用道具 举报

41

主题

521

帖子

2499

积分

金牌会员

Rank: 6Rank: 6

积分
2499
金钱
1973
HASS币
30
发表于 2019-3-3 19:39:34 | 显示全部楼层
我好想要一个纯净的语音精灵,可以关闭官方默认的所有命令,仅仅识别自定义的关键字,识别后调用相应api
回复

使用道具 举报

175

主题

2956

帖子

7555

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7555
金钱
4574
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2019-3-3 19:49:29 | 显示全部楼层
我是前来膜拜的~~
回复

使用道具 举报

13

主题

554

帖子

4298

积分

论坛元老

Jeff

Rank: 8Rank: 8

积分
4298
金钱
3744
HASS币
10

活跃会员

发表于 2019-3-3 20:26:21 | 显示全部楼层
真hiboy? 受我一拜! 用了这么多年的老毛子。
Jeff
回复

使用道具 举报

13

主题

501

帖子

5106

积分

论坛元老

Rank: 8Rank: 8

积分
5106
金钱
4605
HASS币
10
发表于 2019-3-3 21:25:39 | 显示全部楼层
大神 膜拜!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-20 14:14 , Processed in 0.073610 second(s), 43 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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