The 100 best digital picture frames on amazon
The 100 best digital picture frames on amazon
The 100 best digital picture frames on amazon
The 100 best digital picture frames on amazon

Die Anwe­sen­heits­er­ken­nung von Home Assis­tent für das auto­ma­ti­sche Ein-/Aus­­schal­­ten des Bil­der­rah­mens nut­zen

-

Home Assi­stant ist eine der inno­va­tivs­ten und schnells­ten Ent­wick­lun­gen im Home Auto­ma­ti­on Soft­ware Markt.

Erst vor weni­gen Jah­ren von dem Nie­der­län­der Pau­lus Schout­sen gestar­tet, hat das Open Source Pro­jekt einen enor­men Schwung auf­ge­baut. Hun­der­te von Ent­wick­lern aus der gan­zen Welt begeis­tern eine stän­di­ge wach­sen­de Zahl von Nut­zern, denen jeden Tag neue Anwen­dun­gen ein­fal­len.

In die­sem Arti­kel zei­ge ich euch, wie ihr die WLAN Anwe­sen­heits­er­ken­nung von Home Assi­stant nut­zen könnt, um euren digi­ta­len Bil­der­rah­men auto­ma­tisch aus­zu­schal­ten, sobald kei­ner mehr zuhau­se ist. Und natür­lich euren Rah­men wie­der ein­schal­tet, sobald eine Per­son nach Hau­se kommt. Die Funk­tio­na­li­tät habe ich mit dem MQTT Pro­to­koll umge­setzt, das eine ein­fa­che und schnel­le Kom­mu­ni­ka­ti­on zwi­schen Gerä­ten ermög­licht.

Die Anlei­tung, die ich euch zei­ge, ist auch die Basis für die Sprach­steue­rung über Ama­zon Echo oder Google Home und vie­le wei­te­re mög­li­che Anwen­dun­gen.

Vie­le Wege füh­ren nach Rom

Die auto­ma­ti­sche Anwe­sen­heits­er­ken­nung ist eine Kern­the­ma in der Haus­au­to­ma­ti­on und auch sehr rele­vant für jeden, der einen digi­ta­len Bil­der­rah­men zuhau­se hat.

Nicht nur spart ihr Strom, wenn ihr den Bild­schirm aus­schal­tet, wenn ihn ohne­hin kei­ner sehen kann. Auch die Lebens­er­war­tung des Dis­plays wird sich ver­län­gern. Und all das ohne Ein­bu­ßen im Kom­fort. Daher muss man nicht lan­ge dar­über nach­den­ken, ob das sinn­voll ist.

Im Zen­trum der Anwe­sen­heits­er­ken­nung steht das Smart­pho­ne. Jeder in der Fami­lie hat eins und nor­ma­ler­wei­se hat man es immer dabei, wenn man das Haus ver­lässt.

Es gibt drei Tech­no­lo­gi­en, die sich im Zusam­men­hang mit einem Han­dy anbie­ten: WLAN, Blue­tooth oder Geo­fen­cing.

Geo­fen­cing bezeich­net die Ortung des Han­dys, um Stan­d­ort-basier­­te Aktio­nen aus­zu­lö­sen. Wie zum Bei­spiel die Abset­zung eines Befehls, falls man das Haus ver­lässt.

Geo­fen­cing war ursprüng­lich mei­ne ers­te Wahl, um die Abschalt­au­to­ma­tik umzu­set­zen. Und zwar in Ver­bin­dung mit IFTTT, die Soft­ware, die alle mög­li­chen Gerä­te auf sehr ein­fa­che Art und Wei­se ver­net­zen kann.

Ich hat­te eine simp­le Akti­on defi­niert, die eine Varia­ble an unse­ren Rah­men schick­te, sobald jemand das Haus ver­lies. Wenn kein Bewoh­ner mehr als anwe­send regis­triert wur­de, soll­te sich der Rah­men aus­schal­ten.

Sobald sich aber ein Bewoh­ner auf 50 Meter wie­der nähert, soll­te sich der Bil­der­rah­men auch wie­der anschal­ten.

