物联网的技术原理
事实上,物联网的原理是在计算机互联网的基础上,利用RFID、无线数据通信技术,构建覆盖全球数万座建筑的物联网。在这个网络中,建筑物(物品)之间可以在不需要人工干预的情况下进行通信。其实质是利用射频自动识别技术,通过计算机互联网实现物品之间的自动识别和信息的互联与共享。
物联网的核心技术还在云计算中,云计算是物联网实现的核心。物联网的三个关键技术和领域包括:传感器技术、RFID标签技术、嵌入式系统技术。领域:公共事务管理(节能环保、交通管理等)、公共社会服务(医疗健康、家居建筑、金融保险等)、经济发展(能源电力、物流零售等)。
传感器技术是计算机应用中的一项关键技术,将传输线上的模拟信号转化为可由计算机处理的数字信号。
RFID,即射频识别,是一种集射频技术和嵌入式技术于一体的集成技术,在不久的将来将广泛应用于自动识别和货物物流管理。
嵌入式系统技术是集计算机软件、计算机硬件、传感器技术、集成电路技术和电子应用技术为一体的复杂技术。
物联网使用场景,主要体现在几个步骤:采集、传输、计算、展示
物联网终端采集数据,将数据传送给服务器,服务器存储和处理数据,并将数据显示给用户。
例如,自行车是共享的,前向过程是自行车获取GPS位置数据,通过2G网络向服务器报告,服务器记录自行车位置信息,用户在APP终端查看自行车位置。反向处理是用户向服务器发出解锁请求,服务器通过2G网络向自行车发送解锁指令,自行车执行解锁指令。
物联网的大大小小的应用都是基于正向数据采集和反向指令控制实现的。
传输模式的选择:取决于距离和功耗
物联网的联网方式:
近距离低功耗,带BLE或ZigBee。
远距离低功耗,NB-IoT或2G
近距离大数据,带WiFi
大数据远程,使用4G网络
关于网络布局:
远距离传输比短距离传输更昂贵,功耗更高。合理使用远距离和远距离配置可以有效降低物联网终端的成本。
例如,原始共享自行车被2G网络解锁,需要数据的长连接或下行短消息解锁,功耗高,下载的共享自行车丢弃了远程解锁,直接使用手机的蓝牙解锁自行车,节省数据流,降低功耗,本发明还可以提高解锁速度,剩余能量电动自行车智能充电站也是物联网的高科技产品,采用最新的窄带通信技术引领电动自行车充电设备的技术高度。
云服务设计
物联网的云服务器和应用程序设计与I互联网基本一致,Java、PHP和ASP可用于物联网的后台处理。
移动互联网是“人-服务器-人”的框架,物联网是"物-服务器-人"的框架,两者是相同的,物联网终端设备也采用TCP、>
总结简图
MQTT 协议 是基于发布/订阅模式的物联网通信协议,凭借简单易实现、支持 QoS、报文小等特点,占据了物联网协议的半壁江山。
常用于 IOT 物联网和一些需要服务端主动通知客户端的场景。
1 导入依赖
2 创建 MqttHelper 辅助类,设置回调监听
3 连接 MQTT
连接成功或失败,以及中途的连接掉线,会触发 OnMqttStatusChangeListener 回调
4 MQTT 连接状态监听
5 MQTT 收发消息监听
onSubMessage 订阅的消息回调,因为存在订阅多个 topic 的情况,所以回调能知道是来自哪个 Topic 的消息;
onPubMessage 发布的消息回调,用于确认发布的消息是否发送成功。
6 MQTT 订阅 Topic
需要在 MQTT 连接成功后才能订阅 topic,否则订阅 Topic 不成功,收不到对应消息
7 MQTT 取消订阅 Topic
8 MQTT 发布消息
9 MQTT 断开连接
10 通知设置
由于 MQTT 启动了一个 Service,而 Android 80 以上对于后台 Service 限制时长 5 秒;所以将 MqttService 绑定到 Notification 上成为了一个前台通知;通知的标题和内容显示可以在 stringsxml 中设置,对应属性如下:
Android 80 及以上开启前台服务绑定到通知,80 以下默认不启用,可将 mqtt_foreground_notification_low_26 设为 true,将 80 以下设备也开启前台通知服务
创建 MQTT 实例时需要传送参数 MqttOptions,下面将介绍下部分参数;
1 Topic
MQTT 是一种发布/订阅的消息协议, 通过设定的主题 Topic,
发布者向 Topic 发送的 payload 负载消息会经过服务器, 转发到所有订阅
该 Topic 的订阅者
通配符 : 假想移动端消息推送场景,有的系统消息是全体用户接收,有的消息是 Android 或 iOS 设备接收, 又或者是某些消息具体推送到用户,当然, 对应的多种类型消息可以通过多订阅几个对应的 Topic 解决,也可以使用通配符;
通配符有两个, " + " 和 " # ", 与正斜杠 " / " 组合使用;加号只能表示一级Topic, 井号可以表示任意层级 Topic; 例如: 订阅 Topic为 " System/+ ", 发布者发布的 Topic 可以是 System、System/Android、System/iOS; 但是不能是 System/iOS/123, 而订阅的 Topic 如果是" System/# " 则可以收到;
注意,只有订阅的 Topic 才可以使用 通配符, 发布和遗嘱的 Topic 不能包含通配符
2 ClientID
发布者和订阅者都是属于客户端, 客户端与服务端建立连接之后,发送的第一个报文消息必须是 Connect 消息,而 Connect 的消息载荷中必须包含 clientID 客户端唯一标识;
如果两个客户端的 clientID 一样, 则服务端记录第一个客户端连接之后再收到第二个客户端连接请求,则会向一个客户端发送 Disconnect 报文断开连接, 并连接第二个客户端, 而如果此时设置了自动重连, 第一个客户端再次连接,服务端又断开与第二个的连接, 连上第一个客户端, 如此将导致两个客户端不断的被挤掉重连
注意: clientID 使用的字符最好是 大小写字母和数字, 长度最好限制在[1, 23] 之间;
3 遗嘱消息
可选参数, 客户端没有主动向服务端发起 disconnect 断开连接消息,然而服务端检测到和客户端之间的连接已断开, 此时服务端将该客户端设置的遗嘱消息发送出去
应用场景: 客户端因网络等情况掉线之后, 可以及时通知到所有订阅该遗嘱 Topic 的客户端;
遗嘱 Topic 中不能存在通配符
4 Session
客户端和服务端之间建立的会话状态, 一般用于消息保存, 如果设置清除 Session,则每次客户端和服务端建立连接会创建一个新的会话,之前连接中的消息不能恢复,
而设置不清除会话, 对应发布者发送的 qos 为 1和2 的消息,还未被订阅者接收确认,则需要保存在会话中, 以便订阅者下次连接可以恢复这些消息;
注意: Session 存储的消息是保存在内容中的, 所以如果不是重要的消息,最好是设置清除 Session, 或者设置 qos = 0;
5 心跳包
标识客户端传输一次控制报文到下一次传输之间允许的空闲时间;在这段时间内,如果客户端没有其他任何报文发送,必须发送一个 PINGREQ 报文到服务器,而如果服务端在 15 倍心跳时间内没有收到客户端消息,则会主动断开客户端的连接,发送其遗嘱消息给所有订阅者。而服务端收到 PINGREQ 报文之后,立即返回 PINGRESP 报文给客户端
心跳时间单位为秒,占用2个字节,最大 2^16 - 1 = 65535秒(18小时12分钟15秒),设置为 0 表示不使用心跳机制; 心跳时间一般设置为几分钟或几十秒即可,时间短点可以更快的发出遗嘱消息通知掉线,但是时间短会增加消息频率,影响服务端并发; 微信长连接为 300 秒,而三大运营商貌似也有个连接时间最小的为 5 分钟。
6 qos
服务质量等级 qos 对应两部分,一是客户端到服务端发送的消息, 一是服务端到客户端订阅的消息; 从发布者到订阅者实际 qos 为两段路中 qos 最小的。
qos 可选值 0(最多交付一次)、1(最少交付一次)、2(正好交付一次);
qos = 0 :接收方不发送响应,发送方不进行重试;发送方只管发一次,不管是否发成功,也不管接收方是否成功接收,适用于不重要的数据传输;
qos = 1 :确保消息至少有一次到达接收方,发送方向接收方发送消息,需要等待接收方返回应答消息,如果发送方在一定时间之内没有收到应答,发送方继续下一次消息发送,直到收到应答消息,删除本地消息缓存,不再发送;所以接收方可能收到1-n次消息;适用于需要收到所有消息,客户端可以处理重复消息。
qos = 2 :确保消息只一次到达接收方,发送方和接收方之间消息处理流程最复杂;
Mqtt Qos 深度解读 和 MQTT协议QoS2 准确一次送达的实现
7 payload 负载消息
字节流类型, 是 MQTT 通信传输的真实数据
8 保留消息
发布消息时设置, 对应参数 retain, 服务端将保留对应 Topic 最新的一条消息记录; 保留消息的作用是每次客户端连接上线都会收到其 Topic 的最后一条保留消息, 所以可能存在网络不稳定,频繁掉线重连,每次重连重复收到保留消息;
可以向对应的 Topic 发送一条 空消息,用于清除保留消息。
MQTT 服务搭建 Apache Apollo 服务器 搭建 MQTT 服务
Github 仓库
mqtt 协议
1、多种采集协议的适配:车间设备一般具有多种接口和多种自动化协议,常见的有modbus、PPI、MPI、Profinet、hostlink等,接口一般为RS485、以太网、can口等。
2、具备边缘计算能力:物联网智能网关必须具备边缘计算能力,而不是傻瓜式的透传。可以对数据进行本地化预处理,然后再与MES服务器交互,这样能极大减轻MES服务器的压力。
3、与MES服务器间的通信规约和数据格式:物联网网关与MES服务器见需要支持实时性非常强的通信规约,如MQTT、DICP等,而不是普通的自动化协议。同时约定好传输的数据格式,以被MES服务器解析。
帝图数据采集器适合于用在MES系统的数据采集,比如汽车生产线的数据采集、变电站的数据采集等。物联网是在计算机互联网的基础上,利用RFID、无线数据通信等技术,构造一个覆盖世界上万事万物的“Internet of Things”。在这个网络中,物品(商品)能够彼此进行“交流”,而无需人的干预。上图为物联网联接的问题空间,其中物联网的通信环境有Ethernet,
Wi-Fi,
RFID,
NFC(近距离无线通信),
Zigbee,
6LoWPAN(IPV6低速无线版本),Bluetooth,
GSM,
GPRS,
GPS,
3G,
4G等网络,而每一种通信应用协议都有一定适用范围。AMQP、JMS、REST/>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)