群晖 docker 部署 Home assistant 实现家居自动化 (持续更新...)

关键字:

components、configuration、group、costomize、secret、automations、scripts、custom_components

安装方法:

群晖更新到6.1版本不需要转到SSH下执行了,正常操作即可!真心建议在docker跑,升级更新什么的非常方便

在 docker 管理器搜索 homeassistant/home-assistant 下载映像,由于我的群晖是 5.2 版本,所有 docker 管理器还不能选择网络类型,所以转到 ssh 下执行命令来启动容器。

docker run -d –name=”HASS” -v /volume1/docker/HASS:/config -v /etc/localtime:/etc/localtime:ro –net=host homeassistant/home-assistant

注意:–net=host  必须的,否则不能找到智能设备。


docker安装Node-Red控制HomeAssistant自动(2018年9月16日)

由于HomeAssistant的自动化不够友好,而Node-Red提供了HA接入组件,图形化界面操作、调试,非常方便做HA的自动化设置。

买了四个sonoff开关刷固件接入温湿度传感器、红外感应传感器、超声波传感器(2018年9月16日)

1、难点:要自己焊出排针接电脑刷固件

2、我刷的是Tasmota 5.12 ,不要追求最版本,会很多问题,你也可以试刷之后再降回5.12版,提供下载链接:http://ixiqiao.cn:8899/wl/?id=pbhoqWgZ6qV3j6IVsH1hhSGOqi5Xr3aw

接入方法参考改文章:https://bbs.hassbian.com/forum.php?mod=viewthread&tid=1120   

智能开关改造,保留原物理开关(2018年9月16日)

刚好家里要翻新改造,顺便的就把客厅、饭厅的灯和插座开关、排气扇等改成网络控制,淘宝了一款基于MODBUS的16路10A的中继器,支持有线网络和无线接入,支持保留原来物理开关控制。

上图:

《群晖 docker  部署 Home assistant 实现家居自动化 (持续更新...)》 《群晖 docker  部署 Home assistant 实现家居自动化 (持续更新...)》 《群晖 docker  部署 Home assistant 实现家居自动化 (持续更新...)》

《群晖 docker  部署 Home assistant 实现家居自动化 (持续更新...)》

配置:(16路没用全,部分注释了)

modbus:
type: tcp
host: 192.168.31.10
port: 8080

switch:
– platform: modbus
scan_interval: 1
slave: 1
coils:
– name: Switch01
slave: 1
coil: 0
– name: Switch02
slave: 1
coil: 1
– name: Switch03
slave: 1
coil: 2
– name: Switch04
slave: 1
coil: 3
– name: Switch05
slave: 1
coil: 4
– name: Switch06
slave: 1
coil: 5
– name: Switch07
slave: 1
coil: 6
– name: Switch08
slave: 1
coil: 7
# – name: Switch09
# slave: 1
# coil: 8
# – name: Switch10
# slave: 1
# coil: 9
# – name: Switch11
# slave: 1
# coil: 10
# – name: Switch12
# slave: 1
# coil: 11
– name: Switch13
slave: 1
coil: 12
– name: Switch14
slave: 1
coil: 13
– name: Switch15
slave: 1
coil: 14
# – name: Switch16
# slave: 1
# coil: 15

homeassistant:
customize:
switch.Switch01:
friendly_name: 门口侧电源
switch.Switch02:
friendly_name: 电视电源
switch.Switch03:
friendly_name: 筒灯A
switch.Switch04:
friendly_name: 筒灯B
switch.Switch05:
friendly_name: 预留灯带
switch.Switch06:
friendly_name: 筒灯A
switch.Switch15:
friendly_name: 筒灯B
switch.Switch07:
friendly_name: 大灯
switch.Switch08:
friendly_name: 阳台灯
switch.Switch13:
friendly_name: 排气扇
switch.Switch14:
friendly_name: 风扇灯

百度人脸识别:2018年5月17日10:03:26

先到百度注册开发者,免费开通该服务,虽然有调用限制,但对私人使用来说足够了。

image_processing:
– platform: baidu_face_indentify
app_id: !secret baidu_face_id
api_key: !secret baidu_face_api_key
secret_key: !secret baidu_face_secret_key
snapshot_filepath: ‘/config/baidu_snap’
resize: 0
detect_top_num: 3
ha_url: ‘https://ixiqiao.cn:8123’
ha_password: !secret http_password
scan_interval: 1
source:
– entity_id: camera.bookroom
name: faceRec

组件代码下载:http://ixiqiao.cn:8888/wl/?id=Ed7wS7OMEOQF8k32rEuZXp2e1XCpFBXR&mode=regular

废弃安卓机安装 IP Webcam当监控:2018年5月17日09:51:57

android_ip_webcam:
– host: 192.168.31.222
port: 8080
name: bookroom
username: admin
password: admin
sensors:
– battery_level
– battery_temp
– battery_voltage
– light
– motion
– pressure
– proximity
– sound
switches:
– night_vision
– overlay
– torch
– video_recording

