autostars.de - 车载诊断 SDK
什么是 OBD 云
autostars.de 提供了一个反应式 OBD 传感器云,可用于在您的业务流程中进行 Car2X 集成。它提供了您的汽车传感器信息,并将来自移动设备的传感器信息融合到基于会话的反应式流中,并将这些信息提供给多个连接的远程客户端。
架构概述
以下部分描述了从您的汽车到云基础设施的实时流过程。如图所示,SDK 使得汽车、手机和云之间能够建立 OBD 会话。此会话由识别码和密码码组成,以确保第三方无法访问流程。
远程客户端(需要会话密码码才能访问)或移动设备本身可以向基础设施发送 ObdCommands 进行他们的会话。云在通过实时通道与汽车沟通并评估 OBD 协议后,将相应的事件发出,并通过 SSE 供多个连接的远程客户端消费。
授权一个 OBD 会话
本节处理授权给定 clientId(称为 ObdCustomer)的 OBD 会话事宜。以下图例说明了创建新会话过程中的数据流
要求
-
请联系 [email protected] 进行注册并获得
clientId
和clientSecret
。 -
获取一个支持蓝牙 4.0 BLE OBD 棒,带 ELM327 芯片组。
目前支持的适配器
演示
请参阅以下 YouTube 视频以进一步了解流程的实时演示
应用程序接口
您可以在 https://obd.autostars.de/obd/execute
端点提交所谓的 OBDCommands
,例如 ReadVinNumber
、ReadErrorCodes
或 DeleteErrorCodes
。
目前可用的命令将自动发布在 https://obd.autostars.de/obd/commands
。
ReadErrorCodes
会读取您的车辆中挂起的错误代码,例如 P0012。用相应的信息发出 ErrorCodesRead 事件。DeleteErrorCodes
将从您的车辆中删除挂起的错误代码。发出 ErrorCodesDeleted 事件。 注意 您的车辆需要重启以查看更改。
您将在会话流中收到所谓 ObdEvents
,例如 ErrorCodesRead,通过服务器端发送事件(SSE)在:https://obd.autostars.de/obd/stream
。
目前可用的事件将自动通过 OpenAPI 3.0_spec 在此处发布:https://obd.autostars.de/internal/swagger.json
。
可以在此处查看 BatteryVoltageRead
事件的示例
"BatteryVoltageRead" : {
"type" : "object",
"required" : [ "voltage" ],
"properties" : {
"voltage" : {
"type" : "string"
}
}
}
安装
将此SDK ASIOSObdSdk
添加到您自己的项目中的 Podfile
,然后运行 pod install
。
示例
platform :ios, '13.0'
target 'YourProject' do
use_frameworks!
pod 'ASIOSObdSdk', '~> 1.0.0'
end
完成此操作后,将以下参数添加到您的 Info.plist
文件中,以访问苹果iOS框架中的 BLE设备
。
隐私-始终使用蓝牙描述
隐私-外围设备使用蓝牙描述
为了 GPS位置
目的激活
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
.
SDK使用
作为一个完整的用例示例,请参阅此存储库中可找到的示例应用程序。作为示例应用程序,我们在不到一个小时的时间内构建了一个智能油耗跟踪器,它可以实时监测耗油量和位置感知。
使用以下代码初始化SDK,并供应相应的事件处理器实现。
self.cloud = ApiManager
.init(options: ApiOptions.init(onConnected: self.onConnected,
onDisconnected: self.onDisconnected,
onBackendEvent: self.onBackendEvent,
onAvailableCommands: self.onAvailableCommands)
)
.connect(token: "authorization-token-here")
onConnected
- 当与OBD适配器和后端会话建立时被调用。您将获得会话凭据。onDisconnected
- 当会话关闭时被调用。onBackendEvent
- 当发布了相应的事件(如ErrorCodesRead
)时被调用。onAvailableCommands
- 当调用时带有当前支持的ObdCommands
,以存储它们在您的应用程序中。
执行OBD命令
初始化SDK后,执行命令可能是使用此云服务的主要原因,下面的代码示例可以这样做:
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { timer in
self.cloud.execute(command: "ReadRpmNumber")
}
如您所见,有用地重复执行ObdCommands
可能很有用,如上例所示(每秒一次),但这取决于您的用例。
示例应用程序
目前OBD云支持两种用例。第一个直接集成在autostars.de的Angular 9前端,为德国汽车经销商提供了一个便捷的实时远程诊断工具。这种便捷性在于它可直接集成在其日常业务流程中,位于他们的域名下。下一个截图将展示一个示例。
第二种用例是此仓库内的示例应用程序,它使用当前SDK构建了一个
- 智能日志本实时消耗、位置和实时燃料定价数据日志本
如您所见,有多种可能的应用场景,我们很高兴能直接在您的业务流程中实现汽车通讯。
作者
2020 - Jan Essbach [email protected],为autostars.de™