automatische wohnung

felix schwenzel in artikel

im mai habe ich der bei­fah­re­rin ein hue-star­ter­set ge­kauft. sie mag die bei­den lam­pen sehr, weil sie dimm­bar sind und in ver­schie­de­nen weiss-tö­nen leuch­ten kön­nen. das dimm- und weiss­le­vel stellt sie sich je nach ta­ges­zeit und stim­mung über den mit­ge­lie­fer­ten und über ih­rem sofa an­ge­brach­ten hue-schal­ter ein. sie wei­gert sich al­ler­dings die leuch­ten per ipho­ne oder siri zu steu­ern. sie drückt halt ger­ne auf tas­ten rum.

bei mir ist das ge­gen­teil der fall. je mehr din­ge ich über mein te­le­fon oder mei­nen rech­ner steu­ern kann, des­to mäch­ti­ger bes­ser füh­le ich mich. zu­ge­ge­be­ner­mas­sen ist das kon­zept eine leuch­te über eine app zu steu­ern eher ge­wöh­nungs­be­dürf­tig: te­le­fon in die hand neh­men, ent­sper­ren, app auf­ru­fen, ein paar mal kli­cken … die hue app bie­tet zwar auch wid­gets an, die sich über den sperr­bild­schirm steu­ern las­sen, aber auch die sind nicht so das gel­be vom ei. seit iOS10 und der neu­en home-app ist das viel bes­ser ge­wor­den. jetzt kann ich die wich­tigs­ten ge­rä­te mit ei­nem wisch steu­ern.

die wichtigsten geräte zuhause im schnellzugriff

433 mhz steckdosen in der home app

aber ich grei­fe vorraus. die hue-lam­pen weck­ten in mir das be­dürf­nis nicht nur stän­dig (zwei) lich­ter per te­le­fon an und aus­zu­schal­ten, son­dern vor al­lem mehr lich­ter steu­ern zu kön­nen. zu­fäl­lig stiess ich auf ei­nen ar­ti­kel, in dem be­schrie­ben wur­de wie man alte funk­steck­do­sen über die home-app steu­ern könn­te. von de­nen la­gen bei uns noch drei stück rum, zwei be­reits im wohn­zim­mer ver­baut, um zwei ikea-schrank­be­leuch­tun­gen per fern­be­die­nung zu steu­ern.

das pro­jekt funk­tio­nier­te so gut, dass ich an zwei wo­chen­en­den nicht nur die drei funk­steck­do­sen app-steu­er­bar mach­te, son­dern auch gleich noch ei­nen bau­markt-funk-be­we­gungs­schal­ter. naja, so gut funk­tio­nier­te der zwei­te teil dann auch wie­der nicht. wäh­rend der ers­te teil re­la­tiv un­kom­pli­ziert war und hier vor al­lem re­la­tiv gut be­schrie­ben war, war der zwei­te teil um ei­ni­ges haa­ri­ger. und wenn ich ge­nau­er nach­den­ke, war auch der ers­te teil gar nicht so un­kom­pli­ziert:

  • ich musste lernen, wie man die arduino entwicklungsumgebung unter macos benutzt und einrichtet (funktionierte damals nicht unter macos sierra, ich musste auf unseren mac-mini-server ausweichen, auf dem noch el capitan läuft),
  • ich musste c++ ein bisschen verstehen lernen,
  • die pin-nummern und -zuordnungen auf dem esp8266 esp-12e verstehen lernen
  • und mich mit billigen chinesischen 433 mhz funkmodulen rumschlagen, die nicht immer so funktionieren wie angegeben

