跟CT一起玩转全屋智能 篇一:威联通Docker下Home assitant的升级以及零冷水热水器的接入

2021-01-26 21:10:58 24点赞 127收藏 28评论

创作立场声明:为了给大家带来更多更实用的智能家居技巧干货分享,特别新开专栏“跟CT一起玩转全屋智能”,希望大家多多支持。

大家好,我是你们的智能家居领路人CT,在前一段时间的文章里,我有写过一篇把群晖NAS上的Docker容器整个备份还原迁移到威联通上的文章:

更换NAS DOCKER应用要重装?——保姆级Docker容器无损迁移教程是返乡过年?还是就地过年?最新一届#双面过节指南#开始啦!本次征稿活动分为A面返乡和B面就地,大家可以根据自己的情况,分享自己的春节攻略,优秀的投稿文章还有可能能获得优厚的大奖哦,快点击查看活动详情casatift| 100 评论37 收藏957查看详情

大家收藏和评论都非常热烈,但是这里我要指出的是,这样的备份还原方式其实并不是Docker推荐的方式,我采用这个方式完全是因为我使用的domoticz为值友dt27打包的完整版ubuntu,所以我自己在里面安装很多其他应用。不能使用正常的升级途径进行升级(会造成应用及脚本丢失)。并且我在备份之后发现,我的整个domoticz有整整11.17GB:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

当然,一个运行了4年左右的智能家居中枢,这么多日志,有个11GB并不算啥。但是在迁移的时候我思考了下,玩domoticz的人相对于Home assitant来说少很多,这就导致了能够接入的设备插件也很少,家里新的设备基本都是我自己通过抓码或者改写他人的脚本来实现接入和控制的。虽然自己用着没啥,但是如果写教程出来分享,一是domoticz关注的人少,没有什么价值。二来就是脚本啥的对于初学者来说都太难了。所以在我的“零基础打造全屋智能”文章里,评论最多的一句就是“这也是零基础?”所以我自己踅摸了下,决定把自己用的domoticz系统转换成Home assitant,顺应下时代潮流。而原来的专栏将不再更新,新的有关Home assitant的内容建立新的专栏“跟CT一起玩转全屋智能”,欢迎大家关注收藏。

一、威联通Docker下Home assitant的升级

我们先来讲讲系统的升级,我之前也经常吐槽Home assitant玩家不是在升级,就是在等升级的路上。在自己安装了home assitant之后,切实体会就是——我吐槽的一点都没有错。

威联通Docker下Home assitant的升级以及零冷水热水器的接入

官网最常见的notice就是这句,Make sure you……,经常是上去看到要求最低运行某一版,然后急匆匆升级之后,第二天打开官网,发现又更了一版。怎么办呢?只能默默更新。而关于使用docker安装home assitant的文章其实全网有很多,但是关于升级的内容,我找了下,几乎是没有,我不知道是因为太简单了,所以在这里也简单提下。按照HA官方的指导,其实非常简单,升级DOCKER内的HA一共分为四步:

1.下载新版本的容器:

docker pull homeassistant/home-assistant:stable

2.停止现有HA容器:

docker stop home-assistant

3.删除现有容器:

docker rm home-assistant

4.运行新版本容器:

docker run -d --name="home-assistant" -v <本机映射路径>:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant:stable

其实打开了NAS的SSH的话,使用putty上去非常简单。当然,我们也可以在web ui上同样操作。其实在威联通(QNAP)的ContainerStation上更新HA与安装全新HA的步骤是完全相同的:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

首先是记录下现在运行的HA的配置和共享文件夹设置:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

然后停止和删除容器以及镜像,重新安装创建一个新的Home assitant容器:

直接使用命令行运行的话,可以设定localtime,但是使用UI界面的话,我们就需要在环境里加上一条TZ的设置:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

然后网络选择HOST模式:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

加载共享文件夹与之前一致:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

之后打开WEB界面就可以看到升级后的HA了:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

我的HA还在部署阶段,没有分类,所有比较乱,大家看看就好。这里值得提醒一句的是,升级前备份一下自己的config目录。

二、零冷水热水器的接入

在之前我有过一篇关于家里更换美的零冷水热水器的文章:

