Normal view

There are new articles available, click to refresh the page.
Before yesterdayMain stream

智能家居之第三方监控接入 HomeKit

By: Orchestr
30 November 2023 at 15:20
智能家居之第三方监控接入 HomeKit

相信很多和我一样的有宠家庭,都会为了掌握宠物的行踪或拆家的进展而购买了监控摄像头,通过互联网掌握藏在家中猫猫狗狗的踪迹,抑或是其他的为了家庭安全而购买摄像头起安保作用的家庭,都会面临相同的几个问题:我们真的需要云存储吗?我们真的信任摄像头厂商吗?我回家以后需要关掉摄像头吗?

智能家居之第三方监控接入 HomeKit

猫猫和我一样表示怀疑,以及各个厂商的云存储价格,打消了我的想法。我一开始的方案是将监控接入了群晖的 Surveillance Station,打开了群晖的动态提醒,但随之而来的便是每天无数的提醒,监控视野内但凡有一点点风吹草动,便会让我手机震动不停。

智能家居之第三方监控接入 HomeKit

直到我后来看到一篇关于 iCloud 安防摄像头的文档,为何不接入 HomeKit 白嫖无限 iCloud 存储呢?苹果还是相当良心的,摄像头存储的录像并不占用原有的 iCloud 空间。50 GB 方案:可添加一个摄像头。200 GB 方案:最多可添加五个摄像头。2 TB 及更高方案:不限制摄像头数量。作为高贵的美区 Apple One 超大杯车主,理论上是可以添加无数个摄像头的。具体的内容大家可以看下面的文档。

在 iCloud 中使用 HomeKit 安全视频储存加密安保摄像头录制的视频
了解如何在 iCloud 中使用 HomeKit 安全视频储存安保摄像头的视频。
智能家居之第三方监控接入 HomeKitApple Support
智能家居之第三方监控接入 HomeKit

话不多说,那就准备开搞!以往来说,其他的设备加入 HomeKit 我会选择通过 Home Assistant 进行中转,但是因为 HA 接入的摄像头好像并不支持 动态监测、人脸识别等 HomeKit 安防高级功能,所以我们这里会使用一个新的工具。

GitHub - koush/scrypted: Scrypted is a high performance home video integration and automation platform
Scrypted is a high performance home video integration and automation platform - GitHub - koush/scrypted: Scrypted is a high performance home video integration and automation platform
智能家居之第三方监控接入 HomeKitGitHubkoush
智能家居之第三方监控接入 HomeKit

Scrypted Docker 安装

Scrypted 本身是支持 Home Assistant Add On 的,所以不是通过 Container 安装 Home Assistant 可以方便的跟随这里的文档进行安装:

Home Assistant | Scrypted Docs
Video Integration Platform
智能家居之第三方监控接入 HomeKitScrypted Docs
智能家居之第三方监控接入 HomeKit

因为我的 Home Assistant 是通过 Docker 安装的 HA Core,不支持 Add On,所以这里需要通过 Docker 来进行安装,之前提到过,我的 Home Server 运行的是 NixOS,所以可以很方便的配置 Docker,具体的配置项如下,将其改为 Docker Compose 也很方便,所以这里不再提供。

{ config, pkgs, ... }: {
  virtualisation.oci-containers.containers."scrypted" = {
    autoStart = true;
    image = "koush/scrypted:latest";
    volumes = [ "/orchestr/static/docker/scrypted:/server/volume" ];
    extraOptions = [ "--network=host" ];
    environment = { TZ = "Asia/Shanghai"; };
  };
}

Scrypted 配置

安装完成后,我们便可以在浏览器内进入 scrypted 后台,注意这里的 https 不可省略,具体的网址为:

https://your-host-ip:10443

按照网页提示设置账号密码进入主界面选择 Management Console 即可。

scrypted 插件安装

智能家居之第三方监控接入 HomeKit
智能家居之第三方监控接入 HomeKit

点击左侧栏内 Plugins,然后点击 Install 进入以下界面:

智能家居之第三方监控接入 HomeKit

安装以下插件:

  • HomeKit
  • Onvif Camera Plugin 或 RTSP Camera Plugin
  • OpenCV Motion Detection
  • Snapshot Plugin
  • Video Analysis Plugin
  • WebRTC Plugin

注意,安装完 HomeKit 插件后切勿着急配置,继续看完下文。

Scrypted Server Address 设置

注意,此步不可省略,不然会出现摄像头无画面的情况。依次点击左侧边栏 SettingsGeneral ,即可看到界面设置。

智能家居之第三方监控接入 HomeKit

scrypted 摄像头配置

这里以 Onvif 协议举例,RTSP 配置过程基本一致,点击 Onvif Camera Plugin 进入插件配置,点击 Add New,进入以下界面:

智能家居之第三方监控接入 HomeKit

输入摄像头相关参数,点击 Create ,进入摄像头配置界面,这时,应当能看到摄像头的 SnapShot ,因为我这里已经配置过一遍了,所以界面可能略有不同。点击右侧的 Extensions ,将以下的插件勾选后点击 Save

智能家居之第三方监控接入 HomeKit

Scrypted 插件功能

一般情况下如果使用没有异常,尽可能保留默认配置即可。

Stream

智能家居之第三方监控接入 HomeKit

一般的家用摄像头都会有两个视频流,一般其中一个为高画质,一个为低画质,大家可以根据自己的需求选择相应的视频流,比如在家时适用高画质,出门适用低画质等。

SnapShot

智能家居之第三方监控接入 HomeKit

可以选择一些视频预览画面的选项,比如从哪个视频流截取画面等。

Motion Detection

智能家居之第三方监控接入 HomeKit

这里需要说明的是 Built In Motion Sensor 选项,Assist 为使用摄像头默认内置的动态监测算法,Replace 为使用 OpenCV 进行替代,如果你的摄像头没有内建相应功能的话,建议选择 Replace

Homekit 配置

这里有一个坑大家需要注意,HomeKit 摄像头的配置不是在 Scrypted 的 HomeKit 插件页面进行配置,而是在摄像头的 Extensions 页面,因为 Homekit 摄像头这里的默认配置是 Accessory 而不是Bridge 。对于摄像头而言我更青睐于配件而非桥接,毕竟一次性桥接一串设备进去,将来如果有什么问题需要单独配置某个设备的话,需要整个桥接的所有设备一起移除重新配置,较为麻烦。

智能家居之第三方监控接入 HomeKit

这里有一个选项,RTP Sender 提供两个选择,FfmpegScrpytedFfmpeg 大家众所周知,不做赘述,Scrpyted 为一个实验性选项,在这里有着更快视频转接速度,即更低的延时。

