Full of your daily dose of fibre (broadband)

Our OpenReach fibre broadband Optical Network Terminal (or modem)

We’ve brought our home internet connection into the 21st Century and are now hooked up to Openreach’s full fibre broadband network. This is a full fibre-to-the-home (FTTH) connection, where the fibre optic cables run all the way into our house.

Previously, we had a fibre-to-the-cabinet (FTTC) connection, where there were fibre optic cables running to a street cabinet a short distance away. However, the final distance was the same copper cable installed when the house was first connected to the analogue phone network. And whilst we were able to get 80 Mbps speeds over that connection, that was really the limit of that technology. With fibre-to-the-home, we could get speeds of up to 1.6 Gbps, which is frankly ludicrous. When I started university in 2002, the entire university’s internet connection wasn’t even that fast. And yet, provided you’re willing to pay for it, you can get online at speeds that are over 30,000 times faster than dial-up.

Fibre broadband installation

The installation took around 3 hours. Although we pay for our internet service from a retail ISP, it’s Openreach (part of BT) who own the infrastructure and who will do the installation. For us, this involved replacing the copper cable from the nearby telegraph pole, removing the phone socket, and installing an Optical Network Terminal (ONT) – essentially a modem – inside the house. That’s what’s pictured above – you’ll note that it says to leave it behind if moving house. You then plug in your router to this using an Ethernet cable; your router will need to support PPPoE, which any router provided by your ISP will be capable of.

As part of the installation, we also changed to a new ISP, having previously been with Vodafone – more about that in a later blog post.

Once the installation is completed, you may have to wait up to an hour for your connection to start working again. I found I also had to restart the router, but once done, we were back in business.

No landline phone number

One decision we made this time is that we would no longer have a voice line. We had the option of paying extra for it, but the only people who call us on our landline nowadays tend to be scammers, so we decided it wasn’t worth it. Even though we’ve been living in this house for 10 years now, barely anyone has our landline number. If you do switch to fibre broadband and haven’t already been migrated to a digital voice line, then this will happen as part of the installation. That means that your phone is connected to your broadband router, rather than the wall socket. Indeed, the ONT doesn’t have a RJ-11 or BS 6312 socket to connect an analogue phone. It’s worth bearing in mind that your landline phone won’t work in a power cut if this happens.

This also means I can finally get rid of my supply of ADSL microfilters.

Speeds

We’ve actually gone for a modest 100 Mbps package. We were getting by quite well on 80 Mbps, and so for now we don’t really need the extra speed. As I write this, the installation was only completed a few hours ago, and so it’s too early to share what our new speeds are.

We may consider faster speeds in future, should our nine-year-old take up online gaming for example, and at least now the hardware is there to support it.

Ecosia

A screenshot of the Ecosia home page

For some time now, I’ve been using Ecosia as my primary search engine, rather than Google search. It aims to be a more ethical alternative; Ecosia is a non-profit company, and any money that would normally go to shareholders instead goes towards planting and protecting trees. In 2014, it became the first German company to become a certified B Corp.

If you create an account on Ecosia (and this is optional), then when you use it, you can see how many trees you’ve helped to plant. For me, this is two, although it would probably be more if I’d remembered to sign in more often.

The results you see from your search are generally provided by either Google or Bing. This is broadly the same as other third-party search engines like DuckDuckGo, which repackage results from the big two search engines in a way that is more respectful to user privacy. However, some results may come from EUSP, which is trying to build a Europe-focussed search engine. EUSP is a joint venture between Ecosia and a French search engine called Qwant.

In my experience, the results are good enough 80-90% of the time. If I’m looking for something super-specific, then I’ll defer to Google, but generally Ecosia works fine. It’s been my default on the desktop since at least last year. Aside from this, my only other criticism is that, on a laptop screen, sponsored results take up all the visual space, and you have to scroll to see the actual results. As Ecosia claims to care more about your privacy, frequently these sponsored results are less relevant. Indeed, it will respect the ‘do not track’ setting in your web browser. Also, if you have an account, you can disable Ecosia’s AI features.

