Skip to content
This repository has been archived by the owner on Dec 12, 2022. It is now read-only.

Pulse 2000 compatible #14

Closed
PaulAntonDeen opened this issue Apr 9, 2020 · 15 comments
Closed

Pulse 2000 compatible #14

PaulAntonDeen opened this issue Apr 9, 2020 · 15 comments
Labels
enhancement New feature or request

Comments

@PaulAntonDeen
Copy link

Awesome work, thank!
I have a Weber Pulse 2000 electric grill which has the temp probes built in. What data do I need to capture from my grill to integrate it in this code and make it work?

@runestone74
Copy link

If you have an Android device you can scan for UUID codes with this app https://play.google.com/store/apps/details?id=com.macdom.ble.blescanner

@runestone74
Copy link

runestone74 commented Apr 19, 2020

My guess is that these two (or one) lines is needed for the internal temperature probe in igrill.py
#Pulse 1000
PROBE5_TEMPERATURE = btle.UUID('06ef000A-2e06-4b79-9e33-fce2c42805ec')
PROBE5_THRESHOLD = btle.UUID('06ef000B-2e06-4b79-9e33-fce2c42805ec')

#Pulse 2000? havent seen these actual values, just an educated guess with C and D
PROBE6_TEMPERATURE = btle.UUID('06ef000C-2e06-4b79-9e33-fce2c42805ec')
PROBE7_THRESHOLD = btle.UUID('06ef000D-2e06-4b79-9e33-fce2c42805ec')

@PaulAntonDeen
Copy link
Author

The 4 probes are the same UUID as the standard igrill.

The main heating element temperatures and setpoint are communicated on UUID 6c91000a-58dc-41c7-943f-518b278ceaaa. The return example is 20 30 32 30 20 30 31 35 20 30 30 30 20 30 30 30 which can be converted HextoASCII into "020 015 000 000" which can be read as actual temp left element, right element. Temp setpoint left right.

Authentication is not working and thus I cannot read the probe temperatures so I need to figure out how to debug that, any tips?

@bendikwa
Copy link
Owner

Hi
It would be cool to be able to support the pulse 2000, unfortunately, I don’t think I can help much. The original authentication code is from the first fork, https://github.com/onlywade/igrill and the updated authentication method was contributed by kins-dev: https://blog.kins.dev/2019/04/igrill-device-support-for-igrill-smoker.html
So other than turning the debug logging on, and trying to see where it fails, I don’t have any good ideas.

@bendikwa bendikwa added the enhancement New feature or request label Apr 23, 2020
@PaulAntonDeen
Copy link
Author

Yeah I'm not experienced with Python so I'm figuring it out as I go through here. It gets stuck after sending key of all 0's (that is a message with debug on). It just never moves past that. The code i'm using for now is just exactly your code with this for the device.yaml:

`
devices:

  • name: 'Pulse2000' # Unique name of the device
    type: 'igrill_v3' # Supported devices: igrill_mini, igri$
    address: '70:91:8F:7B:1A:6C' # The MAC of the device
    topic: 'temperature/outside' # The topic to publish on. will have n$
    interval: 20 # Polling interval
    `

Can you help modify the code to check the extra UUID for the central heating zones actual temperature and setpoints? Also if we specify the pulse device we can disable the battery check.

I have ordered a BLE sniffer (Adafruit Bluefruit) so maybe I can use that to figure out the authentication method.

@bendikwa
Copy link
Owner

That sound like the same issue as "Getting stuck at authenticating"

Have you tried to use bluetoothctl to pair the iGrill first?
Or the trick in the readme: https://github.com/bendikwa/igrill#troubleshooting

@PaulAntonDeen
Copy link
Author

Commenting out that line in the udev rules fixed the authentication, now to figure out how to read that main temperature :)

@PaulAntonDeen
Copy link
Author

Got it to work :)
I will work on prettying up the code and then create a pull request

@PaulAntonDeen
Copy link
Author

Pull request #16

@bendikwa
Copy link
Owner

I have merged the PR to https://github.com/bendikwa/igrill/tree/pulse2000_support and refactored the code a bit. Can you test to see that it still works?

Does the Pulse 2000 have a battery indicator? Or should we remove that?

-Bendik

@bendikwa bendikwa reopened this Apr 26, 2020
@PaulAntonDeen
Copy link
Author

That code looks much nicer, thanks :)
It does not have a battery but will report 100% whenever read, so it is safe to read. Just ignore it on the MQTT sensor level in HA.
I will test it out today.

@PaulAntonDeen
Copy link
Author

Tested, working great!
You want to add this to the readme as an example of how to add the sensors in Home Assistant:

`
sensor:

  • platform: mqtt
    state_topic: "temperature/outside/Pulse 2000/probe1"
    name: "P2000 Probe 1"
    qos: 0
    unit_of_measurement: "ºC"

  • platform: mqtt
    state_topic: "temperature/outside/Pulse 2000/probe2"
    name: "P2000 Probe 2"
    qos: 0
    unit_of_measurement: "ºC"

  • platform: mqtt
    state_topic: "temperature/outside/Pulse 2000/probe3"
    name: "P2000 Probe 3"
    qos: 0
    unit_of_measurement: "ºC"

  • platform: mqtt
    state_topic: "temperature/outside/Pulse 2000/probe4"
    name: "P2000 Probe 4"
    qos: 0
    unit_of_measurement: "ºC"

  • platform: mqtt
    state_topic: "temperature/outside/Pulse 2000/heating_element"
    name: "P2000 Heating element"
    qos: 0

  • platform: template
    sensors:
    p2000_left_element_actual:
    value_template: "{{ states('sensor.p2000_heating_element').split(' ')[1]|int}}"
    unit_of_measurement: 'ºC'
    icon_template: mdi:grill
    p2000_right_element_actual:
    value_template: "{{ states('sensor.p2000_heating_element').split(' ')[2]|int}}"
    unit_of_measurement: 'ºC'
    icon_template: mdi:grill
    p2000_left_element_setpoint:
    value_template: "{{ states('sensor.p2000_heating_element').split(' ')[3]|int}}"
    unit_of_measurement: 'ºC'
    icon_template: mdi:grill
    p2000_right_element_setpoint:
    value_template: "{{ states('sensor.p2000_heating_element').split(' ')[4]|int}}"
    unit_of_measurement: 'ºC'
    icon_template: mdi:grill
    `

@PaulAntonDeen
Copy link
Author

On a seperate thought, since it only publishes a probe temp when it is connected it means that the non-connected probe's stay at the temperature they had the last time they were connected making it harder to see which are reporting. Should we tweak the temp reporting from the probes to just send a 0 or . when the 65356 value is read from the probes?

@bendikwa
Copy link
Owner

Great! I'll merge the Pulse 2000 support to master.

Regarding your two other suggestions:

  1. I think that the Home Assistant information belongs in the Home Assistant forum. I dont actually use Home Assistant, so I will not be able to help with it. ;-)

  2. On the subject of non-connected probes, I guess it is the same as changing probe, state of the entity is not changing to zero or to 'unknown'.  #6 ? I have actually just pushed an attempt on a fix for this to a branch, hope to get it merged to master today.

@bendikwa
Copy link
Owner

Merged to master

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants