esphome / issues

Issue Tracker for ESPHome
https://esphome.io/
290 stars 36 forks source link

HHCCJCY01 - "service data has no DATA flag" #1416

Closed Jc2k closed 4 years ago

Jc2k commented 4 years ago

Operating environment/Installation (Hass.io/Docker/pip/etc.):

macOS Catalina / pip

ESP (ESP32/ESP8266, Board/Sonoff):

ESP32, Huzzah32

ESPHome version (latest production, beta, dev branch)

Latest stable, latest beta, and lastest commit

Affected component:

Xiaomi HHCCJCY01

https://esphome.io/components/sensor/xiaomi_hhccjcy01.html

Description of problem:

I have 2 HHCCJCY01 that work fine. A 3rd does not. I would see something like this:

[11:07:50][D][esp32_ble_tracker:544]: Found device C4:7C:8D:XX:XX:XX RSSI=-90
[11:07:50][D][esp32_ble_tracker:565]:   Address Type: PUBLIC
[11:07:50][D][esp32_ble_tracker:567]:   Name: 'Flower care'

But it would never parse/emit any sensor values.

Problem-relevant YAML-configuration entries:

  - platform: xiaomi_hhccjcy01
    mac_address: 'C4:7C:8D:xx:xx:xx'
    temperature:
      name: "Plant Temperature"
    moisture:
      name: "Plant Moisture"
    illuminance:
      name: "Plant Illuminance"
    conductivity:
      name: "Plant Soil Conductivity"

Logs (if applicable):

I managed to compare a working Flower care with a non working one in very verbose mode. A non working one:

[09:34:11][VV][esp32_ble_tracker:282]: Parse Result:
[09:34:11][VV][esp32_ble_tracker:299]:   Address: C4:7C:8D:XX:XX:XX (PUBLIC)
[09:34:11][VV][esp32_ble_tracker:301]:   RSSI: -80
[09:34:11][VV][esp32_ble_tracker:302]:   Name: 'Flower care'
[09:34:11][VV][esp32_ble_tracker:310]:   Ad Flag: 6
[09:34:11][VV][esp32_ble_tracker:313]:   Service UUID: FE:FE95
[09:34:11][VV][esp32_ble_tracker:319]:   Service data:
[09:34:11][VV][esp32_ble_tracker:320]:     UUID: FE:FE95
[09:34:11][VV][esp32_ble_tracker:321]:     Data: 31.02.98.00.00.XX.XX.XX.8D.7C.C4.0D (12)
[09:34:11][VV][esp32_ble_tracker:324]: Adv data: 02.01.06.03.02.95.FE.0F.16.95.FE.31.02.98.00.00.XX.XX.XX.8D.7C.C4.0D.0C.09.46.6C.6F.77.65.72.20.63.61.72.65 (36)

And a working one:

[09:39:53][VV][esp32_ble_tracker:282]: Parse Result:
[09:39:53][VV][esp32_ble_tracker:299]:   Address: C4:7C:8D:XX:XX:XX (PUBLIC)
[09:39:53][VV][esp32_ble_tracker:301]:   RSSI: -89
[09:39:53][VV][esp32_ble_tracker:302]:   Name: 'Flower care'
[09:39:53][VV][esp32_ble_tracker:310]:   Ad Flag: 6
[09:39:53][VV][esp32_ble_tracker:313]:   Service UUID: FE:FE95
[09:39:53][VV][esp32_ble_tracker:319]:   Service data:
[09:39:53][VV][esp32_ble_tracker:320]:     UUID: FE:FE95
[09:39:53][VV][esp32_ble_tracker:321]:     Data: 71.20.98.00.50.XX.XX.XX.8D.7C.C4.0D.09.10.02.D7.01 (17)
[09:39:53][VV][esp32_ble_tracker:324]: Adv data: 02.01.06.03.02.95.FE.14.16.95.FE.71.20.98.00.50.XX.XX.XX.8D.7C.C4.0D.09.10.02.D7.01.0C.09.46.6C.6F.77.65.72.20.63.61.72.65 (41)

Additional information and things you've tried:

I edited the xiamo cpp code and switched VV logs to just debug logs to make things easier to work with. Then i added extra logs to try and see what in particular was going wrong.

With that logging turned on i first saw:

parse_xiaomi_header(): service data has no DATA flag.

I tried bypassing that check as a total hail mary and started getting duplicate packet errors as well.

Jc2k commented 4 years ago

Upgrading firmware (2.7.0 -> 3.2.2) seems to have resolved.