Blog entries from February, 2024

How to reflash a Sensibo Sky with ESPHome

Wednesday, February 28th, 2024 at 08:24pm

A few days ago I mentioned how I had reflashed two Sensibo Sky devices with ESPHome as I prefer that arrangement for controlling my AC units. As there were some gaps in the instructions I found on reddit I decided to fully document my steps here. This may not be the best or only method, but it is what I did.

The reddit post that I started from:

Once I picked up the devices my first challenge was actually opening them up. The reddit post didn’t have any information, I couldn’t see any obvious way and a quick search didn’t turn up anything. I briefly considered just trying to use the exposed pins, but I didn’t know what type of connector and didn’t want to wait, so I turned to my iFixit toolkit, using a couple of the plastic picks to wedge open the white casing from the USB port side.

It turns out this was unnecessary and the case is very easy to open.

The translucent part of the case has a hook that clips into the white part, so if you push down on the Sensibo logo you can slide the white part down slightly and it will then lift off. The translucent part can then be unclipped.

This is the diagram from the reddit post:

This is the pinout of the style of USB to TTL UART I used:

Per the instructions I connected:

  • UART GND to Sensibo GND
  • UART TX to Sensibo RX
  • UART RX to Sensibo TX
  • UART GND to Sensibo pins 0 and 15 (though apparently only 0 is required)

I then powered up the device using the USB port, previously the LED would flash when turned on, now it was on solid.

To confirm that I had a connection I used esptool:

$ esptool flash_id
esptool.py v2.8
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: c8:c9:a3:a5:d7:16
Enabling default SPI flash mode...
Manufacturer: eb
Device: 6015
Detected flash size: 2MB
Hard resetting via RTS pin...

Satisfied I was able to connect I now went into the ESPHome Dashboard and created a new device, this didn’t have any sensors yet, just enough configuration to connect to my wifi (with a static IP because I find that easier than hoping mDNS will work).

As I was doing this from my main desktop and not the machine the TTL UART was connected to I opted for the Manual Download of the firmware. After doing its thing the dashboard gave me an image file to flash.

As I had used esptool to check the connection, I used it again but now to flash the new image. I didn’t keep a copy of the output but the command was:

$ esptool write_flash 0x0 bedroom_ac.bin

The flashing said that it had completed successfully so I disconnected all the wires from the Sensibo and then powered it up from just the USB connector. I breathed a sign of relief when the ESPHome Dashboard showed the device was ONLINE and I could look at its logs.

On the reddit post are two main ESPHome configs, one from the original author and then another linked in a comment. I used a mix of both of those to end up with my current configuration:

esphome:
  name: "bedroom-ac"
  friendly_name: Bedroom AC

esp8266:
  board: esp_wroom_02

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "...."

ota:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 10.0.0.61
    gateway: 10.0.0.1
    subnet: 255.255.255.0

captive_portal:

# see https://www.reddit.com/r/Esphome/comments/q1cwsu/converting_a_sensibo_sky_to_esphome/ for more info

# sensibo i2c pins
i2c:
  sda: 02
  scl: 14
  scan: true
  id: bus_a

remote_transmitter:
  id: ir_tx
  pin: 15
  carrier_duty_percent: 50%

remote_receiver:
  id: ir_rx
  pin:
   number: 4
   inverted: true
   mode:
    input: true
    pullup: true

sensor:
  - platform: hdc1080
    temperature:
      id: dht_temp
      name: Temperature
      filters:
      - offset: -2.0  # hdc1080 is reading about 2C above ambient so reduce by this offset
    humidity:
      id: dht_humidity
      name: Humidity
    update_interval: 60s
  
  - platform: wifi_signal
    name: "WiFi Signal"
    id: wifi_dbm
    update_interval: 60s

  - platform: uptime
    name: "Uptime"
    id: device_uptime
    update_interval: 10s

binary_sensor:
  - platform: gpio
    id: button
    name: Button
    pin:
      number: 13
      mode: INPUT_PULLUP
      inverted: true

output:
  - id: light_output
    platform: esp8266_pwm
    frequency: 1000 Hz
    pin: 12

light:
  - platform: status_led
    name: LED
    id: led
    output: light_output

climate:
  - platform: fujitsu_general
    id: controller
    name: Controller
    receiver_id: ir_rx
    transmitter_id: ir_tx
    sensor: dht_temp
    supports_cool: true
    supports_heat: true
    on_state:
      - lambda: |-
          if (x.mode != CLIMATE_MODE_OFF) {
            auto call = id(led).turn_on();
            call.perform();
          } else {
            auto call = id(led).turn_off();
            call.perform();
          }

