Completely new to ESPHome…can you recommend me a board that you used and where to buy? It’s all confusing me.
I personally use an ESP32 dev board, this one:
But it depends where you live and where you want to order. Just look for a shop in your country, where you can get maker stuff. Where do you come from? Maybe even Amazon has one of these, in Germany they do.
But in general, that’s the beauty of ESPHome, you can use nearly every ESP board. You just have to adjust the board type while creating your firmware. Take a look around in your country, and if are not sure, which board to use, post some links so others can take a look at.
When starting I would get an esp32 dev board with a usb connection. Easy to flash and easy to power. No soldering or wires to connect for this project
EDIT: a lot of boards are ultimately source from China and have crap components, if you buy from this guy they will be better quality QuinLED-ESP32 - quinled.info
@paddy0174 This is so Awesome. I have been trying with only mild success to integrate my Inkbird IBT-4XS into HA for a while. This connects my DIY bbq smoker to HA. I was using Inkbird_BLE2MQTT which used to work OK but recently wont connect to MQTT server. Your code worked first time!!! And has been up and running now for 24 hrs.
One question… I keep getting these weird signal dropouts. Like the connection is getting dropped and it the reports zero degrees. I tried removing the else statements in the esp32_ble_tracker lamba section but dropouts are still there. I have used ESPHome several times but I would still call myself a novice on its capabilities and am a user who needs a good “how to” to really get anything done.
Any advice on things to try to mitigate these dropouts? The devices are in the same small room btw so I dont think it is a range issue.
[22:23:53][D][sensor:121]: ‘iBBQ Temperature Probe 1’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:23:55][D][sensor:121]: ‘iBBQ Temperature Probe 3’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:23:56][D][esp32_ble_tracker:628]: Found device 7E:E3:11:8C:05:BA RSSI=-86
[22:23:56][D][esp32_ble_tracker:649]: Address Type: RANDOM
[22:23:56][D][esp32_ble_tracker:653]: TX Power: 2
[22:23:56][D][sensor:121]: ‘iBBQ Temperature Probe 2’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:24:22][I][ble_adv:062]: New BLE device
[22:24:22][I][ble_adv:063]: address: B4:BC:7C:30:C6:76
[22:24:22][I][ble_adv:064]: name: iBBQ
[22:24:22][I][ble_adv:065]: Advertised service UUIDs:
[22:24:22][I][ble_adv:068]: - 0xFFF0
[22:24:22][I][ble_adv:071]: Advertised service data:
[22:24:22][I][ble_adv:077]: Advertised manufacturer data:
[22:24:22][I][ble_adv:080]: - 0x0000: (00.00.B4.BC.7C.30.C6.76.D2.00.D2.00.D2.00.D2.00 (16))
[22:24:22][I][ble_data:089]: - 21.000000 21.000000
[22:24:22][D][sensor:121]: ‘iBBQ Temperature Probe 1’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:24:22][D][sensor:121]: ‘iBBQ Temperature Probe 2’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:24:22][D][sensor:121]: ‘iBBQ Temperature Probe 3’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:24:22][D][sensor:121]: ‘iBBQ Temperature Probe 4’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:24:24][I][ble_adv:062]: New BLE device
[22:24:24][I][ble_adv:063]: address: B4:BC:7C:30:C6:76
[22:24:24][I][ble_adv:064]: name: iBBQ
[22:24:24][I][ble_adv:065]: Advertised service UUIDs:
[22:24:24][I][ble_adv:068]: - 0xFFF0
[22:24:24][I][ble_adv:071]: Advertised service data:
[22:24:24][I][ble_adv:077]: Advertised manufacturer data:
[22:24:24][I][ble_adv:080]: - 0x0000: (00.00.B4.BC.7C.30.C6.76.D2.00.D2.00.D2.00.D2.00 (16))
[22:24:24][I][ble_data:089]: - 21.000000 21.000000
[22:24:24][D][sensor:121]: ‘iBBQ Temperature Probe 1’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:24:24][D][sensor:121]: ‘iBBQ Temperature Probe 2’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:24:24][D][sensor:121]: ‘iBBQ Temperature Probe 3’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:24:24][D][sensor:121]: ‘iBBQ Temperature Probe 4’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:24:50][D][esp32_ble_tracker:628]: Found device A4:C1:38:B9:76:E9 RSSI=-84
[22:24:50][D][esp32_ble_tracker:649]: Address Type: PUBLIC
[22:24:50][D][esp32_ble_tracker:651]: Name: ‘ATC_B976E9’
[22:24:50][D][sensor:121]: ‘iBBQ Temperature Probe 4’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:24:53][D][sensor:121]: ‘iBBQ Temperature Probe 1’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:24:55][D][sensor:121]: ‘iBBQ Temperature Probe 3’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:24:56][D][sensor:121]: ‘iBBQ Temperature Probe 2’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:25:03][I][ble_adv:062]: New BLE device
[22:25:03][I][ble_adv:063]: address: B4:BC:7C:30:C6:76
[22:25:03][I][ble_adv:064]: name: iBBQ
[22:25:03][I][ble_adv:065]: Advertised service UUIDs:
[22:25:03][I][ble_adv:068]: - 0xFFF0
[22:25:03][I][ble_adv:071]: Advertised service data:
[22:25:03][I][ble_adv:077]: Advertised manufacturer data:
[22:25:03][I][ble_adv:080]: - 0x0000: (00.00.B4.BC.7C.30.C6.76.D2.00.D2.00.D2.00.D2.00 (16))
[22:25:03][I][ble_data:089]: - 21.000000 21.000000
[22:25:03][D][sensor:121]: ‘iBBQ Temperature Probe 1’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:25:03][D][sensor:121]: ‘iBBQ Temperature Probe 2’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:25:03][D][sensor:121]: ‘iBBQ Temperature Probe 3’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:25:03][D][sensor:121]: ‘iBBQ Temperature Probe 4’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:25:50][D][sensor:121]: ‘iBBQ Temperature Probe 4’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:25:53][D][sensor:121]: ‘iBBQ Temperature Probe 1’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:25:55][D][sensor:121]: ‘iBBQ Temperature Probe 3’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:25:56][D][sensor:121]: ‘iBBQ Temperature Probe 2’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:26:03][D][sensor:121]: ‘iBBQ Temperature Probe 1’: Sending state 0.00000 °C with 0 decimals of accuracy
[22:26:03][D][sensor:121]: ‘iBBQ Temperature Probe 2’: Sending state 0.00000 °C with 0 decimals of accuracy
[22:26:03][D][sensor:121]: ‘iBBQ Temperature Probe 3’: Sending state 0.00000 °C with 0 decimals of accuracy
[22:26:03][D][sensor:121]: ‘iBBQ Temperature Probe 4’: Sending state 0.00000 °C with 0 decimals of accuracy
[22:26:12][D][esp32_ble_tracker:180]: Starting scan…
[22:26:18][D][esp32_ble_tracker:628]: Found device 7E:E3:11:8C:05:BA RSSI=-86
[22:26:18][D][esp32_ble_tracker:649]: Address Type: RANDOM
[22:26:18][D][esp32_ble_tracker:653]: TX Power: 2
[22:26:21][D][esp32_ble_tracker:628]: Found device 68:72:C3:C3:1C:05 RSSI=-87
[22:26:21][D][esp32_ble_tracker:649]: Address Type: PUBLIC
[22:26:23][D][esp32_ble_tracker:628]: Found device 70:18:46:8F:FB:84 RSSI=-94
[22:26:23][D][esp32_ble_tracker:649]: Address Type: RANDOM
[22:26:23][D][esp32_ble_tracker:653]: TX Power: 2
[22:26:50][D][sensor:121]: ‘iBBQ Temperature Probe 4’: Sending state 0.00000 °C with 0 decimals of accuracy
[22:26:51][I][ble_adv:062]: New BLE device
[22:26:51][I][ble_adv:063]: address: B4:BC:7C:30:C6:76
[22:26:51][I][ble_adv:064]: name: iBBQ
[22:26:51][I][ble_adv:065]: Advertised service UUIDs:
[22:26:51][I][ble_adv:068]: - 0xFFF0
[22:26:51][I][ble_adv:071]: Advertised service data:
[22:26:51][I][ble_adv:077]: Advertised manufacturer data:
[22:26:51][I][ble_adv:080]: - 0x0000: (00.00.B4.BC.7C.30.C6.76.D2.00.D2.00.D2.00.D2.00 (16))
[22:26:51][I][ble_data:089]: - 21.000000 21.000000
[22:26:51][D][sensor:121]: ‘iBBQ Temperature Probe 1’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:26:51][D][sensor:121]: ‘iBBQ Temperature Probe 2’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:26:51][D][sensor:121]: ‘iBBQ Temperature Probe 3’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:26:51][D][sensor:121]: ‘iBBQ Temperature Probe 4’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:26:53][D][sensor:121]: ‘iBBQ Temperature Probe 1’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:26:55][D][sensor:121]: ‘iBBQ Temperature Probe 3’: Sending state 21.00000 °C with 0 decimals of accuracy
[22:26:56][D][sensor:121]: ‘iBBQ Temperature Probe 2’: Sending state 21.00000 °C with 0 decimals of accuracy
The dropouts are due to the timer expiring before the next BLE broadcast comes in. I had to change the timer to 120s and mode: restart. My unit seems to send the broadcast between 90seconds and 140 seconds so if the timer expires before it comes in the temp goes to 0C. Also without the mode restart the time will expire and often did right after another packet came in.
I now have my ESP32 with a PID controlling a servo so I should be able to have it control the air damper on the smoker to control the temperature.
Now if they will add writing to BLE characteristics I’ll change to using the notify for the temperature characteristic so I will get updates more often. Anyone know where in the future writing to characteristics might be?
Thank you! Worked just fine with IBT-4XS.
mac adress of Inkbird can be found with apps like nRF Connect.
Finished my interface. Now I have everything I want from wireless thermometer.
Heavy based on this:
and this:
Truly fantastic, it works perfectly. Can the sampling rate be increased?
Nice project.
Any chance you can share your YAML for your dashboard?
Oh yes that would be awesome !
Thank you so much paddy0174 for this project ! I’ll try it !
sure. Here is lovelace part:
- icon: mdi:grill
title: Grill
cards:
- type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: vertical-stack
cards:
- type: gauge
name: Probe 1
entity: sensor.ibbq_temperature_probe_1
needle: true
min: 0
max: 300
severity:
green: 93
yellow: 130
red: 200
- type: glance
entities:
- entity: sensor.target_alert_temp_probe_1
show_name: false
show_icon: false
- type: vertical-stack
cards:
- type: gauge
name: Probe 2
entity: sensor.ibbq_temperature_probe_2
needle: true
min: 0
max: 120
severity:
green: 0
yellow: 75
red: 97
- type: glance
entities:
- entity: sensor.target_alert_temp_probe_2
show_name: false
show_icon: false
- type: horizontal-stack
cards:
- type: vertical-stack
cards:
- type: gauge
name: Probe 3
entity: sensor.ibbq_temperature_probe_3
needle: true
min: 0
max: 120
severity:
green: 0
yellow: 75
red: 97
- type: glance
entities:
- entity: sensor.target_alert_temp_probe_3
show_name: false
show_icon: false
- type: vertical-stack
cards:
- type: gauge
name: Probe 4
entity: sensor.ibbq_temperature_probe_4
needle: true
min: 0
max: 120
severity:
green: 0
yellow: 75
red: 97
- type: glance
entities:
- entity: sensor.target_alert_temp_probe_4
show_name: false
show_icon: false
- type: vertical-stack
cards:
- type: vertical-stack
cards:
- type: entities
title: Setting Grill Targets
show_header_toggle: false
entities:
- entity: input_number.grill_alert_low
name: Low
- entity: input_number.grill_alert_high
name: High
- type: vertical-stack
cards:
- type: entities
title: Setting Probe Targets
show_header_toggle: false
entities:
- entity: input_number.grill_probe_2_target
name: Probe 2
- entity: input_number.grill_probe_3_target
name: Probe 3
- entity: input_number.grill_probe_4_target
name: Probe 4
- type: glance
columns: 1
entities:
- entity: automation.gril_uvedomleniia
tap_action:
action: toggle
show_name: false
show_icon: false
- type: vertical-stack
cards:
- type: vertical-stack
cards:
- type: entities
title: Setting graph timing
show_header_toggle: false
entities:
- entity: input_number.grill_graph_time
name: Hours to show
- type: "custom:config-template-card"
variables:
- "states['input_number.grill_graph_time'].state"
entities:
- input_number.grill_graph_time
card:
type: custom:mini-graph-card
name: BBQ
icon: mdi:grill
hours_to_show: "${vars[0]}"
hour24: true
points_per_hour: 30
show:
legend: true
labels: true
labels_secondary: true
entities:
- entity: sensor.ibbq_temperature_probe_1
name: Grill temperature
- sensor.ibbq_temperature_probe_2
- sensor.ibbq_temperature_probe_3
- sensor.ibbq_temperature_probe_4
thats configuration.yaml
- platform: template
sensors:
target_alert_temp_probe_1:
friendly_name: "Grill Temp Alert"
value_template: >-
{% if (states.sensor.ibbq_temperature_probe_1.state | int) < (states.input_number.grill_alert_low.state | int) or (states.sensor.ibbq_temperature_probe_1.state | int) > (states.input_number.grill_alert_high.state | int) %}
Alert
{% else %}
Normal
{% endif %}
target_alert_temp_probe_2:
friendly_name: "Probe 2 Target Alert"
value_template: >-
{% if (states.sensor.ibbq_temperature_probe_2.state | int) >= (states.input_number.grill_probe_2_target.state | int) %}
Alert
{% else %}
Normal
{% endif %}
target_alert_temp_probe_3:
friendly_name: "Probe 3 Target Alert"
value_template: >-
{% if (states.sensor.ibbq_temperature_probe_3.state | int) >= (states.input_number.grill_probe_3_target.state | int) %}
Alert
{% else %}
Normal
{% endif %}
target_alert_temp_probe_4:
friendly_name: "Probe 4 Target Alert"
value_template: >-
{% if (states.sensor.ibbq_temperature_probe_4.state | int) >= (states.input_number.grill_probe_4_target.state | int) %}
Alert
{% else %}
Normal
{% endif %}
grill_alert_low:
friendly_name: "Grill Low Temp"
unit_of_measurement: "ºC"
value_template: "{{ (((states('input_number.grill_alert_low') | float)))|round(1)}}"
grill_alert_high:
friendly_name: "Grill High Temp"
unit_of_measurement: "ºC"
value_template: "{{ (((states('input_number.grill_alert_high') | float)))|round(1)}}"
grill_probe_2_target:
friendly_name: "Probe 2 Target Temp"
unit_of_measurement: "ºC"
value_template: "{{ (((states('input_number.grill_probe_2_target') | float)))|round(1)}}"
grill_probe_3_target:
friendly_name: "Probe 3 Target Temp"
unit_of_measurement: "ºC"
value_template: "{{ (((states('input_number.grill_probe_3_target') | float)))|round(1)}}"
grill_probe_4_target:
friendly_name: "Probe 4 Target Temp"
unit_of_measurement: "ºC"
value_template: "{{ (((states('input_number.grill_probe_4_target') | float)))|round(1)}}"
input_number:
grill_alert_low:
name: Grill Low Temp
initial: 65
min: 18
max: 260
step: 1
grill_alert_high:
name: Grill High Temp
initial: 170
min: 18
max: 260
step: 1
grill_probe_2_target:
name: Probe 2 Target Temp
initial: 70
min: 15
max: 125
step: 1
grill_probe_3_target:
name: Probe 3 Target Temp
initial: 70
min: 15
max: 125
step: 1
grill_probe_4_target:
name: Probe 4 Target Temp
initial: 70
min: 15
max: 125
step: 1
grill_graph_time:
name: Hours to show
initial: 5
min: 1
max: 24
step: 1
Thanks. I couldn’t figure out the glance portion.
Thank you for the code.
I get a message error (fyi: I’m using only 2 probes)
I installed the config template card through HACS, and checked that the file is present in /config/www/community/config-template-card/config-template-card.js
Another point:
I added sensor:
at the beginning of your code in the configuration.yaml. Am I right ?
I can’t wait to use this project in my garden
If you have only two probes please remove half of the code from lovelace and config sections.
About missing card: check that Configuration - Dashboard - Resources. I’ve included resources with little different path maybe that will work:
lovelace:
mode: yaml
resources:
- url: /local/community/config-template-card/config-template-card.js
type: module
You can’t have two sensor sections so you add everything to your existing sensors section.
It appears you have an automation tied to the “Off” button. I am curious what that automation does?
Thank you.
If first probe (grill temp) goes out of range or other 3 reach goal i’l get notification.
Thank you so much. This interface is awesome, I cannot wait to get it up and running. I have a Weber iGrill connect to a raspberri pi that is sending mqtt to HA. One problem I have is, the temp in my interface shows up as UNKNOWN when I hgave my pi powered off. What I would like it to show, is a default of 0 degrees. Would you know how I can put code in my configuration to default to 0 degrees if there is no MQTT transactions? It causes problems with the gauges when non-numeric data is present(UNKNOWN)
sensor:
- platform: mqtt
state_topic: "bbq/grill/probe1"
name: "Probe 1"
qos: 0
unit_of_measurement: "°F"
Thank you so much.
It works.
Only the notification is missing for the lovelace side.
On the esp side, I get huge dropouts, like @mazcoder have.
try use
value_template
welcome. For notifications you need to make Notification automation (i’m using telegram bot for notifications).
as of dropouts try @AlfaElan solution, works pretty stable:
script:
- id: timer
mode: restart
then:
- delay: 120s