Be Smart, Go Local.

Moes ZigBee Smart Thermostat BHT-002

AliExpress Reviews: Moes ZigBee Smart Thermostat BHT-002. Good looking, easy to install, packed with features and compatible with Home Assistant!

On our AliExpress Reviews channel, we test many devices from the Moes brand. This is because as far as cheap smart home hardware goes, most of them turned out to be of good build, solid quality and will not break your bank. Today we are looking at a smart thermostat sold by Moes, the BHT-002.

As usual, we are going to pry it open, check the quality of the components, integrate it in Home Assistant and talk about its pros and cons. Let’s get to it!

Technical Specification

  • Sensor: NTC3950
  • Accuracy: ±1°C
  • Power Consumption: < 1.5W
  • Timing Error: <1%
  • Power Supply: 95 ~ 240VAC, 50 ~60Hz
  • Current Load:
    • 3A(water heating, water/gas boiler),
    • 16A(electric heating)
  • Ambient Temp.: 0-45°C,5-95%RH (Non-condensing)
  • Storage Temp.: -5-55°C
  • Set Temp. Range: 5-35°C
  • Room Temp. Range: 5-99°C
  • Shell material: PC+ABS (flame retardant)
  • Dimension: 86x86x13.3mm
  • Installation: 60mm box

What’s Inside?

The Moes ZigBee Smart Thermostat arrives neatly packed in a cardboard box, containing the thermostat, the manual of operation and some screw for mounting it on a wall. Its label says “WiFi Thermostat”, even though it’s the ZigBee version. This is probably done to save on packaging costs, so don’t have a small heart attack when you unpack it first.

On the front plate, the display frame is neatly placed together with a few capacitive touch buttons. We suspect your main operation of this device will be automated or controlled via Home Assistant, but nevertheless they are nice to have.

On the back plate, four main terminals are placed together with some labeling. Two of those are used to connect it to mains power, N and L, and the other two are used to connect your heating/cooling entity. This particular model is for a water boiler, which requires Dry Contact to simply complete the circuit and start the boiler.

Next to the main terminals, are two smaller terminals labeled NTC 10k 3950. These two are used for connecting an external temperature probe or thermistor. This connector is used to add a second external sensor, we explain further bellow.

Once we remove the backplate, we can see the main PCB is connected to the terminals and relay with a flat cable. A protective PVC foil separates the two, two prevent accidental short circuits and heat conduction.

The backplate PCB contains the 4 main terminals, as well as the 2 temperature sensor terminals on the side. The backside components are fairly standard, such as resistors, diodes and are soldered properly by a machine instead of some student in a factory somewhere.

The relay HF46F is rated for 5A, considering this is the water boiler version (16A is electric heating). Its manufactured by Hongfa Technology, a Chinese industrial relay manufacturer based out of Xiamen-Zhangzhou. HONGFA boasts more than 30 subsidiaries worldwide, and its business covers more than 120 countries and regions.

Nevertheless, a distinct click can be heard when the relay is triggered, indicating a solid build quality. Quiet relays tend to be either very weak or of bad quality.

Note: If you ordered the Electric Heating version, this would be replaced by a 16A relay.

The front panel of the thermostat, contains the communication chip (in this case ZigBee) as well as the screen. The WiFi version of the thermostat would contain a WiFi communication module instead.

The built-in temperature sensor is mounted at the bottom of the metal plate sticking out of the body of the thermostat. It’s a NTC 10k 3950 thermistor sensor, which might need calibration after installation.

The chip itself is a Tuya model TYZS3 embedded with a low power-consumption 32-bit ARM Cortex-M4 core, 512-KB flash memory and 64-KB RAM. It’s fit for its purpose, and considering the nature of ZigBee it’s completely local.

Different Model Versions

Perhaps the most important part of this review, is to understand the differences between the model variants of the Moes Smart Thermostat. This would ensure you order the right version for your heating installation.

In general there are three main models in which this switch is produced:

This further breaks down by connectivity, giving us a total of 9 different models.

  • Standard (No Wi-Fi or ZigBee)
    • BHT-002-GA: 3A Water Heating
    • BHT-002-GC: 3A Water/Gas Boiler
    • BHT-002-GB: 16A Electric Heating
  • ZigBee:
    • BHT-002-GALZ: 3A Water Heating
    • BHT-002-GCLZ: 3A Water/Gas Boiler
    • BHT-002-GBLZ: 16A Electric Heating
  • Wi-Fi:
    • BHT-002-GALW: 3A Water Heating
    • BHT-002-GCLW: 3A Water/Gas Boiler
    • BHT-002-GBLW: 16A Electric Heating

