IOTOS物联中台JT808驱动开发实例

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

  本文章为原创,转载请注明出处!

登录平台:IOTOS®爱投斯物联中台

账号: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IOTOS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值