注意,这里配置完成后可能需要重启 Homekie 或 Scrypted 服务,注意观看网页顶部蓝色框的提示,这里不再截图展示。

接下来点击 Pairing ,打开 Home App,点击添加设备,扫描屏幕上的二维码,可能需要输入下方的 Pairing Code ,完成后即可将摄像头加入家庭。

智能家居之第三方监控接入 HomeKit

Home App 设置

在添加完摄像头,App 内便会引导进行摄像头的配置,比如视频录制选项,在家或外出是是否仅串流或开启录制等,以及动态监测是否监测人,动物,包裹等,如果是室外摄像头,还可以监测汽车等,也可以开启人脸识别,避免自己在家时被 Home App 不停地通知监测到有人进入摄像头。

下面只贴一些完成后的截图吧。

智能家居之第三方监控接入 HomeKit
智能家居之第三方监控接入 HomeKit
智能家居之第三方监控接入 HomeKit
智能家居之第三方监控接入 HomeKit
智能家居之第三方监控接入 HomeKit

结束语

到此为止,将第三方摄像头接入 Homekit 的工作就宣告结束,我们可以在这步完成后便关闭摄像头的联网权限。如果大家在配置过程中遇到什么问题,可以留言,博主将在看到后及时回复。如果你对这里的内容略感兴趣,可尝试订阅本站,点击这里即可

Sign up for Digital Immigrants

Nobody from nowhere, belonging to no one.

Email sent! Check your inbox to complete your signup.

No spam. Unsubscribe anytime.

自己动手打造智能物联网设备

10 September 2017 at 15:00

自从前段时间研究了智能家居设备之后,我便迷上了物联网和开源硬件。玩遍了市面上各种常见的物联网产品,总觉得各有不足,于是我突发奇想:干脆自己做一个!

对于我而言,现在市面上的物联网产品最大的问题在于太过封闭,不同厂商的产品都得用自家的 App 才能使用,而且大多数用户体验实在不敢恭维。虽然通过我前一篇博文介绍的方法将它们接入到 HomeAssistant 和 HomeKit 之后使用自由度会高得多,但依然无法满足我自己编写家居智能控制程序的要求。

当我问 Siri 客厅的室温是多少的时候,数据是这样传输的:米家温湿度传感器读取温度数据、通过 ZigBee 信号发送给米家智能网关、通过 Wi-Fi 发送到路由器,路由器再传给树莓派、HA 存储数据、Homebridge 读取和广播数据、手机上的 HomeKit 再通过 Wi-Fi 读取数据……可想而知,数据传输的环节越多,稳定性和数据时效性就越低。比如我想做一个根据电视画面的亮度来调整房间灯光亮度的设备,当电视在播放夜间画面(亮度较低)的时候调暗房间灯光来减轻屏幕反光的影响,反之则调亮灯光方便我吃东西。这时候就需要以百毫秒级的速率来读取光线传感器的数据,一般的商业产品很难满足这种需求。

此外,价格也是很重要的因素:一个硬件成本不超过十元的智能插座零售价高达两百多元;即使选用相对便宜的米家系列传感器和 Sonoff 开关,要实现我心目中真正的智能家居——家中所有电器全部智能化、每个角落都有人体感应器也将是一笔非常可观的开支。

初识 Arduino

于是我开始深入了解开源硬件方面的知识来打造完全合乎自己要求的物联网设备,这时候我发现了 Arduino 这个开源电子原型平台。它本质上是一个单片机,有丰富的针脚接口用于连接各类传感器、伺服器和继电器等等。在电脑上用 Arduino IDE 编写代码后,可以很方便地写入到微控制器上执行。更重要的是由于 Arduino 的软硬件都是完全开源的,让我能以很低的成本获取所需的软件和硬件。

Arduino 有很多种版本,加之以开源的 PCB 图为基础自行生产的第三方产品可谓数不胜数,我选择的是一个可以和我的第三代 Raspberry Pi(树莓派)结合使用的版本——因为 Arduino 本身只是个单片机,并不能像树莓派之类基于 ARM 架构的微型电脑一样连接网络和存储大量数据。虽然市面上 Arduino 也有能实现相关功能的硬件模块,但我依然认为搭配熟悉的树莓派更简单好用。

这个 Arduino 通过串口与树莓派通讯,同时封装了树莓派上的所有 GPIO 针脚,所以需要将它用 USB 线连接到树莓派,然后再将整个 Arduino 都插在它上面。

接入传感器

市面上有非常多的传感器可供选择,且售价大多不过二三十元。Arduino 支持接入模拟和数字两种信号的传感器,我第一个接入的温湿度传感器 DHT11 属于后者,所以要用杜邦线将它插到数字针脚上。

插好之后就可以开始写代码了。Arduino 主要用 C++ 来编程,这是一种我从未接触过的编程语言,还好我学过 Objective-C,所以还算是能读懂;配合万能的 Google、完善的官方文档和传感器厂商提供的实例代码,在开发过程中基本没有遇到什么困难。

虽然厂商提供了已经封装好的代码库,只需调用即可直接读取到传感器数据,不过我对从硬件电路到软件数据的传输和转换过程很感兴趣,于是一探究竟,才知道 Arduino 通过数字接口读取到的是 DHT11 传感器在一段时间内通过电压变化来传输的二进制数值:

按照官方数据表的说明,高电平输出 26 微秒左右表示 0,输出 70 微秒则表示 1,用逻辑分析器即可看到比较直观的效果,这里我偷个懒在网上找了一张已经标注好的图:

这里可以看到传感器总共输出了 40 位的数据,其中前 16 位是湿度,紧接着的 16 位是温度,最后 8 位则用于校验数据有效性,若为温湿度数值之和即为有效;温湿度的 16 位数据中只有前 8 位是有效数据,后 8 位是奇偶校验位,这里全部为 0,可直接忽略。

按照上述规则来解析,图片中的二进制湿度数据为 00011110,温度为 00011001,将它们转换成十进制即可得到最终结果:30% 相对湿度和 25 摄氏度。再计算一下 00011110 + 00011001 = 00110111,即最后 8 个奇偶校验位的数值,证明数据是有效的。

当然实际使用时并不需要自己计算这些,只要引入官方提供的代码库,简单调用一下即可获取传感器数值并通过串口输出,非常方便。

这里要吐槽一下 Arduino IDE 的代码编辑器,功能简陋到基本就是个带语法高亮的记事本,然而它的流畅性和视觉效果甚至还不如记事本……让我不得不在 Sublime Text 里写代码再复制过来编译。

