Normal view

There are new articles available, click to refresh the page.
Before yesterday非亦是

自力更生编译小米AX3600路由器的Openwrt固件

By: 小皮子
30 May 2022 at 20:10

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

Win10 下安装Ubuntu 20.04.4 LTS

Boos4721 的固件


前言:家中主路由器为小米AX3600路由器,为实现一些个人需求,因此一直刷的是论坛上他人编译好的Openwrt固件,近期因有一些个人需求该固件并不支持,思来想去,决定自己编译。

第一步:安装ubuntu 20.04.4 LTS

首先使用管理员身份运行windows Power-Shell,执行以下命令后重启

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

然后在Microsoft Store 搜索 ubuntu 20.04.4 LTS 并安装,安装完成后点击打开,新建一个用户名及密码即可

第二步:设置代理

考虑到网络环境,建议将V2ray设置全局代理

然后将win10的V2rayN软件参数设置里面勾选“允许来自局域网的连接”

接着,在 ubuntu 20.04.4 LTS 中,输入命令 vim .bashrc,编辑配置文件,在文件中加入以下内容后保存

# proxy list
alias proxy='export http_proxy=socks5://127.0.0.1:10808; export https_proxy=socks5://127.0.0.1:10808'
alias unproxy='unset http_proxy; unset https_proxy'

10808是win10中v2ray的监听端口,可依据自己配置修改

最后命令行输入 proxy 即可开启代理

第三步:更新软件包列表和软件包

依次输入以下命令

sudo apt-get update
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync

第四步:获取源代码并配置

输入以下命令获取Boos4721的固件

git clone -b stable https://github.com/Boos4721/openwrt

进入目录

cd openwrt

更新源

./scripts/feeds update -a
./scripts/feeds install -a -f

进入定制界面进行个性化配置

make menuconfig

选择 IPQ8097x , AX3600

进入LuCI 的 Applications 自定义所需的插件

最后Save保存配置即可

第五步:编译

输入以下命令下载DLL库、编译,-j16表示16线程,我使用的16线程,供参考

make -j16 download V=s
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make -j16 V=s

编译完成后win10文件资源管理器中输入如下地址即可看到编译好的固件

 \\wsl$\Ubuntu-20.04\home\xxx(第一步创建的用户名)\openwrt\bin\targets\ipq807x\generic


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

明基W1070+更换灯泡

By: 小皮子
17 November 2021 at 21:40

前言:家中有一台2016年买的明基W1070+,前几天使用时突然发出啪的一声,顿时一片漆黑,初步分析是灯泡损坏,于是决定自行更换。

第一步:拆机确定问题

断电后用螺丝刀拧下右侧的这颗螺丝

然后轻轻撬开这块面板,撕掉保修标签后,整块取下

拧下固定投影灯组件的螺丝,然后将提手向上提起,即可取下灯泡组件

经查看,灯泡竟然炸裂了,确定故障就是灯泡了

第二步:网购投影灯泡

查看灯泡型号可知明基W1070+ 使用的灯泡是欧司朗的 P-VIP 240/0.8 E20.9n,网上搜索后,最后选择了一款商家自称为原装的灯泡,价格290

第三步:拆卸灯泡组件,更换新灯泡

收到购买的灯泡后,看了下外观,自我感觉是正品,于是开始拆卸灯泡组件

首先拆开外部保护片,这里有两颗螺丝

然后将连接提手的这块面板也取下来,有一颗螺丝

接着拆掉灯泡两边的固定卡片,左右两片各有两颗螺丝,拆除后即可将灯泡完全取下

取下后,将两个电源连接接头用力拔掉即可

扔掉坏灯泡前先来个合影

然后按上面的步骤反向操作将新灯泡换上即可,稍微注意的是灯泡有个凸起处的定位

第四步:还原灯泡组件,测试,重置时间

按第一步的步骤反向操作将更换灯泡后的组件装回投影仪中

接好线后开机启动,一切正常!

在菜单中查看原灯泡使用时间为3655小时,果然也是该到寿终正寝的时候了

最后,在设置中将该使用时间重置为0,至此,更换完毕,又可以再战5年!


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

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

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打印机打印出来美化一下?

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

❌
❌