使用EMQX与Shifu实现设备联动

点击蓝字 · 关注我们

使用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的官方教程进行部署:

在部署完成后我们应当看到终端打印出如下信息:

第二步:部署Shifu

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

将Shifu的GitHub repo克隆到本地

git clone

然后可以通过下列命令部署Shifu:

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

部署完成后我们应当看到Shifu的CRD controller已经完成部署:

第三步:部署EMQX

首先需要安装EMQX Operator Controller:

$ curl -f -L "" | kubectl apply -f -

 

接着我们写一个最简单的deployment.yaml: 

然后就可以部署一个EMQX了:

kubectl apply –f deployment.yaml

第四步:接入设备

对于温度计,我们只需要调整它的MQTT设置,让其可以向EMQX发布MQTT信息即可。

(如果是集群外的温度计,我们可以通过Kubernetes Service来开放External IP供访问)

对于摄像头,Shifu的repo已经包括一个使用RTSP的海康威视摄像头的配置文件,我们可以轻松更改配置文件中的IP、用户名、密码,将它接入Shifu:

至此,我们的设备已经连接完毕,下面就可以开始联动了。

最后一步:联动应用

我们简单写一个python应用,用来实现下面的逻辑:

该应用向EMQX订阅temperature-shifu-mqtt的消息,每次消息都只包括一个表示当前温度的数字;如果当前温度大于37度,则操作摄像头拍摄一张照片并保存在本地。

以下是应用代码:

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

python3 app.py 10.244.0.33

总结

本文描述了如何让EMQX为Shifu赋予更高效的MQTT Broker能力,同时让Shifu与MQTT合作为设备提供联动能力。在现实的应用场景之中,我们可以使用一个仅需一百余元的的红外温度计+摄像头组合,来代替数千元且表现并不稳定的测温摄像头,在大规模部署的情况下节省巨额成本。 

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

Shifu 

开 放 内 测

Framework

Shifu概览:

Shifu 是由边无际Edgenesis自主研发的物联网开源开发和管理平台,开发者通过Shifu可以轻松实现连接、监控和控制任何物联网设备。

Shifu正式上线Github平台,发布第一版技术文档,并开启内测。

热烈欢迎具有创新力的软件工程师和有志于探索物联网业务场景的开发者加入我们,共同构建物联网时代的开发者生态。

技术文档地址(点击跳转)

https://cn.docs.edgenesis.io/

GitHub地址(点击跳转)

关注

回复“内测”

加入Shifu首批开发者社群