aber am ende hat­te ich ei­nen esp8266-mi­kro­con­trol­ler der im wlan hing und über ei­nen klei­nen web­ser­ver be­feh­le emp­fing, mit de­nen er funk­steck­do­sen schal­te­te. so ist er jetzt auch nach knapp 30 ta­gen hier im ein­satz, le­dig­lich die be­feh­le die er emp­fängt und wei­ter­gibt habe ich nach und nach ein biss­chen er­wei­tert. ich fin­de al­lein das schon se­n­a­sa­tio­nell: steck­do­sen über http steu­ern! in der fir­ma ha­ben wir für den ser­ver­schrank im re­chen­zen­trum vor ein paar jah­ren eine sack­teu­re, über http steu­er­ba­re steck­do­sen­leis­te ge­kauft, die ich so sen­sa­tio­nell fand, dass ich mit ihr für ein foto po­sier­te, das noch heu­te in der fir­ma in der wand hängt. jetzt habe ich über http steu­er­ba­re steck­do­sen zu­hau­se!

weil die steck­do­sen über http steu­er­bar sind, sind sie auch über apps zu steu­ern. ich habe mir dann noch home­bridge auf un­se­rem macmi­ni-ser­ver in­stal­liert und die steck­do­se per http-mo­dul ein­ge­bun­den. da­mit tau­chen sie dann in der home-app in mei­nem te­le­fon auf oder las­sen sich per siri steu­ern. ein­zi­ger nach­teil: es gab kei­ne lo­gik für den schal­ter-sta­tus. wenn ich oder die bei­fah­re­rin eine der steck­do­sen per fern­be­die­nung schal­te­ten, be­ka­men we­der der ar­dui­no, noch home­bridge, noch die home-app et­was da­von mit. die sta­tus-er­ken­nung habe ich mir aber erst­mal auf die lan­ge bank todo-lis­te ge­scho­ben.

den be­we­gungs­mel­der zum lau­fen zu brin­gen war lei­der irre auf­wän­dig. das teil sen­det mit ei­nem et­was kom­ple­xe­ren pro­to­koll als die steck­do­sen und für die­ses pro­to­koll muss­te ich erst­mal die rich­ti­gen ar­dui­no-bi­blio­the­ken fin­den. die­se bi­blio­the­ken von ran­dy si­mons funk­tio­nier­ten, zu­sam­men mit dem neu­en 433 MHZ-emp­fän­ger, den ich ge­kauft hat­te, nach­dem ich be­merkt hat­te, dass der bil­li­ge chi­ne­si­sche emp­fän­ger den ich zu­erst ge­kauft hat­te, ka­putt war. was ich al­ler­dings we­gen mei­ner ah­nungs­lo­sig­keit nicht hin­be­kam, war die da­ten die der be­we­gungs­mel­der sen­de­te, der funk­emp­fän­ger emp­fing und die bi­blio­the­ken von ran­dy si­mons ent­schlüs­sel­ten, wie­der über http zu ver­schi­cken.

stun­den­lang ver­such­te ich hin­zu­be­kom­men, den ar­dui­no zum re­den zu brin­gen. erst als mir auf­ging, dass die call­backs, die die funk­bi­blio­the­ken beim emp­fang von da­ten auf­rie­fen, von und in in­ter­rupt-zy­klen auf­ge­ru­fen wur­den, ver­stand ich das pro­blem an­satz­wei­se. in die­sen call­backs soll­te man bes­ser kei­ne län­ge­ren ope­ra­tio­nen durch­füh­ren, las ich im netz. bei ei­nem län­ge­ren spa­zier­gang ging mir dann die lö­sung auf: ein­fach in den call­backs eine va­ria­ble set­zen, die die emp­fan­ge­nen da­ten spei­chert und die­se dann im loop ab­ar­bei­ten. mei­ne ers­te be­we­gungs­mel­der-lö­sung war et­was un­be­frie­di­gend: ich liess den ar­dui­no die si­gna­le des be­we­gungs­mel­der gleich wie­der per funk an eine steck­do­se wei­ter­sen­den. das funk­tio­nier­te zwar, aber mit­un­ter dau­er­te es zwei bis drei se­kun­den, bis das licht an­ging. so un­be­frie­di­gend das war, be­liess ich es erst­mal.

home assistant