There’s also a web browser available, which looks to be a re-packaged version of Chromium with Ecosia as the default search engine. I haven’t tried it, as I’m happy with Firefox.

If you want to reduce your carbon impact whilst searching (especially with Google’s AI summary appearing by default), consider giving Ecosia a try.

Converting a Tasmota smart plug to ESPHome

A photo of a Coosa smart plug, originally running Tuya firmware, and a USB to UART converter. This now runs ESPHome firmware.

Back in June, I flashed some old Tuya Wi-Fi smart plugs with Tasmota firmware. I’ve now re-flashed one of them with ESPHome, an alternative firmware by the Open Home Foundation who are the same people as Home Assistant. In this blog post, I’m going to outline:

  • Why the change from Tasmota to ESPHome
  • How to build a YAML file for ESPHome
  • The flashing process

This is a longer blog post, so if you want to skip the explanations for each section of the YAML file and just want to go ahead and do this yourself, you can download my pre-made YAML file from GitHub, and then follow these instructions.

Why the change from Tasmota to ESPHome

If you’re starting out with custom firmware for your existing devices, then I would still recommend Tasmota. It’s much easier to set up, as you install it first, and then configure it. There’s also a much more extensive repository of supported devices, so you shouldn’t need to do much manual tinkering once Tasmota is installed.

ESPHome, by contrast, requires you to configure it first, and then install it. Furthermore, rather than offering a web interface for configuring your devices, instead you have to do this in a YAML file. And then you have to compile the firmware specifically for your device and upload it.

That being said, ESPHome is much more powerful. You can build automations into it that run on the device itself, rather than through, say, Home Assistant. And as each firmware binary is compiled for each device, it’s much smaller, which allows for easier updates. On some Tasmota devices, you have to install a ‘minimal’ version of the firmware before you can upgrade. By contrast, with ESPHome, your device should be able to update directly to new firmware versions.

As you would expect, ESPHome integrates better with Home Assistant. Indeed, one reason for me changing to ESPHome is that the Tasmota integration takes a while to start up and is one of those slowing Home Assistant down. Firmware updates are also offered through Home Assistant, so you don’t need something like TasmoAdmin to manage firmware updates for multiple Tasmota devices.

Building the YAML file

I’m going to go through each section of the YAML file, to explain what it does, and why it’s necessary. Some of these are specific to the plugs that I’m using, and may not transfer to other devices.

Firstly, with Tasmota still running, open the Configuration screen and choose Template. This will give you a list of the GPIO pins, and what they currently do in Tasmota. You’ll need to note these, so that you can tell ESPHome what pins to use. On mine, these were the ones in use:

  • GPIO4 – LED
  • GPIO5 – Relay
  • GPIO13 – Button

The LED is the light on the smart plug, the relay is what controls whether the power is on or not, and the button is the physical button on the smart plug that controls the relay. Whilst the relay is the most important, to preserve the device’s full functionality, we need to tell ESPHome about all of them.

The ESPHome section

Here’s the first bit of the YAML file:

esphome:
  name: $name
  friendly_name: $friendly_name

esp8266:
  board: esp01_1m

If you use the wizard in the ESPHome Device Builder, then these will have been created for you and filled out with whatever name you’ve chosen. The second block tells ESPHome that the device has an ESP8266 chip, and it’s a generic board. This was the default selection and seemed to work fine for me.

Logging, API, OTA, Wi-Fi

Next, we have the following:

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: $key

ota:
  - platform: esphome
    password: $password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "esphome-smartplug"
    password: $fallbackpassword

captive_portal:

The logger means that the device will keep logs. It’s up to you whether you keep this in, but as I was coming up with this myself, I decided it would be best to help debugging.

Because I’ll be using this smart plug with Home Assistant, we need to include the ‘api:‘ section. Again, the ESPHome device builder should have filled out an API key here.

The ‘ota:‘ section allows for ‘over the air’ updates. This means that your device can update to new versions of ESPHome without needing to be plugged in to a device, either over USB or a UART connection.

