Why I (don’t) like smart things

(apparently I drafted this at the end of 2018, and am only publishing it now in 2023…)

Smart things in the context of IOT is a huge market. If you can put Wi-Fi in it, someone has tried, and someone has tried to market it. I like this. It’s fun. I enjoy being able to remotely control things from my phone or with my voice, as opposed to having 20 remote controls, one for each item. It is good. However it is not without issue.

One of the prominent issues surrounding IOT is security. If you can remotely access these things, especially sensitive things like video cameras or alarm systems (or large infrastructure), then there’s a chance that someone else (unintended) can too. This is concerning, although not my biggest issue.

I don’t disagree that security is important, but I think it’s manageable. My biggest gripe with these products is redundancy. Firstly the immediate, what if their servers have issues or what if my internet is down. But of greater concern to me, is what about when the company decides to no longer support my product. And this isn’t an if, it’s very much a when.

The vast majority of mainstream products require you to setup an account with them and then control your devices through theirs- or a compatible app. They work great (sometimes). Until they don’t. I’ve posted recently about how Nike have shutdown their servers for their GPS watches. The servers that you are required to connect to if you want to download data from your device. And there are many companies that have done similar things in recent years, and many more are still to come.

My issue is that there’s no reason for many of these services to require distant servers to control them. It’s one of the reasons I have limited our smart device purchases to a number of light bulbs that, at the end of the day, will at least still act like normal lightbulbs, even if the servers go out. But what are the alternatives?

I did also buy one of these, but I’m not going out into the snow everyday to turn on the Christmas lights

Mainstream manufacturers do this for a number of reasons. I like to think mainly it’s because it truly is the easiest way for them to provide the best customer service. It is the easiest way to ensure customers get a product which works, and will continue to work as long as the manufacturer wants it to work. But obviously this also means there is some level of forced obsolescence too, never mind the data gathering opportunities.

I get that companies can’t carry on supporting old equipment forever. Keeping servers running as fewer and fewer users need them. Not getting any additional revenue for the cost. But the least they can do is release software at the end of a product’s life which allows a product to still be useful. Nike could easily have released a stand-alone product that could download the GPS data to my computer, and I’d still have been happy. Makers of other products could release firmware to allow local/direct control of electronics that otherwise require servers, and will just end up in the landfill. But they don’t.

So what is the solution? Doing it oneself? There are many downsides to this. Whatever I put together will not work as well. I don’t have the knowledge of hundreds of product developers. It will probably have more downtime than any product you purchase, because I’m not going to pay for the most reliable servers and products. But at least I’ll be able to keep it running as long as it’s useful to me. And that’s what I’m doing.

Particle Internet Button with Photon – Web status notifier

After a fun weekend at the Hackaday Super Conference I came out with a few toys. On Sunday I took part in the Particle IoT workshop, where they were kind enough to provide us all with a Particle Internet Button and ran us through setting these up and getting them to do things.

The board is essentially an add-on for the Photon board that can be purchased stand alone. The Photon is what you’re actually programming and includes a Wi-Fi module and runs an ARM Cortex M3 microcontroller. The Internet Button adds an accelerometer, four buttons, a buzzer and 11 RGB LEDs to the mix.Particle Internet Button

It’s powered by USB, and can be setup with just their cellphone app, although I had problems due to the terrible way my internet is setup at home (I have no control over it, yay rental). I ended up using the CLI via USB. This was necessary to give the Photon the Wi-Fi details to connect to the internet.

Once it’s connected to the internet, all the programming takes place wirelessly via Particle’s online IDE. There’re a host of examples and libraries to pull from, so it’s amazingly quick to get a simple program running, pulling data from the accelerometer and making everything flash multiple colours. Particle also has some built-in integration for internet notifications and interactions, being able to control aspects from Particle’s console and elsewhere.

Left: All Green - good Right: white is checking site, red means a site failed - bad

Left: All Green – good
Right: white is checking site, red means a site failed – bad

I didn’t really know what to do with mine, so after playing around with all the examples, I set out to make a notification device to tell me whether my websites are all running or not. I have four websites I’m interested in, they’re all on the same shared hosting package, but separate domains.

This project is nothing amazing, but was fun to do, and I was able to get it working in one afternoon. Most of the time wasted was just due to being out of practice with programming.

Functionality:

  • Polls four separate websites to see if they are running.
  • Shows a green or red light to indicate if the website responded correctly or not. Shows a white/orange light while it is checking it.
  • If a website fails a check, the buzzer tones.
  • Checks all websites every 10min.
  • Can trigger earlier check by pushing button 3
  • If one or more websites have failed a check, you can shake the controller to get it to recheck just the failed websites.

At the moment I don’t get very good information from the website. I basically hosted a plain html page on a subfolder of my websites which contains a string. I then compare the string the Photon loads to what it should be. I want to look into the package a bit more to see what info I can get and differentiate between server not found and other errors.

Online log: left it running overnight. a couple failures. I blurred website address as they're projects I'm still working on. Failure is due to cheap hosting I believe, not the Particle.

Online log: left it running overnight and saw a couple failures. I blurred website address as they’re projects I’m still working on. Failure is due to cheap hosting I believe, not the Particle.

The code isn’t very pretty, I’ve got silly little delays all over the place ’cause it’s working and I’m lazy and a lot of the stuff was imported and copied in. I may update it someday, but you can view it here. I made use of the Internet Button library as well as the HttpClient library (self confessed requiring work, but I can’t complain).