My Mixergy IoT device – The start!

I’m loving my Mixergy tank, but one of the main issues is that the temp display is connected to the tank by a short wire. My tank sits out in the garage, so without consulting the app, it’s hard to know how much hot water you have.

The Mixergy control unit, showing charge, connection state and heating info.

Using my Home Assistant Mixergy integration and Siri Shortcuts, I’ve created something that my wife and I use. We can ask Siri to “check the hot water”. and it will reply with the current charge and water temperature. This is really useful as it works on our Homepods.

As fun as it is having to ask the computer for the tank measurements, I wanted to actually put a gadget into the bathroom, which would simply display the current charge etc.

Platform

When choosing the platform, there were a few considerations. Firstly, I didn’t want to spend any more money. I have small screens and MUC devices strewn around the office, so I wanted to make use of the stuff I already had. Secondly, it needed to use little or no power since it was going into the bathroom.

Years back, I purchased a WaveShare e-Paper display, but never found a use for it, until now. E-paper is great as it consumes no power when it’s idle. This felt look a logical choice!

For the MCU, I picked D1-Mini, which has an ESP8266 controller on it. These are great little boards for experimenting with.

Normally, I would be firing up a ZephyrRTOS project and writing some C, but this time I wanted to spend less time messing around and more time actually getting something finished. I’d heard about ESPHome and took a look. ESPHome is really cool platform that works with various MCUs and allows you to just cherry pick various components to build what you want. Put it all into a YAML file and install it. You can even update it over the air. It’s pretty cool.

It also supports ePaper! You’ll find the support detailed here, in addition to the wiring information. https://esphome.io/components/display/waveshare_epaper.html

To create a node for my Mixergy, I put together this little YAML file:

esphome:
  name: bathroom
  platform: ESP8266
  board: d1_mini

wifi:
  ssid: "<wifi_ssid>"
  password: "<wifi_password>"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Bathroom Fallback Hotspot"
    password: "<update_password>"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "PWD"

ota:
  password: "PWD"

# Sensor
sensor:
  - platform: homeassistant
    id: current_charge
    entity_id: sensor.current_charge
    internal: true
  - platform: homeassistant
    id: coldest_water_temperature
    entity_id: sensor.coldest_water_temperature
    internal: true
  - platform: homeassistant
    id: hot_water_temperature
    entity_id: sensor.hot_water_temperature
    internal: true

# Display
font:
  - file: 'fonts/arial_narrow_7.ttf'
    id: font1
    size: 32
  - file: 'fonts/arial_narrow_7.ttf'
    id: font2
    size: 78
  - file: 'fonts/arial_narrow_7.ttf'
    id: font3
    size: 24
    
spi:
  clk_pin: D5
  mosi_pin: D7

display:
  - platform: waveshare_epaper
    cs_pin: D1
    dc_pin: D3
    busy_pin: D2
    reset_pin: D4
    model: 1.54in
    full_update_every: 30
    rotation: 90
    lambda: |-
      it.printf(100, 10, id(font1), TextAlign::CENTER_HORIZONTAL, "Mixergy");
      it.filled_rectangle(10, 50, 5, 130);
      it.filled_rectangle(50, 50, 5, 130);
      it.filled_rectangle(16, 180 - (130 * (id(current_charge).state / 100)), 33, 129 * (id(current_charge).state / 100));
      it.filled_rectangle(10, 180, 45, 5);
      it.printf(60, 51, id(font3), TextAlign::TOP_LEFT, "%.1fC", id(hot_water_temperature).state);
      it.printf(130, 88, id(font2), TextAlign::CENTER_HORIZONTAL, "%.0f%%", id(current_charge).state);
      it.printf(60, 162, id(font3), TextAlign::TOP_LEFT, "%.1fC", id(coldest_water_temperature).state);


This connects to the Home Assistant API and queries three of the sensors that belong to my Mixergy integration. It then renders this on the ePaper screen, showing a simple representation of the Mixergy tank, the hot and cold water temperatures and the percentage charge. It’s everything you need to know about the tank, at a glance.

Next Steps

Next step is to connect this sucker to a battery and experiment with the ESP8266 deep sleep. I think a five minute interval for refresh is probably enough (dropping to hourly at night), but connecting to WiFi and redrawing the screen consume a lot of power, so I’ll have to play around with it. Maybe I can use a small solar panel too as the unit will probably sit on a sunny windowsill.

I’d also like to make a little case for it, but I’ll need to do some research and see if there isn’t something I can just buy. This Waveshare unit is pretty common, so somebody must have made a case!

Then I’d like to add some sort of boost button, so we can charge the tank too. That’s further down the line as it will require changes to my Home Assistant integration…

