本文对官方示例 temperature 进行实验。

功能说明

本示例主要是演示在云端获取边缘端的设备状态。

编译

本文对官方示例进行了修改。此处给出修改描述,详情参考修改后的源码。
1、参考 led 示例,新加 Makefile,修改 Dockerfile。
2、修改源码,去掉与硬件操作相关的函数,将采集的温度值 temperature 累加以观察其变化。
3、制作镜像,提交镜像。
3、修改 crds 和 deployment.yaml 文件,指定调度节点名称。

实验

部署:

kubectl apply -f crds/
kubectl apply -f  deployment.yaml

查看pod:

# kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
temperature-mapper-77fb74f5-vzztl   1/1     Running   0          5m10s

在边缘商查看日志:

# docker logs ecc3ba6a29dc
2020-03-22T09:11:51.777 [    main] INFO  Sensor = DHT11: Temperature = 74*C, Humidity = 85% (retried 1 times)
2020-03-22T09:11:56.778 [    main] INFO  Sensor = DHT11: Temperature = 75*C, Humidity = 85% (retried 1 times)
2020-03-22T09:12:01.778 [    main] INFO  Sensor = DHT11: Temperature = 76*C, Humidity = 85% (retried 1 times)

在云端观察:

kubectl get device temperature1 -oyaml -w输出示例:
apiVersion: devices.kubeedge.io/v1alpha1
kind: Device
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"devices.kubeedge.io/v1alpha1","kind":"Device","metadata":{"annotations":{},"labels":{"description":"temperature","manufacturer":"test"},"name":"temperature1","namespace":"default"},"spec":{"deviceModelRef":{"name":"temperature-model"},"nodeSelector":{"nodeSelectorTerms":[{"matchExpressions":[{"key":"","operator":"In","values":["latelee1"]}]}]}},"status":{"twins":[{"desired":{"metadata":{"type":"string"},"value":""},"propertyName":"temperature-status"}]}}creationTimestamp: "2020-03-22T09:04:18Z"generation: 77labels:description: temperaturemanufacturer: testname: temperature1namespace: defaultresourceVersion: "29280"selfLink: /apis/devices.kubeedge.io/v1alpha1/namespaces/default/devices/temperature1uid: e9869339-6d9b-4bf3-bf9f-c6191efeedc7
spec:deviceModelRef:name: temperature-modelnodeSelector:nodeSelectorTerms:- matchExpressions:- key: ""operator: Invalues:- latelee1
status:twins:- desired:metadata:type: stringvalue: ""propertyName: temperature-statusreported:metadata:timestamp: "1584868316781"type: stringvalue: 75C   // !!!! 此值会变化

源码研究

流程:
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"}}}

查看device.yaml:

status:twins:- propertyName: temperature-statusdesired:metadata:type: stringvalue: ''

目前看,部分对应起来,深层理论待研究。

