乐趣区

关于go:使用EMQX与Shifu实现设备联动

EMQX 是一个在世界范畴内十分受欢迎的 MQTT Broker。它领有基于 Kubernetes 的云原生架构,使得本身能力极为适宜当今越来越简单的物联网场景,让设施音讯的传输更为高效。因而,Shifu 作为 Kubernetes 原生的 Shifu 框架,能够与 EMQX 完满联合,为 EMQX 提供智能的多协定设施联动的能力。

上面就让咱们看一下 EMQX 是如何与 Shifu 一起让设施间接更不便地联动吧。

简介

本文将介绍如何在集群内部署 EMQX 和 Shifu,接入一个以 MQTT 为通信形式的温度计和一个以 RTSP 为传输协定的海康威视摄像头,并退出一个利用与 Shifu 进行交互,使得每次温度计检测到超过 37 度的体温就会让摄像头拍下一张以后照片。

本文应用的简略架构如下

筹备

本文应用了如下服务和工具:

  1. Kubernetes: 1.20.10
  2. kubectl, kubeadm, kubelet: 1.20.10
  3. golang: 1.16.10
  4. docker: 19.03.9
  5. EMQX: 4.1-rc1

步骤

第一步:部署 Kubernetes

本步能够参考 Kubernetes 的官网教程进行部署:
https://kubernetes.io/docs/se…

在部署实现后咱们该当看到终端打印出如下信息:

第二步:部署 Shifu

注:Shifu 尚未开源,请分割 Shifu 团队获取 repo 权限

将 Shifu 的 GitHub repo 克隆到本地

git clone https://github.com/Edgenesis/shifu.git

而后能够通过下列命令部署 Shifu:

kubectl apply -f shifu/k8s/crd/install/shifu_install.yml

部署实现后咱们该当看到 Shifu 的 CRD controller 曾经实现部署:

第三步:部署 EMQX

首先须要装置 EMQX Operator Controller:

$ curl -f -L "https://github.com/emqx/emqx-operator/releases/download/1.1.6/emqx-operator-controller.yaml" | kubectl apply -f -

接着咱们写一个最简略的 deployment.yaml:

而后就能够部署一个 EMQX 了:

kubectl apply –f deployment.yaml

第四步:接入设施

对于温度计,咱们只须要调整它的 MQTT 设置,让其能够向 EMQX 公布 MQTT 信息即可。

(如果是集群外的温度计,咱们能够通过 Kubernetes Service 来凋谢 External IP 供拜访)

对于摄像头,Shifu 的 repo 曾经包含一个应用 RTSP 的海康威视摄像头的配置文件,咱们能够轻松更改配置文件中的 IP、用户名、明码,将它接入 Shifu:

https://github.com/Edgenesis/shifu/tree/main/examples/rtspDeviceShifu/


至此,咱们的设施曾经连贯结束,上面就能够开始联动了。

最初一步:联动利用

咱们简略写一个 python 利用,用来实现上面的逻辑:

该利用向 EMQX 订阅 temperature-shifu-mqtt 的音讯,每次音讯都只包含一个示意以后温度的数字;如果以后温度大于 37 度,则操作摄像头拍摄一张照片并保留在本地。

以下是利用代码:

加个 capture function 封装所有摄像头的动作。接着咱们就能够将其部署到集群中,开始监督了:

python3 app.py 10.244.0.33

总结

本文形容了如何让 EMQX 为 Shifu 赋予更高效的 MQTT Broker 能力,同时让 Shifu 与 MQTT 单干为设施提供联动能力。在事实的利用场景之中,咱们能够应用一个仅需一百余元的的红外温度计 + 摄像头组合,来代替数千元且体现并不稳固的测温摄像头,在大规模部署的状况下节俭巨额老本。

十分感谢您看到了这里,咱们期待您的反馈,如果感觉文章写得不错或者有任何倡议请毫不犹豫地留言。

本文由博客群发一文多发等经营工具平台 OpenWrite 公布

退出移动版