Schlagwort: Home Assistant

HomeAssistant, IOS Notifications

Dadurch, daß HA nun am Inter­net hängt mit SSL und einem “rich­ti­gen” Zer­ti­fi­kat, kann ich mir nun auch Nach­rich­ten ans Tele­fon schi­cken (das ging zwar vor­her auch schon via Tele­gram, aber wenns auch nativ geht…)

Und es ist furcht­bar ein­fach, ich habe mal nur mit einem ein­fa­chen Trig­ger (Licht wird im Arbeits­zim­mer aus­ge­schal­tet) getes­tet: Aus­schnitt aus mei­ner automations.yaml:

- alias: An Rainers Handy petzen
  trigger:
    platform: state
    entity_id: light.arbeitszimmer_deckenlampe
    to: 'off'
  action:
    service: notify.ios_loopback
    data:
      title: "Pullach"
      message: "Licht im Arbeitszimmer ausgeschaltet!"
      data:
        push:
          badge: 0

Und das kommt dann instantan sowohl auf Han­dy als auch auf der Uhr an:

Ganz neue Mög­lich­kei­ten zum Spie­len!

0

HomeAssistant nun am Internet

Das hat­te ich schon län­ger vor: Home­As­si­stant ans Inter­net zu hän­gen. Dann kann ich auch aus der Fer­ne die lie­be Fami­lie erschre­cken 🙂
Nor­ma­ler­wei­se wür­de man auf dem Rou­ter ein Port­for­war­ding ein­rich­ten und gut. Aber das wird dann ganz schnell eklig mit HTTPS und des­sen Zer­ti­fi­ka­ten. Außer­dem spricht mein Home­As­si­stant kein HTTPS, und ich woll­te mög­lichst wenig dar­an rum­kon­fi­gu­rie­ren. Letzt­lich muße ich dort (HA) gar nichts machen.

Mei­ne Lösung: HA läuft auf einem Raspi, auf dem auch ein Apa­che läuft. Der stellt einen rever­se Pro­xy mit HTTPS (selbst­si­gnier­te Zer­ti­fi­kat) zur ver­fü­gung, der dann mit plain HTTP auf HA wei­ter­ver­mit­telt. Bleibt aber das Pro­blem mit den Zer­ti­fi­ka­ten.
Aber ich habe ja noch einen Root-Ser­ver im Inter­net! Und der hat ein rich­ti­ges Wild­card-Zer­ti­fi­kat. Also habe ich auch dort einen rever­se Pro­xy instal­liert, der dann per HTTPS auf mei­nen Heim-IP geht, dort gibt es dann in der Tat ein Port­for­war­ding auf den HTTPS-Pro­xy auf dem Raspi.
Funk­tio­niert!
Der Apa­che auf dem Raspi:


  ServerName hass.sokoll.com
  ServerAdmin webmaster@sokoll.com
  ErrorLog ${APACHE_LOG_DIR}/hass.sokoll.com-error.log
  CustomLog ${APACHE_LOG_DIR}/hass.sokoll.com-access.log combined
  SSLEngine on
  SSLCertificateFile /etc/ssl/private/raspi.crt
  SSLCertificateKeyFile /etc/ssl/private/raspi.key
  ProxyPreserveHost On
  ProxyRequests off
  ProxyPass /api/websocket ws://localhost:8123/api/websocket
  ProxyPassReverse /api/websocket ws://localhost:8123/api/websocket
  ProxyPass / http://127.0.0.1:8123/
  ProxyPassReverse / http://127.0.0.1:8123/
  RewriteEngine on
  RewriteCond %{HTTP:Upgrade} =websocket [NC]
  RewriteRule /(.*)  ws://localhost:8123/$1 [P,L]
  RewriteCond %{HTTP:Upgrade} !=websocket [NC]
  RewriteRule /(.*)  http://localhost:8123/$1 [P,L]

