一、物联网

1.1 物联网是什么

物联网(Internet of Things,简称IOT)是指通过 各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、 连接、互动的物体或过程,采集其声、光、热、电、力学、化 学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络。

1.2 物联网通讯协议解决哪些问题

通讯协议是数据上云、设备“联起来、存起来、管起来、智能起来”的重要环节,是解决信息孤岛,利用大数据资源,推动业务向着更智能、更高效的方向发展最关键的环节。通俗点说只要能把数据发送到云端,并在前端应用实时显示就可以称得物联网,但是优秀、通用的物联网协议将要面临、解决以下一些问题。

1.2.1 复杂的网络环境

物联网的通信环境(网络层)有Ethernet, Wi-Fi, RFID, NFC(近距离无线通信), Zigbee,
6LoWPAN(IPV6低速无线版本),Bluetooth, GSM, GPRS, GPS, 3G, 4G等网络。复杂的网络决定了网络的不稳定性。 物联网协议要能适应这样的网络环境。

1.2.2 有限硬件资源

物联网终端通常是小型化的控制板或则嵌入式硬件,实现小数据的汇集。所以需要通讯协议应尽可能轻量化,减少资源消耗。另外也有大的监控系统数据的汇集,需要物联网协议具有很大的灵活性,能够实现不同场景终端设备的数据汇聚上传。

1.2.3 有限IP资源

万物互联决定了物联网设备数以亿计,不可能每个都配置独立的IP地址。通常物联网设备会主动向云端(固定IP)发送请求并建立连接,这样不需要独立身份。要在设备信息,订阅或发布的内容(主题)上区分不同的设备。

