[FLASHED] Tuya BHT-006 WiFi Thermostat

Hey @w00zy
thank you for your post.

I am wondering, since you didn’t mention it specifically, if version U1 could also be compatible? That’s the one I got when bought it from Aliexpress:


https://es.aliexpress.com/item/1005005650680212.html?srcSns=sns_Copy&spreadType=socialShare&bizType=ProductDetail&social_params=60467701188&aff_fcid=323eca376a4b4b7eb34d288f30045252-1712242030618-09202-_ExYUOQd&tt=MG&aff_fsk=_ExYUOQd&aff_platform=default&sk=_ExYUOQd&aff_trace_key=323eca376a4b4b7eb34d288f30045252-1712242030618-09202-_ExYUOQd&shareId=60467701188&businessType=ProductDetail&platform=AE&terminal_id=0057b8b2a9304b09872268c3c916efe0&afSmartRedirect=y

The tuya cloudcutter+libretiny so I’d appreciate it if I could be 100% sure before embarking on this adventure of flashing it :smiley:

@TimelessNL yes, they do burn-in over time. I basically have the screen off all the time. I did read over the internet that more and more people got burn-in issues after the 2 months mark too. So I just have the display off all the time and if I want to change anything I just press a tactile button and it turns on.

Cheers,

I created a service that could send arbitrary UART messages to the device, and fabricated two messages. I was able to light up the sun, and the rain icon on top of the device.
I’m planning to create a UART button or switch to be able to control the weather leds from HA.

These are my fabricated UART messages:

By the way, I also noticed, this message:

"w.humidity\x0Ew.conditionNum\x05w.uvi\vw.windSpeedeU\xAA\x034\x00\x01\x03:"

This means that MCU is interested in the following weather data:

  • humidiy
  • conditionNum (I used this for the weather icons)
  • uvi (UV index)
  • windSpeed

Maybe they can be used to display some other kind of information…

Hi there,

So I’ve recently need to buy a new BHT-002-GALW. All my previous devices I managed to flash OTA with fashberg/WThermostatBeca.

This new Tuya device has a WBR3 chip, which led me to your post.

I have been trying to flash using tuya-cloudcutter but devices listed are only the BHT-002-GB.

I was hoping of course it would work with the BHT-002-GA, but am not managing.

Just wondering if you or anyone else might have any tip.

Thanks,

Excuse me, please tell me how did you manage to flash the thermostat? Is there any instruction?

I was able to enter the programming mode. but it is necessary to remove the WBR3 module. There are connection points under it.

Hi,

There any esphome config example for bht-6000ga ? Should I use bk72xx ou ESP8266? Which board should I use?

Thanks,

Hello,

Do you know if there is a mean to use this thermostat mainly as wall panel display and not use the internal thermometer ?
Showing a temperature from home assistant and controlling a climate device from home assistant

What I show in the esp code is that we have only access to the tuya managed climate entity so I think it’s not really possible but maybe I’m wrong ?

select:
  - platform: template
    name: Weather icon
    id: ${device_name}_weather
    icon: mdi:sun-wireless-outline
    entity_category: config
    update_interval: never
    options:
      - Sunny
      - Cloudy
      - Rainy
      - Snowy
    lambda: |-
      std::string option = id(homeassistant_weather).state;
      if (option == "unknown" || option == "unavailable" || option.empty()) {
        return std::string("Cloudy"); 
      }
      return option; 
    set_action:
      then:
      - lambda: |-
          std::vector<uint8_t> command = {
            0x55,0xAA,0x00,0x21,0x00,0x40,0x01,0x06,0x77,0x2E,0x74,0x65,0x6D,0x70,0x00,0x04,0x00,0x00,0x00,0x0F,0x0A,0x77,0x2E,0x68,0x75,0x6D,0x69,0x64,0x69,0x74,0x79,0x00,0x04,0x00,0x00,0x00,0x17,0x06,0x77,0x2E,0x70,0x6D,0x32,0x35,0x00,0x04,0x00,0x00,0x00,0x1B,0x0E,0x77,0x2E,0x63,0x6F,0x6E,0x64,0x69,0x74,0x69,0x6F,0x6E,0x4E,0x75,0x6D,0x01
          };
          auto value = x.c_str();
          if (strcmp("Sunny", value) == 0) {
            command.push_back(0x03);
            command.insert(command.end(), {0x31,0x32,0x30,0x5B});
          } else if (strcmp("Cloudy", value) == 0) {
            command.push_back(0x03);
            command.insert(command.end(), {0x31,0x32,0x39,0x64});
          } else if (strcmp("Rainy", value) == 0) {
            command.push_back(0x03);
            command.insert(command.end(), {0x31,0x31,0x31,0x5B});
          } else if (strcmp("Snowy", value) == 0) {
            command.push_back(0x03);
            command.insert(command.end(), {0x31,0x30,0x34,0x5D});
          }
          for (uint8_t byte : command) {
            id(uart_bus).write_byte(byte);
          }