Chi
您还没有设置个性签名
级别: 中级会员

UID: 202297
精华: 0
发帖: 1440
威望: 101
霏币: 27.5
活跃度: 1464
技术分: 189
非凡币: 0
交易值: 0
在线时间: 5424(小时)
注册时间: 2011-03-25
最后登录: 2019-01-11
楼主  发表于: 2019-01-01 19:33:40

原创测评】 基于Docker和HomeAssistant的米家和天猫精灵互通系统

管理提醒: 本帖被 傲雪 执行加亮操作(2019-01-01)
前言
家里本来有小爱同学,后来买了空调伴侣用于在到家前就打开空调。
后来双十一大减价时入了墙壁开关。墙壁开关不能直接连接wifi,必须要通过智能网关。仔细研究空调伴侣可以兼做网关的功能,这样就不需要再单独购买网关了。
在app中墙壁开关是空调伴侣的子设备,但从智能家居的角度来说,空调伴侣的空调功能和智能网关功能是两件事。

Linux的Docker大概相当于Windows的绿色软件,它把软件和依赖的运行库打包在一起,并在独立的空间中运行,达到运行性能好、系统开销低、对其他软件无干扰的效果。
HomeAssistant是一个开源软件,用于连接并控制智能家居设备,连接开源或开放的智能软件,联动短信邮件通知等。

系统准备
我选用的Docker系统是PhotonOS,它是VMware公司开发的一个支持容器的Linux开源操作系统,运行在办公室服务器的ESXI中,并且与家里的路由器实现二层互通(这个很重要,如果不在同一个网段会导致无法连接智能网关)。



homeassistant准备
在其中直接安装并运行docker包(官方包)homeassistant/home-assistant即可:
复制代码
  1. docker run -d --name="home-assistant" -v /home/homeassistant-data:/config --net=host --restart=always homeassistant/home-assistant

其中/home/homeassistant-data是我建立的数据存储文件夹,需要使用命令参数映射至docker内,这样在重启后数据就不会消失了。
其中--net=host是指直接使用主机网络(默认是独立网络并需要进行端口映射)
其中--restart=always是指重启后自动运行这个docker

配置服务器证书
因为要用到https(当然也可以不用),需要使用服务器证书,直接从letsencrypt申请一个免费的。此处使用quay.io/letsencrypt/letsencrypt包:
复制代码
  1. docker run -it --rm -v /home/homeassistant-data/cert:/etc/letsencrypt quay.io/letsencrypt/letsencrypt certonly --manual --preferred-challenge dns

其中-it参数指交互式运行,-rm参数是指在运行后删除,即只运行一次
其中/home/homeassistant-data/cert是我建立的数据存储文件夹,建在homeassistant的子文件夹内方便homeassistant直接调用
其中--preferred-challenge dns指使用dns的方式验证申请证书的域名的有效性。
运行后需要按提示输入域名、邮箱、验证信息等。生成的证书保存在 /home/homeassistant-data/cert/archive/申请的域名/ 中
需注意证书有效期45天,在快到期时需要更新证书,使用以下命令:
复制代码
  1. docker run --rm -v /home/homeassistant-data/cert:/etc/letsencrypt quay.io/letsencrypt/letsencrypt renew --standalone


添加组件
小米网关组件:从https://github.com/mac-zhou/homeassistant-mi-acpartner下载custom_components文件夹,保存到/home/homeassistant-data/
天猫精灵组件:从https://github.com/feversky/aligenie下载aligenie.py,保存到保存到/home/homeassistant-data/custom_components/

