We use the term “smart home” lightly these days. It has become a term of marketing and phantastic stories.
Considering how readily available lots of different sensors, actors and personal-assistants are these days one would think that most people would start to expect more from the marketing “smart-home”.
I believe that the smart is to be found in the small and simple. There are a lot of small things that actually make something feel smart without it actually being smart about anything.
Being smart is something not achieved yet – not even by a far stretch of the sense of the word. So let’s put that to the sides of the discussion for now and move a simple thing in the middle of this article.
Have you ever had an argument about who should or should have cleared out the dishwasher after it’s finished?
We had.
So we outsourced the discussion and decision to a 3rd party. We made our house understand when the dishwasher starts and ends it’s task. And made it flip a coin.
There was already a power consumption monitoring in place for the dishwasher. Adding a hysteresis over that monitoring would yield a simple “starts running” / “stops running” state of the dishwasher.
Pictured above is said power consumption.
- When the values enter the red area in the graph the dishwasher is considered to be running.
- When it leaves that area the dishwasher is considered finished/not running
Now adding a bit of random coin-tossing by the computer and each time when the dishwasher is detected to have started work a message is sent out depending on the result of the coin-toss.
That message is published and automatically displayed on all active displays in the house (TVs/…) and sent as push notifications to all members that need to be informed of this conclusive and important decision.
In short:
Everyone gets a push notification who is going to clear out the dishwasher based upon a coin-toss by a computer every time the dishwasher starts.
The base of all of this is a Node-RED flow that that uses the power consumption MQTT messages as an input and outputs back to MQTT as well as pushes out the push notifications to phones, screens and watches.
Additionally it creates a calendar entry with the start-finish time of the dishwasher run as well as the total energy consumption for this run.
The flow works like this: on the right the message enters the flow from MQTT. The message itself contains just the value of the power consumed at this very moment. In this case consumed the dishwasher.
The power consumption is updated regularly, every couple of seconds this way. So every couple of seconds this flow runs and gets an updated value of
Next a hysteresis is applied. In simple terms this means: when the value goes above a certain threshold the dishwasher is considered to be running. When it goes below a certain threshold then it is considered finished.
When the dishwasher changed it’s state to “running” the flow will generate a random number between 0 and 1. This give a 50:50 chance for either Steffi or Daniel be the chosen one to clear out the dishwasher for this run. This message is sent out as push notification to all phones, watches and TVs.
When the dishwasher finishes it’s run the total energy consumption is taken and sent out as the “I am done message”. Also this information is added to the calendar. Voilá.
A calendar? Why a calendar you may ask. Oh well there are several reasons. Think of calendars as another way to interact with the house. All sorts of things happen on a timeline. A calendar is only a visual aid to interact with timelines.
May it be a home appliance running and motion being sensed for your home alarm system. All of that can be displayed in a calendar and thus automatically sync to all your devices capable to display this calendar.
And if you start adding entries to a calendar that the house uses to know what to do next… how about putting light on-off times into an actual calendar right on your phone instead of a complicated browser user interface like many of those marketing smart-homes want us to use?
Never confuse wisdom with luck.
44th Rule of Acquisition / Ferengi
Ich hatte deinen Blog all die Jahre in meinem Feedreader, wo fast nichts kam und ich freue mich richtig, dass du “wieder da” bist. Ich lese hier jeden geekigen beitrag mit und freue mich. Danke dafür und willkommen zurück! gibt es eine doku von dem herzen des smarthomes? welcher kalender ist das genau, welchen pushservice nehmt ihr, was nutzt ihr im kern zwischen node-red und den devices? openhab?
Hallo! Vielen Dank für dein tollen Kommentar!
Es gibt eine interne Dokumentation in einem Dokuwiki und diverse Markdown Dokumente die jeweils alle Docker Container und ihr Zusammenspiel beschreiben. Alles ist soweit auf selbstheilend ausgelegt dass man im Grunde nur Strom anschalten muss und alles fährt hoch und verbindet sich korrekt. Nichtsdestowenigertrotz gibt es zusätzlich eine “Shutdown and Start-Up” Prozedur-Beschreibung für das Haus. Es kam mal vor dass wir mit Ankündigung einen Tag Stromausfall hatten. Dafür habe ich dann eine Dokumentation geschrieben in welcher Reihenfolge man was ausschalten sollte um möglichst sauber und schnell wieder hochfahren zu können. Letztlich eine A4 Seite eng bedruckt für shutdown und eine für Start.
Ich werde hier mehr oder weniger verallgemeinerbare Teile über die Zeit verbloggen dennke ich.
Was den Kalender angeht: Das ist einfach Google Kalender. Node-Red schiebt einfach einen Termin in einen dafür angelegten Google Kalender bzw. liest einen Termin aus dem Kalender und erzeugt einen Event daraus. Ziemlich simpel aber sehr effektiv weil dadurch wirklich überall direkt Zugriff auf wichtige Dinge genommen werden kann.
Push-Notifications schicken wir über PushOver.net heraus. Das habe ich vor Langem mal gekauft und benutze das nun auf allen Endgeräten die Push-Notifications empfangen sollen. Funktioniert prächtig und mit unterschiedlich priorisierbaren Nachrichten und unabhängig von Mobilnetz Empfang – Internet reicht.
Was meinst Du mit Kern? Da gibts keinen Kern. Alle Geräte werden mehr oder weniger in MQTT Topics aufgesplittet und empfangen ihre Befehle von dort. Für manche Geräte habe ich einfach dieses Verbindungsstück selbst programmiert. Node-Red sorgt dann für die Verdrahtung. Ich würde das als Kern verstehen. Ich würde mal so auf deutlich über 1000 Nodes in Node-Red schätzen die miteinander verbunden sind. Ist halt super intuitiv.
Keine andere Lösung, ob Home Assistant oder OpenHAB oder so haben auch nur annähernd die Flexibilität mitgebracht die ich da brauchte… wenns bei denen bestimmte Geräte nicht gibt dann ist man halt aufgeschmissen oder macht doch wieder MQTT. Da mach ich halt gleich MQTT als kleinsten gemeinsamen Nenner und alles funktioniert auf einer immer gleichen Ebene und ohne spezielle Home Automation Software.
Und so kann man halt auch direkt eigene Hardware anbinden und genauso verwenden wie anderes…. es gibt z.B. so ein Stimmungslicht im Eingangsbereich welches automatisch bei Sonnenuntergang angeht und in einer bestimmten Farbe leuchtet… Ist halt letztlich ein ESP8266 der RGB LEDs antreibt und über MQTT seine Befehle erhält. Der taucht auf diese Weise halt auch einfach als Apple Home device auf und ich kann die Farbe am Telefon einfach manuell einstellen … oder bei von Alexa setzen lassen … oder… you get the idea.
:-) Es kommt garantiert noch mehr Inhalt, je nachdem wie meine Zeit es zulässt, und im Haus kommt ohnehin ja auch immer mal wieder das hinzu.