Picking The Right Model

IMPORTANT: The following explanation is just a general guideline and description! Do not take this advice exactly as written, if you are unsure ALWAYS consult with a certified electrician/HVAC installer.

Main Models: This may confuse some readers, but it’s fairly simple to distinguish:

  • If you use an electric heating system (floor heating coil, electric radiators, quartz heaters, any kind of electric heaters), where larger amount of current needs to pass through the relay than the GB model is probably for you.
  • If you use water heating, water boiler, gas boiler, pellet burners or similar where either small or no amount (dry contact) of electricity needs to pass through the relay, than the GA/GC model is probably for you

Connectivity: As usual, we advise you stay away from the Wi-Fi version as it is Tuya based. If you use ZigBee, than that’s the version for you (ending in LZ). You can also order the standard variant, without any connectivity whatsoever. The Moes Smart Thermostat is more than capable of working as a standalone HVAC controller. You can program it, schedule it by days, week, and adjust its system settings from the built-in menu (see further bellow).

Wiring and Installation

The Moes Smart Home Thermostat BHT-002 is fairly easy to install. Considering most residential homes in need of a thermostat already have some sort of wires installed in a switchbox or maybe an old (dumb) thermostat.

  • Connect the two wires from your heating appliance (water boiler, electric heating coil etc.) to terminals 1 and 2
  • Connect the N-Neutral wire to the N-terminal of the thermostat, terminal 3
  • Connect the L-Live wire to the L-terminal of the thermostat, terminal 4
  • If you are installing an additional temperature sensor/probe, connect it to terminals 5 and 6

Features and Operation

This Moes Smart Thermostat is packed with features, capable of automating your heating system all by itself. It’s fully programable and with some interesting capabilities for calibration and control. First, refer to the image bellow to understand the basic features of the display:

The programable options are pretty self explanatory and available on almost any thermostat. This is a fairly standard set of features also found in traditional (dumb) thermostats. What’s interesting is, the thermostats system setting can be adjusted right from the control display using the buttons without the need of an app/hub/integration.

You can calibrate the sensor temperature, lock the buttons on the thermostat and set a minimum and maximum temperature setting. Settings like 12/24hour clock can also be changed as well as cycle between two display modes. Switching from C-Celsius and F-Fahrenheit is also an option.

Most of these setting are directly accessible through your ZigBee integration, so no need to bother to adjust them from the built in settings menu. The Sensor Selection is one important adjustment you must do to ensure proper operation for your use case (this is also available in Z2M).

Correct Sensor Selection

