物联网学习日记2

1.go mod verify
解析:确认依赖关系。

2.go mod why
解析:解释为什么需要包和模块。

3.设备驱动微服务
解析:
[1]device-virtual:虚拟设备微服务,该微服务用于测试模拟虚拟设备。
[2]device-mqtt:mqtt协议的设备微服务,通过mqtt协议和设备通信。
[3]device-modbus:modbus协议设备微服务,通过modbus协议和设备通信。
[4]device-bluetooth
[5]device-snmp
[6]device-bacnet
[7]device-fischertechnik

4.支撑微服务
解析:
[1]scheduler:scheduler微服务,官方解释用于任务调用、数据清洗等。
[2]export-client:导出client微服务,需要和export-distro微服务配合使用,用于接收用户调用API后,持久化相关数据到mongoDB数据库。
[3]export-distro:导出数据到云端微服务,负责用户指定的一系列导出任务。
[4]ruleengine:规则引擎微服务,用于智能化边缘测。

5.核心微服务
解析:
[1]volume:数据卷微服务,所有数据都会持久化在这个微服务中。
[2]config-seed:consul注册和配置中心,config-seed启动的时候,会读取本地所有其它微服务的配置文件到consul的配置中心,所有微服务如果在docker中运行,从consul配置中心中读取各自的配置文件。
[3]mongo:mongoDB数据库,所有其它微服务持久化到mongoDB数据库,mongoDB的持久化文件本质上存储在volume微服务中。
[4]log:日志微服务,所有其它微服务的日志操作,都会异步和log微服务通信,持久化日志信息。
[5]notification:通知微服务,比如一个device的增删改查动作都会通过邮件、消息队列等方式向指定的目标发送通知。
[6]core-data:核心数据微服务,这里面有个值描述符[value descriptor]的概念,这个概念中包含的field是从device profile文件中的device resource中得到。
[7]core-metadata:核心元数据微服务,这里存储的是物理设备的元信息,这些元信息是用户从设备手册上得到,并编写到device profile文件中,然后经由该微服务持久化到mongoDB数据库。
[8]core-command:核心命令微服务,所有的设备的命令必须经由该微服务发送到device service层的设备驱动微服务,然后由设备驱动微服务发送到物理设备,本质上核心命令微服务中的设备命令也是从用户编写的device profile文件中得到。

6.EdgeX Foundry将数据推送到服务器
解析:EdgeX Foundry支持MQTT和REST这两种数据输出通道。可以将数据推送到MQTT服务器,也可以通过HTTP POST方式将数据推送到服务器。

7.取最新版的Nginx镜像
解析:docker pull nginx:latest

8.运行nginx容器
解析:docker run --name nginx-test -p 8080:80 -d nginx

9.启动edgex-mosquitto
解析:start-one-sevice.sh redis edgex-mosquitto

10.运行和启动emqx
解析:

docker pull emqx/emqx:latest
docker run --name emq -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 -d emqx/emqx

11.Eclipse Mosquitto
解析:Eclipse Mosquitto是一个开源[EPL/EDL licensed]的message Broker,它支持MQTT协议5.0,3.1.1以及3.1。使用docker命令运行Mosquitto:

docker run -d --rm --name broker -p 1883:1883 eclipse-mosquitto

12.设备文件Device Profile
解析:设备文件定义了设备的取值和操作方法,可以通过它们来进行读写操作。

13.EdgeX Device Service SDK
解析:EdgeX Device Service SDK能够帮助开发者为EdgeX快速地创建一个新设备连接器,因为它提供了设备服务共用的脚手架[scaffolding]。脚手架提供了服务供给[provisioning]的模式,包括了接收和响应命令的公共代码模板,并且提供了获取从传感器到EdgeX Core Data的数据[通常作为数据注入data ingestion]的公共代码。使用SDK,开发者只需要关注通过设备协议与设备进行通信的代码。