ich hat­te näm­lich ein neu­es spiel­zeug ent­deckt: den home as­sis­ten­ten, eine soft­ware, die kom­mu­ni­ka­ti­ons­freu­di­ge haus­ge­rä­te ver­netzt und steu­er­bar macht. die lis­te der un­ter­stüt­zen kom­po­nen­ten ist be­ein­dru­ckend und es setz­te ein ma­ni­scher kreis­lauf ein: plötz­lich sah ich, was in sa­chen heim­au­to­ma­ti­sie­rung al­les mög­lich war, lern­te das my­sen­sor-pro­jekt ken­nen, own­tracks, das ähn­lich wie goog­le la­ti­tu­de funk­tio­niert und vom home as­sis­ten­ten zur prä­se­nenz­de­tek­tie­rung be­nutzt wer­den kann, die auch zu­ver­läs­sig funk­tio­niert, wenn man sie mit be­a­cons kom­bi­niert. aus­ser­dem kann man mit home as­sistant netz­werk­scans durch­füh­ren, um zu se­hen, wer zu­hau­se ist, bzw. wes­sen te­le­fon oder lap­top in be­nut­zung ist.

meine präsenz, getrackt mit owntracks, datensammlung von home assistant

aus den da­ten die home as­sistant sam­melt kann man sich über­sicht­li­che gra­phen an­fer­ti­gen las­sen oder be­nach­rich­ti­gun­gen per growl, te­le­gram oder sonst­was schi­cken las­sen. na­tür­lich gab es vie­le fal­sche po­si­tiv­mel­dun­gen, so dass die be­nach­rich­ti­gun­gen schnell nerv­ten. aber dar­um ging es mir ja auch gar nicht, ich war ein­fach fas­zi­niert, was man mit die­ser soft­ware al­les ma­chen konn­te.

lei­der muss­te ich dann, be­vor ich home as­sistant wei­ter im de­tail er­for­schen konn­te, in den ur­laub fah­ren.

wie­der zu­hau­se, nahm ich mir vor, den be­we­gungs­mel­der zu ver­bes­sern. statt die lam­pe di­rekt vom mi­kro­con­trol­ler/ar­dui­no zu schal­ten, woll­te ich die be­we­gungs­da­ten per mqtt an den home as­sis­ten­ten über­tra­gen. mqtt hat­te ich schon bei der ein­rich­tung von own­tracks ken­nen­ge­lernt. mei­ne idee war je­weils ei­nen ar­dui­no für den ver­sand von 433-MHZ-si­gna­len und ei­nen für den emp­fang von 433-MHZ-si­gna­len zu ver­wen­den. mei­nen ehr­geiz das al­les mit ei­nem mi­kro­con­trol­ler zu ma­chen, hat­te ich mit prag­ma­tis­mus er­setzt. tat­säch­lich funk­tio­nier­te der an­satz ganz gut. mit hil­fe der bei­spie­le aus ran­dy si­mons bi­blio­the­ken, ein biss­chen mqtt-code aus dem netz und vie­len ex­pe­ri­men­ten hat­te ich bald ei­nen ar­dui­no der 433-MHZ-funk­si­gna­le al­ler art emp­fing und per mqtt ins netz blies. mit die­sen in­for­ma­tio­nen konn­te wie­der­um home as­sistant et­was an­fan­gen. ich konn­te au­to­ma­ti­sie­run­gen schrei­ben, die auf das be­we­gungs­funk­si­gnal re­agier­ten, eine steck­do­se schal­ten und ei­nen ti­mer set­zen, der das licht nach ei­ner mi­nu­te wie­der ab­schal­tet — falls kei­ne wei­te­ren be­we­gun­gen er­kannt wer­den. ge­nau­so konn­te ich aber auch be­tä­ti­gun­gen der 433-MHZ-fern­be­die­nung er­ken­nen und dar­aus auch (end­lich) den sta­tus der steck­do­sen ab­lei­ten. und weil home as­sistant jetzt ei­gent­lich alle funk­si­gna­le emp­fing, konn­te ich die olle 433-MHZ-fern­be­die­nung (von den al­ten funk­steck­do­sen) für die bei­fah­re­rin auch so ein­rich­ten, dass sie da­mit die hue-lam­pen schal­ten kann. so kann sie jetzt alle lam­pen im wohn­zim­mer per fern­be­die­nung schal­ten — und ich (dank home-as­sistant-home­bridge-mo­dul) per home-app oder siri oder home as­sistant.

