* EXPERIMENTAL: Ble read/write characteristics over MQTT. Uses #979 This allows reading and writing BLE characteristics from an MQTT message. Example format: mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoBT/config -m '{"ble_write_address":"AA:BB:CC:DD:EE:FF", "ble_write_service":"cba20d00-224d-11e6-9fb8-0002a5d5c51b", "ble_write_char":"cba20002-224d-11e6-9fb8-0002a5d5c51b", "ble_write_value":"TEST", "ttl":4 }' mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoBT/config -m '{"ble_read_address":"30:AE:A4:7C:3C:A6", "ble_read_service":"cba20d00-224d-11e6-9fb8-0002a5d5c51b", "ble_read_char":"cba20002-224d-11e6-9fb8-0002a5d5c51b", "ttl": 2 }' The ttl parameter is the number of calls to connect (defaults to 1), which occur after the BLE scan completes. A response is provided over MQTT in the format: write : {"id":"30:AE:A4:7C:3C:A6","service":"cba20d00-224d-11e6-9fb8-0002a5d5c51b","characteristic":"cba20002-224d-11e6-9fb8-0002a5d5c51b","write":"TEST","success":true} read : {"id":"30:AE:A4:7C:3C:A6","service":"cba20d00-224d-11e6-9fb8-0002a5d5c51b","characteristic":"cba20002-224d-11e6-9fb8-0002a5d5c51b","read":"TEST","success":true} * Add generic BLE connect class and read data as hex. * Add value_type parameter and document usage * Add note to docs
50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
#ifndef zBLEConnect_h
|
|
#define zBLEConnect_h
|
|
|
|
#ifdef ESP32
|
|
# include "ArduinoJson.h"
|
|
# include "NimBLEDevice.h"
|
|
# include "config_BT.h"
|
|
|
|
extern void pubBT(JsonObject& data);
|
|
|
|
class zBLEConnect {
|
|
public:
|
|
NimBLEClient* m_pClient;
|
|
TaskHandle_t m_taskHandle = nullptr;
|
|
zBLEConnect(NimBLEAddress& addr) { m_pClient = NimBLEDevice::createClient(addr); }
|
|
virtual ~zBLEConnect() { NimBLEDevice::deleteClient(m_pClient); }
|
|
virtual bool writeData(BLEAction* action);
|
|
virtual bool readData(BLEAction* action);
|
|
virtual bool processActions(std::vector<BLEAction>& actions);
|
|
virtual void publishData() {}
|
|
virtual NimBLERemoteCharacteristic* getCharacteristic(const NimBLEUUID& service, const NimBLEUUID& characteristic);
|
|
};
|
|
|
|
class LYWSD03MMC_connect : public zBLEConnect {
|
|
void notifyCB(NimBLERemoteCharacteristic* pChar, uint8_t* pData, size_t length, bool isNotify);
|
|
|
|
public:
|
|
LYWSD03MMC_connect(NimBLEAddress& addr) : zBLEConnect(addr) {}
|
|
void publishData() override;
|
|
};
|
|
|
|
class DT24_connect : public zBLEConnect {
|
|
std::vector<uint8_t> m_data;
|
|
void notifyCB(NimBLERemoteCharacteristic* pChar, uint8_t* pData, size_t length, bool isNotify);
|
|
|
|
public:
|
|
DT24_connect(NimBLEAddress& addr) : zBLEConnect(addr) {}
|
|
void publishData() override;
|
|
};
|
|
|
|
class GENERIC_connect : public zBLEConnect {
|
|
std::vector<uint8_t> m_data;
|
|
|
|
public:
|
|
GENERIC_connect(NimBLEAddress& addr) : zBLEConnect(addr) {}
|
|
};
|
|
|
|
#endif //ESP32
|
|
#endif //zBLEConnect_h
|