I was able to modify your configuration to successfully retrieve the temperature and humidity values.
Some notes on the data encoding:
- The first 4 bytes is the “Temperature” in Celsius as a float
- The next 4 bytes is the “Humidity” percentage as a float
- The “Wake” value has only output 0 when the dryer is off or 7 when it is running.
esp32_ble_tracker:
on_ble_manufacturer_data_advertise:
- manufacturer_id: "01AE"
then:
- lambda: |-
id(raw_sensor).publish_state(format_hex(x));
uint32_t temp = (x[0] + (x[1] << 8) + (x[2] << 16) + (x[3] << 24));
uint32_t hum = (x[4] + (x[5] << 8) + (x[6] << 16) + (x[7] << 24));
uint16_t shake = x[8] + (x[9] << 8);
uint8_t batt = x[10];
uint8_t wake = x[11];
id(temp_sensor).publish_state((*(float *) &temp));
id(hum_sensor).publish_state((*(float *) &hum));
id(shake_sensor).publish_state(shake);
id(batt_sensor).publish_state(batt);
id(wake_sensor).publish_state(wake);
sensor:
- platform: template
name: "SmartDry Temperature"
device_class: 'temperature'
unit_of_measurement: "°C"
accuracy_decimals: 4
id: temp_sensor
- platform: template
name: "SmartDry Humidity"
device_class: 'humidity'
unit_of_measurement: "%"
accuracy_decimals: 4
id: hum_sensor
- platform: template
name: "SmartDry Shake"
id: shake_sensor
- platform: template
name: "SmartDry Battery"
device_class: battery
id: batt_sensor
- platform: template
name: "SmartDry Awake"
id: wake_sensor
text_sensor:
- platform: template
name: "SmartDry Raw"
id: raw_sensor