ASIOSObdSdk 1.0.5

ASIOSObdSdk 1.0.5

Jan Essbach 维护。



 
依赖
日志记录~> 1.1
IKEventSource~> 3.0.1
SwiftyJSON~> 4.2.0
Alamofire~> 4.5.0
 

autostars.de - 车载诊断 SDK

什么是 OBD 云

autostars.de 提供了一个反应式 OBD 传感器云,可用于在您的业务流程中进行 Car2X 集成。它提供了您的汽车传感器信息,并将来自移动设备的传感器信息融合到基于会话的反应式流中,并将这些信息提供给多个连接的远程客户端。

架构概述

以下部分描述了从您的汽车到云基础设施的实时流过程。如图所示,SDK 使得汽车、手机和云之间能够建立 OBD 会话。此会话由识别码和密码码组成,以确保第三方无法访问流程。

远程客户端(需要会话密码码才能访问)或移动设备本身可以向基础设施发送 ObdCommands 进行他们的会话。云在通过实时通道与汽车沟通并评估 OBD 协议后,将相应的事件发出,并通过 SSE 供多个连接的远程客户端消费。

授权一个 OBD 会话

本节处理授权给定 clientId(称为 ObdCustomer)的 OBD 会话事宜。以下图例说明了创建新会话过程中的数据流

要求

  1. 请联系 [email protected] 进行注册并获得 clientIdclientSecret

  2. 获取一个支持蓝牙 4.0 BLE OBD 棒,带 ELM327 芯片组。

目前支持的适配器

演示

请参阅以下 YouTube 视频以进一步了解流程的实时演示

OBD Cloud Demo

应用程序接口

您可以在 https://obd.autostars.de/obd/execute 端点提交所谓的 OBDCommands,例如 ReadVinNumberReadErrorCodesDeleteErrorCodes

目前可用的命令将自动发布在 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™