1
0
mirror of https://github.com/esphome/esphome.git synced 2025-02-07 13:40:59 +00:00
Rodrigo Martín f7f8bf4da4
[esp32_ble_server] Create custom services, characteristics and descriptors (#7009)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-01-28 22:00:28 +11:00

67 lines
2.4 KiB
YAML

esp32_ble_server:
id: ble_server
manufacturer_data: [0x72, 0x4, 0x00, 0x23]
manufacturer: ESPHome
model: Test
on_connect:
- lambda: |-
ESP_LOGD("BLE", "Connection from %d", id);
on_disconnect:
- lambda: |-
ESP_LOGD("BLE", "Disconnection from %d", id);
services:
- uuid: 2a24b789-7aab-4535-af3e-ee76a35cc12d
advertise: false
characteristics:
- id: test_notify_characteristic
description: "Notify characteristic"
uuid: cad48e28-7fbe-41cf-bae9-d77a6c233423
read: true
notify: true
value: [1, 2, 3, 4]
descriptors:
- uuid: cad48e28-7fbe-41cf-bae9-d77a6c111111
on_write:
logger.log:
format: "Descriptor write id %u, data %s"
args: [id, 'format_hex_pretty(x.data(), x.size()).c_str()']
value:
data: "123.1"
type: float
endianness: BIG
- uuid: 2a24b789-7a1b-4535-af3e-ee76a35cc42d
advertise: false
characteristics:
- id: test_change_characteristic
uuid: 2a24b789-7a1b-4535-af3e-ee76a35cc11c
read: true
value:
data: "Initial"
string_encoding: utf-8
description: Change characteristic
descriptors:
- uuid: 0x4414
id: test_change_descriptor
value: "Initial descriptor value"
- uuid: 0x2312
value:
data: 0x12
type: uint16_t
on_write:
- lambda: |-
ESP_LOGD("BLE", "Descriptor received: %s from %d", std::string(x.begin(), x.end()).c_str(), id);
- uuid: 2a24b789-7a1b-4535-af3e-ee76a35cc99a
write: true
on_write:
then:
- lambda: |-
ESP_LOGD("BLE", "Characteristic received: %s from %d", std::string(x.begin(), x.end()).c_str(), id);
- ble_server.characteristic.set_value:
id: test_change_characteristic
value: !lambda 'return bytebuffer::ByteBuffer::wrap({0x00, 0x01, 0x02}).get_data();'
- ble_server.characteristic.notify:
id: test_notify_characteristic
- ble_server.descriptor.set_value:
id: test_change_descriptor
value: !lambda return bytebuffer::ByteBuffer::wrap({0x03, 0x04, 0x05}).get_data();