接下来试试光线传感器,它传输的是模拟信号,所以要插在模拟接口的针脚上。软件方面就简单多了,调用 Arduino 内置的 analogRead() 方法即可获取亮度数据。

将数据传送到树莓派

现在已经可以用 Arduino 读取传感器的数据,接下来就要将数据传送到树莓派来做进一步处理。实际上之前所写的代码已经可以让 Arduino 把数据通过串口输出到树莓派上了,所以真正需要做的只是在树莓派上写个程序来读取串口输入的数据,我是用 Python 写的,只需六行代码。

测试成功后我又在 Arduino 上接入了六七种传感器,读取数据的方法都大同小异,这里就不再展开;不过随着数据量的增加,需要对数据进行封装才好解析。这里我选用了 ArduinoJson 库将数据转换为 JSON 格式输出,这样在树莓派上用 Python 读取就方便多了。

在树莓派上用 Python 读取到传感器数据之后,就可以自己写个程序通过我前一篇文章提到过的 HomeAssistant API 来自动控制家里的其他电器了。至此我的智能物联网终端已经初步完成,当然我还会继续研究如何实现更多新奇有趣的用法,包括如何进一步脱离网络传输,完全在本地直接控制电器等等,相信没有做不到,只有想不到。在学习 Arduino 传感器的过程中我还顺便了解到了很多关于电机、伺服器、继电器、ZigBee 通讯协议和无线充电的相关知识,让我很感兴趣,说不定哪天我会一时兴起,给它装上轮子和机械手臂,做成 AI 机器人管家之类的东西,哈哈。

HomeKit 智能家居深入体验

8 August 2017 at 16:55

作为一个从小就爱捣腾数码产品的人,我对智能家居自然有着浓厚的兴趣。最近家里重新装修,便换上了批智能家居设备,我也借此机会对这个新兴领域深入研究了一番。

我觉得智能家居最重要的一点,就是用起来要比传统的控制方式更方便。这听起来像是废话,可实现起来却并不太容易,毕竟绝大多数所谓“智能家居”配套的 App 都非常非常非常难用,比如下图这种画风……即便难得遇到些好用的,想控制不同厂商的设备还得打开不同的 App 也是挺傻的一件事。

还好 Apple 去年发布了 HomeKit 平台,通过这个平台可以将不同厂商的智能家居设备聚合在一起显示和控制,并且深度集成到了 iOS 系统里,在锁屏状态下都可以直接控制所有智能家居设备,完全不需要打开厂商提供的 App;甚至可以不碰手机,直接喊 Siri 帮你控制即可,非常方便(逼格也不知要高到哪里去了);配合 Apple TV 或 iPad 作为控制中枢还能实现人不在家时的远程遥控和自动化控制等等。

然而 HomeKit 虽然已经发布了一整年,硬件的支持情况却并不理想,在国内更是没有得到足够的重视,很多标榜智能家居的厂商甚至不知其为何物。无奈之余,我也本着极客精神,开始研究自行接入的方法。

梳理一下我家的电器设备,大致可分为以下三类:

  1. 原生支持 HomeKit 的设备,如 Philips Hue 系列灯具等;
  2. 完全不支持通过网络控制的传统电器,比如空调、新风系统和电动窗帘;
  3. 可以通过网络控制,却未提供原生 HomeKit 支持的设备,比如米家系列、Sonoff 开关和 Dyson 风扇。

下面我就分享一下我的研究(折腾)经历,看看我是如何把它们统统加进 HomeKit 里的。需要注意的一点是:本文仅为个人经验分享,并不是教程,所以一些细节问题我就不展开了。相信网上已经有了不少相关教程,若有需要可自行搜索,也可以在这里评论与我交流。

原生支持的设备

这里是指生产商官方提供 HomeKit 支持的设备,普通用户就能开箱即用。然而所支持的设备并不多,我手头只有 Philips Hue 系列灯具和 OPSO 的智能插座等。

添加 Hue 灯具的方法非常简单:把 Hue 网关用网线接到路由器上,在官方 app 里根据提示搜索并绑定网关,然后添加灯具即可,完成后扫描一下网关上的序列号,所有灯具都会自动同步到 HomeKit 里。

不得不说,Hue app 的界面设计和用户体验是我所用过的智能家居类应用里最好的。不过把灯都加进 HomeKit 之后,这个 app 也就没太大用处了。

接下来是 OPSO 的智能插座,这是 Apple Store 官网上的唯一一个支持 HomeKit 的国产设备,产品包装很有苹果风,做工也不错,只需在 iOS 自带的 Home app 里扫描设备上的序列号即可使用,非常方便。不足之处是有点不太稳定,使用几天后出现掉线的情况,需要重置设备后重新绑定才能用,希望可以尽快通过固件更新解决。

添加之后默认显示的是插座图标,不过可以手动将它修改成一个灯泡

这就是目前作为普通用户所能体验到的 HomeKit,但我并不会止步于此,下一步将会用些非常规的技术手段把那些并未提供原生支持的设备也加进来。

要实现上述功能,需要借助一个名为 Home Assistant 开源平台(下面简称 HA),它运行在基于 Linux 的系统上,可通过 Web App 和 API 来访问,接入不同的模块即可控制局域网内的各种智能家居设备。

搭建 HomeAssistant

首先需要一个基于 Linux 系统的设备来运行 HA,由于它需要 24 小时不间断运行,所以我选择了超低功耗的第三代 Raspberry Pi(树莓派)。它虽然才一个巴掌大,本质上却是个功能完善的、基于 ARM 架构的电脑,USB、HDMI 和网线等接口一应俱全。

考虑到这台树莓派主要用于运行 HA,我选用了 HA 官方提供的 hassbian 系统。从 HA 官网下载 hassbian 镜像,在电脑上用 Etcher 写入到空白 TF 卡中即可。

安装完成后,将 TF 卡、电源线和网线都插到树莓派上就可以开机了。首次启动时 hassbian 会自动安装和配置所需环境,等待一两分钟后,在局域网内的其他设备上访问 http://hassbian.local:8123 就可以进入 HA 的 Web App 主界面。

这里可以看到 HA 已经自动识别了 Philips Hue 网关和局域网内的两台 Apple TV。这里的 Hue 是可以一键配置的:点击 Configure 再按下 Hue 网关上的实体按钮即可将所有相关灯具都自动添加进来。虽然 Hue 灯具本身已经可以用 HomeKit 控制了,但在 HA 中可以实现更多有趣的玩法,比如自动循环变色等等。

接入传统遥控设备

