Meetup技术回顾
· 阅读需 10 分钟
在 2022.9.29 举办的线下 Shifu Meetup
活动中,来自边无际的杨希杰在现场展示用 Shifu 接入多个实际物联网设备,通过这种直观的接入方式展示了 Shifu 框架接入设备迅速、无单点故障、隔离性好、应用开发便捷等优点。
这次活动总共接入了五个设备,分别是 MQTT服务器、RS485的温湿度计 和 RS485的LED、西门子 S7 PLC、海康威视摄像头——这些都是比较常见的物联网设备。下面来让我们回忆一下接入过程吧。
创建集群并安装Shifu
首先我们需要在本地开启 Docker
。使用 Windows
或 macOS
的搜索打开 Docker Desktop
,最小化到后台即可。
之后我们需要用 kind
创建一个k8s集群。后续 Shifu 和物联网设备的数字孪生都会以 Pod
的形式存在于这个集群中:
# 创建集群
$ sudo kind create cluster --image="kindest/node:v1.24.0"
# 提前准备镜像导入集群
$ sudo docker pull bitnami/kube-rbac-proxy:0.13.1
$ sudo docker pull edgehub/shifu-controller:v0.1.1
$ sudo docker pull nginx:1.21
$ sudo kind load docker-image bitnami/kube-rbac-proxy:0.13.1 edgehub/shifu-controller:v0.1.1 nginx:1.21
Shifu 支持一键安装,只需要先克隆Shifu仓库,之后用一条命令部署即可:
# 安装shifu
$ git clone https://github.com/Edgenesis/shifu.git
$ cd shifu
$ sudo kubectl apply -f pkg/k8s/crd/install/shifu_install.yml
# 跑一个应用程序 之后会用到
$ sudo kubectl run --image=nginx:1.21 nginx
您也可以查看更详细的本地安装Shifu教程。
设备接入
MQTT
测试MQTT服务器
我们已经部署了一个MQTT服务器,可以先打开两个shell进行测试:
# shellA
$ mosquitto_sub -h 82.157.170.202 -t topic0
# shellB
$ mosquitto_pub -h 82.157.170.202 -t topic0 -m "哈哈哈"
可以看到发送的信息可以被正确接收。
接入设备
接下来我们可以先修改对应的配置,下载对应的镜像,然后用 kubectl apply
命令一键将MQTT服务器作为一个数字孪生接入 Shifu。
修改examples/my_mqtt/mqtt_deploy
中的spec.address
为82.157.170.202:1883
,spec.protocolSettings.MQTTSetting.MQTTTopic
为topic0
。
$ sudo docker pull edgehub/deviceshifu-http-mqtt:v0.1.1
$ sudo kind load docker-image edgehub/deviceshifu-http-mqtt:v0.1.1
$ sudo kubectl apply -f examples/my_mqtt/mqtt_deploy
读取数据
我们可以通过在集群中启动一个 nginx
应用来与数字孪生交互。
$ sudo kubectl exec -it nginx -- bash
$ curl http://deviceshifu-mqtt.deviceshifu.svc.cluster.local/mqtt_data