Application virtualization, IoT and Cloud Computing, Blog of Sacha Thomet

SmartHome

My Smart Home – Chapter 3-2: Smartacus – Use cases

Article will be translated to english soon

Die Anwendungsfälle von IoT sind nahezu unbegrenzt, eher setzt die Vorstellungskraft Grenzen als die Technik. Wie Smartacus auf Ihrer Webseite wirbt sind im Bereich Smart Home folgende 3 Ziele die am meisten gesehenen:

  • Energieverbräuche senden (“intelligentes” Heizen und Beleuchten)
  • Komfort steigern (z.B. Szenenbasierte Geräte/Lichtsteuerung)
  • Sicherheit erhöhen (Licht einschalten beim Heimkommen, aktive Sensoren bei Abwesenheit)

Ich habe mit der Smart Home Geschichte angefangen, weil ich es spannend finde zu sehen was möglich ist, meiner Frau verkaufe ich es natürlich als Komfortverbesserung.

Achtung! Mit einem falsch eingesetzten Smart Home lässt sich im Übrigen auch genau das Gegenteil erreichen! Ein nicht gut konfiguriertes System kann den Komfort verschlechtern, die Sicherheit reduzieren oder auch mehr Energie verbrauchen. Hier ist es wichtig zu wissen was man macht und welche Produkte man einsetzt. Ich verzichte zum Beispiel absichtlich im Moment auf eine smarte Türöffnung wie es sie z.B. von Nuki gibt. Auch messe ich den Stromverbrauch meiner Komponenten bevor ich diese integriere. Die Smartacus Basisstation braucht zum Beispiel nur 7 Watt beim Start und 4 Watt im Betrieb.

Aber nun weiche ich vom Thema ab … eigentlich wollte ich in diesem Blog-Post Beispiele bringen wie Smartacus eingesetzt werden kann. Natürlich sind diese Anwendungsfälle auch auf andere Smart-Home Systeme anwendbar.

Hier meine ersten realisierten Anwendungsfälle

Intelligentes Heizen

Wer braucht 22° wenn er schläft? Ist es nicht Schade wenn in der Nacht die Wohnung stärker geheizt wird als nötig, bei tieferer Temperatur schläft man nicht nur besser sondern man spart auch Energie! Hier erreichen wir sowohl den Energiespar-Effekt wie auch die Komfortsteigerung. Zu realisieren ist das Ganze im Smartacus Portal via den Reiter Zeitsteuerung.

Auch wird viel Energie verpufft, wenn man Fenster oder Türen öffnet, gerade jetzt wo wir Temperaturen weit unter dem Gefrierpunkt haben, dreht die Heizung voll auf wenn es rapid Kalt wird.

Mit Einsatz eines Tür-/Fensterkontaktes (1) kann dies verhindert werden und wir heizen nicht das Dorf sondern der Heizkörper Thermostat (2) regelt die Temperatur runter. Dies geschieht über den Reiter Dienste:

Natürlich muss man dran denken auch einen “Gegendienst” zu bauen welcher bei Schliessung der Tür die Heizung wieder auf die Wunschtemperatur stellt.

Intelligentes Beleuchten

Früher habe ich Weihnachts-Beleuchtung einfach mit einer mechanischen Zeitschaltuhr dazu gebracht nur am Abend und am Morgen zu leuchten. Ein smarter Zwischenstecker (3) lässt sich zwar wie eine Zeitschaltuhr konfigurieren und man erreicht damit dass Weihnachtsdeko nicht für die Katze leuchtet, aber toll ist das man es Beispielsweise mit einem Multisensor (4) erweitern kann und somit die Beleuchtung auch abhängig von Helligkeit oder Bewegung steuern. So kann jemand um 02:00 in der Nacht an unserem Balkon vorbeilaufen und der Leuchtende Stern geht auch für diesen Nachtschwärmer an.

Intelligentes “dummes” Heizen

Dieser Winter war wieder besonders kalt und letzte Woche als bei uns eine Aussentemperatur von -14° Celsius herrschte ist es wieder passiert, uns sind im Keller die Wasserleitungen zu gefroren.

In unserem alten Haus, welches ein umgebautes Bauernhaus aus dem letzten Jahrhundert ist, lässt sich dieses Problem leider nur durch jeweils kurzfristiges elektrisches Heizen lösen. Im Keller gibt es keine Möglichkeit anders zu heizen. Eine leider sehr ineffiziente und verschwenderische Lösung.

Zum Glück reicht es, wenn wir im Keller eine Temperatur von 4-5° erreichen, das Problem ist dass sich die im Haushalt gebräuchlichen Elektroöfen nicht auf 4° einstellen lassen, die Skala beginnt irgendwo bei 15°.

Mit dem Multisensor (4) und einem smarter Zwischenstecker (3) lässt sich auch dieses Problem lösen und wir können unseren Keller auf 5° heizen.

My Smart Home – Chapter 2: Home Assistant

After my smart mirror project which was exciting, I can still only see the values of the integrated sensors on the mirror. The problem that I can’t control my smart devices from one place still exists.

The conglomeration of smart devices in my home is very various, I need to work with something which is open for almost everything imaginable.

On Facebook I saw a post of an acquaintance who adverted for Home Assistant (home-assistant.io). Home Assistant is an open-source home automation platform running on Python 3. Track and control all devices at home and automate control. Perfect to run on a Raspberry Pi.