Other Ideas

Given that a cloud API exists for Mixergy already, it would probably be possible to build a standalone unit that wouldn’t require Home Assistant at all. I’ve thought about this for my iOS shortcut – if I changed it to query the API directly, the Shortcut would be usable by anyone!

Smart Bulbs: my lightbulb moment?

I’ve always disliked smart lightbulbs.

Turn them off at the wall and you immediately question why you paid 1000% more.

I’ve held this position for years and years, until one day I came across a tweet by Troy Hunt where he used the words detached and Shelly1. This immediately captured my interest!

Now, I’ve had a few Shelly 1 relays installed in my house and they brilliant. So brilliant in fact I’d sort of forgotten about them. But when I heard about Troy was using them in combination with smart bulbs, my mind started racing.

Somewhere in the past 18 months, Shelly added a new Button Mode into their settings called Detached Switch.

Traditionally, you would install a Shelly 1 and use the button type of Edge Switch, which would allow the wall switch to turn the light on and off by flipping it. You can turn it and off via an app and the wall switch. Brilliant. Of course, the problem with smart bulbs still remains – turn the Shelly off at the wall and the smart bulb loses power.

This is where Detached Switch mode comes in! The relay is basically On and when you flick the wall switch, it raises an event and you then react accordingly.

With this combination, we can have a smart bulb and use a light switch!

Setting it up, however, does require jumping through a few hoops.

Setting it all up

Once the relay has been physically installed and setup, you can switch the Button Type to Detached Switch using the settings webpage on the relay. This disconnects the relay from the switched live.

For me, I use HomeAssistant, so I use the Shelly Integration to add the relay. When you open the device, you’ll see there are seven entities. The switch.shelly1_xxxx entity points to the actual relay, so toggling this switch will actually toggle the relay on and off.

The entity we’re interested in is the binary_sensor.shelly1_xxxx_input. This entity is connected to the switched live on the Shelly 1, so flicking the light switch will change this entity from on to off. By default, this entity is disabled in HomeAssistant, so you’ll need to enable it.

The Shelly Integration shows more than just the relay control

I purchased a LIFX IR bulb, one with a full color range and HomeKit support. LIFX setup was easy. The LIFX app found the bulb and connected it to my WIFI and HomeKit.

LIFX Nightvision A60 1200 lumens [B22 Bayonet Cap], Full Colour with  Infrared, Wi-Fi Smart LED Light Bulb, No bridge required, Compatible with  Alexa, Hey Google, HomeKit and Siri : Amazon.co.uk: Lighting

As I use the LIFX integration on Home Assistant, the bulb was added automatically.

I now had my smart bulb and my detached Shelly relay.

To connect these two things together, I used NodeRed. I use NodeRed for all of my automations. The automation is just two nodes. The first listens for state changes from the _input entity and it then toggles the LIFX bulb on or off.

Overall?

I’ve switched out all the a lot of the bulbs in my house to these LIFX bulbs as I picked up some refurbished dawn/dusk bulbs on Amazon.

It’s been around a month since I started converting all the bulbs and pendants, but in that time I’ve only had one issue and that was caused by one of the LIFX bulbs losing connection with HomeKit – which didn’t affect Home Assistant.

This setup is a great combination. The kids are can use Siri to turn on some of the lights and when we’re going to bed, the physical switch works as it always has.

There are some things I need to tweak, like brightness. For example, if we dim the light as we settle into the evening, we’re left fumbling for an app or asking Siri if we want the brightness back up when we turn the light on the following evening. I need to add some automations to just reset the brightness overnight or something.

My Mixergy Smart Hot Water Tank

I recently installed a Mixergy smart hot water tank into my new house, as part of a total renovation. I’ve been very impressed and wanted to share my thoughts on the product after using it for a few weeks.

The problem with hot water tanks

For me, the problem with hot water tanks two fold.

  • You’ve no idea how much how water you actually.
  • You don’t know how hot the water in the tank actually is.

My previous arrangement had a 210L unvented cylinder connected to a system boiler and controlled using a Nest Thermostat. In a setup which is repeated around the world, my boiler turned on at 5AM and heated the water for 30 minutes.

During the summer months, the water that came out of the tap would burn your hand. Sometimes we’d have water for two showers and a kids bath and other times, my shower would run cold towards the end. Never a great start to the day.

I tried to get a handle on this myself, by installing two temperature problems on the inlet and outlet of the tank and using the temp of the hot outlet to try and guess how much hot water we had. It worked pretty well, as it took some of the guess work out at bath time. That said, I still had to boil the kettle to top up the water as it ran cold from the tap.