alte 433 mhz funkfernbedienung — schaltet jetzt auch hue-lampen

jetzt hat­ten wir also ei­nen be­we­gungs­mel­der im flur, der dort das licht für je­weils eine mi­nu­te an­schal­te­te (und mitt­ler­wei­le auch in we­ni­ger als ei­ner se­kun­de re­agier­te) und fünf schalt­ba­re lam­pen, de­ren sta­tus in der home-app und im home-as­sis­tent kor­rekt an­ge­zeigt wur­de.

sensoren

im ur­laub hat­te ich viel über sen­so­ren nach­ge­dacht. am an­fang je­der au­to­ma­ti­sie­rung (und über­wa­chung) ste­hen na­tür­lich sen­so­ren. vie­le sen­so­ren. das my­sen­sors-pro­jekt hat da­für vie­le gute lö­sun­gen, die vor al­lem nicht ein ver­mö­gen kos­ten, wie die re­gu­lä­ren, kom­mer­zi­el­len „smar­ten“ sen­so­ren für be­we­gung, tem­pe­ra­tur, luft­feuch­tig­keit oder hel­lig­keit. an­de­rer­seits war das al­les furcht­bar kom­pli­ziert. für das nächs­te pro­jekt woll­te ich mir erst noch­mal ei­nen ein­fa­chen sen­sor auf esp8266 12e-ba­sis selbst bau­en — ohne die my­sen­sor-bi­blio­the­ken und -kom­ple­xi­tät. so habe ich ei­nen DHT22 tem­pe­ra­tur- und feuch­tig­keits­sen­sor an den ar­dui­no an­ge­schlos­sen und ihn die da­ten per mqtt in netz bla­sen las­sen.

das funk­tio­nier­te auch auf an­hieb su­per, bis auf die tat­sa­che, dass der sen­sor ei­nen viel zu nied­ri­ge luft­feuch­tig­keit mel­de­te. nach ein paar test­ta­gen, war klar, dass die luft­feuch­tig­keit zu­ver­läs­sig un­ge­fähr 50% zu nied­rig ist. also mul­ti­pli­zie­re ich die sen­sor­wer­te mit 2 und gut ist.

home assistant

ei­nen tem­pe­ra­tur- und luft­feuch­tig­keits­sen­sor ha­ben wir schon län­ger im bad, al­ler­dings ist der we­nig kom­mu­ni­ka­tiv und zeigt sei­ne da­ten nur auf ei­nem stil­len LCD-bild­schirm an. die bei­fah­re­rin hat den ins bad ge­stellt, weil sie bei an­hal­tend ho­her luft­feuch­tig­keit schim­mel fürch­tet und nicht müde wird, alle be­woh­ner un­se­rer woh­nung dar­auf hin­zu­wei­sen, nach dem du­schen das licht im bad an­zu­las­sen, da­mit der lüf­ter die feuch­tig­keit raus­bläst. laut DHT22, der ziem­lich schnell re­agiert, ge­hen die luft­feuch­tig­keits­wer­te beim du­schen sehr flott nach oben, fal­len dann leicht ab und blei­ben für eine wei­le auf mit­tel­ho­hem ni­veau. wenn der lüf­ter 30 mi­nu­ten läuft, fällt der wert auf et­was un­ter 70% (sie­he gra­fik wei­ter un­ten).