14.设备文件Device Profile
解析:
[1]设备文件是YAML文件,它描述了EdgeX的一个设备类。包括这类设备的整体特点,提供的数据,支持的命令等。
[2]设备服务通过设备文件去理解设备收集到的数据[某些情况下,设备服务根据它提供的信息来与设备进行通信以及获取传感器的readings]。

15.将一个应用注册为export client
解析:EdgeX为各种云服务和应用提供了exporters。为了简化实现,使用一个公共的MQTTbroker,它由HiveMQ提供,接下来观察EdgeX将readings自动推送给它。

curl -X POST -d '{
    "name":"QuickStartExport",
    "addressable":{
        "name":"HiveMQBroker",
        "protocol":"tcp",
        "address":"broker.hivemq.com",
        "port":1883,
        "publisher":"EdgeXExportPublisher",
        "topic":"EdgeXQuickStartGuide"
    },
    "format":"JSON",
    "filter":{
        "deviceIdentifiers":["Random-Integer-Generator01"]
    },
    "enable":true,
    "destination":"MQTT_TOPIC"
}' http://localhost:48071/api/v1/registration

可以用任意MQTT客服端连接该broker去观察发送的数据。HiveMQ提供了一个web-based client,通过该工具注册主题EdgeXQuickStartGuide,然后就就可以看到随机数readings了。 也可以通过Mosquitto CLI工具来验证readings正在被发送:

mosquitto_sub -h broker.hivemq.com -p 1883 -t EdgeXQuickStartGuide

16.MQTT和mosquitto
解析:
[1]MQTT是一个基于TCP的发布订阅协议,设计的初始目的是为了极有限的内存设备和网络带宽很低的网络不可靠的通信,非常适合物联网通信。
[2]mosquitto是一款实现了消息推送协议MQTT v3.1的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。

17.Device Service
解析:每个Device都被一个Device Service[DS]管理。每个DS负责底层通信采集数据并将数据传给core-data服务。反过来,DS也可以接受命令请求,解析之后发给真实设备修改其参数。

18.参考信息
[1]Addressabale:设备或设备服务的地址信息
[2]Value Descriptor:每个值描述符的名称必须是唯一的[在所有EdgeX中]。值描述符的类型指示关联值的类型:I[整数],F[浮点数],S[字符或字符串],B[布尔值]或J[JSON对象]。UI使用格式化,并且应遵循printf格式标准来表示关联值。

19.Consul服务注册
解析:EdgeX采用Consul作为服务注册服务。其余每个微服务启动之后会在Consul中进行注册,并可在Consul操作台面板进行查看。UI地址:http://[host]:8500/ui。

20.Metadata
解析:负责设备自身能力描述,提供配置新设备并将它们与其拥有的设备服务配对的功能。

21.Registry&config
解析:负责服务注册与发现,为其它EdgeX Foundry微服务提供关于EdgeX Foundry内相关服务的信息,包括微服务配置属性。采用开源consul实现。

22.设备服务层
解析:设备服务层的微服务通过每个物联网对象本身的协议与设备,传感器,执行器和其他物联网对象进行通信。DS层将由IoT对象生成和传递的数据转换为常见的EdgeX Foundry数据结构,并将转换后的数据发送到Core Services Layer以及EdgeX Foundry其它层的其它微服务。

23.Dockerfile
解析:Dockerfile是一个Docker镜像的描述文件,Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

24.docker-compose pull
解析:Pull down, but don’t start, all the EdgeX Foundry microservices

25.docker-compose up -d volume
解析:Start the EdgeX Foundry file volume–must be done before the other services

参考文献:
[1]Docker安装Nginx:https://www.runoob.com/docker/docker-install-nginx.html
[2]EdgeX documentation:https://docs.edgexfoundry.org/index.html
[3]HiveMQ:http://www.hivemq.com/demos/websocket-client/

发布了364 篇原创文章 · 获赞 422 · 访问量 36万+

猜你喜欢

转载自blog.csdn.net/shengshengwang/article/details/104418058