本帖最后由 POMIN 于 2023-11-26 23:39 编辑
概述特此声明,此方案非 All in One 方案,本方案是将智能家居常用的网关功能(包括但不限于ZigBee网关、蓝牙网关与WiFi网关)与中继路由、NAS等家庭云功能相融合实现的智能家居无线网关/服务器。 硬件概述- 使用 RTL8822CE 无线网卡给鲁班猫2提供 2.4/5GHz 频段的 Wi-Fi 支持和 Bluetooth 5.0 支持
- 使用 CC2652p 作为 ZigBee 网关来使用,使用 ZNP 方案,USB 连接到鲁班猫2
- 使用 nvme 固态硬盘或 SATA 固态硬盘拓展储存空间(可选)
软件概述- 安装 casaos 作为 docker 管理器使用, 相较于Portainer,操作更简单,更为适合家庭环境使用
- 安装 HomeAssistent 作为智能家居管理后台,提供各种厂商接入家庭云的解决方案
- 安装 NodeRED 自动化流配置工具,可以可视化的实现自己的家庭自动化,并且可以在网关端实现较为复杂的逻辑处理
- 安装 AdGuard 来搭建局域网的 DNS 服务器,提供 DNS 拦截、DNS 防污染的功能
- 安装 Nginx Proxy Manager 来管理局域网内的反向代理,搭配 AdGuard 来实现家庭局域网内的域名解析。
- 安装 EMQX,提供 MQTT 服务器的功能,给 ZigBee2MQTT 或者其他 MQTT 相关的开源项目提供支持
开发流程硬件准备服务器端- 鲁班猫2
- 无线路由器一台,如果没有宽带,只有免费Wi-Fi的话可以买一个支持 WISP 模式的路由器或者 4G 无线路由。
设备端- Wi-Fi 智能设备:易微联门磁传感器、米家智能插座*2、米家空调伴侣
- ZigBee 智能设备:易微联温湿度传感器
- BLE 智能设备:小米蓝牙温湿度传感器2
基本工作安装好鲁班猫的系统,我这里安装的是 Ubuntu22.04 这个镜像,推荐安装带有 xface 界面的镜像,软件包相对较全面,配置过程有可视化界面也方便,后续不需要桌面环境时禁用就行,可以不用,但是要有。 安装好 RTL8822 网卡和天线,打开鲁班猫的终端,运行 ifconfig 命令来查询鲁班猫的IP地址,我这里的鲁班猫 IP 是 192.168.0.103,运行 hciconfig 也可以看到蓝牙正常工作。 网络拓扑网关,当然少不了网络拓扑的设计,关于 LBC 无线网关的拓扑设计如下图 可以在路由器看到鲁班猫的IP地址,鲁班猫的默认设备名是lubancat,设置 MAC 地址和IP地址绑定或者把鲁班猫设置为静态地址的,不能和别的设备IP地址一样,否则会导致冲突无法上网,我是将路由器的DHCP设置为了 192.168.0.100 到 192.168.0.199,同时鲁班猫静态IP设置为了192.168.0.199。 此外,查看局域网内的IP地址办法有很多,当然也可以用一些软件来查,比如下面这个,推荐连接的不是自己的 Wi-Fi 的时候,比如使用公寓、出租屋的 Wi-Fi 时还是扫一下,防止后续需要设置静态 IP 时影响到其他设备上网。 casaos 安装把端口改成 88,这个很重要!因为后续使用 Nginx Proxy Manager 时需要使用 80端口。
然后把 /DATA/Appdata 共享出来,本质上是使用的 Samba 进行的局域网共享 然后挂载到自己的PC上面,如果提示不能挂载的话就直接百度”Windows 挂载 SMB 不安全的解决办法“,挂载为一个磁盘,后续不使用 HACS 时把插件从GitHub下载下来直接拖进去解压就可以。 中继路由设置使用 docker 拉取 openwrt 然后设置一下 lan 口、wan口,然后关于中继路由的设置,我介绍这六点……,由于某些不可抗力因素,这个东西还是自行研究吧,搭建好带有魔法的中继路由就是下面这个样子了,鲁班猫2只有两个网口,如果需要更强的功能可以使用鲁班猫2N,两个2.5G和两个千兆网口玩起来更爽。 HomeAssistent 设置小内存版本的鲁班猫建议非必要不安装 HACS,因为HACS在实测在获取插件列表时需要的内存较大,上文已经映射磁盘到了PC上面,直接把插件的压缩包解压拖到 HomeAssistent 的插件目录然后重启安装即可 ZigBee 网关设置CC2652p ZigBee 网关硬件原理图如下,LDO、CH340C 加 CC2652p,十分简单,随手画一个就可以,模块可以买亿佰特的模块,只要是带 bsl 引导程序的就可以,带 bsl 的可以串口烧录程序,否则就需要用jlink 来烧录了,或者直接小黄鱼买成品当然也可以。
复刻一个,如下图,画的原理图PCB比较简单也就不放出来了。 然后安装 ZigBee 插件 选择 usb 转串口的设备,这里需要在 docker 中映射该设备,或者直接使用文末的 compose 文件导入 第一次初始化等的时间较久,可能这个慢也是和 ZigBee主打低功耗相关的一个“特性”把。 需要添加设备的时候,把设备进入配对模式,点击添加 ZigBee 设备,扫描添加设备即可 BLE 网关设置BLE 的设置也需要一些操作,首先安装好 dbus、bluez 两个软件包 sudo apt-get updatesudo apt-get -y install dbus bluez然后映射两个文件到容器中,容器内的 HomeAssistent 才能正常识别到蓝牙设备 /run/dbus
/etc/localtime 适配器需要选择 Home Assistant 支持的 BLE 硬件才可以使用,如果是 USB 转蓝牙模块,尽量选择带硬件复位功能的,官网中有说明 Wi-Fi 网关接入Wi-Fi设备的接入就比较简单了,把鲁班猫和智能设备同时接入到一个局域网内即可。 强调一下,鲁班猫和智能设备都需要是相同网络下的 STA 模式才可以。如果使用鲁班猫作为 AP 来连接鲁班猫下面的 STA 设备是行不通的! 小米、易微联平台接入重启 HomeAssistent,然后安装 sonoff 和 xiaomi_miot 两个插件 NodeRED 设置搜索节点 node-red-contrib-home-assistant-websocket 安装,安装完成就有许多的Homeassistent的节点了 参考仪表盘的代码配置一个传感器节点,如下图,数据源为 MQTT 的消息包,解析后传入一个 sensor 实体。 然后用 MQTTX 传入一个 JSON 格式的消息包,改变当前的湿度数据为 66% 依照这个思路,无论是 ESP8266、ESP32(当然乐鑫的芯片用 ESPHome 来接入 HA 也是比较方便的选择)这些Wi-Fi模块,或者带 MAC 的 MCU,只要是可以接入 MQTT 服务器收发消息的,统统可以接入到 HA。 当然关于 MQTT 智能家居这方面应用,有一个比较有名的 github 开源项目叫OpenMQTTGateway,有兴趣的朋友可以了解一下,这个项目甚至把 Lora、433、GSM、红外线等等各种无线协议统统涵盖进去了,想把传统设备升级到智能设备可以选择这个项目来开发,比如传统电视机的红外遥控器(现在的智能电视简直没法看!!)接入到智能家居生态等等操作。 AdGuard 设置这里强调一个使用通配符来完成域名解析的配置,在配置这个之前需要将鲁班猫的 IP地址设置成静态 IP,当然也可以使用路由器的 MAC 与 IP 地址绑定的功能,我这里配置的是 192.168.0.199。
配置两个*.lbcserver.love 和 lbcserver.love 来解析 lbcserver.love 这个域名,然后把 DNS 服务器,填入路由器的 DNS 设置,或者在 PC 上设置 DNS 为 192.168.0.199。 其实 AdGuard 本身是用来拦截广告和控制网站访问的,奈何它原理是作为 DNS 服务器的,配置啥的也比 dnsmasq 要方便得多,直接拿来做家庭 DNS 服务器也挺合理的(还能过滤某些视频网站的广告~~) Nginx Proxy Manager 设置继上文,我们已经可以实现对 lbcserver.love 域名的局域网内的解析,但是这个域名对应的 Web 资源也需要设置,但是许多 Web 资源是使用的非 80 端口,例如在刚才安装的 AdGuard 的管理面板的端口为 3000,我们需要用域名来访问这个面板的话就需要 http://lbcserver.love:3000 这个地址,这很不优雅!! 于是我们就需要设置反向代理,总所周知 Nginx 设置反向代理是十分方便的,但是单用 Nginx 的话零代码配置几乎不太可能,所以安装 Nginx Proxy Manager 这个软件还是很方便的,这里设置一个 lbcserver.love 域名和 192.168.0.199 的 88 端口的反向代理,88端口就是上文已经设置好的 casaos 的面板端口。 EMQX 的设置关于EMQX搭建的教程已经十分的丰富了,这里就不再赘述了。 More 。。。。有了 Docker 可以说几乎无所不能,还有许许多多的功能可以添加,比如 MC 服务器、Gitlab、ESPHome。。。,但是由于我手上的鲁班猫2是2+32G的装完这些软件就已经占用掉了四分之三的 RAM 了,其余的软件包就自行研究吧。 最终效果接入我的所有智能设备到 LBC 网关。 Home Assistant 主页,可以看到我的各种设备的状态 因为我是早上八点半和中午一点半上班,设置一个早上八点二十和中午一点二十自动关闭空调,再也不会出现忘记关空调电费咔咔的涨了。 因为有门磁传感器,所以也设置了一个晚上六点之后开门时判断当前温度是否高于28°,高于的话自动打开空调。 装到盒子里,放路由器旁边,等有时间了再画个壳子 配置文件就直接放在附件里了
|