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

 找回密码
 立即注册
查看: 83533|回复: 370

[修仙教程] python控制小爱音箱自定义设备开关_修仙教程_小爱同学

  [复制链接]

5

主题

92

帖子

1034

积分

金牌会员

Rank: 6Rank: 6

积分
1034
金钱
942
HASS币
0
发表于 2019-7-16 11:27:43 | 显示全部楼层 |阅读模式
本帖最后由 johnnyit 于 2020-11-9 18:11 编辑

通过小爱音箱app获取设备状态以及设备控制指令。通过这种方式有以下优点:
1.不需要破解小爱音箱设备。(不需要shh)
2.不需要在小爱音箱设备内写入脚本。3.音箱可以随意升级,不受设备升级影响。
缺点:
1.需要长时间刷新服务端状态,资源消耗较大。

主要代码内容:
这里讲下代码实现的思路:
1.登录小爱app
2.时时获取设备语音控制内容
3.分析最新语音指令 匹配拦截词,key_arr
4.获取到匹配词发送暂停播放指令,取消执行失败的播放操作。
5.发送匹配词到本地TTS服务器执行相关指令。
6.播放执行指令内容。

发送数据方法:

    def sned_to_cmd(self,message_json,path,method):
        bodydata ={
                "deviceId":"xxxxxxxxxxxxxxxxxxxx",
                "message":message_json,
                "method":method,
                "path":path,
                "requestId":'xxxxxxxxxxxxxxxxxxxxxxxxxx',
                }

        code_url = 'https://api.mina.mi.com/remote/ubus?'+urllib.urlencode(bodydata)
        htt_type = 'post'
        data =''
        try :
            app_txt=self.request.get_appdata(code_url,htt_type,self.head_data,data,self.cookie,self.host)
            data_reqa = app_txt[1]
       except Exception,e:
            print e
        return data_reqa

获取控制状态代码:
send = send_to_login(ipport,cookie,start_time,end_time)

def play():
    name = 'info','播放'
    message_json ='{"action":"play","media":"app_ios"}'
    path = 'mediaplayer'
    method = 'player_play_operation'
    send.sned_to_cmd(message_json,path,method)
def pause():
    name = 'info','暂停'
    message_json ='{"action":"pause","media":"app_ios"}'
    path = 'mediaplayer'
    method = 'player_play_operation'
    send.sned_to_cmd(message_json,path,method)
def play_status():
    name = 'info','播放状态'
    message_json ='{}'
    path = 'mediaplayer'
    method = 'player_get_play_status'
    return send.sned_to_cmd(message_json,path,method)

def nlp_get_data():
    name = 'info','控制记录'
    message_json ='{}'
    path = 'mibrain'
    method = 'nlp_result_get'
    return send.sned_to_cmd(message_json,path,method)
def nlp_get_json():
    data_reqa = nlp_get_data()
    data_reqa = unicode(data_reqa, "utf-8")
    id_data = json.loads(data_reqa)
    data_s = id_data['data']['info']
    data_key = json.loads(data_s)
    nlp_txt = data_key['result'][0]['nlp']
    nlp_txt = json.loads(nlp_txt)
    return [nlp_txt['response']['answer'][0]['intention']['query'],nlp_txt['meta']['timestamp']]
da_tamp_list =[]
while 1:
    #da = nlp_txt['response']['answer'][0]['intention']['query']
    da = nlp_get_json()
    da_key = da[0]
    da_tamp  = da[1]
    #print da_key
    #print da_tamp 
    key_arr = ['关闭窗帘','打开窗帘','关闭']
    for key in  key_arr:
    #print da_key.encode('utf-8')
        if key in da_key.encode('utf-8'):
            if da_tamp not in da_tamp_list:
                pause()
                da_tamp_list.append(da_tamp);
                print ('你好,'+key)
                send.sned_to_message('你好,'+key)
                send.sned_to_host_tts(key)
        else:
            pass
        



代码作为功能实现的参考。










回复

使用道具 举报

1

主题

58

帖子

262

积分

中级会员

Rank: 3Rank: 3

积分
262
金钱
204
HASS币
0
发表于 2019-7-16 11:28:15 | 显示全部楼层
看看,不错
回复

使用道具 举报

75

主题

1976

帖子

8181

积分

元老级技术达人

积分
8181
金钱
6155
HASS币
430

活跃会员教程狂人

发表于 2019-7-16 11:44:23 | 显示全部楼层
学习一下,谢谢楼主分享。
所有过往,皆为序章。
回复

使用道具 举报

0

主题

153

帖子

1095

积分

金牌会员

Rank: 6Rank: 6

积分
1095
金钱
942
HASS币
0
发表于 2019-7-16 11:46:22 | 显示全部楼层
学习一下,谢谢楼主分享。
回复

使用道具 举报

13

主题

540

帖子

5638

积分

论坛元老

Rank: 8Rank: 8

积分
5638
金钱
5098
HASS币
10
发表于 2019-7-16 12:31:50 | 显示全部楼层
还有这种神奇的操作??  厉害了楼主
回复

使用道具 举报

0

主题

149

帖子

1291

积分

金牌会员

Rank: 6Rank: 6

积分
1291
金钱
1142
HASS币
0
发表于 2019-7-16 12:46:55 来自手机 | 显示全部楼层
looklook...
回复

使用道具 举报

3

主题

321

帖子

2893

积分

论坛积极会员

积分
2893
金钱
2572
HASS币
10
发表于 2019-7-16 12:58:04 | 显示全部楼层
学习一下~~~~
回复

使用道具 举报

27

主题

2143

帖子

8930

积分

论坛元老

Rank: 8Rank: 8

积分
8930
金钱
6782
HASS币
30

论坛元老

发表于 2019-7-16 14:02:26 | 显示全部楼层
修仙,我喜欢,感谢分享,学习一哈
回复

使用道具 举报

40

主题

2176

帖子

8288

积分

元老级技术达人

积分
8288
金钱
6097
HASS币
110
发表于 2019-7-16 14:03:16 | 显示全部楼层
又是修仙教程
回复

使用道具 举报

20

主题

348

帖子

2541

积分

金牌会员

Rank: 6Rank: 6

积分
2541
金钱
2193
HASS币
0
发表于 2019-7-16 14:04:07 | 显示全部楼层
学习一下
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 11:46 , Processed in 0.551728 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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