下一步开始接入那些不能通过网络控制的传统电器,这里需要用到另一个硬件:可以联网的万能遥控器。经过一番比较,我选择了对 HA 支持较好的 BroadLink,它可以发射用于控制空调等电器的红外射频信号和窗帘电机的 FM 433Mhz 信号。

单从硬件角度来看 BroadLink 非常不错,但是它配套的 iOS app 实在是……太!差!了!还好它对 HA 有着良好的支持,所以用这个 app 把它连上 Wi-Fi 之后就可以果断删掉了。

按照官方文档中的说明将 BroadLink 的 IP 和 MAC 地址等信息填入 HA 的配置文件后,在服务列表里就可以看到它了。通过 HA 调用 learn_command 指令,BroadLink 将会进入学习状态。此时用空调遥控器对着它按下开机键,HA 首页便会显示遥控空调开机的指令代码。

接下来要做的就是将这个指令代码按照官方文档的格式复制到 HA 的配置文件里,并给它设置一个名称。用同样的方法配置关机键后,重启 HA 即可在首页看到空调的开关。在 Web App 上点击开关,HA 便会读取这个指令代码并通知 BroadLink 对着空调发送与普通遥控器相同的控制信号,达到通过网络控制电器的目的。

窗帘电机、风扇和空气净化器等其他有遥控器的电器设备也用同样的方法设置之后就都可以通过 HA 来控制了,下一步是将 HA 接入到 HomeKit 上。

连接 HA 与 HomeKit

这里需要用到一个叫做 Homebridge 的工具,它可以在树莓派上调用 iOS 的 HomeKit API 虚拟出一个网关来,然后再用它的 HA 插件将之前添加过的电器都同步到 Homebridge 即可实现操作。安装过程非常简单,参考这几篇官方教程即可:

Homebridge 的 Github 主页
https://github.com/nfarina/homebridge

在树莓派上安装
https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi

与 HA 建立连接
https://github.com/home-assistant/homebridge-homeassistant

安装完成之后就可以在 iOS 设备上的 Home app 里添加 Homebridge 了,这里与原生支持 HomeKit 的硬件相同的添加步骤完全相同,只不过设备名称和设备序列号都可以在配置文件里自定义,能把自己的名字写到“厂商名”处的感觉还是挺好玩的。

至此,HA 上的所有电器设备就都可以直接通过 HomeKit 来控制了。下一步接入能通过网络控制但未提供原生 HomeKit 支持的电器,比如小米家居(米家)系列。

接入无原生支持的设备

我家的绝大多数单联墙壁开关都是米家的 Aqara 系列,经由米家多功能网关控制。使用 homebridge-aqara 插件即可将小米网关添加到 Homebridge 上。

插件安装完成后,需要在配置文件里填入网关的协议密码和 MAC 地址,获取这些信息需要用到一个小窍门:首先打开米家 App(iOS / Android 版本均可)并绑定网关之后,点击网关界面右上角的 ··· 按钮进入“关于”界面,接着快速连续点击界面底部的空白区域,直到列表中出现“局域网通信协议”和“网关信息”的选项;接下来进入通信协议界面,打开上面的开关即可看到协议密码;MAC 地址则藏在“网关信息”界面里的那堆 JSON 格式的信息中。将这些信息一起复制到插件的配置文件里,保存并重启树莓派即可。由于之前已经将 Homebridge 添加到了 HomeKit 里,现在新加入的米家设备都会自动同步过来。

至此,我已经可以用 HomeKit 控制我家几乎所有的电器了,但这还仅仅是个开始。随着 iOS 11 的发布,HomeKit 平台也得到了进一步加强,同时相关协议也逐渐公开了,相信以后会变得更智能、更好用。借助 HA 和 HomeKit 这两个强大的平台,可以充分发挥想象力来实现一些很有意思的玩法。例如配合人体感应器实现走进房间时自动开灯;通过设置情景模式实现跟 Siri 说“我要去洗澡了”即可自动关窗帘和开浴室灯等等;此外,我还用 Sonoff 智能开关、淘宝二十元买的电磁水阀和五金店买的几截水管 DIY 了一个自动滴灌系统,出门在外时也可以远程操控它给家里的花花草草浇水。

题外话

除了 HomeKit 外,HA 还能配合 IFTTT 和 Workflow 等效率工具以及各种开源项目实现更高级的用法,以及通过 RESTful API 实现与各种编程语言的双向通讯,使自己编写家庭控制程序成为可能,即使你没有 iOS 设备也可以愉快地玩耍。

比如我就随手写了一个 Linux 的 HA 客户端,当我想在 macOS 上关闭卧室空调时只需输入如下命令即可。由于我经常开着 Terminal,所以用这个比打开浏览器再进入 HA 的管理页面控制要方便得多(同时还附带满分装逼效果)。

我还更进一步,用 Python 写了个小程序来实现更智能的自动化功能,它除了有根据实时天气自动调整室内的灯光之类的基础功能外,还可以和我日常生活中的其他方面连接起来,比如当我的网站或者 Vary 的服务器出现异常时,会将我房间的灯全部调成红色以作警示;当手机定位我和家人都不在家,但人体感应器又检测到有人活动的时候(有贼!)就把家里所有的灯都改成阴森昏暗的蓝绿色……由于本文是以 HomeKit 为题,这些高级玩法就不详细展开了,如果大家感兴趣我就找时间再单独写一篇文章谈谈吧。

打造可识别静态人体的人体传感器——使用效果

By: 小皮子
25 October 2021 at 16:16

以下方法经本人验证通过,环境如下:

群晖 DS918+ DSM 6.2.4

mosquitto version 2.0.11

Home Assistant 0.91.4


前言:大部分人入门智能家居之处,最早接触的就是人体传感器,实现简单的如人来开灯,人走关灯的需求。我也不例外,家里各个房间布满了小米或绿米的人体传感器。

但市面上这类传感器因工作原理的原因,实际根本无法识别静态的人体。所以这类传感器只能叫人体移动传感器,算不上是真正意义上的人体存在传感器,导致在很多场景下具有天然的缺陷。

举例说明:人坐在书房看书,保持一段时间禁止后,就会被识别为无人状态,然后灯就关了!同理厕所蹲的时候也会有这种尴尬,人工智能变智障。

网上各种解决方案也有,但都治标不治本,不是我想要的完美方案。因此,我决定自己创造一个!

在之前的文章中,我描述了自己是如何构思设计,选择硬件并编码实现的,这篇文件简要介绍下实际是如何使用的

先上效果

第一步:连接本地网络和MQTT服务

