The words “Home Automation” tend to cover a range of topics. It covers things like being able to schedule things to be on at certain times, or to respond to another device like a motion sensor. Detecting when stuff happens is also part of Home Automation and can include someone pressing a switch, a door being open, the washing machine finishing or even detecting if someone is home or not.
This page documents some of my thoughts the area as well as what direction I am taking.
My Golden Rules
Columbus has rules to survive Zombieland and so in the same spirit here are my Golden Rules to Home Automation.
Locally Hosted
Many devices on the market communicate ultimately through your network. They could use other methods of communication initially like ZigBee, ZWave, Bluetooth or WIFI but generally will have some form of gateway that converts this to something that can reach your network. This is fine but there seems to be a trend of the devices then reaching out to the Internet to 3rd parties to even function.
This could be because the dashboard is hosted outside, or the outside provides a way of getting access to those internal devices from your phone if you are not home. A camera might store its videos in the cloud. Listening devices like Amazon’s Echo or Google Nest could have their place but they too leak a lot of information.
This can be a security and privacy nightmare that gives the sysadmin in me the willies.
Another downside of relying on a 3rd party service outside is that should that company disappear, decide to no longer support your device or charge large subscription fee’s you now have a useless paperweight.
Sometimes this rule is impossible for certain devices but in this case as long as you can adequately isolate what they have access to and have them trigger things via something you can trust it may be fine. For example instead of a Google Nest being able to trigger devices directly it instead will trigger something on your automation system that is trusted which can then do the actual work.
Developer Friendly
I want the ability to overwrite whatever is on a device by default by the vendor because chances are it is rubbish. Failing this I can settle for a device that is already open with how it works, does not try to reach out to the internet on its own and can be controlled or monitored by something else that is developer friendly.
For the automation system itself my preference is something open source with a good community that is self hosted.
Physically Consistent Behaviour
Physical interaction with any device should be closely consistent with what one would expect if it was not a “smart device”. This means that physical switches should work whether or not they are actively controlled by a central controller and should behave the same even if everything else is down.
This is more friendly for guests and family and provides more safety from an electrician point of view in that you have some certainty that a point is off before working on it.
This means writing in the default logic as close to the device itself which is also why being developer friendly is important.
Know Where To Draw the Line
Even following all the above rules about keeping privacy out of 3rd parties you need to know where to draw that privacy line yourself even if it is fully legal.
Automation that relies on a cloud service will downplay this point and will hide a lot of the info that your devices are actively sending to it all the time but as soon as you locally host you suddenly realise just how much data and how invasive it can be.
My TV can show its state, what is currently watching, how long its been on and many more things. Mobile phones can provide details on if its screen is in use, battery usage, if its charging, if someone is in a call and who they are calling, access to the microphone, access to the camera (without any indicator), location, wifi or bluetooth networks nearby, what orientation it is and too many other things to list. Some can even share the screen and a rooted phone could share the audio of a call.
There was a case in 2010 where a US school district spied on its students through the cameras on their laptops at home and were not even charged for this outrageous breach of privacy when it was discovered.
Ideally you would start by restricting what info you actually need collected from the device/client side rather than configuring filters on the server side. A filter on the server is not sufficient as all that does is instruct the server to ignore some things but the client is still transmitting it to the server. This is no better than how its done in the online dashboards.
A good example of this is disabling permission to all the sensors on the phone that do not need to be accessed by the automation software. If you have an intercom provide a privacy switch that physically disconnects the microphone. A camera could have an indicator light hard wired in when its active and a physical privacy switch when appropriate as well.
Any data the server now receives should be treated with respect. For example lets say you decide to use geo-fencing to determine if someone is Home, Away, At School and At Work. In this case the phone could send its GPS co-ordinates and the server can work out where it is and show its state but it would be even better if the phone itself could determine the state and just send that to the server. In the first case the server is receiving too much information that it doesn’t need and in the latter it gets only what it needs.
Comments