In the ‘wifi:‘ section, this includes references to the ESPHome Device Builder’s secrets file which should have your Wi-Fi network SSID and password. If the smart plug can’t connect using these details, then, as a fallback, it’ll create its own access point. This is where we also need the ‘captive_portal:‘ section, which allows the user to select a Wi-fi network if the one we’ve pre-programmed can’t be found.

Web server

Next, we have this section:

web_server:
  port: 80

This is optional, but it creates a Tasmota-like web app that you can connect to. This will allow you to press the button on the smart plug, view the logs, and upload firmware. We don’t need it, but it partially replicates the functionality of the previous Tasmota firmware, and helps with debugging.

Binary sensor

This is the section that enables the hardware button on the smart plug to work:

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO13
      mode: INPUT_PULLUP
      inverted: True
    use_interrupt: True
    name: "Power Button"
    id: "smartplug_button"
    on_press:
      - switch.toggle: "smartplug_relay"
    disabled_by_default: True

We’re telling ESPHome that the button is attached to GPIO pin 13, and, when the button is pressed, to toggle the relay on or off. I’ve also added the ‘disabled_by_default: True‘ line so that it doesn’t show in Home Assistant.

Switch

Now, we need to configure the relay, and make it available to Home Assistant:

switch:
  - platform: gpio
    name: "Switch"
    id: "smartplug_relay"
    pin: GPIO5
    on_turn_on:
      - output.turn_on: led
    on_turn_off:
      - output.turn_off: led
    restore_mode: RESTORE_DEFAULT_ON

So, we’re telling Home Assistant that the relay is connected to GPIO pin 5. We’re also telling it to turn on the LED when the relay is turned on, and off again when it’s turned off. The ‘restore_mode: RESTORE_DEFAULT_ON‘ tells ESPHome what to do when the device boots up, perhaps after a power cut. I’ve set it to try to restore the status that it had before, but if it can’t, to turn the relay on.

LED

Here’s our final block, to tell ESPHome that there’s an LED

output:
  - platform: gpio
    pin: GPIO4
    inverted: true
    id: led

Again, we tell ESPHome that it’s connected to GPIO pin 4. The YAML code in the Switch section tells ESPHome when to turn the LED on or off.

So, now we have a YAML configuration file. This should be added as a new device in the ESPHome Device Builder.

The flashing process

The good news is that switching from Tasmota to ESPHome is easier than from the original Tuya firmware. You probably won’t have to get out a UART converter and cables, unless you accidentally brick your device. Instead, you just need to follow these instructions, which involve manually downloading the firmware binary, and then uploading it to Tasmota. When the device restarts, it’ll be running ESPHome instead.

Energy monitoring over Matter

A photo of a Meross energy monitoring smart plug in a UK plug socket

Back in April last year, I bought a pair of Meross energy monitoring smart plugs (sponsored link). I’d chosen them because they supported Matter, and so could be easily added to Home Assistant, Google Home and Apple Home all at the same time. However, I lamented that their Matter support was limited to turning them on and off; the energy monitoring data wasn’t available through Matter. That has now changed.

If you have these plugs, or are looking at buying them, here’s how to get energy monitoring over Matter into Home Assistant:

Step 1: Update the Firmware

Firstly, you’ll need to open the Meross app on your phone, and ensure that the smart plug is linked to the app. Next, you’ll need to do a firmware update – this is located on the user tab, for some reason. The firmware update should take a couple of minutes.

A screenshot of the Home Assistant interface, showing the settings for the Meross energy monitoring smart plug and the 're-interview device' option.

Step 2: Re-interview your smart plugs

Originally, the way I found out that this was working was because one of my plugs had stopped working, and needed a factory reset. I then had to remove and re-add it to Home Assistant, Google Home and Apple Home. When I re-added it to Home Assistant, that was when I found that it now supported energy monitoring over Matter, as the power, wattage, voltage and current for the smart plug now appeared in the device settings.

The good news is that you don’t need to remove and re-add the device. Instead, you can ‘re-interview’ the device. Open it up in Home Assistant’s device settings, and then click the three dots next to ‘Share device’, and then ‘Re-interview device’. Home Assistant will then attempt to find out what capabilities the device has, and should add the new entities for you.