首先,最终的人体传感器如下图所示,是一个小方盒子,尺寸是45mm * 47mm * 36mm 。盒子的正面(传感器一方)有状态指示灯的位置,我做了个小小的LOGO。一边的侧面是电源接口及重置按钮。

接入电源后,系统启动,首次使用时候,系统会自动生成一个WIFI热点,名称以FEEUS_开头,无密码。使用手机连接该WIFI后会打开设置页面。如果没有自动打开设置页面,也可以通过手机的浏览器,在地址栏输入 192.168.4.1 打开。打开后页面如下图所示

点击“网络设置”进入设置页面,如下图所示

页面上方会列出当前范围内可连接的WIFI,如果没有出现你需要连接的WIFI,可将人体传感器靠近家中的路由器后点击“刷新WIFI列表”即可

然后点选要连接的WIFI名称,该名称会自动填写到WIFI SSID处,输入该WIFI的密码

在下方的MQTT设置中,输入你的MQTT服务端地址,端口。如果你和我一样是支持匿名登陆的,用户名密码置空即可,否则,输入有效的用户名和密码。

最后,自定义设置你的主题,最好能标识该设备的位置,例如“study”或者“toilet”之类的。

设置完成后,点击保存按钮。系统会提示保存成功并重启。重启后系统会自动连接你设置的WIFI和MQTT服务。

如果因设置错误连接失败,或者你更改了网络环境需要重新配置,设备会闪灯提示网络连接异常。此时可长按(5秒)重置按钮,系统会清除原有设置,重新生成WIFI热点,再次连接后按上述方法重设即可。

第二步:如何配置HomeAssistant(可选)

在HomeAssistant配置文件中按如下配置即可

binary_sensor:
  - platform: mqtt
    name: "human_sensor_study"
    state_topic: "study"
    payload_on: "1"
    payload_off: "0"
  • name : 自定义一个名称
  • state_topic :这个要填写你在第一步中配置的“主题”

保存配置后重启服务,即可看到该二元传感器及状态

第三步:如何配置Node-Red(可选)

拖入一个mqtt输入节点,双击后可添加新的mqtt-broker节点

在编辑页面输入节点的名称,服务端地址,端口,如果不支持匿名登陆,则在安全选项卡中填入用户名密码

保存后选择刚刚添加的mqtt服务,填入主题,这个主题就是你在第一步配置的“主题”,例如“study”

保存后,即可看到连接状态,如果需要展示接收到的信息,添加一个debug输出即可。

第四步:Node-Red中常用的联动设置(可选)

这里我以最常用的控制灯光为例写了一个流,供参考

思路为:当收到传感器信息后,判断是有人还是无人,如果有人,开灯,同时将一个变量设置为有人;当收到传感器信息为无人时,先将变量改为无人,然后等待48秒(人离开时候,传感器确认无人约需1分12秒。设置为48秒的意思就是人离开2分钟后自动关灯),48秒后如果变量还是无人,那么就关灯。如果在等待过程中有人进入,那就触发了上一个流程,变量变为了有人,自然就不会关灯了。

  • 至此,我整个DIY人体存在传感器的过程就结束了,该小设备我放在书桌前已经稳定运行了3个月,从此再也不会出现静止看书的时候关灯的情况了
  • 如果你也有兴趣DIY一个,可参考我的文章,如果你不想自己花时间或设备不足,也可以直接使用我制作的成品,地址是:淘宝链接 感谢你的支持!

如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!

打造可识别静态人体的人体传感器——软件部分

By: 小皮子
18 October 2021 at 14:36

以下方法经本人验证通过,环境如下:

Arduino IDE 1.8.15

PubSubClient 2.8.0

WiFiManager 2.0.4


前言:大部分人入门智能家居之处,最早接触的就是人体传感器,实现简单的如人来开灯,人走关灯的需求。我也不例外,家里各个房间布满了小米或绿米的人体传感器。

但市面上这类传感器因工作原理的原因,实际根本无法识别静态的人体。所以这类传感器只能叫人体移动传感器,算不上是真正意义上的人体存在传感器,导致在很多场景下具有天然的缺陷。

举例说明:人坐在书房看书,保持一段时间禁止后,就会被识别为无人状态,然后灯就关了!同理厕所蹲的时候也会有这种尴尬,人工智能变智障。

网上各种解决方案也有,但都治标不治本,不是我想要的完美方案。因此,我决定自己创造一个!

第一步:选择所需软件库

在之前的文章打造可识别静态人体的人体传感器——方案设计中,我列举了对软件方面的需求。同时,在上一篇文章 打造可识别静态人体的人体传感器——硬件部分 中,我结合需求,MCU选择了ESP-01S。结合自己想要达到的目标,选择了Arduino的以下库,在此对原作者表示感谢:

第二步:编码

这里我使用的是原生的 Arduino IDE 进行编码,参考WiFiManager的示例程序,完成了WiFi的配置、MQTT服务器参数以及主题的配置并将配置保存在ESP闪存中,确保断电有效。同时支持长按微动开关可清除所有配置。

MQTT部分利用PubSubClient连接到本地的mosquitto (如何在本地搭建MQTT服务可参考这篇文章)进行消息发布

接着根据微波雷达模块的通讯协议,写了一个解析函数,在状态发生改变时候(有人变无人或无人变有人)通过MQTT发布消息到服务端。

部分编码

第三步:测试和优化环节

写好的代码进行反复多次测试,对发现的问题进行修复,确保稳定

第四步:汉化和个性化调整

初始的配置界面为英文界面,因此在系统调试完毕后,做手对界面进行了汉化,以及增加了部分个性化调整,例如将WiFi的名称调整为以FEEUS为前缀等

最后完成的界面如下:

配置页面

  • 接下来,写一篇使用说明以及实际效果演示,感谢关注!

如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!

打造可识别静态人体的人体传感器——硬件部分

By: 小皮子
16 October 2021 at 17:07

前言:大部分人入门智能家居之处,最早接触的就是人体传感器,实现简单的如人来开灯,人走关灯的需求。我也不例外,家里各个房间布满了小米或绿米的人体传感器。

但市面上这类传感器因工作原理的原因,实际根本无法识别静态的人体。所以这类传感器只能叫人体移动传感器,算不上是真正意义上的人体存在传感器,导致在很多场景下具有天然的缺陷。

举例说明:人坐在书房看书,保持一段时间禁止后,就会被识别为无人状态,然后灯就关了!同理厕所蹲的时候也会有这种尴尬,人工智能变智障。

网上各种解决方案也有,但都治标不治本,不是我想要的完美方案。因此,我决定自己创造一个!