KubeEdge temperature 部署相关推荐

  1. KubeEdge led部署

    本文对 KubeEdge 的 led 灯示例进行测试. KubeEdge 官方示例文件仓库为 https://github.com/kubeedge/examples ,将其下载到$GOPATH/sr ...

  2. K8S 1.18.0 以及KubeEdge 1.10.3 三机安装部署(含过程记录及遇到的报错和解决方法)

    因为网络上大多数教程只有部署相关的命令,而无输入命令后正确界面的显示样例,因此在参考网络上教程并跟随实现的过程中,我将过程进行截图记录,供大家参考.希望对大家有帮助~ 一. K8S部署 选用了三台虚拟 ...

  3. 云原生视频时代已开启,华为云准备好了

    视频服务未来是否会像IaaS一样,变成全行业的基础服务? 所有的视频类服务,是否可以通过一张网络来承载,让应用开发效率更高,成本更低,体验更好?  #视频盛宴舞台,帷幕已拉开 2020年初,全球范围的 ...

  4. 详析 Kubernetes 在边缘计算领域的发展

    作者 | 张杰 来源 | 分布式实验室 现在开源边缘计算正在经历其业界最具活力的发展阶段.如此多的开源平台,如此多的整合以及如此多的标准化举措!这显示了构建更好平台的强大动力,以便将云计算带到边缘以满 ...

  5. 面向隐私计算的联邦学习激励机制与效率优化研究

    大致是了解了申请项目的全过程,写一份好的申请书,选择合适的课题真的十分重要 科研项目进展 希望能拿到国家级项目 – 好消息是拿国家级了--坏消息是EI即以上一篇论文+专利,未来有学弟看到这篇文章,申请 ...

  6. Temperature demo 测试部署 by kubeedge

    Temperature demo 测试 本实例主要是部署了 基于树莓派的temperatrue 温度测量(由于树莓派不具备温度测量模块,故采用了自然累加的方式来产生温度变化) 一. 准备工作 1)准备 ...

  7. 从架构设计理念到集群部署,全面认识KubeEdge

    摘要:本篇文章将从KubeEdge架构设计理念.KubeEdge代码目录概览.KubeEdge集群部署三方面带大家认识KubeEdge. KubeEdge即Kube+Edge,顾名思义就是依托K8s的 ...

  8. KubeEdge 1.3.0 部署

    本文介绍了如何在两台 ubuntu 16.04 64 bit 双核 CPU 虚拟机上从源码开始部署 KubeEdge 1.3.0 集群的过程,云端 Kubernetes 版本为 1.17.3,Gola ...

  9. KubeEdge 1.2.0 部署

    本文介绍了如何在两台 ubuntu 16.04 64 bit 双核 CPU 虚拟机上从源码开始部署 KubeEdge 1.2.0 集群的过程,云端 Kubernetes 版本为 1.17.3,Gola ...

最新文章

  1. tensorflow 学习笔记-- tf.reduce_max、tf.sequence_mask
  2. Java编程的逻辑 (62) - 神奇的序列化
  3. int * * a[10] int * (*a)[10]和 int(*a[10])() 是什么意思
  4. python 字符串转换成整数
  5. 同学,你有一份来自支付宝AI学姐的面试锦囊待查收
  6. How to resolve Unable to load groups error message
  7. Python-多进程
  8. java异常日志不要只打一半,要输出全部错误信息
  9. MTK驱动(46)---- Android CPU频率设置(MTK平台)
  10. Facebook开发地面技术扩大互联网连接
  11. python read函数参数_最新Pandas.read_excel()全参数详解(案例实操,如何利用python导入excel)...
  12. pyqt一个text实时显示另一个text的内容_python:基于tkinter打造的股票实时监控声音报警器! 自动监控,声音警报...
  13. HDU5234 Happy birthday
  14. 创业公司专题数据(包含stata多种模型代码)
  15. matplotlib画三维图
  16. 智能驾驶+多元化长尾应用场景,什么样的公司最终胜出?
  17. Elastix 显示座席的状态
  18. 返回状态码304 Not Modified详解
  19. 极坐标t1t2几何意义_复数与几何(一) 基本几何性质及应用
  20. java计算机毕业设计基于springboo+vue的人事管理系统

热门文章

  1. list lt map gt java_利用Set 对Listlt;Maplt;String,Objectgt;gt; 中的map对象中某一个属性去重...
  2. python做的数据图表怎么在flask中显示_Python:如何在Flask应用程序的表中显示MySQL查询的数据...
  3. 微博月活跃用户数增至5.73亿 移动端用户占比达94%
  4. 美国五家科技巨头十年并购616家小型公司,引发并购审查
  5. 蓝色起源8月25日进行无人飞行,携带实验设备等上天
  6. 美团回应无法使用微信支付:耽误大家干饭了,对不起
  7. Soul回应赴美上市传闻:不是约会软件 没有确定的上市计划
  8. 电动汽车冬季悲歌:我不是在充电,就是在充电的路上
  9. 马斯克称自己可能染上中度新冠肺炎
  10. 最便宜的865旗舰来了!全球首款5G游戏手机发布