weil der mit dem licht ge­kop­pel­te lüf­ter uns schon lan­ge ge­nervt hat, vor al­lem we­gen der laut­stär­ke, aber eben auch weil man eben dran den­ken muss­te ihn nach dem du­schen an­zu­las­sen, war mein nächs­tes pro­jekt die­se kopp­lung auf­zu­he­ben. der lüf­ter soll­te sich le­dig­lich bei (zu) ho­her luft­feuch­tig­keit (au­to­ma­tisch) ein­schal­ten. gute sen­sor­wer­te hat­te ich jetzt ja (im home-as­sistant), jetzt brauch­te ich nur noch ei­nen (fern-) schal­ter. auch das woll­te ich mit ei­ner fern­schalt­ba­ren steck­do­se ma­chen. glück­li­cher­wei­se ist un­se­re bad-elek­trik gut zu­gäng­lich. un­ser bad hat eine ab­ge­häng­te de­cke und über eine lu­cke über der spei­se­kam­mer kommt man gut auf die an­de­re sei­te der ab­ge­häng­ten de­cke.

die meis­te ar­beit war dann auch nicht die elek­tro­in­stal­la­ti­on, son­dern die steue­rungs­lo­gik, die ich ex­pe­rie­men­ti­ell mit dem home-as­sistant-app-dae­mon um­ge­setzt habe. der soll das scrip­ten et­was ver­ein­fa­chen, war aber für ei­nen py­thon- und pro­gram­mier-dumm­kopf eine ech­te her­aus­for­de­rung. die lo­gik funk­tio­niert jetzt so, dass der lüf­ter beim über­schrei­ten ei­ner schwel­le (70% luft­feuch­tig­keit) für 15 mi­nu­ten an­springt und sich dann ab­schal­tet. ist die feuch­tig­keit dann noch über 70%, geht der lüf­ter wie­der an, bis es tro­cken ge­nug ist. ma­nu­ell ist der lüf­ter na­tür­lich auch schalt­bar — ent­we­der über die funk-fern­be­die­nung, die home-as­sistant-web­ober­flä­che oder die home-app. weil ich ja noch ei­nen dash-but­ton rum­lie­gen hat­te, habe ich den per da­sher so kon­fi­gu­riert, dass er den lüf­ter ma­nu­ell ent­we­der an oder aus­schal­tet.

dash button als lüftungsschalter

ganz be­son­de­res ver­gnü­gen be­rei­tet mir der licht­sen­sor den ich noch zum DHT22-sen­sor hin­zu­füg­te. an die­sen mo­du­len lässt sich ein schwel­len­wert ein­stel­len, mit dem ich gut er­ken­nen kann, ob eins der lich­ter im bad ein­ge­schal­tet ist. auch der licht­sen­sor sen­det sei­ne sta­tus per mqtt an den home as­sistant, wo der sta­tus dann au­gen­blick­lich an­ge­zeigt wird. mein neu­es hob­by ist jetzt am bad-ein­gang zu ste­hen, das licht ein und aus zu schal­ten und fas­zi­niert zu be­ob­ach­ten wie nicht nur das licht im bad an und aus geht, son­dern auch der in­di­ka­tor auf mei­nem bild­schirm.




mit ei­nem klei­nen script schickt mir der home as­sistant jetzt im­mer eine nach­richt, wenn das licht im bad län­ger als 30 mi­nu­ten ein­ge­schal­tet ist.

todos

mei­ne lis­te mit to­dos ist lang. ich hät­te ger­ne mehr be­we­gungs­sen­so­ren, au­to­ma­tisch ge­schal­te­tes licht ist schon toll, ge­ra­de wenn man nachts mal aufs klo muss. ein sen­sor, der den sta­tus der „fer­tig“-LED auf der wasch­ma­schi­ne ans in­ter­ne netz wei­ter­gibt und home as­sistant eine nach­richt schi­cken lässt, ein au­to­ma­ti­sches tür­schloss und eine ur­laubs­schal­tung, die bei ab­we­sen­heit die lich­ter so schal­tet, als wä­ren wir zu­hau­se. mehr steu­er­ba­re lich­ter, ein ma­gic mir­ror.