Step 3: Uninstall the Meross LAN custom integration

Now that Home Assistant can receive the energy monitoring data over Matter, you shouldn’t need the Meross LAN integration from HACS anymore. You’ll need to amend any existing automations that use the Meross LAN entities (I use this energy monitoring blueprint), and then remove the devices before uninstalling it through HACS. This was one of the integrations that was causing the biggest slowdowns in my Home Assistant, and it seems to be more responsive now that I’ve removed it.

The key advantage of using energy monitoring over Matter is that the data remains local to your home network. Otherwise, you’re sending and receiving data to Meross’ servers (unless you’ve managed to reconfigure them to use a local MQTT broker like Mosquitto). That also means that, if those servers go down or Meross withdraws support, you would no longer get energy monitoring data. Switching to Matter should therefore give your smart home system more resilience.

How we handled poor phone reception

A photo taken atop the Great Orme in Wales

Our holiday in Wales was good, but we didn’t always have good phone reception whilst we were there. Now, it’s a holiday, and you can argue that we probably should have had a break from phones, social media and the like. But we also need our phones for certain things – I use Google Maps for navigation, for example, and we needed apps to find out where to charge our electric car.

In North Wales, most of the population is concentrated in a relatively narrow strip of land between the hills and the north coast. Providing a mobile service is therefore more difficult and expensive – each mast is likely to cover a smaller and more sparsely populated area than in a big city. For the most part, there were few places where we had no signal whatsoever. But even when showing full bars, we couldn’t make calls or use the internet in some places.

Here’s how we handled it:

Downloading things on Wi-Fi beforehand

It’s a bit hidden, but Google Maps lets you download offline maps on a Wi-Fi connection. We had good internet where we were staying – the Conwy area has been upgraded to full fibre broadband – so we could download a map of the area. This meant that we could still use Google Maps to navigate without a mobile data connection.

Note that Google’s guide, linked above, is a little out of date. At the time of writing, you need to:

  1. Search for a place
  2. Swipe right on the lower panel where it says ‘Directions’ and ‘Start’, until you see a button that says ‘More’
  3. Tap ‘More’ and then ‘Download Offline Map’
  4. You can then pinch and zoom to select the area – a larger area will take up more storage space

There are limitations – you won’t get live traffic data if you’re using an offline map without a phone signal. However, once Google Maps is able to reconnect, it’ll update your route if needed. If you use Gmail and sign in to Google Maps with the same account, you may get push notifications ahead of upcoming trips to prompt you to download offline maps. I’d recommend it, especially if it’s somewhere you’ve not been before, or somewhere particularly remote.

The same applies for content that you want to consume whilst outside of mobile data range. If you use Spotify Premium, you can download playlists ahead of time. I make sure that I download, rather than stream, any shows on BBC Sounds that I want to listen to.

Hotspotting where possible

If there’s free Wi-Fi available somewhere that you’re visiting, use it. Most National Trust properties have free Wi-Fi in their cafés, for example.

If you have another device on a different phone network, then you could try hotspotting off that too. My phone is on 3, but my iPad has a mobile data SIM on a virtual operator which uses EE. Whilst it was a bit of a pain to have to carry my iPad around as well, it meant I could use the iPad as a Personal Hotspot for my phone and get online. You may be able to do this with a newer car, if you have a data plan on it, or a portable Wi-Fi hotspot device.

Get an eSIM on a different network

When I’ve travelled abroad, I’ve used eSIMs from Airalo rather than roaming on my existing SIM, as it’s cheaper. But you can buy UK eSIMs too. If your primary SIM has poor signal, then you could buy an eSIM on a different network that may work better. My iPhone (and I assume most new-ish Android phones) can switch between multiple SIMs on the fly, if one loses signal. If you decide to buy from Airalo, use the code NEIL6715 for some extra initial credit.

If you want to go further, try Honest Mobile’s Smart SIM. This can connect to all four UK networks (3, Vodafone, O2 and EE, although 3 and Vodafone may merge their networks soon), and costs £45 per year. However, whilst there are no data limits, it is limited to set pre-approved apps. These are mainly navigation apps like Google Maps, messaging, news, weather, banking and apps for electric car parking. There’s about 400 in total, but it excludes any social media apps, or any that involve streaming audio or video. I signed up to Honest Mobile after coming back from Wales, and I’m giving it a try for a year to see how I get on. Here’s my referral link if you want your first month free.