One big difference was that I used friendlyname and that I configured the LED to be on when the climate platform is also on and also be the statusled. The button currently has no action (I need to drill out the case and extend the physical button so it can be used) and I also like having uptime and wifi diagnostics.

With one device converted for use in my bedroom, I then repeated the process for the one in my study.

Tagged with: , ,

Removing the cloud from a Sensibo Sky

Sunday, February 25th, 2024 at 10:21pm

In addition to thinking about a housing for my dishwasher panel I have been looking into a housing for my AC controllers which currently look like:


(yes I know I should have cleaned off the dust before taking the photo, but that was a quick photo taken for a talk at work)

What could the housing be? Do I base it around another wall plate? Do I get a wall mounted project box? Do I buy my first 3d printer?

After my experience with the dishwasher panel I also realised that as this is based on ESPHome, so I could add an indicator LED (red for heating, blue for cooling?) and a button (to quickly switch between a standard preset such as 24°C cooling and turning it off). These would also need to be incorporated into the housing.

In my looking around I found that the housing I wanted does exist, in the form of the Sensibo Sky. While there is Home Assistant integration I prefer a non-cloud solution and I already had that up and running.

I don’t know exactly how I came across it but I found a reddit thread showing how the Sensibo Sky is based on an ESP and had instructions on how to flash ESPHome onto it. This was an intriguing idea, but I wasn’t going to buy two Sensibo Sky units just to reflash them.

But there is eBay and Gumtree

(yes, it is always appropriate to spend 20 minutes watching Randy describe buying a bookshelf on Gumtree, 46:25 into Randy Writes a Novel)

eBay was no help, but on Gumtree I found something. While I was looking for used or broken units, what I found was someone not that far away selling two unused units for less than the price of a single unit. Sold! I picked them up the next day and thanks to the reddit instructions (I will make a separate post with my full steps) I was able to flash them with ESPHome.

A bit of reconfiguring within Home Assistant and these are now my AC controllers. I even have them mounted to the wall so they don’t take up desk or bedside table space.

While the built in LED is only blue I did configure it to indicate if the AC was currently on and I think I have a plan for the button. Normally this button is used to reset the Sensibo Sky to factory defaults which means that you use a pin through a small hole in the casing, but I think I could drill out that hole and then glue an extension onto the button, giving me the shortcut action trigger.

Could I go further with some of the pins that are exposed. Is is possible to replace or supplement the LED with an RGB version? Could I mount a button on the face of the unit instead of the side? These are all options opened up by the flexibility of running ESPHome ;)

Another idea relates to some issues I have been having the chromecast speaker I use as my alarm clock and the fact that I now have an IR blaster in my bedroom…

Tagged with: , ,

Seeing the status of my dishwasher

Friday, February 23rd, 2024 at 08:56pm

When the previous owners of my place renovated the kitchen they put the power for the dishwasher directly behind the dishwasher instead of the correct location in an adjacent cupboard. This didn’t directly affect me until that dishwasher needed replacing and there was now not enough clearance for the plug.

I replaced the dishwasher over two years ago and my temporary solution was to have the cable coming out of a gap in the side panel and up to a power point above the bench. Last week I finally had an electrician in for a couple of changes which included replacing the kitchen downlights (from 300W of halogen to 48W of LED), replacing a failing bathroom exhaust fan and adding a power point to the cupboard next to the dishwasher.

However this meant that the Tasmota based smart power plug is now also located in the cupboard. I could no longer hit the button on it to turn on power to the dishwasher.

So I started to think about some kind of remote panel button/display that could be mounted on the wall above the dishwasher. As I am still building my projects around the D1 mini I was able to put this together from the variety of shields and bases I picked up a while back:

Unlike my clocks where I wrote a minimal program that communicated via MQTT, this time I decided to try setting this up using ESPHome which I had used to interface with my AC units. It was only a few minutes until I had a button and an RGV light showing up in Home Assistant.

I now started on the more complicated part which was deciding what logic I wanted and then implementing it as automations. So far I have the following:

First is the action to take if the button is pressed:

  • if power is off, then turn on power
  • if power is on AND dishwasher not active, then turn off power

Then the behaviour of the LED:

  • if power is off, then LED is off
  • if power is on:
    • if dishwasher active, then LED is blue
    • if dishwasher has been active since the power was last turned on, then LED is green
    • if dishwasher has not been active since the power was last turned on, then LED is red

I can now see at a glance if the dishwasher is running, if it needs emptying or if it is on and shouldn’t be. The next step will be to work out an enclosure, I am leaning towards something based around a wall place and spacer block like I did for my bathroom clock/sensor:

I’m thinking of a small hole for a button to protrude through, and then see how well the LED just shows through the plastic.

