使用EMQX与Shifu实现设备联动

贾效
• 阅读 914

EMQX是一个在世界范围内非常受欢迎的MQTT Broker。它拥有基于Kubernetes的云原生架构,使得自身能力极为适合当今越来越复杂的物联网场景,让设备消息的传输更为高效。因此,Shifu作为Kubernetes原生的Shifu框架,可以与EMQX完美结合,为EMQX提供智能的多协议设备联动的能力。

下面就让我们看一下EMQX是如何与Shifu一起让设备直接更方便地联动吧。

简介

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

本文使用的简单架构如下使用EMQX与Shifu实现设备联动

准备

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

  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...

在部署完成后我们应当看到终端打印出如下信息:使用EMQX与Shifu实现设备联动

第二步:部署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与Shifu实现设备联动

第三步:部署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与Shifu实现设备联动

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

kubectl apply –f deployment.yaml

使用EMQX与Shifu实现设备联动

第四步:接入设备

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

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

使用EMQX与Shifu实现设备联动

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

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

使用EMQX与Shifu实现设备联动
使用EMQX与Shifu实现设备联动

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

最后一步:联动应用

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

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

以下是应用代码:使用EMQX与Shifu实现设备联动

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

python3 app.py 10.244.0.33

总结

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

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

本文由博客群发一文多发等运营工具平台 OpenWrite 发布
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java mqtt服务器搭建
MQTT服务器搭建以及客户端代码编写服务器关于linux系统,可以在阿里云购买云服务器或者利用虚拟机安装CentOs系统。我用的就是阿里云的云服务器,比较方便安装Emqx服务器安装必要的依赖:$sudoyuminstallyyumutilsdevicem
物联网云平台盘点
物联网云平台是一个专门为物联网定制的云平台,物联网与普通的互联网是不同的:物联网终端设备比普通互联网手机端,电脑端多出几个数量级;普通互联网对http,https协议访问相对单一,而对https有些设备不能访问,需要轻量级的访问协议。物联网场景的多样,使得没有任何一个产品能解决所有问题。物联网平台也一样,今天来盘点一下国内一些物联网平台的主要特点。一站式托管
Wesley13 Wesley13
3年前
2019 年 CNCF 中国云原生调查报告
!头图.jpg(https://ucc.alicdn.com/pic/developerecology/6db0c465111b4d9a96eb1ffe85c00e7a.jpg)中国72%的受访者生产中使用Kubernetes在CNCF,为更好地了解开源和云原生技术的使用,我们定期调查社区。这是第三次中国云原生调查,以中文进行
Stella981 Stella981
3年前
Kubernetes源码探疑:Pod IP泄露排查及解决
作者:陈绥来源:UCloud(ID:ucloud\_tech)UK8S是UCloud推出的Kubernetes容器云产品,完全兼容原生API,为用户提供一站式云上Kubernetes服务。我们团队自研了CNI(Container Network Interface)网络插件,深度集成VPC,使UK8S容器应用拥有与云主机间等同的网络性能(目前
Stella981 Stella981
3年前
Dubbo 3.0 前瞻之对接 Kubernetes 原生服务
Kubernetes是当前全球最流行的容器服务平台,在Kubernetes集群中,Dubbo应用的部署方式往往需要借助第三方注册中心实现服务发现。Dubbo与Kubernetes的调度体系的结合,可以让原本需要管理两套平台的运维成本大大减低,而且Dubbo适配了Kubernetes原生服务也可以让框架本身更加融入云原生体系。基于D
Stella981 Stella981
3年前
OpenKruise:阿里巴巴双11全链路应用的云原生部署基座
OpenKruise是由阿里云于2019年6月开源的云原生应用自动化引擎,本质是基于Kubernetes标准扩展出来一个的应用负载项目,它可以配合原生Kubernetes使用,并为管理应用容器、sidecar、镜像分发等方面提供更加强大和高效的能力,从而在不同维度上通过自动化的方式解决Kubernetes之上应用的规模化运维和规模化建站
Stella981 Stella981
3年前
BudWk 国产Java微服务分布式框架在智慧燃气行业的应用
燃气公司现状及痛点燃气表品牌多、型号多、计费类型多,厂家附送系统各自独立且无法自动对账,导致账目误差时有出现,实际经营情况无法实时掌握。物联网智能表具原来越多,物联网设备本身的安全监测是当前的核心问题,且因设备厂家、型号多样化,设备的统一接入、监控就尤为重要。从市场拓展到客户服务无法全流程业务管控、联动和监
Stella981 Stella981
3年前
LiteOS间歇计算技术:IOT终端真正感受“电量自由”
摘要:LiteOS间歇计算为什么能使物联网终端实现长续航?物联网设备、场景复杂多样,小到智能穿戴的耳机,大到大型基建设备,更有我们陌生而又熟悉场景,例如深海探测、森林监控、野生动物跟踪等等能量采集场景。能量采集场景都在户外,甚至可以说是无人区域,当设备放置(部署)后,没办法及时回收和维护,比如放置在动物身上的设备,位置是不固定的,无法及时为终端设
玩转云端 | 提升边缘应用交付效率,天翼云Serverless边缘容器有妙招
随着5G、物联网时代的到来,智能终端设备数量急剧增加,云计算能力不断向边缘侧、设备侧下沉,与此同时,针对边缘计算应用的高效、敏捷交付需求也随之产生。Serverless作为一种构建和管理基于微服务架构的技术,可实现部署应用无需涉及基础设施建设,自动