Honest Mobile’s Smart SIM has been heavily advertised on my Facebook feed, and so I read this post by Martin Brophy before committing.

Ultimately, what works for you will depend on how often you’re without a mobile signal, and how much you rely on your phone. I normally get a good signal on 3 in most places, but I’ll see how I get on with Honest Mobile.

How to disable go2rtc in Home Assistant

Home Assistant includes support for go2rtc, a streaming video application, which can be used to monitor and store footage from CCTV cameras. Since the November 2024 (2024.11) release of Home Assistant, go2rtc has been included in Home Assistant’s Default Config, which means that integration is loaded automatically on startup. If you don’t have any cameras to monitor in Home Assistant, this can mean some warnings appearing in your logs, and potentially slow Home Assistant down.

There are two ways to disable go2rtc if you don’t need it – a hard way and an easy way.

Hard way: Disable Home Assistant’s Default Config

You can tell Home Assistant not to load the Default Config. This gives you more control over which built-in integrations are loaded when you boot Home Assistant up, however, it means editing your configuration.yaml file. You’ll need to delete the ‘default_config:‘ line, and then create new entries for all the parts of the default configuration that you want to keep. This may be fine for simple installations, but for most users, this will add more complexity. I wouldn’t recommend this personally.

Easy way: Using HACS integrations

There are two HACS integrations that you need to install:

  1. Early Loader
  2. Default Config Exclude

These are not in the standard HACS repository, so you’ll need to open HACS, click on the three dots in the top right, select ‘Custom Repositories’ and then add the Github URLs in turn. You’ll need to install Early Loader first, restart Home Assistant, and then install Default Config Exclude next.

Once installed, you’ll still need to edit your configuration.yaml file, but instead you’ll only have to add a small block. Here’s mine:

default_config_exclude:
  - go2rtc
  - stream
  - cloud
  - my

What you’ll notice is that I’ve added some other integrations – stream, Home Assistant Cloud, and My Home Assistant. If you don’t have any cameras, then not only do you not need go2rtc, you probably don’t also need stream either. I don’t use Home Assistant Cloud or My Home Assistant, so I’ve disabled these too. As well as starting up a little quicker, Home Assistant also now uses slightly less RAM than before.

Home Assistant Green review

A photo of a plugged-in Home Assistant Green

Since I started using Home Assistant in October 2023, I’ve been running it on a Raspberry Pi 4, first in ‘Container’ mode and more recently in ‘Supervisor’ mode. I’ve now bought a Home Assistant Green, and I’m using this to run Home Assistant.

The Home Assistant Green is one of the two dedicated hardware platforms that come pre-installed with Home Assistant. The other, the Home Assistant Yellow, deserves its own section later on. By buying one of these devices, you’re also helping to financially support the Home Assistant project.

Why I bought a Home Assistant Green

As someone who has previously gone down the DIY route, it may seem surprising that I’ve decided to buy a Home Assistant Green. My decision came down to the following:

  • Price – the Home Assistant Green costs around £90 in the UK, which isn’t much more expensive than a bare bones Raspberry Pi 5. Once you’ve added a case, power supply and SSD to a Raspberry Pi, the Home Assistant Green is actually cheaper.
  • Cheap to run – I had considered some kind of mini PC, which would offer me more power, but with both a higher upfront cost and ongoing electricity cost. The Home Assistant Green runs on up to three watts; it comes with a 12 volt, one amp barrel plug power supply. As it’ll be on all the time, I don’t want a power-hungry device.
  • The need for a dedicated Home Assistant device. In May, it was announced that the ‘Supervised’ install method would be deprecated along with ‘Core’; only a tiny fraction of people use these methods. This dovetailed with me wanting a dedicated device for Home Assistant, rather than trying to run it on the same little Raspberry Pi as Plex and some other services. In other words, I was in the market for an additional device to run Home Assistant, and the Home Assistant Green fitted the bill. Meanwhile, my Raspberry Pi 4 can be dedicated to Plex.
  • No longer needing to worry about compatibility. According to Home Assistant Analytics, over a third of people install Home Assistant on a Raspberry Pi and so I don’t expect it to become unsupported. However, as the Home Assistant Green is the closest thing to ‘official’ hardware, I know it’ll be well-supported in future releases. As I’m coming to rely on Home Assistant more, I need it to run on a reliable platform.