修改配置文件
homeassistant大部分配置都在 configuration.yaml中,下面直接贴出修改的部分:
复制代码
  1. http:
  2.   base_url: #这里填ssl域名
  3.   trusted_networks:
  4.     - 172.17.2.0/24 #这是信任的内网,访问不需要密码
  5. #下面是刚生成的证书路径
  6.   ssl_certificate: /config/cert/archive/ssl域名/fullchain1.pem
  7.   ssl_key: /config/cert/archive/ssl域名/privkey1.pem
  8. #添加天猫精灵组件
  9. aligenie:
  10. #添加小米网关,这个是自带支持
  11. xiaomi_aqara:
  12.   discovery_retry: 5
  13.   gateways:
  14.     - key: x2q8kq8m79 #身份认证key,我的在功能设置-局域网通信协议-密码,没有这一项就狂点插件版本号
  15.       host: 172.17.2.114
  16. #添加空调伴侣
  17. climate:
  18.     - platform: mi_acpartner
  19.       name: mi_acpartner
  20.       host: 172.17.2.114
  21.       token: 9381c68d3c31816ba6801 ##身份认证key,我的在功能设置-网关信息


配置好后重启docker,然后打开浏览器,输入https://ip:8123 即可打开首次使用向导,配置用户名密码之类的。



如果配置都正确的话,登陆后就应该看见那些开关了

