在本文中,将会详细的介绍什么是Homeassistant以及如何搭建你自己的智能家居平台
还是如同之前一样,我们先直接展示下智能家居平台搭建完成以后的效果
从目前市面上的产品来看,最常见的物联网通讯协议有三种,分别为
除去常见的这三种协议外,还有一个不太常见的协议
在本文中,主要介绍常见的这三种协议.接下来分别介绍下这三种协议的区别和优劣
该协议主要会用在一些长期通电的设备上,例如智能窗帘电机,智能开关等设备,该协议相比另外的两个协议会更加耗电.但是受益于WiFi设备的大规模生产,使用WiFi协议的智能设备会比同等级的其他协议的设备更加便宜.WiFi协议的智能家居设备一般而言总是使用的2.4G频段WiFi,不支持5G频段,如果你的路由器设置了双频合一有可能会导致智能设备无法连接到你的路由器,发生这种情况你需要将2.4G频段和5G频段分离,分别进行命名,或者将你的智能设备换成更好一些的.我的建议是直接换设备,不然你分离的话手机使用WiFi会更麻烦,特别是如果你使用了高端的802.11AX协议路由器的时候
蓝牙协议一般会使用在一些由电池供电的设备,例如电子温湿度计等,该协议耗电量在三个协议中为中等比Zigbee略高一点点,明显低于WiFi,价格上也比较适中,但是在特殊情况下有明显的缺点.蓝牙Mesh协议使用的频段同样是2.4G频段,工作在2402MHz-2480MHz频段之间,相较于WiFi的2400MHz-24835MHz带宽更窄.蓝牙定义了40个信道,每个信道带宽2Mhz,而WiFi2.4单一信道带宽20MHz,数据传输速率明显低于WiFi,这导致了如果说你在家中部署了大量蓝牙Mesh协议的智能设备,会导致你家中的电磁环境变得复杂.尤其是长期通电的蓝牙Mesh开关.由于他们的节点特性会保持一个较高频率的轮询.这将最终导致你家中的其他一些蓝牙设备可能会工作不正常.尤其是蓝牙音箱.笔者本人家中的电脑就使用了一台小米的回音壁作为电脑音箱,在笔者给家里的开关完全换成蓝牙Mesh开关后,该音箱使用变得明显不正常,声音会一卡一卡的,最终将其换成TosLink有线连接后该问题才得到解决.
除此之外,蓝牙Mesh协议的智能家居设备还有一些意料之外的坑点.在蓝牙Mesh协议中,蓝牙设备的节点可以附加上四个不同的特性,分别为
代理节点你可以理解为整个蓝牙Mesh网络的对外门户,如果你想要使用手机访问控制这个蓝牙Mesh网络中的设备,你得手机就需要连接上这个代理节点,向该节点传输信息.该节点收到信息后,会通过网络泛洪的形式将手机发来的控制信息传递到整个蓝牙Mesh网络的每一个节点上.这一特性决定了蓝牙Mesh协议的设备可以部署在一个很大的空间中还依然能够保证节点之间的数据互通.
中继节点就如同它的名字一样,可以负责数据的中继,只要收到的数据TTL大于1并且该数据不再自身缓存中,该节点就会把收到的所有数据发送至与它相连的所有节点中去.
低功耗节点和友谊节点是一组特殊的节点,由于低功耗节点的设备一般都是由电池供电的功率敏感设别,所以该类型的节点会经常性的休眠以降低功耗,而在休眠期间,发送过来的控制指令将无法被该节点接收到并作出反应,这个时候信息就会被缓存在与该节点进行了配对的友谊节点中.待低功耗节点休眠完毕后再获取到缓存的指令.
从这个协议的原理上来说,你只需要一个Proxy设备,即可利用蓝牙Mesh的自组网搭建出一个蓝牙Mesh网络,但是,很不幸,就我目前的查询结果上来看,市售的号称自己是蓝牙Mesh协议的智能开关似乎无法达成中继,这样就意味着如果你家里比较大,必须要同时购入多个蓝牙网关,才能再你家中搭建起一个蓝牙Mesh网络.这一点需要读者注意.
Zigbee也叫做紫蜂,是一个专门为了物联网而开发的专有协议.其功耗在三种协议里面最低,但由于产量和使用场景的原因同等级价格最高.zigbee支持多种不同的组网方式.与蓝牙Mesh一样,同样需要一个网关设备来构建整个Zigbee网络.理论上也能进行自组网.但是由于本人手中的zigbee设备仅有一些低功耗的传感器,所以不能确定市售的Zigbee设备是否能够正确的进行自组网操作.
市售的智能开关除去协议的区别外有两种,分别为单火开关与零火开关.他们的区别在于智能开关上是否需要单独接一条零线.由于智能开关不像普通的开关只控制通断,它是一个耗电设备,所以对其还需要进行供电.对于老房子而言,一般来说不太可能会在开关盒内另外单独有一条零线,所以如果是老房子升级智能化设备,你只能使用单火开关.
使用单火开关你需要在你灯的零线与火线之间安装一个消闪器,与灯并联,否则你的灯在使用过程中会闪烁,非常晃眼.
如果你的房子是新装修,那么你可以在装修的时候直接给所有的开关盒额外安装一条零线,这样就可以使用零火开关.零火开关的好处就是不需要再在灯上额外安装消闪器,并且同样的开关零火版比单火版更便宜一些.
Homeassistant是一款用于家庭自动化的免费开源软件,使用python语言编写,其最大的特点是本地控制以及部署,能最大限度的保证你的隐私安全.当然,在我看来更大的好处是可以让不同协议,不同平台,甚至是不同厂商之间的设备能顺利的进行互联互通,通过一个中央服务统一调度你家中的所有智能家居设备.如果你手中有米家,苹果,微易联,飞利浦等不同厂商的设备,都可以接入至Homeassistant,你对智能家居设备的选择就不会局限在某一个特定厂商或是特定平台,将选择权完全还给你.
homeassistant的部署方式有很多种,例如部署在NAS,虚拟机,树莓派里等,你完全可以按照你的具体情况来选择最适宜你的部署方式.笔者在下面介绍下几种不同的部署方式,供读者参考.
笔者家中有一台TrueNAScore系统的NAS,在truenas中非常容易安装.
选择Plugins,然后选择Community,找到HomeAssistantCore后再点击安装即可完成安装.你可以手动指定该容器的IP抑或是直接使用DHCP自动分配IP地址,从将来维护的方便的角度上来说,我建议在这里使用DHCP分配IP,然后再路由器上固定IP地址
如果你安装的是Unraid系统的NAS,也可以使用Docker的形式安装Homeassistant,操作方式类似.
笔者推荐使用这种方法安装,因为你有大量别人已经配置好的镜像可以选择,不需要自己手动配置.
如果你的计算机本身性能不足,或是没有安装docker等容器的经验的话,也可以考虑直接使用python虚拟环境来运行homeassistant.
homeassistant软件依赖python3.8+,所以在安装homeassistant之前你需要在你的服务器上安装python环境.不同的linux发行版所使用的包管理器不尽相同,所以你需要使用对应的包管理器进行python等依赖的安装.以笔者最常用的CentOS为例安装的语句如下:
#更新yum
sudoyumupdate-y
#安装homeassistant所需的所有依赖
sudoyuminstall-ypython3python3-devpython3-venvpython3-piplibffi-devlibssl-devlibjpeg-devzlib1g-devautoconfbuild-essentiallibopenjp2-7libtiff5tzdata
为homeassistantcore创建一个用户,供其使用
sudouseradd-rmhomeassistant-Gdialout,gpio,i2c
首先先创建一个目录用于安装Homeassistant,然后把这个文件夹的所有者赋予给刚刚创建出的homeassistant用户.
sudomkdir/srv/homeassistant
sudochownhomeassistant:homeassistant/srv/homeassistant
接下来开始为homeassistant创建虚拟环境
sudo-uhomeassistant-H-s
cd/srv/homeassistant
python3-mvenv.
sourcebin/activate
接下来安装pip包
#更换pip源为阿里源,国内使用国外的源下载速度会非常慢,所以需要切换数据源,如果你已经切换了那么下面这一句可以不用写
python3-mpipinstallwheel
安装完毕以后就可以通过pip来安装homeassistant了,输入
pip3installhomeassistant
等待完成安装,如果一切顺利的话你接下来就可以启动你下好的homeassistant了!在你第一次启动homeassistant的时候由于要下载大量的依赖所以启动会非常慢,大约需要五到十分钟甚至更久,泡一杯咖啡慢慢等吧
hass
HACS(HomeAssistantCommunityStore)是homeassistant中一个非常重要的组件,这个组件负责管理整个Homeassistant的外部下载组件.
通过该组件可以直接下载发布在Github上的社区组件或是一些漂亮的卡片.但该组件并不包含在HomeassistantCore中,需要你手动进行安装.
下载该文件,然后访问你的Homeassistant服务器,进入你的homeassistant安装目录
例如,笔者的homeassistant的安装目录为/home/homeassistant/homeassistant/,在该文件夹下创建两个新的文件夹,分别为custom_components以及www,然后把你刚刚所下载的HACS文件放入custom_components文件夹中.如果你找不到你的安装目录的话,你可以使用find命令来搜索.
HACS需要通过Github来下载安装组件,所以需要一个Github的访问令牌.这里默认你已经注册了Github账号.
生成令牌后你只能看到它一次,请在这个时候务必复制保存该令牌!
访问你的Homeassistant首页,点击配置→集成
之后点击添加集成
在上面的搜索框中输入h,下面就会搜索到HACS,点击安装.在安装完毕之后会弹出一个输入框,要求你输入Github的令牌,你把刚刚获取到的令牌填入其中.这样你的HACS集成就安装完毕了