Shifu会对每一个连接的设备创建一个deviceShifudeviceShifu是物理设备的数字孪生并负责控制,收集设备指标。

这个教程会创建一个简单的温度检测程序,通过和一个温度计的deviceShifu交互来演示如何使用应用来和deviceShifu交互。

前提

本示例需要安装Go, Docker, kind, kubectl 和 kubebuilder。

1. 运行 Shifu 并连接一个简单的温度计

shifu/examples/deviceshifu/demo_device路径中已经有一个演示温度计的deployment配置。该温度计会上报一个整数代表当前温度,它拥有一个read_value API来汇报这个数值。

shifu根目录下,运行下面两条命令来运行Shifu和演示温度计的deviceShifu

./test/scripts/deviceshifu-setup.sh apply # setup and start shifu services for this demo
kubectl apply -f examples/deviceshifu/demo_device/edgedevice-thermometer # connect mock thermometer to shifu

2. 温度检测程序

本应用会通过HTTP请求来和deviceShifu交互,每两秒检测read_value节点来获取温度计deviceShifu的读数。

应用示例如下:

high-temperature-detector.go

package mainimport ("log""io/ioutil""net/http""strconv""time"
)func main() {targetUrl := "http://edgedevice-thermometer/read_value"req, _ := http.NewRequest("GET", targetUrl, nil)for {res, _ := http.DefaultClient.Do(req)body, _ := ioutil.ReadAll(res.Body)temperature, _ := strconv.Atoi(string(body))if temperature > 20 {log.Println("High temperature:", temperature)} else if temperature > 15 {log.Println("Normal temperature:", temperature)} else {log.Println("Low temperature:", temperature)}res.Body.Close()time.Sleep(2 * time.Second)}
}

生成go.mod:

go mod init high-temperature-detector

3. 容器化应用

需要一个应用程序的Dockerfile

Dockerfile

# syntax=docker/dockerfile:1FROM golang:1.17-alpine
WORKDIR /app
COPY go.mod ./
RUN go mod download
COPY *.go ./
RUN go build -o /high-temperature-detector
EXPOSE 11111
CMD [ "/high-temperature-detector" ] 

之后,创建应用:

docker build --tag high-temperature-detector:v0.0.1 .

现在温度检测应用的镜像已经构建完成。

4. 加载应用镜像并启动应用 Pod

首先将应用镜像加载到kind中:

kind load docker-image high-temperature-detector:v0.0.1

之后运行容器Pod

kubectl run high-temperature-detector --image=high-temperature-detector:v0.0.1 -n deviceshifu

5. 检查应用输出

温度检测应用会每两秒钟通过温度计的deviceShifu获取当前数值。

一切准备就绪,通过log来查看程序输出:

kubectl logs -n default high-temperature-detector -f

输出示例:

kubectl logs -n default high-temperature-detector -f2021/10/18 10:35:35 High temperature: 24
2021/10/18 10:35:37 High temperature: 23
2021/10/18 10:35:39 Low temperature: 15
2021/10/18 10:35:41 Low temperature: 11
2021/10/18 10:35:43 Low temperature: 12
2021/10/18 10:35:45 High temperature: 28
2021/10/18 10:35:47 Low temperature: 15
2021/10/18 10:35:49 High temperature: 30
2021/10/18 10:35:51 High temperature: 30
2021/10/18 10:35:53 Low temperature: 15

本文由边无际授权发布