I wanted to install more probes, so I could measure the temp at a few places, but the best I could manage was the positions of the various outlets. In the end, I had four probes attached to my tank, which helped, but it was never just accurate enough.

Why not just keep heating the water?

This is a solution that most people suggest – just heat the water for another thirty minutes in the afternoon, or boost it before you give the kids a bath.

For me, this just wasn’t what I wanted to do. Burning gas is something we need to stop doing for the environment and besides, why waste money heating water that’s already hot enough?

Enter the Mixergy!

I stumbled across the Mixergy tank quite by accident, whilst watching an episode of the YouTube show Fully Charged. The brilliant Robert LLewlyn had one of the tanks installed in his home as part of a trial and during the show he interviewed the creator of the product.

What makes the Mixergy tank different from other unvented cylinders is that it can tell you roughly how much hot water you have, as a percentage of the tank’s overall volume. It will also give you the inlet and outlet temperatures (like my crude attempt!).

In addition, it also heats the water by volume, meaning you only heat the amount of water you want, rather than trying to heat all the water in the tank at one go. This gives you much greater control. If you only need 100L of water during a normal day, the Mixergy tank will heat that amount. Better for the environment and my pocket.

The design also enables the tank to heat water more quickly, so in the event you do run out, you won’t have to wait too long.

Cost

Mixergy offer a few variations on the base tank, allowing you to access different heat sources.

Solar PV – The tank has an electric element installed as standard and you can have a dual element installed, which allows you to power the element using Solar power

Solar Thermal – The tank can come with a secondary coil inside, which enables you to use Solar Thermal

Heat Pump – All the tanks are heat pump ready and they require an exchange to be installed. This can be added in the future.

Hydrogen Boilers – As it’s an unvented cylinder, the primary heating coil will work whether connected to a gas boiler or a hydrogen boiler, so again, the tank is future proofed.

I vacillated between the solar PV and solar thermal options. In the end, I opted to just have the Solar PV version. I figured that Solar PV offered more flexibility and is something I’d be more likely to invest in, combined with a home battery. Mixergy also offer integration with Timer-Of-Use electricity tariffs and that offers a little more flexibility too.

When it came down to cost, the 210L Solar PV Ready Tank I ordered was a little over £1200. An equivalent 210L unvented cylinder can cost anywhere from £300 to £800, depending on all sorts of factors. The Mixergy tank itself is close to the top end in terms of size, insulation etc. so I reckon it was around £400 more.

Ordering and Delivery

I ran into a few bumps here. When I got in touch with them originally, they confirmed they could make delivery on my desired date, to coincide with the plumbing work. However, as we got closer to the dates, they reached out to tell me they wouldn’t make it in time. I was pretty annoyed to say the least.

They reached out again a day or two later to say I could have the slimline version of the tank, delivered on the original date at no extra charge. I rushed over to the house with an inch tape to confirm it would fit, with the required clearance. Thankfully it did and the order was confirmed.

The tank arrived. I must admit to being a little giddy with exceitment!

Installation

The Mixergy tank is essentially just an unvented cylinder with some additional technology built into it. This means the installation of the tank is the same as any other unvented tank. Our heating engineer installed it without any issue. We were short a few capping nuts and because they were a very unusual size, we had to contact Mixergy to get them. They did provide them, but fortunately, the engineer found a few he had and finished the job..

Being a smart home enthusiast, the heating engineer didn’t connect the thank to any heating controls. This is something I wanted to tackle myself.

I chose Tado for my central heating. This was for two reasons – it offers HomeKit integration and they have an API that HomeAssistant can use. They also have nifty smart thermostatic valves, so individual rooms can be controlled as zones.

As plumber installed my central heating in an Y-Plan configuration, I knew that control of the valves would be split, with the Mixergy tank controlling the hot water valve and the Tado would control the heating. The setup was straight forward and after a lot of reading and some triple checking, it worked. Thankfully.

The Tado control unit all connected to the two valves

The App

With the tank wired into the boiler and fully commissioned, it was time to connect the app with the tank.

This was very simple, thankfully. The tank comes with a Power Line adapter, so it was a case of plugging in the powerline adapter and connect that to my router. I then scanned a QR code on the adapter and the app connected to the tank.

I went through the settings and configured things like target temperature (how how you want the water) and the schedules. You can set the tank to simple heat a certain amount of water or you can have it maintain a minimum amount of how water. You can also boost the tank to a certain amount of water on an ad-hoc basis! Very nifty.

