My principal here is things being open makes them better.
At the same time, privacy is important to me, not because I have anything I specifically want to hide, but because I think it is important
I think buying things from the likes of Nest, Canary, Ring, Hive while they all build wonderful products, they work wonderfully, and are demonstrations of incredible innovation, they are not built with privacy, they incite a "Works with X" attitude.
I have a myriad of 'things', bathroom scales, ovens, coffee machine, hob, cameras, lights, laptops, phones, vacuum cleaner, thermostats, burglar alarm, temperature/humidity sensors, motion sensors, door sensors, light sensors and many more.
I want to be able to use all those things beyond the life span their manufacturer decides to support the cloud service that accomponies them.
Realistically its just not feasible to expect to be able to buy a product for under £100 that will benefit from reliable availability, security updates, general maintenance and maybe even a feature or integration for very long.
I want to own a thermostat that will last for 30+ years, possibly outlive me!
I want to not have a phone home screen full of icons and have to scroll endlessly when I just want to turn a light down.
I want to know a thing I just bought will still work if the company that made it releases a new shiny version they'd like me to upgrade to.
This will be my journey to try and abstract, secure, isolate, and automate my home.
I've decided to abstract everything I can to MQTT, I've currently gone with the AWS-IOT implementation because I like how its formalised the pattern of 'things' scalability, persistence, that said it definitely has its limitations (such as 4kb payload size) which don't help. And it does ultimately mean a subscription. However, Lambda (especially locally with Greengrass) are strong winners.
My devices, servers and things should be treated like cattle, note pets. So I try to avoid persistence where possible, and when I do need it, I have gone to s3 knowing that there are open alternatives I could migrate to if I needed to.
This unfortunately isn't something for the masses to try, it's proving to be a very up hill battle, if I considered the value of time, pragmatically I could easily afford all the subscriptions of other suppliers, but that's not the point of this project.
This roughly describes the roadmap (not in order) for automating my home
I'm trying to approach it with a BDD approach and will aim to document the requirements with Gherkin style feature files
- mixed x64, x86, arm docker swarm cluster (swarm over kubenetes only for native simplicity)
- long term containerized volume on demand distributed + replicated persistence magic
- interm host based replicated volume storage
- gluster
- resiliant and self recovering clustered mqtt
- ingress DNS based controller
- https on ingress
- CI/CD
- https://github.com/pinked/clustered-drone
- external access via localtunnel.me
- application firewall/naxsi between localtunnel.me and drone to verify its a valid request from github
- drone doing deploys to the swarm
- drone volume persistence in swarm [blocked by no gluster]
- pin zwave+rfxcom docker containers to hardware that supports it
- docker swarm labels
- magic mirror interface
- mobile interface
- surveillance camera recording
- MQTT testing
- IP Presence > mqtt
- Phone location > mqtt
- Phone location events > mqtt
- Find my iphone < mqtt
- zwave <-> mqtt
- using domoticz for the minute
- https://github.com/simook/zwave-mqtt-broker
- https://github.com/chrisns/iot-zwave
- sonos <-> mqtt
https://github.com/jpmens/mqttwarn- couldn't use mqttwarn because doesn't support shared subscriptions so doesn't scale- https://github.com/pinked/rules_engine
- https://github.com/jishi/node-sonos-http-api
- rfxcom <-> mqtt
- weather > mqtt
- lifx <-> mqtt
- alexa <-> mqtt
- d-link <-> mqtt
- alarm <-> http proof of concept
- alarm <-> mqtt
- couldn't get RS232 port to work so refactored an integration using the hosted visonic go / power manage service https://github.com/chrisns/visonic_control/tree/node_js_rewrite
https://github.com/nlrb/com.visonic.powermax/tree/master/node_modules/powermax-apihttps://www.domoticaforum.eu/viewtopic.php?f=68&t=6581https://github.com/barcar/visonic_controlhttps://github.com/DomotiGa/DomotiGa/blob/master/DomotiGa3/.src/CVisonic.classhttps://github.com/irekzielinski/PowerMaxAlarmhttps://domotiga.nl/projects/domotiga/wiki/Visonichttp://www.domoticz.com/forum/viewtopic.php?f=38&t=11134https://www.domoticaforum.eu/viewtopic.php?f=68&t=7152&sid=82be8c37b9336ae49a43b14eadf33bd2&start=75#p65514
- logitech harmony <-> mqtt
- mqtt -> time series reporting
- influxdb
- mqtt <-> rules
openhab2node-redhome-assistant.io- https://github.com/pinked/rules_engine/
- mqtt <-> prowl notifications
- https://github.com/pinked/rules_engine/
https://github.com/jpmens/mqttwarn- couldn't use mqttwarn because doesn't support shared subscriptions so doesn't scale
- withings > mqtt
- maybe node-red / openhab?
- (mobile) presence > mqtt
- http://owntracks.org + Bluetooth
- IFTT
- bluetooth
- z-wave presence detectors
- UI <-> MQTT
- Facebook messenger <-> MQTT
- Waterrower > MQTT