Das schien mir ein sehr sinn­vol­ler Weg zu sein, da er unab­hän­gig von einem WLAN Sys­tems war. Lei­der funk­tio­niert der Set­up nicht wie erhofft. Ent­we­der war der Stan­d­ort-Update zu lang­sam oder er blieb völ­lig aus.

Nach zwei Mona­ten been­de­te ich die Test­pha­se und ver­folg­te eine ande­re Lösung.

Die Nut­zung von Blue­tooth für die Anwe­sen­heits­er­ken­nung zwei­fel­te ich auf­grund der gerin­gen Reich­wei­te an. Für eine klei­ne Woh­nung mag das noch funk­tio­nie­ren, aber ich bin doch etwas skep­tisch, ob es sich für ein Haus mit Beton­de­cken eig­nen wür­de. Wenn ihr mit Blue­tooth gute Erfah­run­gen gemacht habt, lasst es mich bit­te wis­sen.

WLAN dage­gen ist jetzt seit einem hal­ben Jahr bei uns im Ein­satz und sowohl die Reak­ti­ons­ge­schwin­dig­keit als auch Zuver­läs­sig­keit sind sehr zufrie­den­stel­lend.

Es ist daher die bes­te Metho­de, die ich für die auto­ma­ti­sche Bild­schirm­steue­rung eures digi­ta­len Bil­der­rah­men emp­feh­len kann. Und jetzt stei­gen wir in die Details ein.

Daheim

Die Funk­ti­ons­wei­se lässt sich wie folgt beschrei­ben.

Der WLAN Rou­ter hat einen stän­di­gen Über­blick, wel­che Gerä­te mit dem Heim­netz­werk ver­bun­den sind, selbst wenn sie sich im Schlaf­mo­dus befin­den.

Ein neu­es Gerät wird meist inner­halb einer Minu­te erkannt. Nicht mehr im Netz­werk befind­li­che nach rund zehn Minu­ten als abwe­send gemel­det (bei mei­nem Ubi­qui­ti Uni­fi Gerät, bei eurem Her­stel­ler kann die Fre­quenz eine ande­re sein).

Wie gesagt, wenn ein Gerät schläft, bleibt es trotz­dem im WLAN, nur wenn man es aus­schal­tet oder außer Reich­wei­te geht, ver­schwin­det es von der Lis­te.

Der Device Tra­cker in Home Assi­stant sieht dann in der Rou­ter Lis­te, ob sich bei den ange­mel­de­ten Gerä­ten eine Ände­rung erge­ben hat und kann dar­auf­hin agie­ren.

Die Akti­on, die dann aus­ge­löst wird ist das Abset­zen einer MQTT Nach­richt, die vom Bil­der­rah­men auf­ge­fan­gen wird. Die Nach­richt wird ana­ly­siert und ein Python Skript getrig­gert, das den Rah­men an- oder aus­schal­tet.

Home Assi­stant Device Tra­ckers

Die nach­fol­gen­den Schrit­te gehen davon aus, dass du Home Assi­stant auf einem Rasp­berry Pi, Intel NUC oder einem NAS instal­liert hast.

Ich gehe wei­ter­hin davon aus, dass dein WLAN Rou­ter auf der Lis­te der mit Home Assi­stant kom­pa­ti­blen Gerä­te auf­ge­führt ist. Die­se Lis­te ist sehr umfang­reich und sie wird stän­dig ergänzt. Die Wahr­schein­lich­keit ist daher hoch, dass sich dein Gerät dort wie­der­fin­det.

Ich benut­ze eine Fritz­Box 7490 ledig­lich als DSL Modem und ver­wen­de drei Ubi­qui­ty Uni­fi Direct AP, die als Mesh Netz­werk mit ein Uni­fy Con­trol­ler ver­bun­den sind. Es soll­te aber mit jeder ande­ren gän­gi­gen Lösung auch funk­tio­nie­ren.

Ich hat­te mich vor zwei Jah­ren für die Uni­fi Lösung ent­schie­den, weil sie mir gera­de für grö­ße­re Instal­la­tio­nen sehr emp­foh­len wur­den. Und mei­ne Frau sagt heu­te, dass wir noch nie ein sta­bi­le­res WLAN hat­ten, also muss es wirk­lich gut sein.

