EdgeX foundry树莓派搭建与MQTT通讯
参考资料
使用容器方法管理和搭建EdgeX:https://docs.edgexfoundry.org/1.2/getting-started/quick-start/
什么是微服务,为什么要用微服务:https://www.zhihu.com/question/65502802
什么是MQTT,一个最简单的demo是什么:https://www.jianshu.com/p/14b34e537fd4
针对树莓派的EdgeX是如何的?这里使用的是树莓派4B,将之前的系统重新刷成64位arm,便于使用。(EdgeX对64位arm支持度较高)
树莓派Ubuntu mate20系统安装
1 选择合适的镜像烧录工具
https://www.raspberrypi.org/downloads/
2 下载镜像
https://ubuntu-mate.org/download/arm64/focal/
3 使用镜像烧录工具打开镜像,插入SD卡,开始烧录。(镜像下载比较慢,使用第二步的离线迅雷下载完以后直接烧录比较好)
4 给树莓派接上鼠标和键盘和重要的显示器,上电后根据屏幕引导进行安装即可。该系统对HDMI的输出电流可能不够,导致屏幕不亮。而从树莓派直接引电增强HDMI信号则仍然不够,需要外部引电(建议3A)。
5 排错的方法:插上网口看网口灯是都闪烁,闪烁则系统安装正确。树莓派3B的系统直接装到4B上是不行的,系统安装不正确。
Docker安装
按照其中提供的两个链接进行安装。https://docs.edgexfoundry.org/1.2/getting-started/quick-start/
其中第二个:docker-compose安装,如果不正确,则使用pip3进行安装(和python3有关)。
pip3可以通过apt-get 方式安装。
pip3 install docker-compose
安装完后通过以下命令查看
docker-compose --version
MQTT测试注意事项
如下链接中提供了MQTT的测试demo。其过程是通过重复向HiveMQ发布一个主题为EdgeXEvents,内容为一个json数据。
然后客户端也通过HiveMQ连接到broker.mqttdashboard.com,订阅EdgeXEvents主题,则可以获取到json数据。
https://docs.edgexfoundry.org/1.2/getting-started/quick-start/
有两点要注意:提供的HiveMQ网站,其js脚本中的JQuery可能会由于外网的原因无法加载,导致$符号无法识别,这时则需要更换网络,以正确加载和连接。
另外是在docker-compose.yml文件中添加的一段配置,其中
image: edgexfoundry/docker-app-service-configurable:1.1.0
应该改为
image: edgexfoundry/docker-app-service-configurable-arm64:1.1.0
另外
判断服务是否正常的方法是
docker-compose ps
如果某个进程卡掉,则该进程配置不正确,如mqtt
docker服务需要启动才可运行EdgeX的容器
service docker start
- 腾讯云平台部总经理陈磊:大数据背后的技术支撑
- DataSet与Xml相互转化
- SqlTransaction事务使用示例
- nginx的web缓存服务环境部署记录
- nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
- [转自blueidea]像table一样布局div Ⅰ
- 如何对动态创建控件进行验证以及在Ajax环境中的使用
- 升级个人网站框架组件IBatisNet+Castle
- 如何在多线程中调用winform窗体控件
- gerrit代码简单备份方案分享
- svn代码发版的脚本分享
- 正则表达式提取指定内容
- mysql数据库误删除后的数据恢复操作说明
- 在.NET平台上运行Java程序-IKVM.NET入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 正则replace 回调函数里接收的参数是什么?
- 微信小程序使用pako.js的踩坑笔记
- Koa - 初体验(写个接口)
- Koa - 中间件(理解中间件、实现一个验证token中间件)
- Koa - 使用koa-multer上传文件(上传限制、错误处理)
- 原生js 复制内容到剪切板
- Vue - watch高阶用法
- 小程序如何支持使用 async/await (构建npm版)
- require.context批量引入文件
- Node笔记 - process.cwd() 和 __dirname 的区别
- 小程序如何支持使用 async/await
- 小程序 - 如何自定义导航栏
- protobuf 语法 与 protocol-buffers 的使用
- 小程序 - 简单实现mixin功能
- 记录一些小技巧-CSS篇