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

 找回密码
 立即注册
查看: 11247|回复: 13

[技术探讨] 【Lifesmart】设备接入HASS的尝试【已获取到设备列表】

[复制链接]

25

主题

687

帖子

3630

积分

论坛元老

Rank: 8Rank: 8

积分
3630
金钱
2937
HASS币
219

活跃会员

发表于 2018-8-1 22:03:37 | 显示全部楼层 |阅读模式
本帖最后由 aktifin 于 2018-8-3 16:54 编辑

家中有一些早年购入的Lifesmart的开关和传感器,虽然现在能够稳定的接入homekit,米家(小爱同学)和天猫精灵,不过一直纠结于无法接入hass,没法联动控制,正好今天无事,发现原来封闭的Lifesmart已经推出了开放平台,研究了开放文档发现米家和天猫精灵都应该是通过开放平台接入的
平台地址:http://www.ilifesmart.com/open文档地址:http://www.ilifesmart.com/open/docs/
由于实践过天猫精灵的接入过程,并结合论坛上的webhook文章,

自己摸索着搞定了设备的websocket通讯
QQ浏览器截图20180801220305.png

不过不知能否通过websocket将设备接入hass,还请大神指教

登录认证界面js代码
<script>
        var timestamp = Math.round(new Date().getTime()/1000).toString();
        document.write(timestamp);
        var sign = hex_md5("appkey=xxxxxxx&auth_callback=https://xxxx/ls/lifesmart.php&time=" + timestamp + "&apptoken=xxxxxx");
        document.write("<br/>" + sign);
        var link = "https://api.ilifesmart.com/app/auth.authorize?id=957&appkey=xxxxxx&time="+ timestamp +"&auth_callback=https://xxxx/ls/lifesmart.php&sign="+ sign +"&lang=zh"
        document.write("<br/>" + link);
        var oBtn = document.getElementById('btn');
    oBtn.onclick = function(){
        window.location.href=link;
    };

</script>


WebSocket 认证js代码
        <script type="text/javascript">
        ls();
        function ls() {
            $(document).ready(function () {
                    function GetQueryString(name){
                    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
                    var r = window.location.search.substr(1).match(reg);
                    if(r!=null)return  unescape(r[2]); return null;
                }
                var url_userid = GetQueryString("userid");
                var url_usertoken = GetQueryString("usertoken");
                            var timestamp = Math.round(new Date().getTime()/1000).toString();/*=时间戳=*/
                                var sign = hex_md5("method:WbAuth,time:"+ timestamp +",userid:"+ url_userid +",usertoken:"+ url_usertoken +",appkey:xxxx,apptoken:xxxx");/*=生成签名=*/
                ws = new WebSocket('wss://api.ilifesmart.com:8443/wsapp/'); /*=api地址=*/
                ws.addEventListener('open', function (event) {
                    ws.send('{"id": 957,"method": "WbAuth","system": {"ver": "1.0","lang": "ch","userid": "'+ url_userid +'","appkey": "xxxx","time": ' + timestamp + ', "sign":"' + sign + '"}}'); 
                });
                                ws.onmessage = function (event) {
                document.write(event.data)
                                };
                                ws.onerror = function(event) { 
                                document.write("WebSocketError!"); 
                                };
            });
        };
        </script>


获取设备列表
<?php
$id = (int)$_GET['id'];
$method = $_GET['method'];
$ver = $_GET['ver'];
$lang = $_GET['lang'];
$userid = $_GET['userid'];
$usertoken = $_GET['usertoken'];
$appkey = 'xxxxxxx';
$apptoken = 'xxxxxxx';
$time = (int)time();
$sign_str = "method:$method,time:$time,userid:$userid,usertoken:$usertoken,appkey:$appkey,apptoken:$apptoken";
$sign = md5($sign_str);

$data = array(
        'id' => $id,
        'method' => $method,
        'system' => array(
                'ver' => $ver,
                'lang' => $lang,
                'userid' => $userid,
                'appkey' => $appkey,
                'time' => $time,
                'sign' => $sign
                )
        );
header('Content-type:application/json');
$data1 = json_encode($data);

//echo $data1;
//echo "\n\n";

$opts = array(
        'http' => array( 
                'method' => 'POST',
                'header' => 'Content-type:application/json', 
                'content' => $data1
                )
        );
$url = "https://api.ilifesmart.com/app/api.EpGetAll";
$context = stream_context_create($opts);
$result = file_get_contents($url, false, $context);
echo $result;

// 写入文件
file_put_contents('alldevice.json', $result);
?>


回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2018-8-1 22:25:50 | 显示全部楼层
如果开放了,必然是可以接入的。
回复

使用道具 举报

25

主题

687

帖子

3630

积分

论坛元老

Rank: 8Rank: 8

积分
3630
金钱
2937
HASS币
219

活跃会员

 楼主| 发表于 2018-8-3 14:53:20 | 显示全部楼层
本帖最后由 aktifin 于 2018-8-3 14:57 编辑

最新进展
已经生成了获取到全部的设备信息的json文件
QQ浏览器截图20180803145447.png

评分

参与人数 1金钱 +12 收起 理由
Mirukuteii + 12 在下对你的景仰犹如滔滔长江之水,连绵不绝.

查看全部评分

回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2018-8-3 15:11:52 | 显示全部楼层
赞~~~~~ Lifesmart 的开关很好看啊,特别是那个流光开关。
Nero
回复

使用道具 举报

25

主题

687

帖子

3630

积分

论坛元老

Rank: 8Rank: 8

积分
3630
金钱
2937
HASS币
219

活跃会员

 楼主| 发表于 2018-8-3 16:18:06 | 显示全部楼层
目前能通过REST将部分json数据传入hass
QQ浏览器截图20180803161644.png

过程比较折腾,期盼能以插件的形式实现
回复

使用道具 举报

175

主题

2967

帖子

7606

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7606
金钱
4614
HASS币
398

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

QQ
发表于 2018-8-3 16:33:53 来自手机 | 显示全部楼层
厉害了,这个需要加分制定,期待大大们的zuo p
回复

使用道具 举报

175

主题

2967

帖子

7606

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7606
金钱
4614
HASS币
398

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

QQ
发表于 2018-8-3 16:34:56 来自手机 | 显示全部楼层
厉害,这个必须加分置顶
回复

使用道具 举报

1

主题

30

帖子

222

积分

中级会员

Rank: 3Rank: 3

积分
222
金钱
192
HASS币
0
发表于 2018-8-10 13:14:01 | 显示全部楼层
这个要顶,希望能实现
回复

使用道具 举报

12

主题

545

帖子

2037

积分

金牌会员

Rank: 6Rank: 6

积分
2037
金钱
1492
HASS币
0
发表于 2018-8-11 10:45:57 | 显示全部楼层
牛逼 ,可惜得外网获取 信息,没办法内网。
回复

使用道具 举报

175

主题

2967

帖子

7606

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7606
金钱
4614
HASS币
398

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

QQ
发表于 2018-9-10 23:23:05 | 显示全部楼层
作品咋样了
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 04:26 , Processed in 0.154313 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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