Dealing with the Beep

What’s the Beep?

Recently, I bought an AC unit: Pearl Plus by Haier. Soon after, working on my home automation setup, I’ve realized a few setbacks that come with communicating with the AC via web API (available through the hOn addon1).

I could’ve lived with the slow response time or the constant fallback to default 22 °C and “medium” fan direction2. I would also have accepted a non-functional temperature sensor, as updates from Haier API to Home Assistant only occurred upon temperature change, or the risk that, at some point, the integration might simply be banned by Haier3.

But I couldn’t stand one thing. The Beep.

The Beep.

Every change of state of the AC caused the electronic beep sound, that was especially burdensome whenever I wanted to change a few options at once. As I already mentioned, because of a bug in hOn Home Assistant add-on, the unit was defaulting to settings I didn’t like. To address this, I’ve set an automation, that whenever I turn on the AC, a set of my preferences is applied. This means that I often heard the following sequence:

  • Beep (turn on the unit)
  • Beep (set up desired temperature)
  • Beep (set up desired fan direction)

This isn’t the end of the word. Nevertheless, it was irritating during the nighttime. Also, something I haven’t thought of before: having automations that make sounds, brings a feeling of a schedule: something similar to a school bell. I don’t want my smart home to signal to me that it’s doing something. Just do it.

Disabling the Beep with hOn

As soon as I realized that I’d prefer my AC to be muted, I went to the hOn mobile app settings. To my surprise, there wasn’t any mute settings. I couldn’t find anything in the manual, too, and online forums suggested removing the speaker physically or sealing it with a tape. I didn’t want to do either of it to not lose the warranty, but also this felt kind of… derogatory?

Disabling the Beep with ESPHome

Later in my research, I’ve found haier-esphome4 project that looked promising, as in the configuration options one can see a position named:

beeper (Optional, boolean): Can be used to disable beeping on commands from AC. Supported only by hOn protocol.

Although I wasn’t sure about the success of the operation (why would ESPHome enable something that neither the API nor the IR pilot could do?), I decided to give it a try.

ESPHome is a system that allows to configure and manage ESP controllers. It integrates with Home Assistant nicely and, from my recent experience, has an amazing community.

Assembling

Using the documentation and helpful notes from Michał Góral5, I’ve ordered necessary items and started to work on assembling the setup. The assistance of my more experienced with soldering friend, Krysztof, was invaluable.

ESP8266 Wemos D1 mini and JST SM04B-GHS-TB connectors (can be found here)
Connector and the board. Red 5v, black GND, green RX, white TX. Soldering wires wasn’t easy due to small connector pins.
Controler in AC unit socket. Colors of cables are different, as it’s another unit and I ran out of proper-color cables.

Configuration

After soldering all the wires, I connected the controller to the computer, flashed it with initial settings from ESPHome tab in Home Assistant and prepared a simple configuration based on the documentation6.

This is the basic configuration with `external_components` and some extractions to support more ACs with the same options enabled.
# salon-ac.yaml
esphome:
name: salon-ac
# (…) some default configuration entries
external_components:
– source: github://esphome/esphome@dev
components: [ haier ]
packages:
climate: !include
file: common/ac-climate.yaml
vars: {
room: salon
}
switch: !include
file: common/ac-switch.yaml
vars: {
room: salon
}
# common/ac-climate.yaml
climate:
– platform: haier
id: haier_${room}_ac
protocol: hon
name: ${room} AC
beeper: true
wifi_signal: true
supported_swing_modes:
– 'OFF'
– VERTICAL
# common/ac-switch.yaml
switch:
– platform: template
id: ${room}_ac_beeper_switch
entity_category: config
name: ${room} AC beeper
icon: mdi:volume-high
restore_mode: RESTORE_DEFAULT_ON
lambda: |-
return id(haier_${room}_ac).get_beeper_state();
turn_on_action:
climate.haier.beeper_on: haier_${room}_ac
turn_off_action:
climate.haier.beeper_off: haier_${room}_ac
view raw salon-ac.yaml hosted with ❤ by GitHub

Then I disconnected the controller and flashed it via OTA. Then a new device was discovered on Home Assistant with all the expected options and switches.

A new device in Home Assistant (with some additions comparing to the gist above)

Testing

After toggling the salon AC beeper switch to off, the moment of truth has come. Will this really disable the Beep?

The Beep is gone!

To my delight, the AC unit stopped emitting sounds whatsoever.

Other improvements

Except of no Beep, I’ve gained a few other improvements after migrating to ESPHome controller:

  • Instant response time, compared to a few seconds previously.
  • Working temperature sensor. Now, updates are sent every second, so the sensor actually makes sense.
  • Safety that my data stays local, and I’m not dependent on Haier’s API availability.

But there are also some setbacks of this change:

  • I’m guessing the ESP controller might die some day, as it happened to Michał7.
  • I don’t have an out-of-box reminder about cleaning the AC unit (the hOn mobile app had it).

But overall, I think the improvements outweigh the risks. I’m glad that I worked on this, as it’s a quality of life improvement that my family can benefit from daily.

  1. https://github.com/Andre0512/hon ↩︎
  2. https://github.com/Andre0512/hon/issues/211 ↩︎
  3. https://github.com/Andre0512/hon/issues/147 ↩︎
  4. https://github.com/paveldn/haier-esphome ↩︎
  5. https://goral.net.pl/post/replacing-haier-wifi-modules/ ↩︎
  6. https://github.com/paveldn/haier-esphome/blob/master/docs/examples/max-hon.yaml ↩︎
  7. https://goral.net.pl/changelog/esp8266-died/ ↩︎

Leave a Reply

Discover more from wzieba

Subscribe now to keep reading and get access to the full archive.

Continue reading