As it’s unvented, you can also setup the cleansing of the tank. If you don’t already know, unvented cylinders need to be heated to a certain temperature every few weeks to kill any and all bacteria in the tank. With my old tank, I just left the boiler temp very high to ensure that the water was always hot enough. To maintain a lower temperature and do a manual cleansing every few weeks would have required going into the loft, boosting the boiler temperature and running the water for an hour. It was simply easier to take the lazy approach. Mixergy solves this by automatically managing this process. You choose the days and times that you want it to occur and it will use it’s best judgement to run automatically. They recommend you do it on days when you might want a lot of hot water anyway, so I opted for the days we bath the kids.

Another nice feature of the app is that it can give you energy consumption information!

First Showers

After our first night at the house, I fired up the app the following morning and boosted the water to 30%. I really had no idea how much water we’d actually need. 30%, as my wife will tell you, was not enough as her shower ran cold.

I think it was a combination of the flow rate being at maximum on the shower, the thermostatic valve not being calibrated and the fact that 60L isn’t enough water for two showers!

By reducing the showers flow rate just a little, we now get by on a charge around of 60%. We do too thi

The API + Home Assistant

Another factor in favor of Mixergy is the fact that they offer an API for interacting with the tank. Once I had the tank installed and connected, I spend an hour exploring the API and seeing what sort of information it returned. I was able to add a basic integration into Home Assistant that returned some basic information about the tank’s status.

I’m hoping to get this added into the Home Assistant platform, but I’ve a lot of work ahead of me!

You can check this integration at https://github.com/tomasmcguinness/homeassistant-mixergy

Final Thoughts

Overall, I’m very, very happy with the Mixergy tank. At this moment in time, I don’t have any figures to really see if I’m saving money.

My previous energy supplier, EON, only had bills available for three month blocks. For example, From 26th of April to the 26th of June, I used 112m3 of gas. I’m guessing we wouldn’t have had the heating on as we were into May, so basic division estimates around we used around 38m3 a month. Looking at my Octopus data, June for example, my gas usage was a little under 30. Of course, we had a gas hob in my previous property, which doesn’t factor in this time.

Of course, as we head into the winter, it will be ever harder to estimate, but my gas concern is over the entire house, and I hope the combination of the Mixergy tank and the Tado will reduce my overall gas consumption. Good for my pocked and good for my kid’s futures.

Automating our dual fuel towel radiator

As I explained in my earlier post, heating our bathroom, we installed a dual fuel tower radiator. A dual fuel radiator is one that can be heating by both our central heating and an electrical element inside the radiator. This allows us to dry our towels without having to turn on the central heating, something that is very useful in the summer months.

The dual fuel element connected via a spur in the wall

I opted for a dumb element, one that has no controls built into it. There are plenty of elements on the market that offer controls, Bluetooth integration and that sort of thing, but they can be very expensive and require dedicated apps etc. I wanted something I could add to my Home Assistant installation, something I had full control over.

My plan was to use a Shelly 1PM to allow me to turn the element on and off. Shelly offer a wide range of smart relays. I’ve used several of them to control lighting and I’ve found them reliable and easy to setup. The 1PM model also offer power monitoring, so I can measure the power being consumed. This isn’t really necessary, but I thought it might be useful to measure this and record the long term power consumption in order to understand how much the radiator costs to run.

Installation

When the electrician was installing the element (has to be wired into the wall by a qualified electrician as it’s in the bathroom) I asked that they leave access to the wires beside the fuseboard.

Supply and load wires as left by my electrician

What they left was exactly what I wanted.

Next step was to add a double pole, fused isolation switch. I wanted to be able to knock off the radiator and Shelly relay in the winter. I could have used the RCD directly, but I liked having a dedicated switch.

I added a second backing box to house the isolation switch. I knew a single box wouldn’t hold the switch and the relay. I put a 5A fuse into the switch.

With the double pole switch installed, I then wired in the Shelly. I didn’t need to use the switched life or L1, so installation was very simple, with the load (the element) going into 0 connection.

Once I powered up the Shelly, I connected it to my WiFi network. To my delight, Home Assistant detected it and allowed me to add an integration without having to do any MQTT customization! I haven’t controlled Shelly devices with anything except MQTT, so I decided I’d try this integration out.

How the Shelly 1PM shows in Home Assistant (I renamed the relay switch)

I switched on the relay and after a few minutes the radiator began to warm up. Success!

Automation

With the relay working as expected, I added a simple automation to NodeRed

When the towel rail is turned on, this automation will start a timer and automatically turn the element off after one hour. I receive notifications when this happens.

I’ve not controlled anything like this before – it’s one thing if a light automation fails to turn off a light, but if a 600W element is left on for hours and hours bad things might happen. The notifications give me some piece of mind. I’ve never had any reliability issues with NodeRed or HomeAssistant, but better to be safe than sorry.