vor al­lem muss das na­tür­lich al­les et­was war­tungs­freund­li­cher und sta­bi­ler ge­macht wer­den. schon jetzt lau­fen im haus vier mi­cro­con­trol­ler mit wlan und an­bin­dung an ei­nen lo­ka­len mqtt-ser­ver, auf dem mac mini lau­fen un­zäh­li­ge pro­zes­se, die zwar au­to­ma­tisch star­ten, aber hier und da noch ziem­lich feh­ler­an­fäl­lig. in die­ser hin­sicht muss ich die hue-leuch­ten noch­mal lo­bend er­wäh­nen. die lau­fen nach der ein­rich­tung, funk­tio­nie­ren im­mer mit su­per kur­zen la­ten­zen und brau­chen null war­tung. da­für ha­ben sie ei­nen sehr, sehr stol­zen preis und der be­we­gungs­mel­der ist im­mer noch nicht auf dem markt.

die gra­fik ist mit graf­a­na er­stellt. home as­sistant kann alle ge­sam­mel­ten da­ten (die die tem­pe­ra­tur- und luft­feuch­tig­keit im bad) in eine in­flux-da­ten­bank bla­sen, wor­aus graf­a­na dann wun­der­ba­re, ex­plo­rier­ba­re gra­phen er­stel­len kann. fa­bi­an af­fol­ter hat das hier wun­der­bar be­schrie­ben. graf­a­na, in­fluxdb und home as­sistant lau­fen alle auf un­se­rem macmi­ni-ser­ver.

unsere badezimmer-daten

gleich­zei­tig gross­ar­tig und er­schre­ckend fin­de ich das ver­gnü­gen, dass ich an den ge­sam­mel­ten da­ten habe. oben sind die da­ten des tem­pe­ra­tur- und feuch­tig­keits­sen­sor im bad zu se­hen, so­wie die lauf­zei­ten des ven­ti­la­tors. man er­kennt gut, wann ein­zel­ne ein­woh­ner der woh­nung ge­duscht ha­ben, und wenn man ge­nau hin­sieht (rein­zoomt), auch un­se­re stuhl­gang­zei­ten (wenn wir da­nach höf­li­cher­wei­se den ven­ti­la­tor ein­ge­schal­tet ha­ben). die be­we­gungs­mel­der­da­ten zei­gen re­la­tiv zu­ver­läs­sig an, wann je­mand spät nach hau­se geht oder der letz­te das haus ver­lässt. der luft­feuch­te­sen­sor ist (zu­min­dest an der stel­le an der er mo­men­tan an­ge­bracht ist) so emp­find­lich, dass man ihn bei­na­he als prä­senz­sen­sor nut­zen kann, da­für muss man ihn na­tür­lich nicht an­hau­chen, son­dern es reicht ein­fach im bad zu at­men.

der­zeit will ich auf die­se da­ten nicht ver­zich­ten, weil sie auch hel­fen fehl­funk­tio­nen oder un­re­gel­mäs­sig­kei­ten zu fin­den. aber ein biss­chen über­ra­schend fin­de ich es schon, wie aus­sa­ge­kräf­tig die­se tri­via­len da­ten sind und wel­che mus­ter und schlüs­se man aus ih­nen le­sen und zie­hen kann.

was mir auch auf­ällt: das al­les ist über­haupt nicht „smart“ und un­ser heim wird durch die­se ver­netz­ten ge­rä­te kei­nen deut klü­ger. im ge­gen­teil; auch wenn man die ge­rä­te ta­ge­lang schult und eicht und scrip­tet, am ende gibt es dann doch un­men­gen an fal­schen alar­men, fal­schen wer­ten und kei­nes der ge­rä­te denkt ei­nen schritt wei­ter als man selbst. trotz­dem be­rei­tet es mir un­end­li­ches ver­gnü­gen be­stimm­te sa­chen nicht mehr ma­chen zu müs­sen (licht im flur an­ma­chen), aber da­für an­de­re um so mehr (scrip­ten, feh­ler su­chen, haa­re rau­fen, wenn wie­der was nicht funk­tio­niert). noch grös­se­res ver­gnü­gen be­rei­tet es mir, mir sa­chen aus­zu­den­ken die nie­mand braucht und die nie­man­dem hel­fen — ein­fach weil es geht und die um­set­zung mich her­aus­for­dert.