Der auf dem Root-Ser­ver:


  Protocols h2 http/1.1
  ServerName hass.sokoll.com
  ServerAlias home.sokoll.com
  ServerAdmin webmaster@sokoll.com
  ErrorLog ${APACHE_LOG_DIR}/hass.sokoll.com-error.log
  CustomLog ${APACHE_LOG_DIR}/hass.sokoll.com-access.log combined
  SSLEngine on
  SSLCertificateFile  /etc/dehydrated/certs/wildcard_sokoll.com/fullchain.pem
  SSLCertificateKeyFile /etc/dehydrated/certs/wildcard_sokoll.com/privkey.pem
  ProxyRequests off
  ProxyPreserveHost On
  ProxyPass /api/websocket wss://91.66.58.188/api/websocket
  ProxyPassReverse /api/websocket wss://91.66.58.188/api/websocket
  ProxyPass / https://91.66.58.188/
  ProxyPassReverse / https://91.66.58.188/
  SSLProxyEngine on
  SSLProxyCheckPeerCN off
  SSLProxyCheckPeerExpire off
  SSLProxyCheckPeerName off


  ServerName hass.sokoll.com
  ServerAlias home.sokoll.com
  ServerAdmin webmaster@sokoll.com
  RedirectMatch permanent ^/(.*) https://hass.sokoll.com/$1

Die webso­cket-Geschich­ten habe ich mir aus dem Inter­net zusammengeklau(b)t, natür­lich. Bis­lang habe ich kei­ne Feh­ler bemerkt.

0

Home Automation wird niemals das große Ding werden

Weil es kein home auto­ma­ti­on gibt. “Ale­xa, fah­re die Rol­lä­den¹ run­ter!” ist kaum intel­li­gen­ter als “Frau, hol’ das Bier aus dem Kühl­schrank!” Home auto­ma­ti­on ist dann, wenn Gerä­te regel­ge­steu­ert inter­agie­ren kön­nen, auch unter Berück­sich­ti­gung äuße­rer Bedin­gun­gen.

Wenn die Bes­te Ehe­frau von allen² Früh­dienst hat, dann klin­gelt ihr Wecker um 04:30:00 Uhr, und ihre Nacht­tisch­lam­pe geht exakt um 04:30:03 an für 3 Minu­ten. Aber eben nur wenn sie Früh­dienst hat. Das zu beto­nen ist wich­tig. Ob sie Früh­dienst hat, steht in ihrem Kalen­der. Die Ver­knüp­fung von Kalen­der­ein­trag und Lam­pe ist ein schö­nes Bei­spiel für Auto­ma­ti­sie­rung (hier für die Neu­gie­ri­gen).

Aber wer bie­tet mir das? Klar könn­te es einen Anbie­ter für Lam­pen-Kalen­der-Soft­ware geben. Aber das ist nicht die Lösung. Und so geht der Trend schein­bar zu Dut­zen­den Apps, die jede ein­zeln ent­we­der Lam­pen oder Toas­ter oder Staub­sauger oder… steu­ern. Aber ver­knüp­fen kön­nen sie dies sel­ten, und wenn über­haupt, dann nur weni­ge Lam­pen­her­stel­ler mit weni­gen Toas­ter­her­stel­lern. IFTTT? Damit dürf­te Otto Nor­ma­luser über­for­dert sein, und natur­ge­mäß benö­tigt IFTTT die Zugangs­da­ten für alle betei­lig­ten Diens­te, das will man wohl eher nicht. Und natür­lich: Inter­net-Zwang, denn ohne gehts nicht.

Aber es gibt ja noch die gan­zen tol­len Pro­jek­te: Open­HAB, FHEM, Home­As­si­stant… Ja, die kön­nen wirk­lich home auto­ma­ti­on in groß­ar­ti­ger Qua­li­tät — für die Nerds. Jeden­falls Home­As­si­stant ist affen­geil (und es gibt wenig Grün­de anzu­neh­men die ande­ren sei­en weni­ger affen­geil) — wenn man sich dar­auf ein­läßt.
Aber mas­sen­taug­lich ist das nicht — und wird es nie wer­den kön­nen.
Es sei denn, die Indus­trie einig­te sich auf einen gemein­sa­men Stan­dard, und wir wis­sen alle, daß die Indus­trie Stan­dards liebt — jeder Her­stel­ler einen ande­ren.

Momen­tan scheint ja Ama­zon mit Ale­xa-Skills Köni­gin der Blin­den und Ein­äu­gi­gen zu sein — nur intel­li­gent ist das alles nicht.

Smart home wird es nicht geben, nicht für die Mas­se.