小米2s电信版安装kodi当TTS输出:2018年1月10日20:19:12

有一台碎屏了的小米2s ,不能触屏,继续利用,刚好有一个转接器可以连接无线鼠标,到kodi官网下载ARMV7A版本安装,之后参照HASS官网设置就好了。结合百度TTS,同样官网有百度TTS标准组件说明。

media_player:
– platform: kodi
host: 192.168.31.173
username: kodi
password: 123456

tts:
– platform: baidu
app_id: 你的appID
api_key: !secret baidu_api
secret_key: !secret baidu_secret

后续比较有意思的计划:

  • 安装 teamviewer host 无人守值实现远程控制安卓手机,在MIUI下使用teamviewer host 远控时会黑屏,但模拟触摸是正常的,即使我刷机到开发版MIUI9一样黑屏,估计是软件兼容性问题,于是想到刷原生安卓系统,地址如下 http://www.miui.com/thread-3267573-1-1.html ,我刷的是“2016.3.22版(最新)下载地”确实成功了,不黑屏,嘿嘿,这样手机就可以远控了。碎屏又如何~
  • 这手机能否当监控接入HASS呢,待后续研究更新….

接入 Fitbit 运动手环:2018年1月6日

跟着官网做,没有难度。( 链接 )

《群晖 docker  部署 Home assistant 实现家居自动化 (持续更新...)》

解决点击设备和history无限转圈问题:(后期更新的HASS版本已其他图表渲染,该问题已成历史)

原因:由于 HASS 前端引用了Google的文件生成图例,在国内是被墙的,所以需要自己进去 docker 终端修改对应文件。

进入 docker 终端的方发看这篇文章 (传送

cd /

find -name frontend.html

cd /usr/local/lib/python3.6/site-packages/hass_frontend_es5

mkdir js

cd js

wget https://ixiqiao.cn/qy/jsapi.js     (原地址:https://www.google.com/jsapi?callback=https___www_google_com_jsapi_callback___callback___api_loaded)

cd ..

sed -i “s/https:\/\/www.google.com\/jsapi/\/frontend_es5\/js\/jsapi.js/g” frontend.html

gzip -c frontend.html > frontend.html.gz

重启 HA

更换数据库,加快开机速度和查询速度

HA 默认数据库引擎是:SQLite,由于群晖已安装有 MariaDB 套件和 phpMyAdmin 套件,所以就很简单,使用 phpMyAdmin 创建数据库 hass_db 和新建用户 hassuser 设置密码,在 configuration.yaml 配置 recorder 组件:

recorder:

purge_interval: 3

purge_keep_days: 7

db_url: mysql://hassuser:密码@群晖IP/hass_db?charset=utf8

重启HA

接入摄像头设备ffmpeg、synology

我家门口使用海康威视的摄像头,接入群晖 SurveillanceStation ,虽然 HA 官网有群晖的组件接入监控,但是我这边会报错,HA版本:0.59 ,群晖版本:5.2-5644,没有去深究原因,改用其他方式接入:

方案二:使用 ffmpeg 组件,播放 rtsp 流。(这个docker直接支持ffmpeg,不需要额外安装,非常便利)

camera:

#  – platform: synology

#    url: https://192.168.31.5:5001

#    username: admin

#    password: xxxx

#    timeout: 15

#    verify_ssl: false

 

– platform: ffmpeg

input: rtsp://admin:xxx@192.168.xx.xx/mpeg4/ch1/sub/av_stream

name: street


海康格式:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
说明:

username: 用户名。例如admin。
password: 密码。例如12345。
ip: 为设备IP。例如 192.0.0.64。
port: 端口号默认为554,若为默认可不填写。
codec:有h264、MPEG-4、mpeg4这几种。
channel: 通道号,起始为1。例如通道1,则为ch1。
subtype: 码流类型,主码流为main,辅码流为sub。


例如,请求海康摄像机通道1的主码流,Url如下
主码流:
rtsp://admin:12345@192.0.0.64:554/h264/ch1/main/av_stream
rtsp://admin:12345@192.0.0.64:554/MPEG-4/ch1/main/av_stream
子码流:
rtsp://admin:12345@192.0.0.64/mpeg4/ch1/sub/av_stream
rtsp://admin:12345@192.0.0.64/h264/ch1/sub/av_stream

大华格式:rtsp://username:password@ip:port/cam/realmonitor?channel=1&subtype=0
说明:
username: 用户名。例如admin。
password: 密码。例如admin。
ip: 为设备IP。例如 10.7.8.122。
port: 端口号默认为554,若为默认可不填写。
channel: 通道号,起始为1。例如通道2,则为channel=2。
subtype: 码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1)。

例如,请求某设备的通道2的辅码流,Url如下
rtsp://admin:admin@10.12.4.84:554/cam/realmonitor?channel=2&subtype=1

