You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32-C3 BLE标准ESS服务0x181A:如何正确发送25.63℃温度值?

BLE ESS服务温度值发送格式问题

环境信息

  • 硬件(BLE服务器):ESP32-C3-DevKitM-1
  • 移动应用(BLE客户端):nRF Connect
  • 示例代码:Gatt_Server_Service_Table
  • 开发环境:ESP-IDE

我需要实现BLE标准环境传感服务(ESS 0x181A)及其温度测量特征(0x2A1C)。当前遇到的问题是:如何以正确格式发送25.63℃这类浮点温度值?当我使用uint8_t ess_temperature[] = {0x00, 0x03, 0x0A, 0x00,0x00};时,客户端显示2563.00℃,但我需要显示25.63℃。

相关代码

enum{
ESS_SERVICE,

ESS_TEMPERATURE_CHAR,
ESS_TEMPERATURE_VALUE,
ESS_TEMPERATURE_CFG,

ESS_HUMIDITY_SERVICE,
ESS_HUMIDITY_VAL,
ESS_HUMIDITY_CFG,

ESS_IDX_NB,
};

// =============== ESS Service ===============
static const uint16_t GATTS_SERVICE_UUID_ESS                = 0x181A;
static const uint16_t GATTS_CHAR_UUID_ESS_TEMPERATURE       = 0x2A1C;
static const uint16_t GATTS_CHAR_UUID_ESS_HUMIDITY          = 0x2A6F;
//static const uint8_t ess_temperature[2]                   = {0x19, 0x05};     // = 25.5 degC
// static const uint8_t ess_temperature_ccc[2]              = {0x00, 0x00};
//static const uint8_t ess_humidity[2]                          = {0x0B, 0x05};     // = 11.5%
// static const uint8_t ess_humidity_ccc[2]                 = {0x00, 0x00};
uint8_t ess_temperature[5] = {0x00,0x41, 0x33, 0xB9, 0xD7};
static const uint16_t ess_humidity = 3556;     // nRF Connect App will divide this value by 100. For example, if we use 3654, App will show 36.54% humidity



static const esp_gatts_attr_db_t ess_gatt_db[ESS_IDX_NB] =
{
    [ESS_SERVICE]        =
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&primary_service_uuid, ESP_GATT_PERM_READ,
    sizeof(uint16_t), sizeof(GATTS_SERVICE_UUID_ESS), (uint8_t *)&GATTS_SERVICE_UUID_ESS}},

    // Temperature -------------------------------------------------
    [ESS_TEMPERATURE_CHAR]     =
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
    CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read}},

    [ESS_TEMPERATURE_VALUE] =
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&GATTS_CHAR_UUID_ESS_TEMPERATURE, ESP_GATT_PERM_READ,
    GATTS_DEMO_CHAR_VAL_LEN_MAX, sizeof(ess_temperature), (uint8_t *)&ess_temperature}},

    [ESS_TEMPERATURE_CFG]  =
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
    sizeof(uint16_t), sizeof(cccd_disable_notify_indicate), (uint8_t *)cccd_disable_notify_indicate}},

    // Humidity -------------------------------------------
    [ESS_HUMIDITY_SERVICE]      =
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
    CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read}},

    [ESS_HUMIDITY_VAL]  =
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&GATTS_CHAR_UUID_ESS_HUMIDITY, ESP_GATT_PERM_READ,
    GATTS_DEMO_CHAR_VAL_LEN_MAX, sizeof(ess_humidity), (uint8_t *)&ess_humidity}},

    [ESS_HUMIDITY_CFG]  =
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
    sizeof(uint16_t), sizeof(cccd_disable_notify_indicate), (uint8_t *)cccd_disable_notify_indicate}},
};

客户端显示截图

输入图片描述

内容的提问来源于stack exchange,提问作者Steven Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 23:32:03