-
-
Save MortenVinding/a513c0094d0df41a4425612257b3cabc to your computer and use it in GitHub Desktop.
| esphome: | |
| name: meater | |
| friendly_name: MEATER | |
| esp32: | |
| board: esp32dev | |
| #board: esp32-c3-devkitm-1 | |
| framework: | |
| #type: esp-idf | |
| type: arduino | |
| # Enable logging | |
| logger: | |
| #level: VERBOSE | |
| #level: VERY_VERBOSE | |
| # Enable Home Assistant API | |
| api: | |
| ota: | |
| password: "3e657a40432cc48a6b1b22d566b9eed8" | |
| wifi: | |
| ssid: !secret wifi_ssid | |
| password: !secret wifi_password | |
| # Enable fallback hotspot (captive portal) in case wifi connection fails | |
| ap: | |
| ssid: "Meater Fallback Hotspot" | |
| password: "1JX0qX8Co7KL" | |
| # Example configuration entry for finding | |
| # Service UUIDs and iBeacon UUIDs and identifiers | |
| #esp32_ble_tracker: | |
| ble_client: | |
| - mac_address: B8:1F:5E:1C:42:95 # Replace with your MEATER's mac address | |
| id: meater | |
| text_sensor: | |
| - platform: template | |
| name: "MEATER firmware" | |
| id: meater_firmware | |
| sensor: | |
| - platform: ble_client | |
| type: characteristic | |
| ble_client_id: meater | |
| name: "MEATER tip temperature" | |
| service_uuid: 'a75cc7fc-c956-488f-ac2a-2dbc08b63a04' | |
| characteristic_uuid: '7edda774-045e-4bbf-909b-45d1991a2876' | |
| icon: 'mdi:thermometer' | |
| unit_of_measurement: '°C' | |
| accuracy_decimals: 2 | |
| notify: true | |
| lambda: |- | |
| float tip_temp = (x[0] + (x[1] << 8) + 8.0) / 16.0; | |
| return tip_temp; | |
| - platform: ble_client | |
| type: characteristic | |
| ble_client_id: meater | |
| name: "MEATER ambient temperature" | |
| service_uuid: 'a75cc7fc-c956-488f-ac2a-2dbc08b63a04' | |
| characteristic_uuid: '7edda774-045e-4bbf-909b-45d1991a2876' | |
| icon: 'mdi:thermometer' | |
| unit_of_measurement: '°C' | |
| accuracy_decimals: 2 | |
| notify: true | |
| lambda: |- | |
| uint16_t tip = x[0] + (x[1] << 8); | |
| uint16_t ra = x[2] + (x[3] << 8); | |
| uint16_t oa = x[4] + (x[5] << 8); | |
| uint16_t min_val = 48; | |
| float ambient = (tip + std::max(0, (((ra - std::min(min_val, oa)) * 16 * 589) / 1487)) + 8.0) / 16; | |
| return ambient; | |
| - platform: ble_client | |
| type: characteristic | |
| ble_client_id: meater | |
| name: "MEATER battery level" | |
| service_uuid: 'a75cc7fc-c956-488f-ac2a-2dbc08b63a04' | |
| characteristic_uuid: '2adb4877-68d8-4884-bd3c-d83853bf27b8' | |
| icon: 'mdi:battery' | |
| unit_of_measurement: '%' | |
| notify: true | |
| lambda: |- | |
| uint16_t battery = (x[0] + x[1]) * 10; | |
| return (float)battery; | |
| - platform: ble_client | |
| type: characteristic | |
| ble_client_id: meater | |
| id: firmware | |
| service_uuid: '180A' | |
| characteristic_uuid: '00002a26-0000-1000-8000-00805f9b34fb' | |
| lambda: |- | |
| std::string data_string(x.begin(), x.end()); | |
| id(meater_firmware).publish_state(data_string.c_str()); | |
| return (float)x.size(); | |
| - platform: ble_client | |
| type: rssi | |
| ble_client_id: meater | |
| name: "MEATER RSSI" |
Hi,
Thanks for a good solution. Im trying to connect a Meater 2 Plus in the same way but I only see Meater firmware and RSSI. The tip temperature, ambient and battery level does not appear. Any idea what to do next? Do I need to change anything else than the MAC-adress?
Big thanks in advance...
Hi! Any findings on this? I have the same issue.
I had the same issue with my Meater SE.
Look at the esphome's logs, you'll see erros as "a75cc7fc-c956-488f-ac2a-2dbc08b63a04" service uiid isn't found.
Then based on this comment
One suggestion is to run the code below to scan for new devices.
# Example configuration entry for finding Service UUIDs, iBeacon UUIDs and identifiers esp32_ble_tracker: on_ble_advertise: - then: logger: level: VERY_VERBOSE
You can scan your BT devices, find your meater probe, and the exposed uiid.
On my side the working service uiid is "49141A23-307F-4E25-AD82-0A3F00D8B90B".
So from the above given config, I replaced the 3 "a75cc7fc-c956-488f-ac2a-2dbc08b63a04" by "49141A23-307F-4E25-AD82-0A3F00D8B90B", since I receive well the temperatures.
And i made another change to the default config too, addition of "device_class: TEMPERATURE" for the 2 temperatures sensors. Otherwise we can't select them on ha fields expecting a temperature.

Hi! Any findings on this? I have the same issue.