老破小也能用上零冷水——美的VC滋养零冷水燃气热水器体验创作立场声明:本文所测商品为自费购入,旨在与广大值友分享产品体验。若有任何问题,欢迎大家评论留言,一定尽力解答。大家好,我是CT,前些日子魔都的雨有些猛,然后厨房就发生了一场“惨剧”,雨水从燃气热水器的烟管倒灌进来。第一次发现橱柜有水滴的时候,还没意识到是雨水倒灌,以为是热水器漏水了,然后擦干之后检casatift| 134 评论13 收藏154查看详情

其中也吐槽了天猫精灵中对于热水器只有开关,设定温度的选项,而没有打开零冷水的控制方式。而美的新品使用的MSMART协议都已经升级到了V3.0,其加密是结合APP使用动态密令来进行的,所以几乎不可能被破解。所以不加改造使用本地局域网控制几乎是不可能的,而国外用户目前将美的产品接入HA都是通过硬件改造的:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

这个改造方式优点是比较美观,并且可以直接读取状态等信息。缺点是技术难度比较高。并且燃气热水器目前没有看到有改的,所以难度就更高了。所以我就想简单的说我只要打开零冷水就好了,根据思路,最简单的方式还是拆机,找到零冷水水泵的触发开关,直接控制开关就行。不过因为安装的限制,热水器前面板并不能直接拆开(有橱柜挡板)。

威联通Docker下Home assitant的升级以及零冷水热水器的接入

所以就想着反正是塞橱里的,不如遵循我改油烟机的方式,直接加个舵机,来模拟手按零冷水的开关就好:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

这个是制作出来的成品,其中机械手部分贴了一条导电海绵,并且海绵接地。当然,这部分完全是取决于触摸开关的电容设定的,例如我的352空净,直接接地就能触发开关,完全不需要舵机,只要一个继电器控制通断就行。而右侧的两个绿色PCB的圆板是两个天猫精灵的无线开关。因为在实际测试中发现,热水器电源开着的情况下长时间不用热水器会进入待机模式,而进入待机模式后,需要触发开关两次才能打开零冷水功能(第一次触发点亮屏幕,第二次触发打开功能)。解决的方法是利用了天猫精灵的无线开关,在控制打开零冷水之前对热水器进行一次关和开的操作(在待机情况下,单独下开的指令并不会唤醒热水器)。当然,要是没有天猫精灵的话可以使用一个智能插座来进行开关操作,或者利用现有的ESP来加个继电器来对热水器电源进行控制。

威联通Docker下Home assitant的升级以及零冷水热水器的接入

这样,我每次通过自动化来控制零冷水,这块主机就会先执行关闭热水器,然后打开热水器,然后控制舵机按动按钮来打开零冷水。

威联通Docker下Home assitant的升级以及零冷水热水器的接入

这样我就实现了通过网络(自动化,语音)来打开热水器零冷水的功能。但是,这里还需要解决的一个问题是,热水器的工作状态。我之前是通过一个带电量检测的智能插座来对热水器的工作状态进行检测的。当插座功率高于10W时可以判定热水器在工作,而热水器低于3W时可以判定热水器没有在工作,不过因为WIFI智能插座的功率上报和查询有时间间隔(1分钟),相对不够即时,所以我这里又给热水器加了一个水流传感器:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

这个水流传感器其实就是一个干簧管磁性开关,上面标记的DC250V 0.3A是最大承受电流。当水流按箭头方向通过时,会冲击里面的一个小磁铁至干簧管位置触发开关,而水流静止时因为磁力关系,小磁铁就会复位断开开关。这个感应器还有个用法就是把黑色的干簧管换成小米门磁。同样也能进行触发,如果习惯使用米家的话,就可以以此改造,门磁关闭时有水流通过,门磁打开时就无水流。(购买时请注意购买水流信号检测而不是流量检测,流量检测输出为脉冲,不是开关信号)

威联通Docker下Home assitant的升级以及零冷水热水器的接入

考虑到传感器内部原件会对管径产生影响,所以我买的是6分口的传感器,搭配2个6转4的转换器将其接在热水器上。

威联通Docker下Home assitant的升级以及零冷水热水器的接入

接水管的时候一定要注意水流方向,下面是接线图:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

其中继电器的常闭端接无线开关的按钮两极。接着我们就要给D1mini(或其他ESP8266)刷固件了,这里推荐使用20200703版,因为最近的几版似乎没有了舵机控制或者有bug。刷机非常简单,就USB插电脑上,然后将bin文件夹里对应的bin文件(根据8266或8285)选,我这里用的是normal_IRext_no_rx_ESP8266_4M2M拷贝到FlashESP8266.exe所在目录,运行FlashESP8266选择端口固件进行刷机即可:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