What the Home Assistant Green can’t do

Coming from a Raspberry Pi, it’s worth noting what features the Home Assistant Green lacks. These include:

The Home Assistant Green does have two standard USB-A ports for you to plug in dongles and hubs, so I have my Thread and Zigbee dongles connected. Not having Wi-Fi or Bluetooth on board may reduce interference on the 2.4 GHz band, I suppose.

The box that the Home Assistant Green comes in

Home Assistant Green hardware

The Home Assistant Green is actually bigger and heavier than I expected it to be – certainly, it’s larger than a Raspberry Pi. It has a very sturdy base, which is designed to act as a heat sink – it’s passively cooled so there’s no fan noise. Inside, there’s a quad-core 1.8 GHz ARM processor, placing it between the Raspberry Pi 4 and 5 in terms of computing power. There’s 4 GB of RAM, and storage comes courtesy of a 32 GB eMMC (embedded multimedia card).

You’ll also get an AC adaptor with a variety of plugs (including a UK 3 pin plug) and an Ethernet cable.

Optionally, you can install a CR2032 battery inside. It doesn’t come with one, but if you add a CR2032 battery then the system clock will remember the time between reboots. It’s mostly only needed if you’re using it somewhere with poor or no internet access, as otherwise the clock synchronises with the internet on startup.

There’s also an HDMI port and a slot for a micro-SD card, but these are only for system recovery purposes and not for general use.

I would tell you more about how it is to use, but to be honest, it’s just like using Home Assistant on any other platform. All I had to do was restore a backup from my Raspberry Pi 4, and I was up and running.

Home Assistant Yellow

If the Home Assistant Green doesn’t meet your requirements, consider the Home Assistant Yellow. It’s more advanced and upgradeable, but also requires some assembly as it ships without a logic board. That’s provided by a Raspberry Pi Compute Module, the idea being that you can upgrade this incrementally over time without needed to buy a whole new device. It’s a nice idea, but it also adds to the cost – the base Home Assistant Yellow costs around £120 with the Compute Module adding £30-40 on top, and it arrives in kit form rather than pre-assembled. However, long term, it could be cheaper due to it being upgradeable.

There are other differences: The Home Assistant Yellow is available with Power over Ethernet (PoE), meaning that it doesn’t need a separate power supply. However, you’ll need a router or a switch which supports this. If you don’t, then you can buy a Home Assistant Yellow with an AC adaptor.

The Home Assistant Yellow also has an 802.16 radio, meaning that it can support Zigbee devices without an extra dongle. This can also be re-programmed to support Thread, but not both Thread and Zigbee at the same time. Additionally, there’s a 3.5mm audio port, and inside, there’s an expansion port for installing an SSD if you need one.

Whilst I have the technical knowledge to get a Home Assistant Yellow up and running, once you’ve factored in everything, it costs about double the price of a Home Assistant Green.

Tasmota firmware upgrade failing due to lack of storage space

A screenshot of the Tasmota firmware upgrade screen on the web interface

Once you’ve switched your ESP devices from the stock proprietary firmware to Tasmota, the good news is that future firmware upgrades to newer Tasmota versions should be straightforward. You just need to open your device’s web interface, and do an over-the-air (OTA) upgrade, or use something like TasmoAdmin to bulk-upgrade multiple devices. At least, that’s how it works in theory.

What you may find is that the update fails, due to a lack of storage space. So today, I’m going to outline four possible workarounds that you could try if your Tasmota firmware upgrades fail.

Why is there a lack of storage space?

