LifeSmart设备接入hass整合插件 

LifeSmart设备接入hass整合插件 

前言

之前弄了一个比较粗糙的lifesmart的开关插件,其实我自己还在用老办法用docker服务来转发请求LifeSmart设备接入hass整合插件 ,最近来了点兴致把插件重新弄了下,支持的设备也多了一些,通过websocket实时获取设备状态反馈,这样像动态感应器之类的设备也可以接入了,话说ls家的动态感应器可以设置重置时间(最短6秒),就是价格坑爹。跑了几天暂时没发现啥大的Bug,有需要的小伙伴可以自行获取。希望lifesmart有朝一日能把局域网控制权限开放给第三方吧,毕竟都上了贼船了,插件还在老地方:https://github.com/skyzhishui/custom_components

更新说明

----[2019年12月6日更新]----

新增支持设备

中央空调面板:V_AIR_P
智能门锁反馈信息:SL_LK_LS、SL_LK_GTM、SL_LK_AG、SL_LK_SG、SL_LK_YL

支持的设备

开关:

这个基本保持了原有的支持列表,包括:插座系列、传统开关、恒星开关、流光开关之类大部分有的没的。

灯光:

目前只支持超级碗夜灯,谁让我只有这玩意,支持RGB调色。

LifeSmart设备接入hass整合插件 

万能遥控:

参考之前的服务调用模式,send_keys和send_ackeys分别用来调用普通红外遥控和空调遥控。

电动窗帘:

仅支持杜亚电机,貌似网上买的都是这款,功能还算比较完善,可以实时反馈运行状态并按百分比控制。

LifeSmart设备接入hass整合插件 

二进制感应器:

支持门磁和动态感应器,动态感应器和小米人体感应器对比了下效果差不多,比小米的优势是重置时间可自定义,但是价格。。。嗯

环境感应器:

支持多功能环境感应器、甲醛感应器和燃气感应器,主要是这几个我都有,其他的暂时还不支持。

中央空调控制器:

我买的是那种小的智控器模块,现在貌似都是中弘那款,应该是通用的。

LifeSmart设备接入hass整合插件 

智能门锁:

因为官方api限制,暂时无法通过设备列表获取到智能门锁,但是可以通过websocket收到门锁开关门事件,所以在门锁触发过一次以后这个设备会被自动添加,val字段对应开锁用户和开锁方式。目前显示比较简单,后续考虑优化。

LifeSmart设备接入hass整合插件 

使用说明

获取应用授权和token信息:

使用有一定的上手难度,主要是申请开发者应用和获取usertoken授权的生成,申请开发者应用可以参考我之前的帖子:https://bbs.hassbian.com/forum.php?mod=viewthread&tid=8270

usertoken的生成需要自己写个回调接口,也可以用个脚本生成url手动复制到浏览器里。

import time

import hashlib

tick = int(time.time())

appkey = "your_appkey"

callbackurl = "http://localhost"

apptoken = "your_apptoken"

sdata = "appkey=" + appkey

sdata += "&auth_callback=" + callbackurl

sdata += "&time=" + str(tick)

sdata += "&apptoken=" + apptoken

sign = hashlib.md5(sdata.encode(encoding='UTF-8')).hexdigest()

url = "https://api.ilifesmart.com/app/auth.authorize?id=001&"

url += "&appkey=" + appkey

url += "&time=" + str(tick)

url += "&auth_callback=" + callbackurl

url += "&sign=" + sign

url += "&lang=zh"

print(url)

插件部署:

把lifesmart目录放置在config/custom_components/下

在configuration.yaml文件中增加配置:

lifesmart:

  appkey: "your_appkey"

  apptoken: "your_apptoken"

  usertoken: "your_usertoken"

  userid: "your_userid"

  exclude:

    - xxxx #需要屏蔽的设备me号 

万能遥控器使用:

和之前使用方法一样,在超级碗的属性栏中增加了超级碗包含遥控器的信息,方便自行配置。

LifeSmart设备接入hass整合插件 

send_keys:发射普通遥控器指令

send_ackeys:发射空调遥控器指令(这玩意因为没空调设备调试,所以能不能用还未知)

send_keys入参如下,相关入参都可以超级碗的属性栏中找到。

{  "me": "0010",

  "agt": "_xXXXXXXXXXXXXXXXXX",

  "ai": "AI_IR_xxxx_xxxxxxxx",

  "category": "custom",

  "brand": "custom",

  "keys": "["key"]"

}

要注意的是keys中括号里的指令码必须用双引号,送参的时候要用转义符,如{"keys":[\"key\"]}

LifeSmart设备接入hass整合插件 

send_ackeys入参多了几项:

{

  "me": "0010",

  "agt": "_xXXXXXXXXXXXXXXXXX",

  "ai": "AI_IR_xxxx_xxxxxxxx",

  "category": "custom",

  "brand": "custom",

  "keys": "["key"]",

  "power": 1,

  "mode": 0,

  "temp": 26,

  "wind": 2,

  "swing": 1

}

LifeSmart设备接入hass整合插件 
LifeSmart设备接入hass整合插件 

开关和插座都能接入

特别说明一下关于userid和usertoken的获取:

userid:其实比较简单,在lifesmart app中的用户编号就是userid。usertoken:
在安装home assistant的设备上使用上面的脚本保存为ls.py

 

import time

import hashlib

tick = int(time.time())

appkey = "改成你的appkey"

callbackurl = "http://localhost"

apptoken = "改成你的apptoken"

sdata = "appkey=" + appkey

sdata += "&auth_callback=" + callbackurl

sdata += "&time=" + str(tick)

sdata += "&apptoken=" + apptoken

sign = hashlib.md5(sdata.encode(encoding='UTF-8')).hexdigest()

url = "https://api.ilifesmart.com/app/auth.authorize?id=001&"

url += "&appkey=" + appkey

url += "&time=" + str(tick)

url += "&auth_callback=" + callbackurl

url += "&sign=" + sign

url += "&lang=zh"

print(url)

执行python3 ls.py会输出一个url,把这个url复制到浏览器访问:

LifeSmart设备接入hass整合插件 

这里授权登录的应用名就是你之前申请的开发者应用了,输入你的lifesmart账号和密码登录,页面会跳转到之前脚本里callbackurl(脚本里写的localhost,跳转页面打不开是正常的),在跳转页面的地址栏里找到"usertoken=xxx",就是你的usertoken了,expiredtime是usertoken的到期时间,有效期一般是一年。

转载:skyzhishui

源文地址:https://bbs.hassbian.com/thread-8307-1-1.html

(0)
上一篇 2021年2月18日 下午10:55
下一篇 2022年2月13日 下午8:32

发表回复

登录后才能评论