第一步: 硬件准备

在上一篇文章打造可识别静态人体的人体传感器——方案设计中,对所需硬件进行了分析,最终结合软件需求,选择了如下硬件模块:

  • 主传感器使用一块存在感应的微波雷达模块
  • MCU选择了满足需求下尺寸较小的ESP-01S
  • 供电模块使用 MICRO USB母座 转DIP2.54mm直插模块
  • 重置按钮选用一个6*6*5mm的微动开关

先来个合影:

从左到右:微波雷达模块,ESP,微动开关,MICRO USB模块

第二步:可行性测试验证

这一步主要是对微波雷达模块进行测试,依据厂家提供的产品规格说明书,我使用CP2012USB转串口模块连接电脑后进行了调试,确保该模块可达到对动态及静态人体的识别和通讯。由于不同的模块规格和协议不同,此处就不单独展开说明了。

此外,对ESP-01S、供电方案也进行了测试,确保该方案可行。

第三步:外壳设计建模

外壳上,按方案使用3D建模软件做成了小方盒的样式,对所有硬件进行简单建模后,进行摆放设置,由于自己使用的是一台入门的FDM 3D打印机,精度一般般,前前后后做了十几个版本,最终形成了一个基本达到要求的模型。

人体存在传感器外壳设计
人体存在传感器外壳设计
人体存在传感器外壳打印

第五部:愉快的手工环节

由于所有模块都是单独购买来DIY,所以免不了手工环节。作为一个老小孩,这个环节是我最喜欢的,万用表、焊台、热熔胶枪齐上阵

焊接模块

最终成品效果如下,虽然3D打印的效果无法达到完美,和工业生产确实有一定差距,但总体来说还是令我满意的:

完成效果
  • 下一篇就是磨人的编码和调试环节,感谢持续关注!

如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!

打造可识别静态人体的人体传感器——方案设计

By: 小皮子
13 October 2021 at 19:05

前言:大部分人入门智能家居之处,最早接触的就是人体传感器,实现简单的如人来开灯,人走关灯的需求。我也不例外,家里各个房间布满了小米或绿米的人体传感器。

但市面上这类传感器因工作原理的原因,实际根本无法识别静态的人体。所以这类传感器只能叫人体移动传感器,算不上是真正意义上的人体存在传感器,导致在很多场景下具有天然的缺陷。

举例说明:人坐在书房看书,保持一段时间禁止后,就会被识别为无人状态,然后灯就关了!同理厕所蹲的时候也会有这种尴尬,人工智能变智障。

网上各种解决方案也有,但都治标不治本,不是我想要的完美方案。因此,我决定自己创造一个!

一: 人体存在感应技术选型

要做这个存在传感器,最最核心的,自然就是如何判断人体存在(含静止状态),经过研究后,决定选择毫米波雷达传感技术的芯片

二:通讯协议的选择

获取到人体存在的信息后,如何通知家庭的智能中枢,以实现和其他设备的联动呢,蓝牙?还是Zigbee?显然都不如物联网通用的MQTT协议更优,配合WIFI,无论是Homeassistant、Node-red还是其他软件,都可轻松实现接入。

三:供电方案

考虑到芯片耗电量,采用电池供电会导致待机不足。加上传感器一般都是固定位置,没有太强的移动需求,因此最后决定使用电子设备通用的直流5V供电,接口采用比较常见的MICRO USB。这样随便一个常规的充电头加一根充电线即可给设备供电。

四:外壳设计

外壳初步考虑采用方形设计,以便于随处摆放。使用3D建模软件结合硬件设计后,使用3D打印机打印。

五:软件需求

软件方面需求就比较多了,简单梳理下来有如下几点

  • 应该支持支持AP模式,这样初始化的时候,可以通过手机直连设备的wifi,进行配置
  • 可配置的内容应该保存WIFI网络(ssid,密码),MQTT参数(包括服务地址,端口,用户,密码,以及用于发布是否有人状态的主题)应该支持MQTT的匿名登陆
  • 配置完毕后应该可存储在设备内,重启和断电后无须再次配置
  • 配置完毕后,会自动根据配置连接WIFI和MQTT服务
  • 设备启动后,会不断循环的监控人体存在的情况,状态变化时,通过MQTT服务发布消息
  • 如果网络环境发生了变化,应该可以重置之前的配置,并重新启动AP模式供更新配置
  • 如果当前网络无法连接或MQTT服务连接不上,可通过指示灯闪烁的方式进行提醒

整体方案如下:

Feeus人体存在传感器设计思维导图
  • 接下来结合方案选择硬件,进行初步的可行性测试后设计外壳

如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!

Node-Red使用MQTT协议接收及发送消息到ESP32单片机

By: 小皮子
24 August 2021 at 20:23

以下方法经本人验证通过,环境如下:

Node-RED V0.20.5

ESP32-CAM + HC-SR04 + Arduino IDE

mosquitto version 2.0.11

MatrixDB


前言:Node-RED 是构建物联网(IOT, Internet of Things)应用程序的一个强大工具,而MQTT则是当下使用广泛的物联网通信协议之一,为此我使用一块ESP-32单片机作为客户端,连接HC-SR04超声波测距模块做了两个简单的实验。

  • 实验一:获取物体距离数据,使用MQTT协议发送消息,并在Node-Red端进行接收,将数据保存在MatrixDB数据库中
  • 实验二:Node-Red使用MQTT协议发送消息,ESP32收到消息后对LED灯进行控制

实验中我使用了同一块ESP-32,实际应用中他们既可以是相同的物联网设备,当然也可以是不同的。实验目的是抛砖引玉,实际物联网中各类复杂场景都可以此为基础进行实现。

本实验的环境我在开篇已经列出,对于环境的准备,你可根据自己的情况参考下列文章做出调整:

第一步: 连接HC-SR04超声波测距模块

HC-SR04 有4个针脚,分别是Vcc, Trig, Echo, Gnd。Vcc接5V供电,Trig 和 Echo接IO口,Gnd自然就是接地。我将Trig连接到IO12,Echo连接到IO13,连接示意图如下:

第二步: 编写实验所需的程序,并烧录到ESP32

HC-SR04 的测距原理是向 Trig 口发一个10US 以上的高电平, 模块会发送8 个40khz 的方波并自动检测是否有信号返回,如有就通过 Echo 口输出一高电平,高电平持续的时间就是超声波从发射到返回的时间。

因此我们只需要将连接Trig口的 IO12 设置为OUTPUT,发一个持续时间为10US 的高电平,然后获取连接着Echo 口的 IO13 (设置为INPUT)高电平的持续时间,将取得的持续时间 *声速(340M/S)/2 就得到了距离。