Next Steps

I’d like the towel rail summer automation to be more automatic, removing the need for manual intervention at all.

My first thought was to use the humidity sensor to trigger the automation e.g. if humidity rises by a few % for a few minutes, then somebody is probably having a shower.

Another option would be to measure how much water being consumed over a period of time. If it’s lots, this would give a indication that a shower or bath is in use.

I’ll go with manual for the time being, mostly to gain confidence that my automation is working.

Making a dumb light switch smart

A few months back, when planning the rewiring of our house, we decided not to include any switched 5A sockets; you know the kind of arrangement where a switch on the wall can turn on some floor lights and lamps in a room? If you want light, but something subdued, it gives you an alternative to turning on the “big light”

We had this arrangement in our previous house and we used it all the time, but for some reason, we opted to do without in our new house. Really don’t know why.

After living in the house for a few weeks it became painfully obvious that we had made a mistake. Yes, we can turn the lamps on individually, but it’s just so damn convenient having a switch!

I have WiFi smart plugs, which I could use, but these just make matters worse as you usually need your phone to turn on and off the lights and aren’t great for guests.

I began thinking of how I might make a dump light switch turn into a smart light switch.

I had a flash of inspiration, when I began thinking about the Aqara light switches I have (in boxes now) and how they had a battery powered model. They are just a push button switch with a Zigbee module. I wondered how I might break one of those apart and wire it in to the my MK switch. I did some googling and I found a YouTube video which showed exactly that – the only downside was that they were using a push switch!

Then I had the light bulb moment; Contact sensors! I did more googling and sure enough, loads of people had just connected standard Zigbee contact sensors into an existing light switches. It was the perfect arrangements. Contact sensors have simple magnetic reed switches, which send the appropriate of open or closed. Swap the reed switch for a mechanical switch and the operation should be exactly the same!

An Aqara contact sensor, opened up

I opened up one of the Aqara contact sensors I had, and inside, I found a small little battery powered module. On the reverse, the reed switch was visible. Please forgive the photo. I didn’t realise it was that blurred.

The reed switch is operated by an external magnet and indicates if the contact is open or closed
I removed the reed switch and added a wire to each of the contact plates

I removed the reed switch and put two wires onto the contacts. After pairing the device with Home Assistant, I was delighted to see that touching the wires put the sensor into a closed position. The next step was putting into a standard switch.

Put the contact sensor into a real switch

That was easy. The switch now successfully opened and closed the contact sensor. I originally used the normally open P1/COM connectors on the switch, but Home Assistant equates “open” with on, so I ended up using P2/COM, so when the switch is Off, the contact is closed.

With the switch working as expected, I created a simple automation in Node-Red to turn a smart plug on and off. Nothing fancy. When the contact is open, turn on the light and when closed turn off the light.

My thoughts turned to actually then installing the light switch and whether or not the zigbee signal would get through the metal backing box of the switch.

Please don’t do anything with electricity without first isolating at the fuse board. If you’re not comfortable doing this, please don’t. Electricity can kill.

I started by opening up the exiting one gang switch and the wiring was as expected. One switched live and

The existing single gang switch
The two gang switch in place
It works!!

New House – Technology Choices

I’ve recently bought a new house.

We completed renovated our first house and, in the process, we made an awful lot of mistakes. Don’t get me wrong, we got an awful lot of things right too, but we’ve always had some annoyances. These were born of inexperience and naeivaty.

With this new project, we have an opportunity to do another renovation and we can put some of the lessons learned into practice.

I want to write a few blog posts covering the renovation, so to kick that off, I want to start with technology. Obviously.

Readers of my blog will know I love smart home technology. I got to try out various bits of kit in this house, such as Den Switches, Shelly Relays and Aqara odds and ends. I build temperature sensors for my hot water tank and a salt sensor for my water softener. I learned about Home Assistant, MQTT, Z-Wave and Zigbee. I installed and then removed a Nest camera. I upgraded my home network with Ubiquity gear and learned about PoE and cable crimping.

What will I not do again?

Nest Thermostat

This was the first piece of home technology I ever purchased. It was great to begin with, but after a few weeks, I turned off the “learning” mode. It was turning on the heating at random times during the night, when I felt it just wasn’t necessary. Another problem I had was that hot water could only be operated in blocks of 30 minutes or more. During the height of the summer, 10 or 15 minutes would have been enough.

The smart home/away feature was great and it has some limited interaction with Home Assistant. Google then killed off the API program, so all that support went away. I decided I wanted something just a little more flexible.