Firstly, a bit about why this happens. You’re most likely to encounter this error with devices that use the ESP8266 chip. Some of these chips come with as little as one single megabyte of flash memory storage, and the standard build of Tasmota is 656 kilobytes (as of version 15.0.1 which is the latest at the time of writing). There simply isn’t enough space for both the current firmware and the new firmware to sit side-by-side ahead of the update process.

Now that we understand why the problem occurs, we can try some solutions.

Solution 1: gzipped binaries

As long as you’re upgrading from a version newer than Tasmota 8.2 (which came out over five years ago now), you can use the smaller gzipped binaries. This reduces the standard Tasmota 15.0.1 release binary down to 469 kilobytes.

However, on some of my devices, that was still too big – 656 plus 469 is more than 1024 kilobytes and exceeds the capacity of the 1 MB flash storage.

Solution 2: install tasmota-minimal first

There are a couple of slimmed down versions of Tasmota:

  • tasmota-lite – a cut-down version of Tasmota without many of the sensors or drivers included
  • tasmota-minimal – the bare-minimum of Tasmota which can’t do anything apart from be upgraded to the full firmware

What you can do is install the latest version of tasmota-minimal first, and then the latest standard version of Tasmota. tasmota-minimal is only 265 kilobytes, and so it’s small enough to fit alongside the standard firmware. Once installed, there’s then space for the full version to be installed.

When you do an OTA upgrade, this is the process that should happen – tasmota-minimal gets installed first, and then the full version. But if it doesn’t, you can do this manually yourself. Your device settings, such as the GPIO mappings and MQTT settings, will be retained during the process.

Solution 3: tethered firmware update

A tethered update is where you use another device, such as a PC, to update the firmware. This means physically connecting the device to the PC. It gets around the storage limitation as the firmware doesn’t need to be downloaded to the device running Tasmota first.

How easy this will be will depend on the device, and where it is. If you’re running Tasmota on a development board, such as a Wemos D1 or m5stack Atom, then you can plug in into your PC with a standard USB cable (as long as it’s a data and power cable). However, if your device is buried away somewhere inaccessible, or is a consumer device that requires disassembly and a USB to UART converter, then you may not want to do this every time a new version is released.

Solution 4: Compile Tasmota yourself

The standard builds of Tasmota cover most common use cases. However, as Tasmota is open source, you can compile it yourself. That way, you can create a smaller, customised build for your device that doesn’t include any extra functions that aren’t needed. There are tools available to do this, but this is really only for advanced users – especially as you’ll need to recompile the binaries for each release.

Solution 5: Switch to a different firmware

As I mentioned last month, Tasmota is not the only game in town. If you also use Home Assistant, then consider replacing Tasmota with ESPHome.

ESPHome has a higher learning curve, due to its use of YAML configuration files. But, once this is set up, it’s easier to compile new binaries each time a new version of ESPHome is released. And, if you’re lucky, you’ll be able to download a pre-built YAML file from the ESPHome Device Repository. Just be aware that it’s not as extensive as the Tasmota Supported Devices Repository – the ESPHome repository has details of around 600 devices compared to almost 3000 for Tasmota. I wasn’t able to find an exact match for ESPHome for my smart plugs, for example.

ESPHome has some other advantages. For example, you can edit the YAML configuration to tell Home Assistant what type of device is plugged in, say a light. That means it’ll appear in Home Assistant as a light, rather than a switch, without needing to use the Change device type of a switch helper.

As with solution four, having a smaller firmware binary will make future OTA updates easier, and these updates can be managed through Home Assistant.

TasmoAdmin: manage multiple Tasmota devices

A screenshot of the TasmoAdmin interface

Now that I have multiple Tasmota devices, I went to look for a tool to manage them collectively, and found TasmoAdmin. It’s a web-based app that can monitor the status of your Tasmota devices.

The easiest way to install it is with Docker, and it’s also available as a Home Assistant addon. You can also install it manually on an existing local web server with PHP available. Once installed, you’ll need to create a user account, and then you can start adding your devices by IP address.

Once all your devices are in there, you’ll get a nice list, with their IP address and their current version of the Tasmota firmware. You can then jump quickly into the standard Tasmota configuration for your device, but you can also configure many settings from within the TasmoAdmin interface. This includes things like the MQTT and Wi-Fi settings.

