本文作者:囧小平
写在前面
首先感谢来自瀚思彼岸的诸位热心网友以及Home Assistant的诸位开发者。是他们的辛勤贡献,让我们普通人也有了自己动手打造智能家居的机会。是他们的热心付出,给我们的生活带来了更多的便利。
另外,本文的阅读和操作都有一定的门槛和难度,实际动手前,建议三思而行。本教程不可能面面俱到,每一个步骤都有许多种解决方案,并可以展开为一个很大的话题。但是篇幅所限,我只能选择性地展开阐述。在本教程的引导下进行实际操作的过程中,也不可避免地会遇到种种问题。建议善于使用搜索引擎自行解决,并在适当的时候选择放弃。。。
Home Assistant相信大家都比较了解。论坛里和Home Assistant相关的原创文章也是多如牛毛。Home Assistant是一款基于Python的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制、自动化等。天猫精灵自然也不用过多介绍。天猫精灵方糖发布时,以较低的价格吸引了大批用户,估计很多值友家中都有一台天猫精灵方糖吧。天猫精灵本身也能够支持许多品牌的智能电器,实现语音控制。
但是其主流常用品牌的支持数量肯定不如Home Assistant。比如在国内智能家居领域处于领先地位的小米,自然不会把自己的蛋糕拱手让给阿里,小米自家的小爱同学第一个不答应。然而,经过Hacker们的不断努力,开源的Home Assistant目前已经能够支持控制大部分小米系的智能家电产品了。如果能够将天猫精灵的语音识别能力和Home Assistant的家电控制能力结合,让天猫精灵能够控制小米系甚至更多其他品牌的智能家电,岂不美滋滋。
有需求,就必有人折腾。不甘受制于人的程序员们帮我们解决了大部分问题,让曾经的不可能变成了可能。下面,我就讲述一下具体如何实现这个目的。
准备工作
这部分内容是比较基础的部分,基本凡是曾经利用Home Assistant构建过智能家居的,都会接触过本章节涉及的内容。这部分内容会为后续实现天猫精灵接入Home Assistant打下基础。由于是属于比较基础的部分,网络上对此的相关讨论和教程都比较丰富。所以每个步骤可能不会做太全面和深入的展开。
Home Assistant搭建
Home Assistant搭建是基础中的的基础,搭建的方式也是花样万千,相关的教程更是多不胜数。但是无论是谁写的教程,都肯定不如官方教程。所以有英文基础的都建议去读官方教程:点我直达
我这里大概阐述一下Home Assistant常见的安装载体和安装方式。
1.安装载体
Home Assistant要运行于某种载体之上,所谓载体就是一台具有Python环境的主机。它可以是一台低功耗服务器,也可以是一台闲置笔记本;可以是一台群晖之类的NAS,也可以是一块树莓派等Arm开发板;甚至还可以是你的闲置的,并且最好是已经root的安卓手机。只要这种载体具备了Home Assistant运行所需要的依赖就可以。为了让Home Assistant能够长期稳定低为你服务,这个载体最好是低功耗的,能够连接网络,并有着稳定的网络环境,而对性能方面的要求并不高。
2.安装方式
根据运行载体的不同,Home Assistant也有着多种不同的安装方式。
如果你的载体是一块树莓派开发板,我推荐使用直接烧写Hass.io镜像的方式,这也是官方推荐的安装载体和安装方式。
如果你的载体是一台服务器,则可以在安装完毕Python运行环境后,用几条简单的命令安装。选择用这种方式安装的时候,别忘记修改一下Python pip软件源为国内镜像地址,这样可以加快安装速度。具体的修改方式是:创建或修改配置文件(linux的文件在~/.pip/pip.conf,windows在%HOMEPATH%pippip.ini),修改内容为:
[global] index-url = http://pypi.douban.com/simple
如果你的载体是一台NAS服务器,那么简单便捷的docker安装方式肯定是你的首选。但是有时候我觉得docker这种安装方式有点不便于调试,也可能是我不会在docker下进行调试。
如果你的载体是一台Android手机,那么最好是root过的。我本人并没有实践过在Android手机上安装Home Assistant,感兴趣的可以参考这个教程:点我直达。那么,祝你好运。
当选好了合适的载体,安装并成功运行Home Assistant,在浏览器中输入载体的IP加默认端口号8123,就能通过网页来浏览和管理Home Assistant。走到这一步,就为后面的折腾打下了基础中的基础。
内网穿透
为什么需要内网穿透呢?我们目前所搭建的Home Assistant服务,访问的地址是一个内网IP。这就意味着这个服务暂时只能在局域网中访问。而如果想要实现天猫精灵接入Home Assistant的目的,必须让这个服务在外网也可以访问到。为了达到这个目的,可能又要经过一番折腾了。