Cloud based cameras.

When we first moved in to the house I had it wired for security cameras, but against my instructions the electrician put in Coaxial instead of ethernet I wanted. When he then asked for £1000 to install the cameras, I politely declined. At around the same time, Maplin was going into administration, so I picked up a Nest Outdoor camera and two indoor cameras during their sale.

I was very impressed with the Nest outdoor camera’s quality, but it always felt slow to access and the movement notifications always had a noticeable delay. I always thought it was dumb that I was streaming the video from a server (probably in the US) when the camera was *literally* connected to the same WiFi.

After Nest released their video Doorbell, I picked one up and installed it, figuring I’d stay in the same eco-system. This was when I really started to notice the delay in notifications e.g. doorbell would ring and 20 seconds later my phone would chime.

Then there was the cost for storing the video. It was costing me over £100 a year for the four cameras I had. As I became more and more aware of privacy issues with cloud video, I decided enough was enough. I took down the Nest Outdoor and replaced with a Ubiquity G3 bullet. I added three more of them over time. All my video is now stored on a local server and offers almost instant when I’m at home. Access when I’m away from home is also pretty snappy.

Smart light bulbs.

I tried a pair of Ikea Smart Downlighters in my downstairs loo. They were easy to install and use, but light switch muscle memory proved too strong and I had to take them out. I ended up using an Aqara switch in their place and that worked an absolute treat!

Den Light Switches

I bought into Den Automation’s crowd funding via Seedrs and preordered a few hundred pound’s worth of their stuff. After lots of delays in manufacturing, it eventually arrived. I’ve written about the installation and my first impressions of the kit. It worked pretty well, but after a few months the company went into administration and their cloud was switched off. Thankfully I’d figured out a way to make it work with MQTT so I was able to use them for a while longer. Some of the units eventually lost connection and couldn’t be re-paired without the cloud. They did eventually restore the cloud, but I’d lost interest at that point.

An expensive lesson in the perils of both early adopter hardware and investing in startups.

Get somebody useless to wire my alarm.

This isn’t really a technology issue, rather a human issue. I added a Konnected board to my wired alarm and made some shocking discoveries.

What will I do again?

Home Assistant

I’ve had a Home Assistant installation in my previous home for more than a year. The MQTT and Zigbee services ran on the same small tower. I was also using NodeRED for some more advanced workflows. I found it very stable and it never once failed, not in all the time I had it installed.

Smart lighting with the Shelly1

The Shelly1 relays I installed were absolutely fantastic. I could not recommend them enough. Installing them requires some knowledge of wiring, but I had no issues installing them into several of the lights in my house. The pendant housing was the only real problem, so this time around I’ll have to find something a little larger.

I’ll also make the electrician aware at the beginning that I’m planning on installing them and ensure that the wiring is suitable. There will be a few places (outdoor lighting) where there won’t be a ceiling rose, so we’ll have to figure something out for those.

I also plan on installing some of their Dimmer models, so we can have some mood lighting and potentially enable low level lighting at night, for the kid’s nocturnal trips to the loo etc.

Smart Thermostat

As noted above, I was not planning on a Nest Thermostat. This time I’ll be installing a Tado system. It’s completely wireless, with the control unit operating off batteries, which means we’ve more flexibility in choosing where we install it. The company also make smart TRVs, which can be operated remotely. Best of all, I think, is that individual TRVs can turn the boiler on, rather than relying on one central thermostat, we essentially get a zone per room.

It also has an API, integrates with Home Assistant and works with HomeKit too. Offers lots of flexibility. The advanced features require a monthly subscription, but I feel happier paying £30 a year than using the Nest.

Install an alarm

Rather than going for a wired alarm this time around, I’ve decided to go for a wireless model. I wanted flexibility and smart home integration. Some wired alarms offer this, but the newer generation are far more integrated and connected. I’ve settled for the Abode alarm, down to its broad compatibility and Homekit support.

Smart Hot Water

In my last house I had an unvented cylinder for storing hot water. Pretty standard.

One of the major pains we experienced was running out of hot water. This happened on and off, usually when we wanted to draw a bath for kids. I improvised a way to measure the temperature in the tank using some probes and this sort of solved the problem. Assume we checked, we learned that particular temperatures across the tank gave a rough indication as to whether we had enough water or not.

Whilst watching the great Fully Charged on YouTube, I happened across one show about the Mixergy hot water tank. I was really impressed and when the purchase of the house went through, I ordered one.

