Vevor diesel heater control - development in progress

I feel like it should be possible to send unavailable if there’s no update from the heater for X minutes. I’ll play around with it when I get a chance.

Thank you for this! Tried a couple other versions and this works well with my Vevor 8K with BLE. All the entities work and matches the onboard controller when in use. Using an esp32 dev (32 pin board), setup via EspHome 2025.10.4 addon in Home Assistant 2025.10.4. THank you for sharing this!

I’ve updated the code I shared on github, with a bunch of fixes:

  • Reads the current level / temp setting.
  • Fixes various issues with changing between modes.
  • Fixes automatic mode if the device is in fahrenheit (sadly I had to normalize everything to celsius for now, still trying to figure out the best way to manage this).

As for setting the time, I’ve made some progress, but wanted to fix the core control / feedback issues first.

Please tell me what controller you’re using for your heater. I’d like to buy the same one on AliExpress so I can use your add-on. I currently have a Mudiro with a color LCD, and the add-on detects the controller, but nothing works.

I have this one and everything works
https://pl.aliexpress.com/item/1005008040457444.html?gatewayAdapt=glo2pol

This is now implemented, along with every other setting the app exposes. The firmware provides no way (that I can find) to read the time, so setting the time is one way only; thus it shows up as a simple button that sets the time using home assistants clock.

Hi Andrew, it is working very good - good job !!! Thank you very much. I hope it will be posiible to synchro time with ntp server but right now (synchro with HA) is all OK. Thank you again - Adam

Hi All, after testing again I’ve modified ble_client section in yaml to automatic set time on connecting to API:

ble_client:
  - mac_address: ${heater_mac}
    id: heater_ble    
    on_connect:
      - logger.log:  "BLE connected to heater — waiting for telemetry"
# Set time on BLE connect
      - delay: 2s    
      - ble_client.ble_write:
          id: heater_ble
          service_uuid: "0000FFE0-0000-1000-8000-00805F9B34FB"
          characteristic_uuid: "0000FFE1-0000-1000-8000-00805F9B34FB"
          value: !lambda |-
            auto t = id(ha_time).now();
            auto payload = heater_ble_payload_16(HeaterCommand::SET_CURRENT_TIME, t.hour * 60 + t.minute);
            ESP_LOGD("BLE", "setting time: %s", format_hex_pretty(payload).c_str());
            return payload;

Please check - I’m not yaml specialist but hope it will help.

BR- Adam

PS. Compiled for ESP32-S3 ZERO with ESPHome 2025.12.05 / ESP-IDF
PS. Time synchronisation with NTP also working.

Can you please share your PWM library? I have tested it with support of chat gpt. But i cant control it only listen communication

Hey, I also found out that my controller uses PWM. Can you support us and help us integrate the heating into Home Assistant?

I have the CY-32 heating system.

Thank you very much.

Hi everyone,

I’m the author of the Bruciatore-Ble code that some of you have used as a starting point for your implementations. I wanted to share a discovery that might be useful for further development efforts.

I’ve found that it’s possible to communicate with the VEVOR diesel heater using the ble-serial library:

Setup:

bash

ble-serial -d 21:47:08:1A:B1:1E

After establishing the connection, serial communication becomes available at 4800 baud through /tmp/ttyBLE, allowing you to send various commands directly.

Why this might be helpful:

  • Provides an alternative approach to BLE communication
  • Makes it easier to experiment with raw serial commands
  • Could help reverse-engineer the command protocol
  • Simpler testing without writing custom BLE code
  • Might complement the work already done with Bruciatore-Ble

Has anyone else tried this approach? I’m happy to run tests and share any command/response data that might help with the integration development.