Upon initial installation of the thermostat, a default sensor type will be selected automatically for the appropriate model of the device:

  • IN – GA/GC (Water Heating/Water or Gas Boiler
  • AL – GB (Electric Heating)

To use an external sensor, you need to change the selection to EX. You can change this setting in one of two ways:

  • Using your ZigBee integration in Home Assistant
  • Using the settings menu on the Moes Smart Thermostat (See Picture Above!)

Whichever method you choose, three options will be available:

  • IN – Only Internal sensor used – To control or limit the temperature
  • EX – Only External sensor used – To control or limit the temperature
  • AL – Both Internal and External sensor used – Internal sensor to control the temperature, External sensor to limit the temperature

IMPORTANT: If you decide to connect an external sensor, you need to change the setting to EX or AL. Otherwise the thermostat will display an Err on the display and will not work!

Integration Compatibility

The Moes Smart Home Thermostat BHT-002 is officially supported in all three major ZigBee integrations, ZHA, Zigbee2MQTT and Deconz.

To pair it, first switch the thermostat off. Press and hold the temperature down button for +- 8 seconds to enable the pairing mode (display lights up and a Wi-Fi-like icon is blinking). After a successful interview with the coordinator you can turn the thermostat on again.

Once paired to your coordinator, the thermostat exposes a bunch of entities for settings and control:

  • Lock Entity: For locking the touch control buttons
  • Number Entity: Deadzone Temperature – The delta between local_temperature and current_heating_setpoint to trigger Heat
  • Number Entity: Maximum Temperature Limit – Used to set the maximum temperature allowed
  • Number Entity: Temperature Calibration – Used to calibrate the temperature reading of the sensor
  • Select Entity: Used to select the sensor (IN, EX and AL)
  • Climate Entity:
    • current_heating_setpoint: Temperature setpoint
    • local_temperature: Current temperature measured by the sensor
    • system_mode: Main mode of the device (Off, Heat)
    • preset: Preset mode of the device (Hold, Program)
    • running_state: The current running state (Idle, Heat, Cool)
    • local_temperature_calibration: Offset calibrate the sensor temperature (local_temperature)
  • Linkquality: Link quality (signal strength)
ZigBee2MQTT Exposed Entities

Usage

You can use the Moes Smart Thermostat right after integrating it in Home Assistant without any further setup. The climate entity contains all the basic functions you would need to start controlling you heating system. In this section, we are going to suggest a way to supercharge its function – the Scheduler Card by dev nielsfaber.

As an alternative to the built-in thermostat card, we suggest using the custom Simple Thermostat Card by nervetattoo. It’s highly customizable, contains many configuration variables and you can make it very compact and style it to your liking.

Built-In Home Assistant Thermostat Card
Simple Thermostat Card by nervetattoo

Scheduler Card & Component

The easiest way to setup programs, schedules and thermostat rules we are going to use the Scheduler Component and Scheduler Card. This particular custom card (works on top of the component!), has a very easy and user friendly UI when setup. It’s capable of creating schedules and rules on the go, so lets see it in action.

Assuming you have already installed the custom component and custom card (preferably via HACS), we can go ahead and create our card in Lovelace:

#Scheduler Card for Moes Thermostat BHT-002
type: custom:scheduler-card
include:
  - climate.moes_thermostat_bht_002
discover_existing: false
title: Moes Thermostat Schedule

This will create a small card with a master switch for your schedules and rules. Triggering this switch, entirely disables anything you have created within the card. Once done, click Add and select Make Scheme than click Next:

This will take you to the next screen, where you can create custom schedules by time, days, workdays, weekends etc. The Scheme bar in the middle is a time frame of 24hours, to which you can add additional hour frames to by using the ADD button.

Here you can select a bunch of different options and set the thermostat to Heat accordingly. The scheduler card will control the Thermostat according to your rules and schedules. If you want to discover all the options this component/card combo offers, read our guide. Once you are done, hit save. The card collapses and is shown simply as a small list.

You can edit you schedule anytime by clicking its name, make any changes and additions or toggle the master switch for quick turning off/on.

Verdict

The Moes Smart Thermostat BHT-002 is a very capable and versatile small thermostat. It looks good mounted on a wall, it’s cheap and can be easily integrated in Home Assistant. There are a few cons we didn’t like though, so lets summarize:

  • PROS
  • Cheap
  • Home Assistant Compatible
  • Major ZigBee Integrations Compatible
  • Built-in Touch Buttons for quick control
  • Built-in System Settings for setup without connectivity
  • Additional Terminals for External Sensor
  • Automatic Screen Timeout
  • Child Lock
  • Easy wiring and installation
  • CONS
  • Screen is too bright
  • Screen content fades when looking at it from top or bottom (weirdly not from left or right!)
  • Wi-Fi Version is Tuya based
  • Built-in Temperature Sensor needs calibration
    • -2°C in our case
  • External Temperature Sensor needs calibration
    • -1°C in our case

This smart gadget will control your HVAC without issues. Considering it’s easily brought into to Home Assistant, its functions and potential is supercharged. If you would like to test it out for yourself, consider ordering through one of our affiliate links bellow.

50 thoughts on “Moes ZigBee Smart Thermostat BHT-002”

  1. Maybe I miss it somehow, but, regarding the external sensor, does it need to be 10k too like built-in sensor or…?
    Guess it does not come in package.

    • No, you would have to supply the external sensor yourself. The thermostat only offers “an option” for an external sensor. You can plug in any temperature probe and it will work

  2. Hello,
    We have a central heater in the building. My apartment has 3 wires coming out of the wall. The 2 are N and L (AC) and the third gives the order to the heater to turn on and off. I connect N to number 3 and L to number 4. Where do I connect the third cable, 1 or 2? Thank you

    • Hello,

      Central heating can mean a lot of things. Is it a water boiler? Is it a floor heating system?
      Since you only have 3 wires, I would first make sure what their loads are with a multimeter.
      After that, take a look at the wiring image above, especially the wiring for version GA.
      You would probably have to bridge the neutral wire and connect it to terminal 2 and connect the remaining wire to terminal 1. However, you need to make sure first with a multimeter.
      Where do those wires connect? What is the exact heater type?
      If you send me some more details at admin@smarthomescene.com I’ll be happy to help.

      Cheers

  3. anyone else find the internal clock on this drifts out of sync over time?
    makes the built in scheduler fairly useless.
    still happy with the unit tho, zigbee on a budget and i can take care of the scheduling via HA.

  4. Hello,

    very nice review. Actually one of the kind I would say. I have also a dummy question. I am having a heating floor so I use the variant (BHT-002-GALZ the ZigBee one). Everything looks to work probably fine except that the display goes on randomly at night but I don’t know why. Could you please tell me what I did wrong?

    Yours sincerely,
    Hans Dieter

    • Hello,

      I am experiencing no such issues with the BHT-002. It is sleeping most of the time, it only lights up when I use the buttons on the control panel. Do you have any other idea what might trigger it?

      Cheers

      • Hello SHS,

        maybe the sensor settings. I believe in all of them where on both internal and external reading the problem. I need to speculate it today and I am going to give you a feedback tomorrow. The other thing are the electronic valves that they Co operate with the Sensors. Maybe they are giving a pulse or something as feedback every time they reach the maximum temperature or something.

        Yours sincerely,
        Hans-Dieter

    • backlight goes on if also when some settings are changed remotely (via app or ZigBee) – in my case it lights up every time when I change temperature set point via Zigbee2Mqtt

    • Hi Hans-Dieter,
      i have the same Proble with 4 of BHT-002-GALZ 🙁
      I use this with Home Assistant and Z2M
      Every working fine, except this 🙁

  5. My gas run HVAC system has 5 wires, mapped to RH, C, Y, W and G on my current thermostat. Would this Moes unit be compatible?

  6. Thanks for the detailed review! A couple follow-up questions please:
    – I’m having issues accessing the System Function settings by holding the mode and clock buttons for 5 seconds…perhaps I’m doing something wrong?
    – in the article, it mentions an option to change from C to F for temperature display units…how is this done exactly? Can it be done via the controls on the unit itself, or through Z2M (I’m not seeing this setting anywhere?)

      • How? Even with the ts0601_electric_heating.py quirk it is not possible. Another problem that still does not work is displaying the correct time in the panel. Any idea why?

    • I have 7pcs installed around the house for electric heating. Internal sensor is set for the temperature control. Every time when device is ON, it heats up itself, which results in incorrect temperature measurement by internal sensor (+3…5deg in 30min) . Changing to EX sensor is not an option because I need to control the room air, not floor temperature.
      Solution I have found is to install separate standalone temperature sensor in the room and use that readings to calibrate the thermostat (adjust offset) in HA. Works just fine!

    • Silly question, did you click Permit Join (All) at the top to allow new devices to join your network?
      Are you getting a green popup in Zigbee2MQTT in the top right corner?

  7. Hi, am I missing something here? I have the ZigBee Boiler version working with ZHA, but the only entities exposed are:
    – climate.heating_controller_thermostat
    – sensor.heating_controller_hvac_action
    I can change the heating mode, but nothing else.

    Also, the system settings are not available in ZHA or on the device itself ie by pressing the mode and clock buttons at the same time?

    This one:
    https://www.amazon.co.uk/MOES-Thermostat-Compatible-Google%E3%80%90Only-Available%E3%80%91/dp/B095HYFFML/ref=mp_s_a_1_3?crid=3T2GV53EKOTWC&keywords=moes+zigbee+thermostat&qid=1695719822&sprefix=moes+zigbee+ther%2Caps%2C141&sr=8-3

    Any thoughts?

    • The climate entity contains everything this device exposes to ZHA.
      Target temperature, modes, presets.
      The only thing missing is the local temperature sensor?

      • Hello! Indeed this thermostat (Zigbee) is perfect for my home but I don’t know how to find the local temperature sensor in HA? There are configurated in Z2M and the HA native card for thermostats working. But I can’t find the local temperature to build histories in HA and use it with another components.
        Thank you

        • The temperature sensor is automatically exposed to Home Assistant under the sensor domain and device name.
          E.G. sensor.[device_name]_local_temperature
          or sensor.moes_thermostat_local_temperature
          Cheers

  8. Hello,
    I recently purchased a Zigbee Series 006 GA thermostat for water underfloor heating.
    My boiler can heat the water in winter and also cool the water in summer.
    I would like to know if there is any possibility for these thermostats to be able to change the parameter from heating mode to cooling mode.
    I see in the promotional images that the device has the icon (blue snowflake) and the software development, in my opinion, would be easy to implement. The relay actuator should only be changed when it exceeds the target temperature.

    • This is exactly what a thermostat does, no?

      If you are talking about keeping another built-in thermostat wired after this one, than no, I would suggest not doing that.
      Otherwise yes, what you are describing is exactly how this device functions.

  9. I have 3 of the BHT-002-GCLZB connected to a Sonoff ZBdongle-P coordinator running Z2M (v1.33.1-1). I am having terrible problems with the local_temperature_calibration. When I try to change the value in Z2M using the slider, there is some kind of overflow error that makes it jump between random values in the order of -15767960 and 149202536. This completely messes up the local temperature temperature value, so it’s either showing something like -50.4 C or +125 C and makes the unit unusable. I’ve tried to set the local_temperature_calibration value using a different tool like MQTT explorer but it yields the same result (it can correctly set other values of the thermostat). These thermostats worked last winter when I installed them and I don’t remember having any problems with the local_temperature_calibration back then. I assume the problem is to do with a later version of Z2M or something else. Any tips what else might be able to try?

  10. Hi, Thanks for the review! The WiFi versions of these thermostats only provide temperature measurements in 0.5°C increments, which really isn’t that great. I wonder is this still an issue with the Zigbee version?

  11. I’ve had 2 Moes thermostats (Zigbee), one like this one and a latter version with a better looking front glass panel.
    The original one just didn’t work properly when I mounted it on the wall. It seemed that it was getting random button presses that made the set temperature just go up and up!
    So after a few months I tried again with the more modern looking version and that worked fine. Well it did for 6 months or so when the heating just came on and stayed on. The display showed everything was normal but clearly the relay had stuck in the on position!
    I then changed the relay board with the board from the original thermostat (same design and plug connector) and got a few more months out of it before that relay stuck! Not sure what to do now. Either the relays are very poor quality or my boiler is massively inductive or something causing arcing and the contacts to fuse. Funnily enough, I can still here a click when when the relay should be turning off but not on! I might buy a 16A version. Can’t find any other manufacturer doing a zigbee thermostat.

    • Seems like maybe you are over the rating on the relay or like you said, something is causing the relay to fuse.
      I would check the wires with a multimeter before taking any other actions.

      • I had an unused Sonoff Basic lying around so I flashed it with Tasmota and wired it into the CH/HW distribution box. Home assistant knows when the Moes thermostat wants the boiler on so I added an automation to turn the Sonoff basic on and off accordingly.

  12. Have installed 7pcs during 2 years. Actively looking around but didn’t find anything better for electric heating (using ZigBee version).
    PROS: very low price, good functionality, nice design, slim&compact, all functions/settings available via z2m.
    CONS: internal temperature sensor is warmed up during thermostat operation; small issues with backlight; round on/off button stays always green (could change to red if thermostat is ON); thermostat works with INT numbers only via zigbee.

  13. Hello everyone, I have 2 Moes thermostats (BHT-002-GA for water-based underfloor heating with Zigbee) and both have a problem with spikes in the temperature measurement in Home Assistant. At irregular intervals, the TARGET temperature jumps very briefly (just 1 second) to e.g. 1.112.956.182 °C or even just 1.233 °C. This destroys the history diagram so that I can no longer recognise anything on it.
    Does anyone know how I can stop this behaviour?
    This behaviour does not occur with other thermostats (e.g. for radiators) in Home Assistant.

    Does anyone know of a way to display only the current temperature as a graph in Home Assistant?

  14. Hello, great info here. Having trouble, may be someone can assist. The zigbee coordinator (using ZHA) finds the device no problem but the interview completes instantly and there are no attributes – blank. I tried delete and repair many many times. any thoughts?

Comments are closed.