The idea is that the tank can maintain a certain amount of hot water in the tank, rather than having to heat the entire tank. You can schedule it during the day, heating enough for showers in the morning and than maintaining some for use during the day. It’s about 50% more expensive than a standard tank of the same size. I’ve opted for one that can support Solar PV, so in the future I hope I can heat the water with some solar panels. If I get a smart meter installed, I hope I can also use cheaper electricity at night to heat the water, rather than just relying on gas.

Progress updates

Once the work has begun, I’ll post a few updates as I go.

Installing Konnected Alarm

Back in February of this 2020 (This post has taken me a year to write!), I preordered an alarm panel from Konnected.io.

The idea with the Konnected alarm panel is that you can take your existing wired alarm and connect it to your smart home setup. It’s a very clever bit of kit, which I came across accidentally.

It took a little longer to arrive as I there were some delays in the manufacturing process, but a little box was delivered containing a power supply, some cables and two boards; the alarm panel and the interface board.

Interface board (left) and alarm panel (right)

Current Alarm

To see what I was dealing with, I opened my alarm panel after entering the engineer’s code.

My panel. Nothing labelled.

I was hoping to see something labelled, which was let me know what wires connected to what sensors. I knew how many door and motion sensors I had and that lined up to the number of zones being used. Unfortunately, I had no idea what was connected to what.

After reading the manual, I discovered that tamper detection was disabled.

Using my multimeter I had my wife go around the house, triggering the motion sensors. Oddly, some of them didn’t seem to have any effect. They were getting power as the lights turned on, but no voltage change was registered at the panel. To help me understand what was going on, I opened one of them up.

The fucking sensor circuit wasn’t even connected. HOLY FUCK. I mean HOLY HOLY FUCK. I connected that one and the panel showed the voltage change as expected.

Sensor circuit shorted with resistor, which would normally be okay if using tamper detection

Opened another sensor to find the circuit shorted with a resistor. Normally this is fine when using resistance based tamper detection, but my panel wasn’t configured for this.

I double checked the Zones configured and found that two of them weren’t even used. A few clicks here and there and that was rectified. A walkthrough confirmed all the zones were wired up and responding.

Not only were some of them not wired up, others weren’t even included in the panel.

I had to go outside at this stage because my language wasn’t suitable for the ears of children.

After putting everything right, I proceeded to actually connecting the Konnected Alarm Panel.

Installing the Konnected Interface Panel

After calming down and having labeled the various zones, I started installing the Konnected Interface Panel.

Pulling in the interface cable
Inserting the reference voltage wires into the panel
Adding the zones

Thankfully, this step was pretty straight forward and didn’t take very long. It was a case of adjusting the little resistors until the red light went off. When the circuit was triggered, the light would turn on.

The Alarm Panel itself. I left this outside the panel so it had a good WiFi connection

Setting up Home Assistant

I use Home Assistant for most of my Smart Home stuff and Konnected was fully supported with its own Integration.

Once I had connected the Panel to the WiFi using the iPhone App, the Home Assistant setup pretty much took care of itself.

You indicate which zones are used and what they are
The sensors configured on my dashboard

Summary

The Konnected hardware is really solid and was really easy to setup. As I understand it, they are a very small company, but what they’ve done here is really clever. Setup was faultless and it’s never gone wrong.

One of the most interesting uses of this product is that it can enable remote arming/disarming of your alarm (if the panel supports it). I never got around to doing this, but the idea is simple. You install a small relay, connected to the Konnected panel. By turning on and off the relay, you can use the Key Switch feature of a standard alarm panel to arm/disarm it. Home Assistant supports this via it’s Alarm extension, but I think it would only really work if this could be used in tandem with the existing keyboard panel. It’s possible to have your panel emit high voltage via one of the Zones, but as all the zones on my panel are full, I couldn’t try this out.

If you have a wired alarm and you’re looking to make it smart, I’d highly recommend this product.

LED Clock, Part III: Alexa?

Whilst I await delivery of more WS2812 LEDs, I wanted to start investigating how I can leverage the Alexa Gadget Toolkit integration, so that when I set a timer using Alexa, my LED clock can show the countdown.

Amazon make an Echo Wall Clock which does just that.

I found an open source project called nixie-timer, which had an Alexa Integration and was written for the ESP32

After a few hours of digging around, I had a very basic idea of what the code was doing. I started by trying to replicate the flow using the OOB ESP-IDF.

After many, many, many hours, I realised that I really didn’t know what I was doing, so I went back to the nixie-timer code and added the btstack ESP32 port into my code. This meant I could at least follow the samples provided.

I began trying to run some code myself, but the Bluetooth radio wouldn’t even start. I then took one of the BTStack examples and used that as a starting point. At least they worked.

After more hours, I got the code running, with the occasional kernel panic as I figured stuff out..