1.2.4 数据安全

  1. 2014年7月,360网络攻防实验室的安全专家现场演示了特斯拉汽车系统的漏洞,并利用电脑实现了远程开锁、鸣笛、闪灯、开启天窗等操作。(https://www.lieyunwang.com/archives/47874)
  2. 2015年8月的黑客大会DEFCON上,安全研究人员Marc Rogers和Kevin Mahaffey介绍了他们对特斯拉Model S的研究成果,利用找到的漏洞可以控制汽车。(https://blog.lookout.com/hacking-a-tesla)
  3. 2016年9月,腾讯科恩实验室实现了远程控制一台特斯拉电动汽车,其提供的视频演示了可以不用钥匙打开车门、在行驶中关闭后视镜、在行驶中打开后备箱、在行驶中突然刹车等场景。

物联网数据安全也需要遵循数据机密性(Confidentiality)、完整性(Integrity)和可用性(Availability)3个原则(即CIA原则),以保证物联网的数据安全。物联网协议要有必要的加密、身份认证、访问控制和权限分配等功能。

1.2.5 物联网协议总的需求汇总

  • 轻量级:该协议应该足够轻量级,以允许嵌入式设备快速解析和响应。
  • 灵活性:以支持物联网设备和服务的多样化。
  • 异步机制:它应该被设计成异步消息协议而不是异步协议。这是因为大多数物联网设备的网络延迟
  • 可能非常不稳定。如果使用同步消息协议,IoT设备需要等待来自服务器的响应。为大量物联网设备
  • 供服务显然是非常不现实的。
  • 双向通信:并且服务器和客户端应该能够互相发送消息。
  • 安全性:三个基本概念:身份、认证和权限。 身份是对要为其授权或赋予权限的客户机命名。 认证
  • 提供客户机的身份;而权限是管理赋予客户机的权利。

1.3 常用物联网协议

  1. HTTP (HyperText Transfer Protocol ) 超文本传输协议,松耦合服务调用,简单、灵活、无连接和状态
  2. MQTT (Message Queuing Telemetry Transport ) 消息队列遥测传输,ISO标准、低消耗
  3. DDS(Data Distribution Service for Real-Time ) 分布式数据服务,高可靠性,实时性,局域网,军工、航天工控等
  4. AMQP(Advanced Message Queuing Protocol) 先进消息队列协议,移动手持设备与后台数据交互
  5. CoAP (Constrained Application Protocol) 受限应用协议,HTTP协议的RESTful API,应用于上层
  6. XMPP(Extensible Messaging and Presence Protocol) 可扩展通讯和表示协议,网络管理、游戏、即时通讯
  7. JMS (Java Message Service) 即消息服务,这是JAVA平台中著名的消息队列协议

每一种通信应用协议都有一定适用范围,要经常思考为什么该种协议能够成为行业标准(比如Http成为互联网协议标准)。有一句话叫“存在即合理”,通讯协议的存在和进化都是为了适应应用场景和环境的改变。AMQP、JMS、REST/HTTP多应用在广域网,COAP协议是专门为资源受限设备开发的协议,多用于下层数据互联。DDS和MQTT的兼容性则强很多,DDS的可靠性和严谨性决定了其主要应用于网络质量有保障的有线网络,跟工业控制领域的需求类似。

对比项 阿里云 腾讯云 百度云 华为云
产品名称 物联网平台(IotHub) 物联网通信 物接入 Iot Hub Iot平台基础版(IotHub)
支持协议 MQTT、CoAP、HTTP/S MQTT、CoAP、HTTP、WEBSOCKET MQTT MQTT、CoAP(S)、LWM2M、HTTP(S)、HTTP/2
  • 从各大物联网平台对接协议的支持情况来看,MQTT的通用型还是最广的。

二、MQTT协议

  • MQTT协议实现方式:发布和订阅
  • 在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。
    MQTT传输的消息分为:
    1. Topic,可以理解为消息的类型
    2. 订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);
    3. payload,可以理解为消息的内容,是指订阅者具体要使用的内容。
    针对消息传送提供三种服务质量QoS等级:
    QoS 是消息的发送方(Sender)和接受方(Receiver)之间达成的一个协议:
  • QoS0 代表,Sender 发送的一条消息,Receiver 最多能收到一次,也就是说 Sender 尽力向 Receiver 发送消息,如果发送失败,也就算了;
  • QoS1 代表,Sender 发送的一条消息,Receiver 至少能收到一次,也就是说 Sender 向 Receiver 发送消息,如果发送失败,会继续重试,直到 Receiver 收到消息为止,但是因为重传的原因,Receiver 有可能会收到重复的消息;
  • QoS2 代表,Sender 发送的一条消息,Receiver 确保能收到而且只收到一次,也就是说 Sender 尽力向 Receiver 发送消息,如果发送失败,会继续重试,直到 Receiver 收到消息为止,同时保证 Receiver 不会因为消息重传而收到重复的消息。

发布和订阅都会定义Qos, 发布方或订阅方定义的Qos都是决定它们跟Broker的关系

三 nodejs mqtt服务器

阿里云服务器:CentOS 7.2 64位 linux-3.10.0-1127.18.2.el7.x86_64
nodejs 版本:v14.16.0 (lts 最新长期支持版)
mosca 版本:2.8.3 (node-mqtt服务器版本)

var mosca = require('mosca');**var ascoltatore = {//using ascoltatore//type: 'mongo',//url: 'mongodb://localhost:27017/mqtt',//pubsubCollection: 'ascoltatori',//mongo: {}
};var settings = {port: 1883,//backend: ascoltatore
};var mqtt_server = new mosca.Server(settings);mqtt_server.on('clientConnected', function (client) {console.log('client connected', client.id);
});

比较关键的只有一行代码,运行mqtt_server
var mqtt_server = new mosca.Server(settings);

四 nodejs EPICS mqtt数据发布

监控网络EPICS服务器:CentOS 7 64位 Linux 3.10.0-862.14.4.el7.x86_64
1 nodejs 版本:v12.21.0 (lts 最新长期支持版)

2 mosca 版本: 2.8.3 (node-mqtt服务器版本)

npm install mosca

3 node-epics:
node-epics只能兼容node V7 之前的版本(ffi 和 ref包的原因),需要独立安装
node_epics 是独立安装
下载/node-moudules/epics

  • 修改package.json
  "dependencies": {"ffi": "*","ref": "*","ref-array": "*","ref-struct": "*"},

改为:

  "dependencies": {"ffi-napi": "*","ref-napi": "*","ref-array-napi": "*","ref-struct-napi": "*"},
  • 修改/node_modules/epics/lib/ca.js文件
var ffi = require('ffi'), ref = require('ref'), StructType = require('ref-struct'), ArrayType = require('ref-array')

改为:

var ffi = require('ffi-napi'), ref = require('ref-napi'), StructType = require('ref-struct-napi'), ArrayType = require('ref-array-napi')
  • 在/node_modules/epics/ 包里执行npm install
  • 然后把epics包 拷贝到node项目的/node_modules目录
    另外需要把系统libstdc++.so.6 库升级 CXXABI要到1.3.8版本
strings /usr/lib64/libstdc++.so.6|grep  CXXABI //察看
# ls /usr/lib64/libstdc++
lrwxrwxrwx.   1 root root       19 3月  10 18:02 libstdc++.so.6 -> libstdc++.so.6.0.26
-rwxr-xr-x.   1 root root   995840 9月  30 10:17 libstdc++.so.6.0.19
-rwxr-xr-x.   1 root root 13172960 3月  10 18:00 libstdc++.so.6.0.26

4 构建EPICS向mqtt server 推送的应用

定义epics 变量数组

var pvs={ai:[{pvname:'pwm:CHANGERPW3_R'},{pvname:"pwm:PrhEPW_R"},{pvname:"BY02AX101"},{pvname:"BY03AX054"}]}
 var epics= require('epics');var async= require('async');var mqtt =require('mqtt');var client =mqtt.connect('mqtt://ip或域名');// 定义变量链接函数及其回调
function connect_pvs(pvs,callback){async.map(pvs, function(item, callback) {var pv = new epics.Channel(item.pvname);pv.connect(function(err) {if(!pv.state()){console.log(item.pvname+" alarm severity is not monitored*");};setInterval(function(){ pv.get(function(err,value){ pv.emit("value",value);});},1000);callback(null,pv);// 一秒监听一次,也可以用monitor形式,产生<value>事件});}, function(err,results){callback(err,results);
});
};// 函数引用,connect_pvs(pvs.ai,function(err,results){async.map(results,function(item,callback){//遍历所有pv变量,响应<value>事件item.on("value", function(data) {var topic="/主题名/"+item.pvName;// 发布</主题名/pv名>的 数据client.publish(topic,data.toString());});})

五 前端页面 mqtt数据订阅

六 后续工作

mqtt 认证、SSL安全和服务等级Qos设置

EPICS数据通过MQTT物联网协议上云相关推荐

  1. 5分钟教你如何利用华为云IoT进行物联网设备上云

    一.背景 近些年,云计算的发展使得物联网技术突飞猛进,万物联网已经成为这个时代的标识,没有物联网之前,你能想象人在路上就能打开家里的空调?有了物联网,冰箱也能听懂主人在说什么:有了物联网,音响可以直接 ...

  2. 物联网“遇上”云原生,会擦出怎样的火花?

    据中国物联网产业生态联盟预测,继计算机.互联网和移动通信之后,物联网将引领信息产业革命的新一次浪潮,成为未来社会经济发展.社会进步和科技创新的最重要的基础设施. 另据预测,到2025年,将有1000亿 ...

  3. 物联网设备上云难?华为云IoT帮你一键完成模型定义,快速在线调试设备

    摘要:在不到3分钟的操作里,不仅完成了一款智慧烟感设备在云端的模型定义,还通过在线调试了解到了设备和远端通信的过程. 本文分享自华为云社区<物联网设备上云难?华为云IoT帮你一键完成模型定义,快 ...

  4. mqtt协议详解_IoT物联网设备上云技术方案详解

    随着传感器和通信技术的不断发展,物联网行业方兴未艾,业务链路涉及数据采集,通信连接,数据存储,数据可视化,洞察,行动决策.但,在实施过程中,碎片化的设备端通信连接难题往往就阻碍了项目落地进程. 今天, ...

  5. MQTT 物联网协议

    目录 MQTT 简介 MQTT 协议(上) MQTT 通信基本原理 连接MQTT 服务端 CONNECT 请求报文 CONNACK 回复报文 断开连接 发布消息.订阅主题与取消订阅主题 PUBLISH ...

  6. IoT物联网设备上云技术方案详解

    随着传感器和通信技术的不断发展,物联网行业方兴未艾,业务链路涉及数据采集,通信连接,数据存储,数据可视化,洞察,行动决策.但,在实施过程中,碎片化的设备端通信连接难题往往就阻碍了项目落地进程. 今天, ...

  7. 化工厂化纤工厂公用工厂调研报告,化工厂监管工业物联网数据采集上云方案

    上海数采物联网科技有限公司 智能工厂方案 PTA化纤化工厂公用工程数据采集需求与调研报告 一. 1,2期部分 煤 已将1期5个煤炉相关数据采集上云 电 电表数据已经集成到南瑞的系统上, 可以通过104 ...

  8. 一张图看懂阿里云新发布的物联网设备上云神器——HiTSDB + IoT套件

    近日,阿里云针对物联网企业遇到的设备认证困难.安全问题突出等问题,发布了HiTSDB +IoT 套件的一体化解决方案,能够支持物联设备快速上云,高效设备管理,数据安全,低成本海量数据存储,实时掌握设备 ...

  9. 阿里云新推出 HiTSDB + IoT套件 物联网设备上云步入快车道

    摘要: 阿里云针对物联网企业遇到的5大痛点,提供了HiTSDB +IoT 套件的一体化解决方案,能够支持物联设备快速上云,高效设备管理,数据安全,低成本海量数据存储,实时掌握设备状态,快速发现数据价值 ...

最新文章

  1. jQuery日期和时间插件(jquery-ui-timepicker-addon.js)中文破解版使用
  2. Linux集群部署和ipvsadm命令的使用
  3. Wireshark如何单独导出包的列信息
  4. HOWTO:如何修改InstallShield的运行环境
  5. java todo error_java基础-异常
  6. jQuery学习笔记:事件
  7. JVM 学习四:类加载之双亲委派机制与沙箱安全机制
  8. 4-9:TCP协议之延迟应答和捎带应答
  9. php显示当前访问人数,PHP与jquery实时显示网站在线人数实例详解
  10. faster rcnn论文_论文导读-从Faster-RCNN/Mask RCNN/Cascade-RCNN到HTC
  11. 计算机学科 集体备课记录,信息技术学科组集体备课活动记录
  12. WAP PUSH解析(1)——SMS PDU编码
  13. [转]摄影入门导购-基于预算的器材解决方案
  14. java xml解析框架_JAVA解析xml的五种方式对比
  15. 机载激光雷达原理与应用科普(九)
  16. python中怎么取小数点后两位函数_python中round函数保留两位小数的方法
  17. MySql中的minus用法
  18. 微信小程序网络请求api中HTML格式问题
  19. 怎样使PPT自动播放
  20. Rails 用 RJS 简单有效的实现页面局部刷新

热门文章

  1. python独热编码作用_关于sklearn独热编码
  2. spring技术详解
  3. 【Jenkins】win 10 / win 11:Jenkins 的下载、安装、部署(Jenkins 2.365 基于 Java 17)
  4. 小程序微信支付提示:商户订单号重复
  5. 如何通过引用传递变量?
  6. 震惊:这样投简历才有效,你竟然不知道?
  7. USB鼠标卡顿解决办法
  8. 2022年暑期CTF刷题WP(停止更新)
  9. 国内最快的jquery cdn
  10. linux - realpath_ex