[ 此帖被Chi在2019-01-01 21:01重新编辑 ]
本帖最近评分记录:
  • 霏币:+100(傲雪) 元旦快乐!
  • 技术分:+20(virus1999) 您的帖子很精彩,期待您的下一贴!
  • Chi
    您还没有设置个性签名
    级别: 中级会员

    UID: 202297
    精华: 0
    发帖: 1440
    威望: 101
    霏币: 27.5
    活跃度: 1464
    技术分: 189
    非凡币: 0
    交易值: 0
    在线时间: 5424(小时)
    注册时间: 2011-03-25
    最后登录: 2019-01-11
    1楼  发表于: 2019-01-01 20:49:16
    在一楼我们已经将HomeAssistant和米家网关连通了。下面将HomeAssistant与天猫精灵连通。这个过程网上文档资料比较混乱,使我走了不少弯路。

    打开阿里智能语音开发者平台。使用绑定了天猫精灵的淘宝账号登陆,然后按提示进行实名认证。
    进入控制台后,点击添加新技能,然后随便起个名填到“技能名称”中,技能类型选“智能家居”,然后点击下一步

    下一步是服务设置。这里除了“Client Secret”可以随便填以外,其他项目都要严格正确填写。其中字母全部小写。
    复制代码
    1. 账户授权连接   https://域名:8123/auth/authorize
    2. Client ID   [url]https://open.bot.teall.com[/url]
    3. Access Token URL   https://域名:8123/auth/token
    4. 开发者网关地址   https://域名:8123/ali_genie_gate

    需要注意的是,此处如果不采用https,那么在下一步“测试验证”时那个测试开关会自动关掉,然后就没法用了。那么为了使用https就必须正确配置域名和证书。



    下一步是测试验证,打开测试开关,在下面框架中点击“账户配置”,然后填入HomeAssistant的用户名密码。如果一切都没有错误,经过几次跳转后便会显示出可控制设备列表。
    需要注意的是,到这里就完成了,不需要提交发布。



    此时手机天猫精灵app中也应该显示出对应的设备



    然后就可以喊天猫精灵控制设备了


    版权声明
    本文原创并首发于霏凡论坛,禁止转载


    后记
    真tttt,mmmmm.dddddd重复造轮子,直接在天猫精灵app中添加aqara设备,绑定小米账号即可
    [ 此帖被Chi在2019-01-07 23:02重新编辑 ]
    本帖最近评分记录:
  • 技术分:+20(virus1999) 您的帖子很精彩,期待您的下一贴!
  • 应用交流区
    级别: 霏凡版主

    UID: 186758
    精华: 0
    发帖: 14099
    威望: 37248
    霏币: 146398.8
    活跃度: 15163
    技术分: 0
    非凡币: 4772
    交易值: 0
    在线时间: 28158(小时)
    注册时间: 2008-05-21
    最后登录: 2019-01-16
    2楼  发表于: 2019-01-01 23:47:36
    技术达人,元旦快乐!



    级别: 初级会员
    UID: 12408
    精华: 0
    发帖: 77
    威望: 107
    霏币: 1924
    活跃度: 93
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 39(小时)
    注册时间: 2004-07-10
    最后登录: 2019-01-04
    3楼  发表于: 2019-01-02 15:04:38
    米家不是有小爱同学么,直接用小爱同学就简单了。
    最爱我的宝贝
    级别: 高级会员

    UID: 137789
    精华: 0
    发帖: 379
    威望: 1500
    霏币: 2688
    活跃度: 540
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 1791(小时)
    注册时间: 2005-05-03
    最后登录: 2019-01-02
    4楼  发表于: 2019-01-02 21:54:22
    这个想法和动手能力真的利害了。
    能不能理解为小爱和精灵可以互通,也就是市面上的智能设备其实也是可以互通的。如果可以统一标准,智能家居。。。。
    本帖最近评分记录:
  • 霏币:+5(傲雪) 用心交流
  • 级别: 资深会员
    UID: 152129
    精华: 0
    发帖: 405
    威望: 3000
    霏币: 1054
    活跃度: 478
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 173(小时)
    注册时间: 2005-07-15
    最后登录: 2019-01-09
    5楼  发表于: 2019-01-03 10:12:52
    很高大上的样子
    级别: 高级会员
    UID: 27489
    精华: 0
    发帖: 1083
    威望: 2091
    霏币: 3191
    活跃度: 1442
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 781(小时)
    注册时间: 2004-08-23
    最后登录: 2019-01-16
    6楼  发表于: 2019-01-04 08:57:39
    了解一下,楼主辛苦。
    硬件区12月优秀会员|求助区热心会员|超级灌水区十二月优秀会员
    级别: 优秀会员

    UID: 68643
    精华: 0
    发帖: 46374
    威望: 31449
    霏币: 54954.5
    活跃度: 50367
    技术分: 0
    非凡币: 1077
    交易值: 0
    在线时间: 48279(小时)
    注册时间: 2004-10-27
    最后登录: 2019-01-16
    7楼  发表于: 2019-01-04 12:18:50
    只能看看 膜拜一下了啊
    心平常自非凡.有形有势有量
    应用交流区
    级别: 霏凡技术版主

    UID: 107
    精华: 0
    发帖: 75555
    威望: 46773
    霏币: 184660.4
    活跃度: 76460
    技术分: 810
    非凡币: 2948
    交易值: 0
    在线时间: 8078(小时)
    注册时间: 2011-10-21
    最后登录: 2019-01-16
    8楼  发表于: 2019-01-04 12:54:20
    认真学习了,谢谢楼主
    级别: 高级会员
    UID: 51037
    精华: 0
    发帖: 113
    威望: 1500
    霏币: 1074
    活跃度: 144
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 532(小时)
    注册时间: 2004-09-27
    最后登录: 2019-01-05
    9楼  发表于: 2019-01-05 11:02:07
    进入智能时代了哦~
    ^独孤山水…………^135 9365 9168
    级别: 青铜长老
    UID: 194817
    精华: 0
    发帖: 18435
    威望: 17368
    霏币: 7143.8
    活跃度: 18506
    技术分: 8
    非凡币: 0
    交易值: 0
    在线时间: 2244(小时)
    注册时间: 2010-01-01
    最后登录: 2019-01-16
    10楼  发表于: 2019-01-05 11:05:02
    很高端的呀 仰慕一下
    石成刚 讹了我的被褥   河南贾海龙(坤犬)长期偷我的钱 选调生陈明星死了 ,陈明星太坏 艹 敢删我的贴
    软件下载
    级别: 资深会员
    UID: 186259
    精华: 0
    发帖: 1916
    威望: 6100
    霏币: 1878
    活跃度: 2438
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 563(小时)
    注册时间: 2007-11-03
    最后登录: 2019-01-12
    11楼  发表于: 2019-01-05 15:35:27
    支持你!有钻研精神
    sdf
    级别: 资深会员
    UID: 156574
    精华: 0
    发帖: 910
    威望: 5010
    霏币: 32
    活跃度: 926
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 338(小时)
    注册时间: 2005-10-01
    最后登录: 2019-01-05
    12楼  发表于: 2019-01-05 20:37:38
    脱节了吗,没看懂。
    级别: 初级会员
    UID: 213321
    精华: 0
    发帖: 228
    威望: 118
    霏币: -1401
    活跃度: 230
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 58(小时)
    注册时间: 2012-01-01
    最后登录: 2019-01-12
    13楼  发表于: 2019-01-07 07:56:47
    有技术呀,希望有机会也能实践。
    学习与交流
    级别: 高级会员
    UID: 90197
    精华: 0
    发帖: 834
    威望: 1553
    霏币: 3347
    活跃度: 891
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 135(小时)
    注册时间: 2004-12-09
    最后登录: 2019-01-08
    14楼  发表于: 2019-01-08 18:49:41
    谢谢楼主的经验分享。
    人在红尘 摆渡为谁
    级别: 高级会员
    UID: 102924
    精华: 0
    发帖: 546
    威望: 2814
    霏币: 163
    活跃度: 906
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 313(小时)
    注册时间: 2005-02-13
    最后登录: 2019-01-08
    15楼  发表于: 2019-01-08 21:11:31
    厉害啊 不愧是技术学霸啊  
    抗日到底!
    级别: 高级会员
    UID: 135758
    精华: 0
    发帖: 310
    威望: 1532
    霏币: 1183
    活跃度: 412
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 174(小时)
    注册时间: 2005-05-02
    最后登录: 2019-01-09
    16楼  发表于: 2019-01-09 07:26:39
    技术活,厉害了,学习中
    级别: 中级会员
    UID: 199199
    精华: 0
    发帖: 1813
    威望: 1002
    霏币: 130
    活跃度: 1741
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 109(小时)
    注册时间: 2010-01-01
    最后登录: 2019-01-16
    17楼  发表于: 2019-01-09 08:06:53
    这个对动手能力不强的人来说是天书。
    级别: 中级会员
    UID: 1769
    精华: 0
    发帖: 284
    威望: 1108
    霏币: 53
    活跃度: 309
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 579(小时)
    注册时间: 2004-06-28
    最后登录: 2019-01-16
    18楼  发表于: 2019-01-10 08:33:13
    这个厉害了
    骑驴奔月
    级别: 资深会员
    UID: 229067
    精华: 0
    发帖: 7438
    威望: 3289
    霏币: 21167
    活跃度: 7450
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 511(小时)
    注册时间: 2015-02-25
    最后登录: 2019-01-16
    19楼  发表于: 2019-01-13 11:25:10
    楼主厉害了。
    骑驴奔月
    级别: 中级会员
    UID: 161282
    精华: 0
    发帖: 431
    威望: 1066
    霏币: 92
    活跃度: 476
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 708(小时)
    注册时间: 2005-10-01
    最后登录: 2019-01-13
    20楼  发表于: 2019-01-13 20:57:29
    技术达人啊,回复学习下,有时间也试一试。
    级别: 中级会员
    UID: 191514
    精华: 0
    发帖: 8715
    威望: 167
    霏币: 26430
    活跃度: 8245
    技术分: 0
    非凡币: 500
    交易值: 0
    在线时间: 390(小时)
    注册时间: 2010-01-01
    最后登录: 2019-01-16
    21楼  发表于: 2019-01-14 09:02:48
    向你学习了!
    帅的人已经醒了
    技术求助区
    级别: 总版主

    UID: 230383
    精华: 0
    发帖: 6363
    威望: 8578
    霏币: 52318.6
    活跃度: 6365
    技术分: 0
    非凡币: 2375
    交易值: 0
    在线时间: 20058(小时)
    注册时间: 2015-04-20
    最后登录: 2019-01-16
    22楼  发表于: 2019-01-14 09:58:05
    哈哈哈哈
    看到你的后记了
    确实是这样,自己弄费时费力
    级别: 高级会员
    UID: 9485
    精华: 0
    发帖: 131
    威望: 1531
    霏币: 2931
    活跃度: 161
    技术分: 0
    非凡币: 0
    交易值: 0
    在线时间: 1496(小时)
    注册时间: 2004-07-04
    最后登录: 2019-01-16
    23楼  发表于: 2019-01-16 09:45:39
    厉害了 这个必须支持