实验中的LED为板载,使用的是IO4,将其设置为OUTPUT,通过高低电平即可控制开启和关闭

MQTT我使用的是PubSubClient库,如果你没安装,可通过库管理器进行安装加载

部分程序代码图如下:

引用的库和部分配置
连接wifi和群晖上的mosquittoMQTT服务
使用HC-SR04计算距离

代码编译通过后烧录到ESP32,上传烧录的方法在 win10利用arduino + esp32-cam搭建网络摄像头 文章中有写,不再啰嗦。

第三步: Node-Red 编写实验流程

实验一:拖入mqtt输入节点,双击,添加mqtt broke服务端

添加后选择该服务端,订阅主题。我在单片机上设置的发送的主题是Distance,因此这里也要输入主题为Distance

接着我们使用节点管理器安装node-red-contrib-postgresql,安装后将postgresql节点拖入

配置MatrixDB数据库

接着在Server中选择配置好的数据库,在Query中编写插入语句(我事前已经在数据库中添加了测试表MQTT_Test,包含payload,msg_time两个字段)

最后将两个节点连接起来,部署即可

实验二:这个比较简单,拖入两个inject节点,一个控制开启LED,一个控制关闭LED。开启的节点设置如下,内容为“ON”,这个是ESP32程序中我设置的命令,当接收到主题为LED的消息,且内容为ON时,开启LED。同理关闭设置内容为“OFF”

接着再拖入一个mqtt输出节点,将它与两个inject连接起来,该节点只需要配置好服务端和主题即可。配置如下:

至此流程编写完毕

导出的流程如下:

[{"id":"81d18949.9b6738","type":"mqtt in","z":"b8dd355c.40cd78","name":"","topic":"Distance","qos":"2","datatype":"auto","broker":"fcb81ef4.a2021","x":520,"y":320,"wires":[["14feeb2c.6dfff5"]]},{"id":"23f6b97e.a38776","type":"comment","z":"b8dd355c.40cd78","name":"实验一:接收MQTT消息,将数据写入数据库","info":"","x":630,"y":260,"wires":[]},{"id":"af6c9b1b.dab788","type":"mqtt out","z":"b8dd355c.40cd78","name":"","topic":"LED","qos":"","retain":"","broker":"fcb81ef4.a2021","x":760,"y":540,"wires":[],"inputLabels":["ON"]},{"id":"4718d956.78af68","type":"inject","z":"b8dd355c.40cd78","name":"开灯","topic":"Test 2.1","payload":"ON","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":530,"y":500,"wires":[["af6c9b1b.dab788"]]},{"id":"2fc63b12.cba2d4","type":"inject","z":"b8dd355c.40cd78","name":"关灯","topic":"Test 2.2","payload":"OFF","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":530,"y":580,"wires":[["af6c9b1b.dab788"]]},{"id":"c3cfd91.f709f28","type":"comment","z":"b8dd355c.40cd78","name":"实验二:发送MQTT消息,控制板载LED","info":"","x":610,"y":440,"wires":[]},{"id":"14feeb2c.6dfff5","type":"postgresql","z":"b8dd355c.40cd78","name":"保存收到消息","query":"INSERT INTO \"MQTT_Test\" (payload,msg_time) VALUES ( '{{{msg.payload}}}' ,now());","postgreSQLConfig":"8e100f3e.01c4b","split":false,"rowsPerMsg":"1","outputs":1,"x":789.1667709350586,"y":317.66671657562256,"wires":[[]]},{"id":"fcb81ef4.a2021","type":"mqtt-broker","z":"","name":"feeus","broker":"10.0.0.2","port":"18831","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"8e100f3e.01c4b","type":"postgreSQLConfig","z":"","name":"MatrixDB","host":"10.0.0.214","hostFieldType":"str","port":"5432","portFieldType":"num","database":"feeus","databaseFieldType":"str","ssl":"false","sslFieldType":"bool","max":"10","maxFieldType":"num","min":"1","minFieldType":"num","idle":"1000","idleFieldType":"num","connectionTimeout":"10000","connectionTimeoutFieldType":"num","user":"mxadmin","userFieldType":"str","password":"feeus.com","passwordFieldType":"str"}]

第四步:验证实验结果


如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!

群晖使用Docker安装MQTT服务端 mosquitto

By: 小皮子
20 August 2021 at 22:38

以下方法经本人验证通过,环境如下:

群晖 DS918+ DSM 6.2.4

mosquitto version 2.0.11

MQTTBox Version 0.2.3


前言:MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅(publish/subscribe)模式的”轻量级”通讯协议。客户端的发布者不直接将消息传递给订阅者,而是服务端(MQTT Broker)进行分发,一个客户端既可以是发布者,也可以是订阅者,更多介绍请参看维基百科上的词条 。以智能家居的情形简单举例,人体感应器(发布者)感应到有人时发布主题为”有人“的消息到服务端,而由于摄像头订阅了该主题,因此收到消息,开始录像,此时摄像头角色为(接收者),同时摄像头也作为(发布者)发布”监控异动“消息到服务器,而我们手机订阅了此主题,作为(接收者)便可收到消息。

目前有很多机构提供MQTT Broker服务,有免费的也有收费的。作为个人用户用于智能家居服务,我决定用已有NAS服务器自己搭建一个。参考了网上的一些文章,但大都写得有些复杂,对一般小白不是很友好,因此我尝试自创了一个极简的方法来实现,并记录下来供由需要的朋友学习。

第一步:管理员账号登陆群晖,在Docker中选择 “注册表”,搜索 “eclipse-mosquitto”,搜索结果中选择第一个,点击下载,选择标签latest。此时系统开始下载,可在“映像”中查看下载进度

第二步:下载完毕后,在“映像”里选择已下载的 eclipse-mosquitto 映像 ,点击启动按钮打开创建容器窗口。点击高级设置按钮,打开高级设置页面。

在高级设置中,勾选“启动自动重新启动”

在卷中,点击添加文件夹,在docker目录下新建文件夹 “mosquitto”并选择该文件夹,装载路径填写”/mosquitto/config”

在网络中,勾选“使用与 Docker Host 相同的网络”

确认应用后点击下一步,取消”向导完成后运行此容器“,然后应用

第三步:新建一个mosquitto.conf文件,并将该文件上传到 docker目录的 “mosquitto” 文件夹内。文件内容如下:

persistence true
listener 18831
allow_anonymous true
  • listener 为端口号,默认是1883,我机器上该端口被占用了,所以自己改了一个
  • allow_anonymous true 表示支持匿名用户,此次为了教程简单因此开启匿名用户

文件上传后,再docker容器中启动第二步添加的 eclipse-mosquitto 容器

第四步:测试mosquitto服务

mqtt测试工具很多,我选择的是MQTTBox ,用chrome打开下列地址,添加应用后打开

https://chrome.google.com/webstore/detail/mqttbox/kaajoficamnjijhkeomgfljpicifbkaf?hl=zh-CN

点击”Create MQTT Client”,取一个名字,Protocol 选mqtt/tcp ,Host 填写你的主机地址和 mosquitto 服务端口 ,保存后可看到显示为Connected 表示已经正确连接上我们新建的mosquitto服务端

接着,添加一个订阅,主题随便写一个,我这里填FEEUS.COM,点击”Subscribe“完成订阅

在发布端发布一个订阅端一样的主题,这里也是 FEEUS.COM ,然后输入发布的消息,点击”Publish“后完成发布,该主题的订阅者即可收到该条消息


如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!

CentOS 7 安装纵横数据库(MatrixDB)

By: 小皮子
20 August 2021 at 22:01

以下方法经本人验证通过,环境如下:


VMware® Workstation 16 Player 虚拟机安装的 CentOS-7-x86_64-Minimal-2009

matrixdb-4.1.0.community-1.el7.x86_64.rpm

WinSCP 5.17.10

Navicat Premium 15.0.21


前言:在某个机缘巧合的情况下,了解到北京四维纵横数据技术有限公司和MatrixDB数据库,和公司CEO姚延栋先生沟通后得知MatrixDB是专为物联网、车联网、工业互联网和智慧城市打造的一站式数据平台,因此借机试用一番。

以下步骤基于官方教程,此处仅为自己安装验证后的简要记录,便于后期查阅

第一步:获得最新的MatrixDB安装文件

在官方地址: https://ymatrix.cn/download 输入相关信息登记后 邮箱中便会收到下载连接 ,下载后得到安装文件,例如我选择的是社区版,得到的文件是matrixdb-4.1.0.community-1.el7.x86_64.rpm

使用 WinSCP 等工具将安装文件上传到 CentOS 的/root目录下

第二步:安装依赖环境

使用root用户ssh到CentOS,逐一执行以下命令

yum install centos-release-scl
yum install rh-python36
scl enable rh-python36 bash
yum install -y epel-release || yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1).noarch.rpm
yum install -y https://apache.jfrog.io/artifactory/arrow/centos/$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)/apache-arrow-release-latest.rpm
yum install -y arrow-libs-3.0.0 parquet-libs-3.0.0
systemctl stop firewalld.service
systemctl disable firewalld.service
sed s/^SELINUX=.*$/SELINUX=disabled/ -i /etc/selinux/config
setenforce 0
hostnamectl set-hostname mdw
192.168.100.10 mdw

接着输入命令 vi /etc/hosts 编辑/etc/hosts文件,添加下面的一行,将主机名映射,ip 地址为你 CentOS 的内网地址

第三步:安装数据库

输入以下命令安装数据库,install后是第一步MatrixDB安装文件的文件名,请根据自己情况修改

yum install matrixdb-4.1.0.community-1.el7.x86_64.rpm 

安装MatrixDB所依赖的python包

source /usr/local/matrixdb/greenplum_path.sh
yum install gcc python3-devel
pip3 install --upgrade setuptools
pip3 install argparse psutil pygresql pyyaml

安装成功后输入以下命令查看数据库超级用户密码

vi /etc/matrixdb/auth.conf

接着在浏览器中输入 http://<CentOS 的IP>:8240/ 打开图形化安装向导,输入刚刚获得的 数据库超级用户密码 后登录

这里我选择单节点数据库

在设置密码步骤,可以修改设置超级用户mxadmin的密码

继续下一步后直至完成数据库安装

第四步:客户端管理

数据库默认只允许本地连接访问。如需开启远程连接访问需要在 /data/master/mxseg-1/pg_hba.conf文件中添加以下一行配置(0.0.0.0/0表示允许来自任何IP的用户远程访问数据库,请根据自己需求修改配置)

host    all      all      0.0.0.0/0    md5

保存后,依次执行下述命令让上面的配置生效

sudo su - mxadmin
gpstop -u

客户端我使用的是 Navicat Premium ,新增一个链接,类型选择PostgreSQL,填写正确的ip、用户和密码后,测试链接成功即可


如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!

WIN10 利用Arduino+esp32-cam搭建网络摄像头

By: 小皮子
17 August 2021 at 21:39

以下方法经本人验证通过,环境如下:

Win 10 专业版

Arduino IDE 1.8.15

ESP32-CAM + CP2102


第一步:官网下载并安装Arduino IDE,地址:https://www.arduino.cc/en/software

第二步:打开Arduino,在”文件“菜单打开”首选项“,在附加开发板管理器中添加网址:https://dl.espressif.com/dl/package_esp32_index.json

然后选择”工具“-”开发板“-”开发板管理器“,输入esp32后选择最新版本安装(此处建议科学上网,否则可能安装不成功)

安装后即可在开发板中选择esp32-cam

第三步:使用CP2102 连接 ESP32-CAM 和电脑

https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers 下载CP2102驱动后安装

将 CP2102 和 ESP32-CAM 按下图连接起来后接入电脑,注意图中的灰色线,烧录程序时需要将IO0和GND短接

How to Program / Upload Code to ESP32-CAM AI-Thinker (Arduino IDE) | Random  Nerd Tutorials

第四步:新建CameraWebServer项目

打开Arduino,选择 CameraWebServer ,新建一个示例项目

修改项目里面的内容,保留所需的ESP32-CAM模块定义,把其余的注释掉。然后修改SSID和Password为自己的wifi名和密码

第四步:烧录程序到 ESP32-CAM

在“工具”菜单中选择 ESP32-CAM 使用的端口,我这里是COM4

在“项目”菜单中选择“上传”,等待提示上传成功即可

第五步:使用

烧录成功后,去掉IO0和GND的短接,按RST按钮重启

在路由器中会发现一个 名为 esp32-arduino 的设备已接入

在浏览器中输入ip即可打开设置页面,点击Start Stream即可查看视频流,上面有各种设置,比较简单,不再啰嗦

  • 使用时,只需要给ESP32-CAM 提供5V2A的供电即可自动启动项目,实现在内网中实时查看摄像头
  • 等我有空了考虑设计个外壳,用3D打印机打印出来美化一下?

如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!

❌
❌