¹ ja, ich mei­de die neue Recht­schrei­bung, auch wenn Roll­lä­den in der Tat logisch ist 😉
² Daß mir Kis­hon die­se Idee geklaut hat, wer­de ich ihm nie ver­zei­hen

0

Pluggit, HomeAssistant, Internet, 👏, 🤗, 👍

Vor­ges­tern kam eine Mail auf mei­nen Pri­vat-Account, mit der ich im Leben nie­mals nicht gerech­net hat­te, ich zitie­re ger­ne den Anfang:

Hi Rai­ner,

 

da ich über dei­ne Web­sei­te auch auf die Idee kam, die Anla­ge mit Home Assi­stant zu ver­bin­den, fol­gend mal der Code, den ich in mei­ner configure.yaml habe:

Und dann ein Hau­fen yaml.

Und die Schei*e funk­tio­niert!!!
Ich habe nur an ein paar Stel­len ein­ge­grif­fen (Anzei­gena­men geän­dert, Sen­so­ren, die ich nicht habe (Luft­feuch­te, Luft­qua­li­ti­ät…) raus­ge­las­sen…) — und nun ists schick.

Ich bin dem Ein­sen­der zu tiefs­tem Dank ver­pflich­tet, ich hät­te das wohl nie hin­be­kom­men:

Und im Git­lab gibts die Con­fig-Ände­run­gen.

Noch­mal an den Spen­der: DANKE! Dan­ke!! DANKE!!!

0

Raspi macht Sachen

Heu­te früh um 4:30 Uhr klin­gel­te wie üblich der Wecker der Gat­tin, und wie unüb­lich ging ihre Nacht­tisch­lam­pe nicht an.
Komisch.
Zabb­bix hat kei­ne Daten zu die­sem Zeit­punkt, eigent­lich die gan­ze Nacht nicht. Jeden­falls fast kei­ne Daten, ein paar sind doch da und zei­gen einen Load von maxi­mal 74 gegen 23 Uhr:
Der Fern­se­her war heu­te früh ein­ge­schal­tet, was nur pas­siert, wenn ent­we­der jemand ver­ges­sen hat ihn aus­zu­schal­ten, oder, viel wahr­schein­li­cher in die­sem Fal­le, Kodi ihn ein­ge­schal­tet hat.
Paßt aber schein­bar nicht:

