BLE и ELM327 (CAN)

Мне нужно контролировать безопасность автомобиля (двери открываются/закрываются) через мобильное приложение. Я использую адаптер ELM 327 и BLE подключаюсь к устройству по BLE и читаю характеристики сервисов, но какую команду отправить и на какой сервис включить/выключить будильник?

import UIKit
    import CoreBluetooth

    class ViewController: UIViewController {

        private var centralManager: CBCentralManager!
        private var peripheral: CBPeripheral!
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            centralManager = CBCentralManager(delegate: self, queue: nil)
        }


    }

extension ViewController: CBPeripheralDelegate, CBCentralManagerDelegate {
        func centralManagerDidUpdateState(_ central: CBCentralManager) {
            print("Central state update")
            if central.state != .poweredOn {
                print("Central is not powered on")
            } else {
                centralManager.scanForPeripherals(withServices: nil, options: nil)
            }
        }
        
        func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {

            guard peripheral.name == "OBDBLE" else {return}
            print(peripheral.identifier)
            
            self.centralManager.stopScan()
            self.peripheral = peripheral
            self.peripheral.delegate = self
            self.centralManager.connect(self.peripheral, options: nil)
        }
        
        func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
            guard peripheral == self.peripheral else {return}
            print("Connected to your Particle Board")
            peripheral.discoverServices(nil)
        }
        
        func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
            guard let services = peripheral.services else {return}
            print("didDiscoverServices")
            for service in services {
                print(service)
                peripheral.discoverCharacteristics(nil, for: service)
            }
        }
        
        func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
            guard let characteristics = service.characteristics else {return}
            print("didDiscoverCharacteristicsFor: \(service.uuid)")
            for characteristic in characteristics {
                print(characteristic)
            }
        }
    }

person Артем Хрещенюк    schedule 12.05.2021    source источник
comment
Что ж, это довольно распространенная проблема, вам нужно знать конфигурацию устройства в вашем автомобиле. Например, сколько байтов вам нужно отправить и на какую службу вы должны ориентироваться.   -  person Kudos    schedule 12.05.2021
comment
Это может вам помочь: title="какой профиль и службы gatt используются адаптерами obd ble, такими как lelink automa"> stackoverflow.com/questions/52075456/ Поставляется ли адаптер OBD с какой-либо документацией? Вы не указали точный адаптер, который используете   -  person Michael Kotzjan    schedule 12.05.2021
comment
@Kudos, где я могу получить список услуг?   -  person Артем Хрещенюк    schedule 12.05.2021