Vor allem das Roa­ming zwi­schen Basis Sta­tio­nen funk­tio­niert wun­der­bar, da kein Gerät an einer Sta­ti­on "kle­ben bleibt", son­dern durch den Con­trol­ler stän­dig geprüft wird, ob es noch eine bes­se­re Ver­bin­dung gibt.

Home Assi­stant wirkt auf den ers­ten Blick etwas kom­plex aber es ist eigent­lich ganz ein­fach, wenn man die Logik dahin­ter ein­mal begrif­fen hat. Das betrifft auch die Ein­rich­tung von Device Tra­ckern.

Mei­ne Anlei­tung ist auf die Ubi­qui­ty Uni­fy direct Access Points zuge­schnit­ten aber hier fin­det ihr sicher­lich eure Rou­­ter-Vari­an­­te.

Um den Rou­ter als Device Tra­cker zu nut­zen, müsst ihr fol­gen­de Zei­len in eure Home Assi­stant configuration.yaml Datei schrei­ben:

# Unifi Presence Detection
device_tracker:
  - platform: unifi_direct
    host: 192.168.135.51 #(tragt hier die IP eurer Basis Station ein)
    username: unifi_ap_username 
    password: unifi_ap_password
    interval_seconds: 10
    consider_home: 180
    new_device_defaults:
      track_new_devices: False
      hide_if_away: True

Falls du meh­re­re Basis Sta­tio­nen nutzt, muss jede ein­zeln ein­ge­tra­gen wer­den.

Ach­tet dar­auf, dass Benut­zer­na­me und Pass­word sich auf den SSH Zugang des Gerä­tes bezie­hen und nicht z.B. der Benut­zer­na­me des Uni­fy Con­trol­lers ver­wen­det wird.

Es mag auch einen Weg geben, um direkt auf den Con­trol­ler zuzu­grei­fen, aber die Ein­rich­tung gelang mir nicht. Und so habe ich ein­fach die drei Basis­sta­tio­nen sepa­rat ein­ge­tra­gen.

Star­te Home Assi­stant neu.

Wenn du bis­her noch kei­nen Device Tra­cker benutzt hat­test, wird jetzt auto­ma­tisch die Datei known_devices.yaml erstellt.

Öff­ne die Datei und schaue nach, ob dein Han­dy, das du für die Anwe­sen­heits­kon­trol­le nut­zen willst, dort auf­taucht. Wenn du vie­le Gerä­te im Netz­werk hast, kann das etwas unüber­sicht­lich sein, weil nur die MAC (Media Access Con­trol) ange­zeigt wird. Die MAC Num­mer iden­ti­fi­ziert die Hard­ware in einem Netz­werk.

Die MAC fin­dest du in den Ein­stel­lun­gen dei­nes Han­dys. Bei iPho­nes ist die MAC unter All­ge­mein - Infor­ma­ti­on - WLAN-Adres­­se zu sehen. Sie hat ein For­mat wie "d4:a4:3d:38:34:30". Alter­na­tiv könnt ihr sie auch im Rou­ter fin­den.

In der Datei known_devices.yaml ände­re den Track Tag auf "true" für alle Han­dys, die du orten möch­test.

So sieht das dann unge­fähr aus:

wolfgang-iPhone:
  name: Wolfgang
  mac: D4:A4:3D:38:34:30
  icon:
  picture: /local/wolfgang.png
  hide_if_away: true
  track: true

Das Bild ist optio­nal sieht aber sehr nett in Home Assi­stant aus. Um es hin­zu­zu­fü­gen, lege dein Bild als 192 x 192 px PNG Datei in das "www" Ver­zeich­nis von Home Assi­stant. Auch wenn es "local" oben heißt, muss es in "www" gelegt wer­den. Man­che Din­ge muss man ein­fach wis­sen.

Star­te Home Assi­stant neu und prü­fe die Device Sta­tes. "home" wird ange­zeigt, wenn das Han­dy mit dem Netz­werk ver­bun­den ist, "not_home" wenn nicht.

Jetzt müsst ihr noch im Love­lace Front­end die Ent­i­ties defi­nie­ren.

entities:
  - device_tracker.person1
  - device_tracker.person2
entity: device_tracker
title: Presence
type: entities