Eventually, I got it responding to the Alexa queries and receiving the messages for wakeword, timeinfo and timer.

Exactly what I wanted to achieve. I’m not 100% sure I know what’s going on, but I’ll get more understanding over time.

For starters, I want to use timeinfo to set the internal clock and then I want to use the timer command to display the countdown of an alexa timer.

Now that I’ve moved back to ESP-IDF, I’m going to have to bin my existing Arduino code which powers the LED strip and look at how to make that work.

Happy with progress.

My other WS2812 strip arrived the other day, so I’ve got to look at cutting and connecting the two strips to form one long 180 LED strip. Then I get get a feel of the overall diameter and cut some MDF to house the damn thing.

LED Clock, Update!

I managed to rework the time calculation and hour hand movement!

The clock is ticking!

I removed the RTC component and just let the loop run, with simple counters to simulate the passage of second, minutes and hours.

I think the transition of the “hands” needs to be smoother, more analogue. I’ll have to investigate if FastLED can do this.

LED Clock, Part II: Tick, Tock

In Part I, I covered the basics of controlling the LEDs. This covered the hands of the clock.

The second part of my investigation covers time and how to make the clock tick. The ESP 8266 I am using for this prototyping work doesn’t include a Real Time Clock, so I was required to add an external one.

Connecting the RTC module to my Wemos D1

With the module connected, I turned to the code. I’m using Arduino for this as it’s easy to prototype and there are lots of libraries!

#include <Wire.h>      //I2C library
#include <RtcDS3231.h> //RTC library

Setup is achieved in a couple of steps. To get me started, I just set the time.

RtcDS3231<TwoWire> rtcObject(Wire);

void setup()
{
  Serial.begin(9600);

  rtcObject.Begin();

  RtcDateTime currentTime = RtcDateTime(20, 04, 22, 0, 0, 0);

  rtcObject.SetDateTime(currentTime);
}

This starts the clock. In reality, as the module I’m using is battery backed, this step should only be performed once, but I found that having a fixed “time” would make debugging the lights a little easier.

I plan to revisit this code to ensure that I grab the current time from the internet when required.

Using the time is achieved by reading it.

void loop()
{
  Serial.println("Loop()");

 //get the time from the RTC
  RtcDateTime currentTime = rtcObject.GetDateTime();

  char str[20]; //declare a string as an array of chars

  //print the time for debugging.
  sprintf(str, "%d/%d/%d %d:%d:%d", 
          currentTime.Year(),       //get year method
          currentTime.Month(),      //get month method
          currentTime.Day(),        //get day method
          currentTime.Hour(),       //get hour method
          currentTime.Minute(),     //get minute method
          currentTime.Second()      //get second method
  );

Each part of the time is available in a named method, so to get an idea of where my LEDs should be, I grabbed the hour, minute and second.

// Fetch the current time
//
hour = currentTime.Hour();
minute = currentTime.Minute() * 2;
second = currentTime.Second() * 2;

I multiply them as I’m using a strip with 120 LEDs on it.

Building on my LED control code, I make the clock tick by turning off LEDs in the right place.

fill_solid(leds, NUM_LEDS, CRGB::DarkGreen);

// Fetch the current time
//
hour = currentTime.Hour();
minute = currentTime.Minute() * 2;
second = currentTime.Second() * 2;

// Hour
leds[hour - 1] = CRGB::Black;
leds[hour] = CRGB::Black;
leds[hour + 1] = CRGB::Black; 
leds[hour + 2] = CRGB::Black;
  
// Minute
leds[minute] = CRGB::Black;
leds[minute + 1] = CRGB::Black;

// Seconds
//
leds[second] = CRGB::Black;
leds[second + 1] = CRGB::Black;

FastLED.show();

I use multiple lights to make it more visible. With it now ticking, I hastily assembled the LED strip into a circle using cardboard and sellotape. I ran a length of alarm cable from the strip to the breadboard. To see it in action, I sellotaped it to the wall!

After letting it run for quite a while, I was surprised the hour “hand” hadn’t moved. It took my wife to point out that there aren’t 60 hours on a clock face 🤣

I’m pleased with these initial results.

As for my next steps, I’m not 100% sure. I’ve got to refine the “hands” code. I also need to think about how to mount it on the wall. I suspect it won’t be self contained and I’ll probably have a control box somewhere.

I’ve ordered another strip from the excellent Pimoroni and this will, I hope, let me add another 36 LEDs to the strip, taking it up to 180, which I think will give me a nice resolution.

I’ve got to think about power too. My estimate is that I’ll need around 3.5A to power the whole affair.

Expect another blog post soon!