本文章为原创,转载请注明出处!
账号:iotos_test 密码:iotos123
代码地址:IOTOSDK-Python: IOTOS Python版本SDK,自带原生接口和采集引擎 (gitee.com)
目录
-
前言
JT 808泛指JT/T808协议,是指交通部制定的运输行业通信标准,全称《交通运输行业标准-道路运输车辆卫星定位系统终端通信协议及数据格式》可至交通部下载协议
JT808规定了道路运输车辆卫星定位系统车载终端与监管/监控平台之间的通信协议与数据格式,包括协议基础、通信连接、消息处理、协议分类与要求及数据格式,适用于道路运输车辆卫星定位系统车载终端和监管/监控平台之间的通信
-
驱动目的
处理终端转发过来的数据并且上传至中台
-
适用范围
符合JT808协议规范的车辆终端
-
使用示例
- 进入爱投斯中台,账号为iotos_test,密码为iotos123,在【创建模板】->【我的模板】,创建模板,填写相关信息,配置需要的参数
- 创建网关

- 填好网关名称后点击确认

- 创建设备示例点击【系统设备】 -> 【通信网关】 -> 【设备实例】->【创建设备】

- 填写【设备名称】、选择刚刚创建的【模板驱动】和【通信网关】。

- 创建数据点(有点表可以之间导入忽略创建数据点这几步),点击【系统设备】 -> 【通信网关】 -> 【设备实例】 -> 【数据点】,并在【设备实例】下拉列表选择刚刚创建的设备实例

- 点击右边的创建数据点,填写名称

- 并在高级配置中配置数据点的相关标志,需要拿多少数据就可以配置多少数据,目前测试的数据:方向、高度、状态、报警、纬度、经度、速度、油耗、里程、消息接收时间、终端手机号(名称可以修改),又要要可以增加,需要在数据点里面的param中配置相应的"private"属性: ,例如:

各数据点的配置如下:
| 数据点名称 | private参数 |
|---|---|
| 方向 | dirct |
| 高度 | hight |
| 状态 | status |
| 报警 | alarm |
| 纬度 | lng |
| 经度 | lat |
| 速度 | speed |
| 油耗 | oil |
| 里程 | mileage |
| 消息接收时间 | serv_receive |
| 终端手机号 | device_id |
- 在【系统设备】 -> 【通信网关】中找到刚才创建的网关,点击【高级】

- 开启云网关,密码为账号密码

- 点击 【系统设备】 -> 【通信网关】 -> 【设备实例】->【数据点】,选择刚才创建的设备实例

- 即可查看数据已经上报成功

-
驱动代码
import sys
sys.path.append("..")
from driver import *
import time
import threading
#coding:utf-8
"""
JT808泛指JT/T808协议,是指交通部制定的运输行业通信标准,全称《交通运输行业标准 - 道路运输车辆卫星定位系统终端通信协议及数据格式》
"""
# JT808设备消息监听、处理
import asyncore
import re
import datetime
import binascii
global data_last,jt808_port
data_last=''
jt808_port=''
def BCC_Check(data):
data = data.replace(' ', '')
n = int(len(data) / 2)
xor = 0
for r in range(n):
xor ^= int(data[2 * r:2 * r + 2], 16)
xor = hex(xor)
if len(xor) != 4:
xor = '0' + xor[2:]
else:
# 返回16进制字符串
xor = xor[2:]
return xor
def loca_report(rule, data):
loca_data = {}
rule = rule + r'(?P<alarm_data>\w{8})(?P<status>\w{8})(?P<lat>\w{8})(?P<lng>\w{8})(?P<hight>\w{4})(?P<speed>\w{4})(?P<dirct>\w{4})(?P<dev_upload>\w{12})'
# 获取剩余的为解析的
attch_data = data[len(re.search(rule, data).group()):]
data = re.search(rule, data).groupdict()
alarm_data = data['alarm_data']
# print(alarm_data)
alarm_happen = ''
for x in range(len(alarm_data)):
alarm_happen += '{:04b}'.format(int(alarm_data[x], 16))
# print("alarm_happen " + alarm_happen)
# 解析报警信息
all_alarm = []
if alarm_happen[-1] == '1':
all_alarm.append('sos_alarm') # 紧急报警
if alarm_happen[-2] == '1':
all_alarm.append('speed_alarm') # 超速
if alarm_happen[-3] == '1':
all_alarm.append('fatigue_drive') # 疲劳驾驶
if alarm_happen[-6] == '1':
all_alarm.append('antenna_alarm') # 天线故障
if alarm_happen[-8] == '1':
all_alarm.append('low_pow

本文介绍了如何实现一个基于JT808协议的物联网数据处理系统,包括数据预处理、解析、存储和响应。通过JT808Handler和Jt808Server实现设备数据监听,解析位置信息、报警状态等关键数据,并将其存储或上报到中台。此外,详细展示了数据解析过程,涉及消息头解析、数据校验、报警和状态信息提取等功能。
最低0.47元/天 解锁文章
7826

被折叠的 条评论
为什么被折叠?