You can also use TasmoAdmin to perform bulk actions on multiple devices at once. For example, you can trigger backups or firmware updates in bulk. The ‘Start’ page in TasmoAdmin also lets you, for example, turn all of your switches on or off at once.

It’s a handy tool. Bear in mind that if you run TasmoAdmin as a Home Assistant addon, it doesn’t currently support ‘ingress’ and so you can’t open it within the Home Assistant interface. This also means that you might not be able to access the dashboard remotely. TasmoAdmin may also work with OpenBeken devices, but I haven’t tried this myself.

Tuya-Cloudcutter

A Tuya IR and RF bridge that has been flashed with new firmware using tuya-cloudconverter

Last year, I wrote about a tool called ‘tuya-convert’ which exploits a vulnerability in ESP-based Tuya devices to install custom firmware such as Tasmota. But not all Tuya devices use ESP chips, and that’s where tuya-cloudcutter comes in.

I have one such device, an ‘S11’ RF and IR bridge (pictured above) that I picked up cheaply from AliExpress last year. Instead of one of Espressif’s ESP chips, it comes with a Beken BK7231N chip. Having disassembled its case, I also didn’t find any obvious pins for the UART bus. So I was relieved to come across tuya-cloudcutter, as it doesn’t require any soldering or disassembly. tuya-cloudcutter should work with any devices that use the BK7231T and BK7231N chips.

Like tuya-convert, tuya-cloudcutter exploits a vulnerability. This was responsibly disclosed to Tuya (the bug bounty was donated to charity), and newer devices are shipped without this vulnerability. However, there’s no firmware update for my S11 device to fix the issue, which is perhaps poor from a security perspective but suits my needs right now.

Running tuya-cloudcutter on a Raspberry Pi

You’ll need to run tuya-cloudcutter on a Linux device, and a Raspberry Pi is perfect for this. Indeed, there’s a detailed tutorial to follow. You’ll need Python, Docker, Git and NetworkManager installed and enabled, and there are a couple of configuration files to edit before you start. Everything is done using a command prompt, so you could do it over SSH using a Windows machine with Putty if you wanted to.

A note: I first tried this on my nine-year-old’s Raspberry Pi 400, and it didn’t work, whereas it did on my Raspberry Pi 4. I believe it was an issue with the specific Wi-Fi adaptor in the Raspberry Pi 400.

You may find that it’s easier to have the device already set up in the Tuya or Smart Life app, as you’ll be able to find the existing firmware version. You’ll need this when running the tuya-cloudcutter tool.

Detaching and flashing

tuya-cloudcutter offers two modes:

  1. Detach – this leaves the Tuya firmware intact on the device, but detaches it from the Tuya cloud. You can then use the LocalTuya or TuyaLocal custom Home Assistant integrations from HACS to control your device, but the official Tuya and Smart Life apps won’t work anymore.
  2. Flash – this also flashes new firmware onto the device.

In terms of firmware choices, by default you get:

  • OpenBeken – a Tasmota-like firmware where you can configure the device
  • ESPHome Kickstart – a minimal version of ESPHome, which can be updated later.

You can also add your own firmware, although be careful as you may brick your device if the firmware isn’t configured correctly.

If you choose to flash new firmware, then when the tool has run correctly, you’ll see a new Wi-Fi network appear for you to connect to. The Hotspot login page should open automatically, but if not, go to http://192.168.4.1/ to proceed. You can then configure the firmware to connect to your Wi-Fi network.

Switching firmware later

For my device, I tried OpenBeken first, but found that it wasn’t able to use the RF capabilities of the device. Instead, I built an ESPHome configuration, using the tuya_rf custom component, and flashed that, using OpenBeken’s OTA firmware updater. Because once you’ve used tuya-cloudcutter to install new firmware on a device, you don’t need to use it again – you can switch from OpenBeken to ESPHome and vice versa quite easily.

Also, if you read yesterday’s post about the Sonoff RF Bridge, no, this RF bridge didn’t work with my doorbell either.