Danach tes­tet erst ein­mal, ob alles funk­tio­niert. Stellt eure WLAN Ver­bin­dung beim Han­dy auf "aus" (oder Flug­mo­dus) und war­tet ein paar Minu­ten. Manch­mal geht das ganz schnell aber mit­un­ter dau­ert es zehn Minu­ten, bis ein zuvor ver­bun­de­nes Gerät von der Lis­te ver­schwin­det. Wenn sich hin­ge­gen ein neu­es Gerät ver­bin­det, geht das sehr viel schnel­ler.

Eine Ein­stel­lung müs­sen wir noch in Home Assi­stant vor­neh­men, aber bevor wir das tun, rich­ten wir erst MQTT ein.

Das MQTT Post­amt

MQTT ist die Kurz­form für MQ Tele­me­try Trans­port. Es ist ein ein­fa­ches und von den Anfor­de­run­gen her sehr beschei­de­nes Messa­ging Pro­to­koll. Ursprüng­lich wur­de es ent­wi­ckelt, um in Netz­wer­ken mit gerin­gen Daten­über­tra­gungs­ra­ten zu funk­tio­nie­ren. Spä­ter stell­te es sich als idea­le Kom­mu­ni­ka­ti­ons­platt­form für Inter­­net-of-Things Gerä­te her­aus. Daher wird es heu­te auch häu­fig in der Haus­au­to­ma­ti­sie­rung ein­ge­setzt.

MQTT funk­tio­niert wie ein Post­amt. Men­schen (oder eben Gerä­te) ver­schi­cken Brie­fe, die zunächst im zen­tra­len Post­amt lan­den, bevor sie dann wei­ter ver­teilt wer­den.

Die Begrif­fe, die man bei MQTT ken­nen muss, sind "topic, mes­sa­ge, publish, sub­scri­be und bro­ker". "Topic" (The­ma) ist etwas bei dem man mit­re­den oder zumin­dest mit­hö­ren will. Mit "Publish" (ver­öf­fent­li­chen) gibt man einen Kom­men­tar zu einem The­ma ab und mit "Sub­scri­be" (abon­nie­ren) hört man zu. Den Inhalt der Nach­rich­ten nennt man "Messa­ges". Das Post­amt ist der "Bro­ker", der Mak­ler.

Wer mehr zu MQTT wis­sen möch­te, fin­det im Inter­net ein Fül­le guter Erklä­run­gen. Auch wenn MQTT ein sehr ein­fach gehal­te­nes Pro­to­koll ist, kann es doch eine gan­ze Men­ge. Für unse­ren Anwen­dungs­zweck reicht die Zusam­men­fas­sung schon aus.

Zunächst wird der MQTT Bro­ker instal­liert:

Es gibt zwar in Home Assi­stant die Mög­lich­keit Mos­quit­to, ein Open Source MQTT Bro­ker, als Add-on zu instal­lie­ren, ich hat­te aber damit immer wie­der Pro­ble­me bei der Zuver­läs­sig­keit und bin des­we­gen zu Cloud­MQTT gewech­selt, ein kos­ten­frei­er online MQTT Ser­vice.

Was mir bei Cloud­MQTT beson­ders gefällt ist die WebSo­cket Benut­zer­schnitt­stel­le, die beim Debug­ging sehr hilf­reich sein kann. Der kos­ten­lo­se "Cute Cat" Account reicht für unse­re Zwe­cke.

MQTT auf dem digi­ta­len Bil­der­rah­men ein­rich­ten

Die nach­fol­gen­den Schrit­te gehen davon aus, dass du mei­nen Arti­kel "So spielst du in weni­ger als 60 Minu­ten die Soft­ware für dei­nen digi­ta­len Bil­der­rah­men auf" gele­sen hast.

Ver­bin­de dich mit dem Rasp­berry Pi mit Ter­mi­nal

ssh pi@IP-of-your-digital-picture-frame

Gib ein

sudo pip3 install paho-mqtt

Jetzt brau­chen wir ein Python Skript, das den Bil­der­rah­men an- oder aus­schal­tet.

