实验三:基于物联网通信协议的船舶AIS数据传输
1 . 实验 目的
模拟一个物联网数据采集与传输场景:
- 使用软件模拟一个或多个船舶AIS数据源。
- 分别编写MQTT客户端和CoAP客户端程序,将这些模拟数据发布到相应的云服务器。
- 编写对应的数据订阅者/观察者客户端,从云服务器接收并显示AIS数据。
- 对比分析两种协议在AIS数据传输中的特性。
- 实验 过程
1.实验资源下载
AIS数据处理库:
包名: pyais
功能: 支持AIVDM/AIVDO消息解码,支持单条消息、文件、TCP/UDP套接字接收与解码
安装: pip install pyais
AIS数据源:
机构: 挪威海岸管理局(Norwegian Coastal Administration)
协议: TCP/IP 套接字访问
特点: 免费、无需注册、实时数据流
编码标准: IEC 62320-1
地址/端口: 需查阅官方文档(示例代码中隐含)
2.test部分
第一步:获取实时AIS数据
安装pyais库
运行示例代码(来自pyais官方示例),建立TCP连接接收挪威海岸管理局的实时AIS数据流
验证数据接收与解码是否正常
3.public部分
第二步:搭建MQTT通信环境
安装paho-mqtt库
编写简单MQTT发布者与订阅者示例代码:
发布者:向指定topic推送消息
订阅者:从相同topic接收消息
使用免费公共Broker测试通信是否正常
4.联动部分
第三步:结合AIS数据与MQTT实现中继
修改AIS数据接收代码,将接收到的每条AIS消息作为MQTT payload
设置自定义topic名称(避免与其他用户冲突)
在发布者代码中添加适度延迟(如time.sleep())以避免免费Broker丢包
运行订阅者代码,验证是否能接收到中继的AIS数据
可优化订阅者为单次运行模式,避免Broker性能问题导致消息堆积
三.实验总结:
本次实验成功实现了从挪威海岸管理局获取实时AIS数据,并通过MQTT协议进行数据中继。实验者掌握了:
使用pyais库接收与解码AIS数据
使用paho-mqtt库建立MQTT发布-订阅通信
将AIS数据流与MQTT结合,实现从TCP点对点传输到发布-订阅模式的转换
了解了免费公共Broker的性能限制及优化方法
该实验为构建基于AIS的船联网数据中继系统奠定了基础,适合进一步扩展为多用户、高可靠性的船舶数据分发平台。