用户手册:与 deviceShifu 交互的应用相关推荐

  1. 用户手册:接入设备之接入Hikvision摄像头

    获取模板 在examples/rtspDeviceShifu中查看模板文件. 修改配置 在examples/rtspDeviceShifu/camera-deployment/deviceshifu- ...

  2. HI5 2.0 交互 SDK 用户手册—— HTC Vive 系列

    相关文档与SDK下载地址:Hi5 2.0 插件下载 - Powered By Noitom Internet Team 一. Unity VR 基础环境配置 请使用 Unity 2019.x/2020 ...

  3. xd怎么制作年月日选项_XD中文用户手册:如何用AdobeXD制作交互原型

    可以在 XD 中的画板上设计快速简单的设计.然后,将画板连接在一起以创建可与利益相关者共享和迭代的交互式原型. Adobe XD 已与 Photoshop 和 Illustrator 良好集成.您仍可 ...

  4. NSight Compute 用户手册(中)

    NSight Compute 用户手册(中) NVIDIA Nsight Compute支持密码和私钥身份验证方法.在此对话框中,选择身份验证方法并输入以下信息: 密码 IP/主机名:目标设备的IP地 ...

  5. OpenVMS用户手册目录翻译

    OpenVMS操作系统很少有中文文档,在网上费了很大劲找到了中文用户手册,但是还是想看一下整个手册的概览,在官网上找到了英文版本,翻译了目录: HP OpenVMS操作系统文档 OpenVMS用户手册 ...

  6. SQLMap用户手册【超详细】

    SQLMap用户手册[超详细] 文章来源:http://www.cnblogs.com/hongfei/p/3872156.html ps:直接copy http://192.168.136.131/ ...

  7. 禅道开源版用户手册_自动化建模 | H2O开源工具介绍

    来这里找志同道合的小伙伴! 引 言 相信大家在日常的建模工作中都会或多或少地思考一个问题:建模可不可以被自动化?今天将围绕这个问题向大家介绍一个开源的自动建模工具H2O.本文将会cover以下三个部分 ...

  8. ab st语言编程手册_木兰编程语言 0.0.14.7:功能覆盖初版用户手册;Gitee Go 流水线尝鲜...

    木兰编程语言 在 2020 年度 OSC 中国开源项目评选 中已获得 26 票,请投票支持! 年初对原始木兰可执行文件 ulang-0.2.2.exe 作了些功能上的摸索尝试,将基本功能写在初版用户手 ...

  9. 中小企业CRM评测-用户交互_易客

    用户交互<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 如何评 ...

最新文章

  1. OpenCV4.5.x DNN + YOLOv5 C++推理
  2. 理解extract_patches_2d
  3. 二线城市IT人员如何发展
  4. Python 办公自动化:让你的工作效率翻番
  5. java java编码_Java编码约定被认为是有害的
  6. [计算机网络] - DNS基础介绍
  7. Sentinel服务熔断只配置fallback_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0050
  8. LeetCode:Add Binary
  9. [Azure - VNet] 解决办法:Azure P2S VNet无法建立网络连接。“parameter is incorrect“ (Error 87 参数错误)
  10. 亲身经历从软通外包到华为OD,两者有什么区别?
  11. aip pytesseract识别图片中的文字
  12. 深入浅出Stream和parallelStream
  13. 花菁染料(cas773041-79-5|cas427882-78-8|cas14134-81-7)结构图及合成路线图
  14. 区块链技术3--BTC协议
  15. 1 1 2 3 5 8 java_【Java】一个斐波那契数列是由数字1、1、2、3、5、8、13、21、34等等组成的,其中每一个数字(从第三个数字起)都是前两个数字的和。...
  16. php获取公众号微信用户信息
  17. JS元素的提取,删除 ,添加,修改
  18. 最强神作!Crysis深度剖析与优化指南(1-8)
  19. Oracle回收站及flashback drop
  20. 【Android 开发】SufaceView自定义相机拍照

热门文章

  1. [工具使用]——时序图与UML类图
  2. React native urlEncoder
  3. linux 进程suricata,如何在 Linux 系统上安装 Suricata 入侵检测系统
  4. 内网安全管理软件(内网安全管理软件的功能)
  5. 那么30岁还一事无成到底晚不晚?
  6. 亚马逊MWS接口使用
  7. Android使用低功耗蓝牙BLE进行简单通信
  8. 【组合导航】GNSS与惯性及多传感器组合导航附matlab代码
  9. nnU-Net 如何安装--傻瓜式安装教程
  10. MATLAB嵌套循环