Das kannst du ent­we­der hier her­un­ter­la­den, oder den Code unten her­aus kopie­ren und in eine neue Datei ein­fü­gen. Das Skript hört auf das Topic "frame/monitor". Wenn die dar­in ent­hal­te­ne Mes­sa­ge "ON" ist, wird der Bild­schirm ange­schal­tet, ana­log bei "OFF". Gib der Datei den Namen "monitor_cloudmqtt.py".

  1. #!/usr/bin/env python3
  2.  
  3. import paho.mqtt.client as mqtt
  4. import subprocess
  5.  
  6. def hdmi_on():
  7.     CONTROL = "vcgencmd"
  8.     CONTROL_BLANK = [CONTROL, "display_power", "1"]
  9.     subprocess.call(CONTROL_BLANK)
  10.     print ( "I turned the screen on!" )
  11.  
  12. def hdmi_off():
  13.     CONTROL = "vcgencmd"
  14.     CONTROL_BLANK = [CONTROL, "display_power", "0"]
  15.     subprocess.call(CONTROL_BLANK)
  16.     print ( "I turned the screen off!" )
  17.  
  18. def on_connect(client, userdata, flags, rc):
  19.   print("Connected to MQTT broker")
  20.  
  21. def on_message(client, userdata, msg):
  22.     print(msg.topic+" "+str(msg.qos)+" "+str(msg.payload))
  23.     if msg.payload.decode() == "ON":
  24.         hdmi_on()
  25.         client.publish("frame/monitor", "ON")
  26.     elif msg.payload.decode() == "OFF":
  27.         hdmi_off()
  28.         client.publish("frame/monitor", "OFF")
  29.     else:
  30.         pass
  31.  
  32. def on_subscribe(client, userdata, mid, granted_qos):
  33.     print("Subscribed to topic : " + str(mid) +" with QoS" + str(granted_qos))
  34.  
  35. client = mqtt.Client()
  36.  
  37. client.username_pw_set( "User" , "Password" )
  38.  
  39. client.connect( "m23.cloudmqtt.com", 17905, 60)
  40.  
  41. client.subscribe( "frame/monitor/set" , qos=0)
  42.  
  43. client.on_connect = on_connect
  44.  
  45. client.on_message = on_message
  46.  
  47. client.loop_forever()

Die Para­me­ter für dei­nen Bro­ker fin­dest du in den Cloud­MQTT Account Details unter "Instan­ce Info".

Pas­se die­sen Absatz an

client.username_pw_set( "User" , "Password" )

und

client.connect( "Server", Port, 60)

Das Skript soll beim Start des Bil­der­rah­mens auto­ma­tisch auf­ge­ru­fen und neu­ge­star­tet wer­den, soll­te es einen Netz­werk­aus­fall geben.
Gib ein

sudo nano /lib/systemd/system/cloudmqtt.service

Im Edi­tor kopierst du die­sen Text rein

[Unit]
Description=Cloudmqtt Service
After=multi-user.target
[Service]
Type=idle
User=pi
ExecStart=/usr/bin/python3 /home/pi/monitor_cloudmqtt.py
Restart=always
RestartSec=60
[Install]
WantedBy=multi-user.target

Spei­che­re und ver­las­se den Edi­tor. Dann gib im Ter­mi­nal ein

sudo chmod 644 /lib/systemd/system/cloudmqtt.service
sudo systemctl daemon-reload
sudo systemctl enable cloudmqtt.service

MQTT in Home Assi­stants configuration.yaml ein­rich­ten

Füge die­sen Abschnitt in die configuration.yaml ein:

# CloudMQTT
mqtt:
  broker: m23.cloudmqtt.com
  port: 17905
  username: username
  password: your-password

und

# MQTT Switch
switch:
  - platform: mqtt
    name: "Digital Picture Frame"
    icon: mdi:panorama
    state_topic: "frame/monitor"
    command_topic: "frame/monitor/set"
    availability_topic: "frame/monitor/available"
    payload_on: "ON"
    payload_off: "OFF"
    state_on: "ON"
    state_off: "OFF"
    qos: 0
    retain: true

Und ganz zum Schluss musst du jetzt noch den Schal­ter (enti­ty switch) für den Bil­der­rah­men im Front End erstel­len.

Star­te Home Assi­stant und dei­nen Bil­der­rah­men neu. Herz­li­chen Glück­wunsch, dein digi­ta­ler Bil­der­rah­men wird jetzt über Home Assi­stant gesteu­ert!