pi@raspberrypi:~ $ systemctl status kodi
● kodi.service - Kodi Media Center
   Loaded: loaded (/etc/systemd/system/kodi.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-02-16 18:55:35 CET; 2 weeks 3 days ago
 Main PID: 26354 (kodi)
   CGroup: /system.slice/kodi.service
           ├─26354 /bin/sh /usr/bin/kodi
           └─26390 /usr/lib/arm-linux-gnueabihf/kodi/kodi-rbpi_v7 --lircdev /var/run/lirc/lircd

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
pi@raspberrypi:~ $

(mehr …)

0

Trådfri befreien

Na ja, ein rei­ße­ri­scher Titel muß schon sein, gell?

Man kann sein Smart Home bei IKEA furcht­bar güns­tig begin­nen: Man kauft eine Lam­pe im Set mit einer Fern­be­die­nung. Da ist die Fern­be­die­nung schon mit der Lam­pe gekop­pelt, man schraubt die Lam­pe ein­fach in den Sockel, gibt Strom drauf — und schon kann man die Lam­pe mit der Fern­be­die­nung schal­ten. 15 Euro oder so. Das war mei­ne ers­te Lam­pe. Dann kam im Wind­fang eine Lam­pe nicht mit Fern­be­die­nung, son­dern mit Bewe­gungs­mel­der hin­zu.

Das ist jetzt das The­ma.

Am Bewe­gungs­mel­der kann man hin­ten zwei Din­ge ein­stel­len: Leucht­dau­er und ob der nur im Dun­keln oder immer schal­ten soll. Selbst­ver­ständ­lich soll er nicht schal­ten, wenn es tags­über hell ist — das wäre ja Schwach­sinn.. Nur: er funk­tio­niert ver­läß­lich nur in der Stel­lung always on. Das ist natür­lich nicht wei­ter tra­gisch; den zusätz­li­chen Ener­gie­ver­brauch kann man ver­nach­läs­si­gen. Aber schön ist das eben doch nicht.

Und jetzt kommt die rich­ti­ge™ Home Auto­ma­ti­sie­rung ins Spiel: Was wäre, wenn man die Ver­bin­dung zwi­schen Bewe­gungs­mel­der und Lam­pe kom­plett auf­bricht und die gan­ze Logik an (HomeAssistant|OpenHAB|IOBroker|Whatever) aus­la­gert?
Das muß gehen. Jeden­falls kann ich schon mal eine belie­bi­ge Akti­on (Home­As­si­stant) aus­füh­ren las­sen, sobald ich den Wind­fang betre­te.

- alias: Bewegung im Windfang Licht in HWR einschalten
  trigger:
    platform: state
    entity_id: sensor.windfang_bewegungsmelder
    to: 'on'
  action:
    service: light.turn_on
    data:
      entity_id: light.hwr_deckenlampe
      brightness_pct: 100

Ich möch­te das dann mit sun ver­bin­den, dann habe ich näm­lich genau das, was ich will: tags­über wird nicht geschal­tet, im Dun­keln schon.
Aber erst mor­gen 🙂

0

Vielleicht bekomme ich die Pluggit ja doch noch ans HomeAssistant

Jeden­falls habe ich mal die Kom­mu­ni­ka­ti­on zwi­schen Tele­fon und Anla­ge mit­ge­schnit­ten — das sieht sehr ein­fach gestrickt aus, und zumin­dest zum Lesen ist wohl auch kei­nen Authen­ti­fi­zie­rung nötig.

Es ist immer ein Fra­ge-Ant­wort-Spiel: Die App fragt ein Regis­ter ab, die Anla­ge ant­wor­tet.
Ein typi­sches Ant­wort­pa­ket sieht so aus:

Die 23 könn­te die Luft­tem­pe­ra­tur im Haus sein. Man müß­te jetzt “nur” noch wis­sen, wie man an ein bestimm­tes Regis­ter kommt, und wel­ches Regis­ter wel­chen Wert lie­fert.
Dann soll­te man mit der Doku wei­ter­kom­men.

0

Pluggit am Netz

Das war ein klei­nes Dra­ma. Das Teil kann auf drei­er­lei Arten bedient wer­den:

  • am Front­pa­nel
  • am Rech­ner via USB-Kabel
  • via App

Am Front­pa­nel ist ja ein­fach — aber da gibts auch nur die Mög­lich­keit, zwi­schen den Stu­fen 0 (aus) und 4 zu wäh­len, das ist dann alles.
Und natür­lich zuwe­nig.
Die meis­ten Ein­stel­lungs­mög­lich­kei­ten bie­tet wohl die Vari­an­te via USB. Da gibts dann ein Pro­gramm, aller­dings nur für Win­dows. Und da es hier kein Win­dows gibt, bleibt nur noch die drit­te Vari­an­te übrig: via IOS-/An­dro­id-App.
Dazu müß­te aller­dings die Plug­git erst­mal ins WLAN kom­men. Kommt sie aber man­gels WLAN-Modul nicht. Es gibt nur Ether­net via RJ45, und auch nur DHCP.
Glück­li­cher­wei­se hat­te ich noch einen alten Access-Point rum­zu­lie­gen, den man im Cli­ent-Mode betrei­ben kann. Das WLAN ist dahin­ten zwar mies, reicht aber.
Ein nmap zeig­te dann schnell Port 502 (Mod­Bus) als offen an. Bis­lang hat­te die App noch nie die Plug­git gefun­den — und tat es auch dies­mal, trotz mehr­ma­li­gen Anbrül­lens, nicht.
Run­ter­ge­wor­fen, neu­in­stal­liert, tut.

Schlicht, aber aus­rei­chend

Angeb­lich kann man mit dem Win­dows-Pro­gramm sehr viel mehr ein­stel­len, ins­be­son­de­re die Schwell­wer­te für den Som­mer-Bypass (dann wird die küh­le Nacht­luft nicht mehr am Wär­me­tau­scher vor­bei­ge­führt, son­dern direkt ins Haus gebla­sen) mani­pu­lie­ren.
Da muß ich mir noch mal jeman­den mit Win­dows auf ein Bier ein­la­den.

Für Home­As­si­stant gibt es ein Mod­Bus-Modul, das wäre was für graue Win­ter­aben­de viel­leicht 😉

0