Hass.io (Home Assistant) is still in development but works already good. I’ve started with version 0.48 or so and now in December 2017 we are on 0.60.

First I started with Hass.io on a Raspberry Pi 3, but then I’ve upgraded my Synology NAS and the new one is able to run Docker, so I moved my Home Assistant to a Container on my NAS.

I don’t write here now a post how to install and run Home Assistant, that you can find in Getting started on hass.io, the intention of this post is a short Intro for Home Assistant with some hints for the practise.

For Hass.io there is also a mobile app, you can use the App if you are in the same network like your Home Assistant server or you have a VPN connection in this network. It’s also possible to expose the server to the internet, it contains all you need for that like duck dns and Let’s Encrypt. But I won’t do that for security consideration.

Devices and Components

Home Assistant has a very broad range of supported smart devices, I added the following devices to my system:

A short demo how that looks on my environment:

Automation

Before I used Home Assistant I automated some of my smart devices with IFTTT, with hass.io I can now do that “On Premises”.

I created the following “recipes” for my home automation:

  • If the IKEA lamp in my living room turns on, also turn on the lights in my vitrine (LED plugged in a MyStrom Smart Plug):
  • If my UniFi controller don’t see any Wifi Mac address of the mobile phones of my family members, the automation “Away-Mode” turns on. This procedure powers off some Smart Plugs, bring my Sonos Player to pause, and all Hue lights will be turned off.

In contrast to IFTTT it’s possible with hass.io to combine things almost indefinite. It’s possible to define so called Conditions.

Helpful hints

If you try Home Assistant and you starting to create and modify your *.yaml files, really use a text editor which show you invisible characters! Python is very fussy for syntax errors even when only an invisible character.

Make backup from your files before you modify it, this can help to avoid some frustration.

If you intend to add a MyStrom Smart Button, I found out that this doesn’t work currently if your Home Assistant Web GUI is protected with a password.

Conclusion

A big benefit of Home Assistant is that it’s an open system with a large developer community, there are many components integrated and it’s possible to integrate by your own.

The downside of Home Assistant is that’s currently not yet a solution for an Enduser without any IT skills. More and more it’s now configurable via Web GUI but without any IT knowledge it’s impossible to manage it.

+ Command centre for your Smart Home
+ Cheap
+ Interaction with your smart components is possible
+ many Components integrated
+ App for your mobile phone or tablet computer
+ – Open Source (Open to integrate other things, improve code vs Security)
– Not an End-user product
– Needs Maintenance

A short preview for my third Smart Home article, I will show you something which is also usable for End-Users without IT Knowledge. I know the readers of my blog are mostly IT Pro’s but I’m sure you have also friends who want to play the Smart Home game and have no clue how to start.

Another LaMetric IoT script – power control

Because I have currently holiday here is another post which is not related to virtualization …

I combined my new “gadgets” the LaMetric time and my new wifi Smart-Plug from MyStrom. The goal was to report the current power consumption of power plug and the possibility to control the plug with the smart ticker.

MyStrom has a very straight forward API (https://mystrom.ch/en/mystrom-api), and the possibility to create apps for LaMetric is pretty easy what I’ve already mentioned in an past blog post.

All what is needed to implement this solution is:

  • a web server which can parse PHP
  • two small scripts
  • and a private app for LaMetric

This is the script to see the current power consumption:

{
    "frames": [
        {
            "index": 0,
            "text": " <!--?php //$host = "http://192.168.1.59/report"; //Call with parameter, e.g.: http://192.168.1.20/LaMetric/myStrom.php?host=192.168.1.59 $host = "http://" . $_GET&#91;"host"&#93; . "/report"; $filestring = file_get_contents($host); $startpos = 0; while($pos = strpos($filestring, "\"power\"", $startpos)) { $string = substr($filestring, $pos, strpos($filestring, ",", $pos + 1) - $pos); //echo $string. " "; $newstring = str_replace("\"power\": ","","$string"); echo round($newstring, 2); $startpos = $pos + 1; } ?--> Watt",
            "icon": "i1692"
        }
    ]
}

I just read the content from the API, which is already in JSON format, but I reformat it that it is in that way which I need to bring it to the LaMetric.
This is the script to control the power outlet:

<!--?php $host = "http://" . $_GET&#91;"host"&#93; . "/report"; $filestring = file_get_contents($host); $startpos = 0; while($pos = strpos($filestring, "relay", $startpos)) { $string = substr($filestring, $pos, strpos($filestring, "}", $pos + 1) - $pos); $newstring = str_replace("relay\": ","","$string"); //echo $newstring; $startpos = $pos + 1; } $newstring = str_replace(chr(13), "", $newstring); if ($newstring == "false ") { echo "Ist ausgeschaltet, wird nun eingeschaltet"; $URL = "http://" . $_GET&#91;"host"&#93; . "/relay?state=1"; $data = file_get_contents($URL); } else { echo "Ist eingeschaltet, wird nun ausgeschaltet"; $URL = "http://" . $_GET&#91;"host"&#93; . "/relay?state=0"; $data = file_get_contents($URL); } ?-->

And the LaMetric private app:

This simple poll app call the script on the webserver (192.168.1.20) with the parameter of the MyStrom plug (192.168.1.59).

On button action the controller script is launched with change the status (off to on or visa verse)

myStromApp-mini

(192.168.1.59 is the ip of my Power outlet. 192.168.1.20 is the address of my web server, this can be a raspberry pi or a Synology.)

Follow me on Twitter