There are plate that exist for commercial applications for things like running AC after hours that are a push button and a neon indicator in a two gang plate, but those are quite large (in depth as they are intended to mount in the wall, not on the surface of tiles like I want) and also very expensive, even if all I wanted was the housing for the neon indicator that I would retrofit the LED into…

Tagged with: , ,

The abolishment of gas

Wednesday, February 7th, 2024 at 10:25pm

Today my gas service was abolished.

This sounds fancy but what it means in practice is that I no longer have natural gas service to my house. The meter has been removed and it has been turned off at the main. It was only four months ago that I kicked of these changes by thinking about how expensive my gas bill was getting.

Although I stopped using gas two months ago I had been procrastinating about making the call, it was Daniel Bowen’s post about his experience that prompted me to get around to it.

On 22 January 2024 I called up my retailer to start the process. They emailed me a form to fill in and return which I did the same day. Then silence.

I use the same retailer for gas and electricity and as it happens on the Wednesday there was a form to fill in regarding the feed-in for solar. More silence.

To ease my mind on the Friday I called up and was able to confirm that both forms had been received and had triggered the next stage of each process. So time to wait.

A bit after 11AM today I noticed a truck with the logo of the gas distributor pull up and two workers get out. I didn’t need to speak to them but I wanted to make sure they only disconnected my gas service and did not affect the other unit as they still use gas. They said they first locate the services and then based on that will either just remove my meter and cap the pipe, or remove my meter and turn it off at the main.

It took them around an hour for:

  1. locate both gas and water for both units
  2. locate the gas and water mains on the nature strip across the road
  3. dig down to the gas main
  4. shut of my connection at the main
  5. confirm that was shut off to my meter
  6. remove my meter
  7. cut the service pipe off at ground level
  8. fill in the hole in the nature strip

I now expect to get my final bill with a $242 abolishment charge ($220 ex-GST), but that is ok as I will no longer have a $1/day charge (so $365/year) for a service I am not using.

There is still some pipework and the entire central heating still in place, but there is no urgency in removing those. In fact I have been wondering if it would be possible to repurpose the ducting, just running the fan to circulate air around my house…

Update 22 February 2024:

Received my final gas bill with the abolishment charges being:

Abolishment Admin Fee                       $  33.00
Gas Service Order                           $  76.65
Added SO# 1202394 Service Line Abolishment  $ 165.35

The two service orders add up to the expected $242, then on top was the $33 admin fee charged by my retailer.

Tagged with: , ,

The first “real” days of summer?

Sunday, February 4th, 2024 at 10:38pm

So far this summer the weather has been pretty mild so it is odd to think that we are now in February and this is the first time that we have had temperatures in the high thirties. Based on my measurements we reached 36.2°C yesterday and 38.4°C today.

So how did my new air conditioners handle the heat?

I am still working out how I want the schedules and automation to work, but so far I have it that a calendar entry for 24#COOL#STUDY means that I will allow the study unit to be running at 24°C in cooling mode. The automation looks at the current outside and indoor temperatures and will not start the AC until they both reach 24°C

On Saturday that condition was met at 2PM and kept my study at a nice comfortable temperature. I also closed the exterior blinds and had the ceiling fan on low. Today that condition was met at 10:30AM and things also remained comfortable, though since there was plenty of sun I also turned on the bedroom AC unit and lowered them both to 22°C to see how that felt.

Speaking of sun… it was a nice clear day and the generation from my solar panels was the stereotypical ideal curve:

Consumption items of note are:

  • hot water running for an hour from 9AM
  • spikes at 10:30AM when I cooked an early lunch
  • increasing usage with the AC at 24°C and then further increase when both running at 22°C
  • spikes in early afternoon when I use the washing machine
  • a drop at 5PM when I switched back to one AC at 24°C

It is nice that most of this usage is covered by solar generation. The stats for the day so far are:

  • 29.6kWh solar generation
  • 15.2kWh consumed
  • 4.2kWh pulled from the grid
  • 18.5kWh fed to the grid

The reconfiguration of my account for solar finally got done a week ago, so now I am getting credit for what I feed back to the grid. For this day at my current rates the consumption balances the feed-in, making the cost just the daily supply charge. However this is just one day and it is the impact over time that is more important.

I also noticed something odd when looking at the generation from the inverters on each of the solar panels:

So ten of the panels are generating as you would expect for a clear sunny day. But what is up with the other two? In the enphase app the panels are laid out over an aerial image of my roof and I could see that the two panels with slightly lower generation are the two that are next to my tv antenna. So the slight shadow that casts is affecting those panels, changing from one to the other as the shadow changes. While I don’t watch free to air tv often, I won’t get rid of the antenna as there are a couple of shows I still automatically record to watch later.

Tagged with: , , ,