威联通Docker下Home assitant的升级以及零冷水热水器的接入

刷完之后MCU会自动重启,然后打开手机查找ESP相关的AP连接(密码configesp)然后将MCU连入WIFI网络,之后就可以回到电脑上进行配置了。

威联通Docker下Home assitant的升级以及零冷水热水器的接入

先进config标签页,将Unit Name改掉,我改成了heart_curtain,因为这块ESP我还接了窗帘控制。

威联通Docker下Home assitant的升级以及零冷水热水器的接入

之后在Controllers里面第一个添加Home Assitant MQTT控制器,将MQTT服务器名字填入,如果有用户名密码也记得填,之后别忘了勾选Enabled,然后Submit。

威联通Docker下Home assitant的升级以及零冷水热水器的接入

然后去Hardware页面把D6和D7的boot states改成Outputlow,使得这两个开关上机之后就是关的状态。

威联通Docker下Home assitant的升级以及零冷水热水器的接入

接着去Devices页面建立两个Switch input的开关,D7叫做water,D6叫做heater。当然这里的名字无所谓,只要和后面的rules对应就好,我这里的water是水流传感器,heater是热水器,其实不讲究的话只要D7那个就好。

威联通Docker下Home assitant的升级以及零冷水热水器的接入

然后去tools的advanced Settings里把Rules Settings里的Rules和Old Engine都勾上。之后就可以编写rules了

威联通Docker下Home assitant的升级以及零冷水热水器的接入

下面来讲解下rules

热水器状态检测

1.启动后将D6,D7设置为低电平:

on System#Boot do
GPIO,13,0
GPIO,12,0
endon

这一步在之前hardware里也进行过设置,不过早期的ESPEASY经常有问题,所以这里上个双保险。

2.检测到水流开关触发,设定一个3秒的定时器:

On water#state do
timerSet,2,3
endon

这一步的触发条件是水流传感器,无论是开还是关,都会触发这个定时器

3.timerSet2计时结束,触发热水器开关状态:

On Rules#Timer=2 do
if [water#state]=1
GPIO,12,1
else
GPIO,12,0
endif
endon

这是水流开关触发后3秒,再次检测水流传感器的状态,如果是开,那就把heater开关设定为开,如果是关,那就把heater开关设定为关。

上面2个rules连在一起就可以判断热水器的开关状态,当然,这里比较遗憾的是仅仅只能判断水龙头或水泵是否在工作,如果热水器没通电打开热水龙头,系统还是会判断热水器是开着的。如果考究点,可以在系统里加上一个功率检测的双鉴。

零冷水开关

4.触发零冷水开关

On startwatering do
GPIO,4,1
delay 300
GPIO,4,0
delay 300
GPIO,4,1
delay 300
GPIO,4,0
delay 2000
GPIO,4,1
delay 300
GPIO,4,0
delay 4000
Servo,1,0,45
delay 500
Servo,1,0,0
timerSet,1,5
endon

其中 starwatering是event的名字,之后GPIO,4,1到delay 2000之前是双击两下无线开关,关闭热水器,然后停2秒,GPIO,4,1到下一个delay 4000是单击无线开关,打开热水器,然后再等待4秒。Servo,1,0,45就是舵机旋转45度,然后等0.5秒回到0。最后设了一个5秒的定时器,用来检测零冷水是否打开成功。

5.检测零冷水是否开启成功

On Rules#Timer=1 do
if [water#state]=0
GPIO,4,1
delay 300
GPIO,4,0
delay 4000
Servo,1,0,45
delay 500
Servo,1,0,0
timerSet,1,5
endif
endon

这是5秒的计时器到了之后检测水流传感器是否打开,如果发现没有水流的话,就再执行一次打开热水器,按下按钮的操作。

这里关于MCU的配置就完成了,接着就是将其接入HA了。这一步也非常简单,我们只需要在configuration.yaml里添加一个MQTT的Switch就好了:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

重启下HA就能使用了:

打开热水后系统反馈:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

关闭热水后系统反馈:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

因为rules里面设置了3秒的再次确认,所以有点延迟,如果不喜欢延迟可以把确认的这条删掉,直接利用水流传感器的反馈来作为状态。

开启零冷水:

威联通Docker下Home assitant的升级以及零冷水热水器的接入

好了,至此我们就把热水器零冷水以及热水器状态接入了HA,接着就可以按自己喜好设置自动化或者是语音控制了,例如早上6点半到7点半进入卫生间,系统自动打开零冷水,或者是浴霸开启后,系统自动设置零冷水等等。至于HA的自动化,我准备使用appdeamon来实现。若有兴趣,敬请期待我之后的原创分享。喜欢的话可别忘了点赞,收藏,评论哦~

展开 收起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2582.5元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3199元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1999元起

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

1199元起

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

2699元起

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

1899元起

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

2000元起

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

1299元起

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

1599元起

QNAP 威联通 TS-664 NAS存储 黑色(N5105 4GB)

QNAP 威联通 TS-664 NAS存储 黑色(N5105 4GB)

5280元起

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

1699元起

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

1899元起

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

1899元起

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

3499元起

QNAP 威联通 TS-464C 4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS(含企

QNAP 威联通 TS-464C 4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS(含企

2099元起

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

7480元起
28评论

  • 精彩
  • 最新
  • 置顶 我把触发逻辑改了下,去掉了关闭打开的动作,打开开关后舵机直接触发,然后等待5秒,没有水流舵机就再按一次

    校验提示文案

    提交
  • 大佬就是大佬,研究的透彻啊

    校验提示文案

    提交
    刚开始学,自动化还没整

    校验提示文案

    提交
    主要还是自己懒。所以想着啥都自动化

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 直接装个最小化debian虚拟机,然后装hassio,之后升级都很容易 [邪恶]

    校验提示文案

    提交
    这个和我现在用的dicker下的Ubuntu domoticz一样了,有优点也有缺点。

    校验提示文案

    提交
    收起所有回复
  • homeassistant的教程什么时候做

    校验提示文案

    提交
    最近在准备appdeamon的,正在研究

    校验提示文案

    提交
    收起所有回复
  • 强烈建议还没买热水器的值友,不要买所谓的零冷水,而是买单独的回水泵。这样整套系统就简单多了,用一个断路器控制回水泵的通断电就行,回水泵自身一般有断电记忆功能。米家插座、aqara插座、sonoff插座……任选。

    校验提示文案

    提交
    方案上确实是这样,但是最大的问题是——丑

    校验提示文案

    提交
    收起所有回复
  • 大佬,docker操作是否要挂梯子,如此频繁的更新对没梯子的人是否友好

    校验提示文案

    提交
    玩这个没有不行啊

    校验提示文案

    提交
    emmm那成本太高,放弃,双十一双十二疯狂推送威联通和群晖,还好没入

    校验提示文案

    提交
    收起所有回复
  • 大佬,看了半天,还是不太懂怎么升级,不知道那几条命令在那里输入

    校验提示文案

    提交
    简单点,可以不通过命令行,直接停止容器,删除,下载新镜像,然后新建,配置和老的一样就好

    校验提示文案

    提交
    收起所有回复
  • 硬核了点,马克下,回头慢慢研究 [狂汗]

    校验提示文案

    提交
  • 门槛一下子拔高了好多,我等只有仰望。

    校验提示文案

    提交
  • 看着看着就看不懂了,先关注一波,以后有机会再来向大佬学习

    校验提示文案

    提交
  • 这个零冷水是指电加热保温么?还有一种无冷水的热水器是屋内热水管道做成环形,利用水泵和小火苗循环加热,那种太土豪了

    校验提示文案

    提交
  • 我以为是玩docker的,没想到是玩自动化的 [皱眉] 告辞告辞

    校验提示文案

    提交
  • docker有指令可以升级image,重启一下容器就行了,你这是删除重装 [高兴]

    校验提示文案

    提交
  • 大佬,膜拜中!有大佬的Q群能加入学习下吗?大佬能出一期如何抓app包,然后接入NR或HA控制吗?我有个林内0冷热水器,可以用林内自己的app控制,想抓包接入....另外,门磁改流量那个有教程吗?谢谢大佬

    校验提示文案

    提交
  • 老板能不能出一个威联通docker装有带supervisor模块的,我现在用的还是树莓派3

    校验提示文案

    提交
  • 怎么才能私信联系呢,好多问题要请教。

    校验提示文案

    提交
  • 牛批,这也是我对于使用零冷水最大的痛点。。。。思路有了,实践起来还是挺复杂的。。而且我估计以后也不会有热水器会把零冷水的控制权交出来,不然出问题算谁的。。。。

    校验提示文案

    提交
  • 大佬求问,用container station可以配置***吗,

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
127
扫一下,分享更方便,购买更轻松