LocalDeck Recovery

Created: 14 July 2024
Updated: 14 July 2024
By: Adam Allport
Reading time: 6 mins

In early July 2024, I became aware of a breaking change in ESPHome. This change caused difficulties for LocalDeck users using ESPHome 2024.6. Rest assured, I am committed to guiding you through the recovery process for your LocalDeck devices that were affected by the issue. I will also discuss what went wrong, providing you with a clear understanding of the situation.

Please note that during this time, I have also been reworking all the PCBs for the initial batch due to a fabrication issue. This has meant I've been balancing my time between the two issues, in addition to trying to communicate back to the community about what has happened.

Admittedly, I have been struggling to keep up with the communication and support required whilst also trying to fix the issue and rework the PCBs.

Allport-IT Ltd is still a micro-company, with me as the only full-time employee. Earlier this year, I was fortunate enough to start talking to a member of the community who has been massively supportive of LocalBytes. I subsequently hired them as a community manager. They typically work for us 5 hours a week and have been a massive help in keeping the community informed and supported.

I wish I could have done more to help you all during this time, and I'm sorry for the lack of communication.

It's taking a little time to get everything back on track. Still, please know that I am committed to fixing the problem and ensuring you can continue enjoying your LocalDeck devices.

Getting you back up and running

Before we dive into what went wrong, let's talk about how to get back up and running:

  1. Ensure you are running ESPHome 2024.6 or later.
  2. Ensure you are running LocalDeck Configurator 0.2.3 or later (You may need to check for updates in the Home Assistant Add-On Store)
  3. Remove everything except the substitutions and wifi block from your config file.
  4. Open it up in the configurator.
  5. Save & Compile, as described in the setup guide.

Example:

substitutions:
  name: localdeck-426d04
  friendly_name: LocalBytes LocalDeck 426d04

If you are having issues with only some of the LEDs working, please turn on the "ledstrip" entity and send us a photo.

It's likely a solder joint has failed, which will be fixed by sending you a new LocalDeck and receiving the old one back, which I will then fix PCB to prevent waste. Please note that this will not go back to our warehouse, so please wait for instructions on how to return the device!

The upstream change

ESPHome 2024.6, there is a change to the way ESPHome devices can receive updates. Previously, the only way to Update the device was by recompiling firmware via the configurator. Under the new update, providing a manifest file that the device can inspect and self-update upon command is possible. In theory, this allows manufacturers to use ESPHome and remotely provide firmware updates without the involvement of the ESPHome add-on.

As such, a breaking change to the schema required you to define the device's platform. When I became aware of this, I should have updated the guidance to show people how to update their firmware manually, but that's not what happened.

Instead, I attempted to fix the issue by making a fast release on the local deck configurator, but this release caused further issues due to insufficient testing on our end.

The fix I should have provided

To update your config to 2024.6, you will need to add the following to your config file:

ota:
+   - platform: esphome

The configurator will not add this for you (unless you are importing for the first time), so you will need to add this manually. It's important to note that the configurator will output the config file in two sections.

  1. The first section is written on the first import of the config; it contains the substitutions, wifi settings, etc.
  2. The second section contains the configuration for all the switches, lights, etc.

Following conversation with our insiders (a small group who have been helping me test the inital designs) I decided to put the OTA configuration in the first section, which allows users to define any additional settings they may wish to use. As such, updating the configurator would not have fixed the issue for existing users.

Releasing broken versions of the configurator

In the rush to fix the issue, I released a broken configurator version. This is due to a WIP feature (Follow colour) that was not yet ready for release.

The code behind the follow-colour feature was also responsible for the boot loops that some customers experienced after updating to 0.2.2

This feature should have been in a separate branch, but I mistakenly included it in the release. Following extensive testing and a few refactors, this has been fixed in 0.3.

LocalDeck Configurator (Dev)

As part of this incident, I have taken steps to ensure that it does not happen again. To start, there is now a development version of the configurator that will be used to test new features and bug fixes. This gets continually released as new features are merged in for beta testing.

graph LR dev -- When ready for release --> tag[Production Release] main -- Start New Feature --> feature[New Feature] -- Provisional Release --> main feature <-- Continual Testing --> test[Testing] main[Main Branch] -- Published each update for testing --> dev[Development Release]

If you wish to participate in testing, you are welcome to install the development version of the configurator. This will allow you to test new features and bug fixes before they are released to the public. However, the development version may not be stable on occasion, so please be aware of this before installing.

I will do my best to ensure the development version is as stable as possible, as this version will be periodically promoted to the production release!

If you feel a new issue has been released in the development version, please let us know by raising an issue on GitHub.

What we have learned

It's rare for a product to be launched without any issues; LocalBytes is no exception. As a company, we've learned a lot from this incident and are committed to making things right. I appreciate your patience and understanding and apologise for the lack of communication.

I hope that by being transparent about what went wrong, I can rebuild your trust and continue to provide you with the best possible service. Additionally, I hope this can serve as a learning experience for anyone looking to release a product.

If you have any questions or concerns, please don't hesitate to reach out to us.

Thank you for your continued support. Adam Allport Founder, LocalBytes