KubeEdge框架temperature测试demo部署

本文是基于华为官方提供测试用例kubeedge-temperature-demo进行测试。

功能说明

    本示例主要是测试设备通过kubeedge边缘侧向云端发送数据。

设备端代码main.go更改

1、去掉与设备硬件相关代码,将温度值设为周期性累加的方式,以便于在云端观察温度值的变化。

2、配置MQTT服务的地址,即kubeedge边缘节点的IP地址

试验

在云端查看边缘节点状态。本例使用的边缘节点是localhost节点。

配置设备的yaml文件:

cd   ~/kubeEdge/examples-master/kubeedge-temperature-demo/crds

vim device.yaml 

部署设备

$ kubectl delete -f devicemodel.yaml 
devicemodel.devices.kubeedge.io "temperature-model" deleted
$ kubectl create -f device.yaml 
device.devices.kubeedge.io/temperature created

更改deployment.yaml

部署deployment.yaml

$ kubectl create -f deployment.yaml 
deployment.apps/temperature-mapper created

在云端查看设备状态

$ kubectl get devicemodel
NAME                AGE
temperature-model   49m
$ kubectl get device
NAME          AGE
temperature   51m

在云端观察:

设备端main.go源码分析

流程:
1、连接 mqtt:connectToMqtt,需要边缘端开启 mqtt 服务,并监听 1883 端口,否则会连接失败。
2、采集温度:ReadDHTxxWithContextAndRetry(本实验中去掉了该函数)。
3、将温度值发布到mqtt:publishToMqtt。
4、之后进入 KubeEdge 系统,在云端可查看状态。

其它说明:
发布主题指定如下

deviceTwinUpdate := "$hw/events/device/" + "temperature" + "/twin/update"

temperature 为设备名称。需要与 Device 中的 metadata.name 保持一致。此名称也是 kubectl get device 查看到的名称。可修改使其不一致,观察效果。

发布消息前先创建消息体:createActualUpdateMessage,结构体为 DeviceTwinUpdate,具体如下:

map[string]*MsgTwin{"temperature-status": {Actual: &TwinValue{Value: &actualValue}, Metadata: &TypeMetadata{Type: "Updated"}}}

实际数据:24℃
{"event_id":"","timestamp":0,"twin":{"temperature-status":{"actual":{"value":"24C"},"metadata":{"type":"Updated"}}}}


查看device.yaml:

status:
  twins:
    - propertyName: temperature-status
      desired:
        metadata:
          type: string
        value: ''
 

 

 

补充:

 本次在测试时,遇到kubeedge边缘节点Mqtt拒绝连接问题

 connect error: Network Error : dial tcp 192.168.50.40:1883: connect: connection refused

原因:通过systemctl status mosquitto查看状态mosquitto没有启动

root@localhost:/kubeedge# systemctl status mosquitto
● mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 Broker
   Loaded: loaded (/lib/systemd/system/mosquitto.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:mosquitto.conf(5)
           man:mosquitto(8)

解决:systemctl start mosquitto

再次查看状态:

root@localhost:/kubeedge# systemctl status mosquitto
● mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 Broker
   Loaded: loaded (/lib/systemd/system/mosquitto.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-03-31 01:50:13 UTC; 3s ago
     Docs: man:mosquitto.conf(5)
           man:mosquitto(8)
 Main PID: 1386 (mosquitto)
    Tasks: 1
   Memory: 564.0K
      CPU: 26ms
   CGroup: /system.slice/mosquitto.service
           └─1386 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
 

Guess you like

Origin blog.csdn.net/ggggyj/article/details/105216716