This actually makes me angry, and I donāt even live in a country where AT&T operates.
Thereās something wrong with a marketplace where a company can exhibit this kind of behaviour and remain not just a player, but a force. Unfortunately that kind of market very much exists here in Canada too: choosing a cable company is not about which provider is good, itās about which provider is least terrible. And that makes me sad.
If youāve been keeping up with my #SmartHomeĀ series (and if you havenāt, why not?) youāll already know that I have plans to make more of my home āsmartā using Home
Assistant as the software that ties everything together, and some DIY NodeMCU-based hardware that Iām going to build myself as a learning opportunity.
Another important piece of the puzzle, but one that I havenāt previously mentioned, is MQTT.
MQTT is āa publish-subscribe-based lightweight messaging protocol for use on top of the TCP/IP protocol,ā at least according the slightly suspect grammar of the person that wrote the Wikipedia article about it.
I learned about MQTT at the same time I learned about Home Assistant, although I didnāt initially appreciate its power. Iāve been using it from the start to enable Home Assistant to know where we are: our phones run an app called OwnTracks which publishes
location data to an MQTT ābrokerā (server). Home Assistant subscribes to these updates, which means it immediately knows about it when our location changes.
I love this whole solution, not least because itās very easy to run my own MQTT broker (Iām running MosquittoĀ in a Docker container on my home server) and Iām therefore entirely in control of our location data ā itās not being shared with the developer of some app or service I have no insight into.
This publish/subscribe model and the lightweight nature of MQTT makes it perfect for āInternet of Thingsā (IoT) devices to communicate with each other, and when you add Home Assistant into the mix it gives me all the tools I need for any sensors I build
to feed their data into my smart home ecosystem, and for my smart home controller to feed commands to any devices.
Indeed, Iāve already built my first little NodeMCU app that leverages the technology.
Iāve ordered almost all the components I need for my upcoming hardware projects from China, and theyāre only just starting to arrive. Happily the NodeMCUs themselves were amongst the first shipments to land on my doorstep, so even though the only thing I can really do with them right now is programmatically turn their internal LED on and off, I have still been able to use this to start learning: Iāve made it an internet controlled
LED.
As promised, Iām going to be sharing both the hardware and the software as I take this DIY Smart Home journey. There is no DIY hardware here, just the NodeMCU itself, but Iāve published both the Arduino sketch and Home Assistant configuration Iāve used for the video.
I need to update the torrent client on my server, so Iām looking around for the best headless option with a web-based interface right now. So, good timing with this article.
Granted, all itās doing here is running the example āBlinkā program that comes with the Arduino IDE, but the important point is that the little light is turning on and off because I uploaded some code that tells it to.
Itās not connected to a computer here. The USB cable is simply plugged into a power outlet.
Granted, all itās doing here is running the example āBlinkā program that comes with the Arduino IDE, but the important point is that the little light is turning on and off because I uploaded some code that tells it to.
Itās not connected to a computer here. The USB cable is simply plugged into a power outlet.
Ever since I bought my own home nearly a year ago, Iāve
become increasingly interested in making it smart.
Right off the bat, I feel like I should clarify what that
means to me. The ability to turn some lights on or off with an app is not
smart, in my opinion ā the smart way of controlling lights is by flicking a
switch conveniently located in the room you wish to illuminate.
A smart home needs to be much more intelligent. Itās about
automation. Itās about the home being able to notify me if something is
happening that I need to know about. Itās about being able to accomplish things
with minimal difficulty, not adding complexity and more steps.
Thatās where off the shelf āsmart homeā solutions really
started to fall down for me. I could spend hundreds or maybe even thousands of
dollars, for what? The ability to turn on my living room lights while Iām still
at the office? Why would I ever need to do that?
Nevertheless, the lack (in my opinion) of a pre-packaged,
useful, holistic solution that accomplished my vision of what a āsmart homeā
should be didnāt deter me from tackling things bit by bit. It started with our
burglar alarm. It has internet connectivity which sends me alerts in the event
that something unexpected is happening, and lets me arm or disarm the system
from my phone ā which I actually do find useful.
Next up was our thermostat. The one that was installed when
we bought the house was an old-fashioned one with a simple mercury switch
inside. You set the temperature, and that was it. We replaced that about a
month ago with something programmable (it doesnāt need to be as warm in here at
night as it does during the day; it doesnāt need to be as warm if nobodyās
home), and I took the opportunity to get one with WiFi so I can set the
temperature remotely. Thatās not useful in and of itself, but if you take that
functionality and look at it in the context of my wider vision then the
thermostat is certainly something Iād like to be able to programmatically
control.
It was around this same time that I discovered home assistant, and now my dream is
starting to come alive.
Home Assistant is an open-source project that runs on a
variety of hardware (I was originally running it on a Raspberry Pi, and Iāve
since switched to running it in a Docker
container on our home
server). It has a ton of plugins
(ācomponentsā) that enable it to support a variety of products ā including our
existing alarm, thermostat, streaming media players, and others (including,
somewhat ironically, the colour-changing lightbulbs we have in our family
room). It includes the ability to create scripts and automations, it uses our
cellphones to know our locations, and can send us push notifications.
My initial setup was all about notifications. If we both
leave the house but the burglar alarm isnāt set then it tells us (and provides
an easy way to fix the issue). If we leave one of the exterior doors open for
more than five minutes, it notifies us (or just one of us, if the other is
out). I also created a dashboard (that you may have seen in my last post) to display some of this stuff on a monitor in my office.
Since installing the thermostat Iāve added more automation.
The time we go to bed isnāt always predictable, but when we do go to bed we set
the alarm. So, if itās after 7pm and the alarm goes from disarmed to armed, the
thermostat gets put into night mode. If nobody is home then the temperature
gets gradually turned down based on how far away we are.
If nobody is home at dusk then it turns on some lights and
streams talk radio through the family room speakers to give the impression that
someone is.
This stuff meets my definition of smart, and Iām barely
scratching the surface. The open nature of the platform not only means that Iām
not tied to a particular vendor or technology, but also means that I can add on
to the system in a DIY way.
Which is exactly what Iām going to do. Iāve bought some NodeMCU microcontrollers which are
WiFi enabled, Arduino IDE-compatible
development boards designed to the basis for DIY electronics projects.
Watch this space, because over the coming months Iāll be
connecting our doorbell, garage door and laundry appliances to Home Assistant.
Iāll be learning as I go, and Iāll share the hardware and software.