接入设备跟踪:

  • device_tracker 组件,用于监控路由器接入的设备状态。譬如:想知道妈妈是否在家,在几楼。(准确来说是妈妈的手机,呵)
  • 先科普一下路由器固件知识:路由器基本都是基于linux 几个大厂都有自己的系统,比如华硕开发了asuswrt,在它的基础上诞生了注重功能和扩展的梅林,以及注重简洁高效的老毛子。而在10多年前,根据思科的开放wrt54g源码,诞生了openwrt,潘多拉,lede都是openwrt的分支,同样小米路由也是基于openwrt,或者说是衍生版。当年和openwrt一起诞生的还有ddwrt和tomato等。而像VxWork(TP系自带固件)则本身就是商业闭源的,因此无需也不可能开源。
  • 一些问题:某些检测方式使用的是 Nmap 进行 ping 测,但对于某些设备,比如说苹果手机,在锁屏睡眠时会断掉wifi链接,这样就到导致结果不准确,另外某些 device_tracker 对AP模式的路由器有问题。还有一些组件使用的是路由器的arp表作判断也是很不准确的。截至到2017年12-24日,HA 版本0.6,我知道的使用官方 asuswrt 的 device_tracker 组件和小米路由组件是比较准确的。即是:原生asuswrt固件、梅林固件、老毛子固件、小米原生固件。

接入小米网关套件:

略,没有什么特别,参考官网该组件的写法即可

接入小米智能WIFI插板:

switch:
– platform: xiaomi_miio
name: Original Xiaomi Mi Smart WiFi Socket
host: IP
token: YOUR_TOKEN

TOKEN获取方法:

方法一:

1、需要电脑,安装有 JRE 环境,下载 MiToolkit(https://github.com/ultrara1n/MiToolkit/releases

2、在手机米家APP设置好插板

3、打开手机 USB 开发者模式,链接电脑

4、运行 MiToolkit 选择语言为英语,点击 Extract Token

5、手机端进行数据备份(不要设置密码)即可在电脑端查看 Token

方法二:

很遗憾,这个简易工具在我的红米 note3 上不起作用,只能找原理了,具体见这个链接: https://github.com/jghaanstra/com.xiaomi-miio/blob/master/docs/obtain_token.md 介绍了安卓手机或者苹果手机获取 token 的方法,不太习惯英语的童鞋也逼自己看吧,毕竟很多技术大神都是外国的哈~

基本原理是:使用米家 APP 接入智能设备,测试设备可用,使用备份工具备份米家APP (包括程序和数据),小米自带的也可以(在更多设置——备份和重置——本地备份),但使用小米备份工具会在原生安卓备份文件加上米家的文件头,如下图:

《群晖 docker  部署 Home assistant 实现家居自动化 (持续更新...)》

使用十六进制工具删掉,就可以借用方法一工具中的 abe.jar 工具(同样需要电脑有JRE环境)将文件另存为tar格式,命令:java -jar abe.jar unpack “米家(com.xiaomi.smarthome).bak” backup.tar ,解压 tar 找到里面的 miion2.db ,使用 SQLite 浏览器打开文件,找到对应设备的 token 字段就ok了!

接入微信通知:

消息通知的方式很多,大家根据自己的使用习惯选择,本人使用微信较多,所以就接入微信消息通知,目前有免费的接口,感谢作者:server酱 提供

参考1:https://bbs.hassbian.com/forum.php?mod=viewthread&tid=1099&highlight=serverchan

参考2:https://bbs.hassbian.com/forum.php?mod=viewthread&tid=1650&highlight=pushbear

我使用的是后者 pushbear,贴中提供的 serverchan 组件使用了 fake_useragent ,默认docker 下没安装,进入到docker 终端,pip install fake_useragent, 重启 HA 即可。

接入中文地图 — 墨澜:

https://github.com/cxlwill/ha-inkwavemap (感谢作者分享)

homeassistant中默认坐标经纬度系统使用WGS84系统,而高德地图使用的经纬度系统为GCJ02:又称火星坐标系

大家设置HA 坐标时去 http://www.gpsspg.com/maps.htm  获取坐标,选用其中的谷歌地球坐标。

接入GPSLogger组件跟踪设备:

device_tracker:

– platform: gpslogger

安卓端安装 GPSLogger 软件根据官网介绍进行设置: https://home-assistant.io/components/device_tracker.gpslogger/

其中 URL 提交的参数 device=%SER 会生成该名字的 device_tracker ,并携带有 URL 的其他参数(如电量、gps位置、高度、速度…)

配合上面的中文地图,显示设备所在位置。

TODO:

  • 博联 RM PRO + 电源改造射频开关
  • 自动浇水系统,电磁水阀+射频开关
  • Floorplan 接入图形化界面

参考网站:

点赞
  1. 情非殇说道:

    感谢分享,楼主能分享下继电器链接或者价格么,谢谢! :confused:

    1. admin说道:

      邮件发你了

  2. 情非殇说道:

    大佬,我也想要价格链接,谢谢!!

发表评论

电子邮件地址不会被公开。 必填项已用*标注