Sprachsteuerung für Domoticz mit Google Now

Bei Siio bin ich auf einen tollen Beitrag und Videos gestossen, wie man die Beleuchtung im SmartHome mit Google Now, Tasker und ein paar Plugins vom Handy aus steuern kann.

Das Ganze geht natürlich auch mit Domoticz. Wesentlicher Unterschied ist nur das verwendete Kommando und an welche Serveradresse es geschickt werden soll. Um herauszufinden, welche API Kommandos Domoticz anbietet, sollte man sich das hier ansehen.

Ein einfacher Befehl, den das Handy an eure Domoticz-Installation schicken muss, um z.B. eine Lampe einzuschalten, lautet:

http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$LAMPE_IDX&switchcmd=On

Wie die Variablen mit der Domoticz IP und dem Port, auf dem es bei euch läuft ersetzt werden müssen und dass auch die idx der jeweiligen Lampe eingetragen werden muss, ist glaube ich selbsterklärend.

Damit es funktioniert, ist es wichtig zu wissen, dass das Ganze case-sensitiv ist, das Kommando On oder Off muss also tatsächlich am Anfang groß geschrieben werden, das ist ein häufiger Fehler.

Zum verwendeten AutoVoice Plugin gibt es noch zu sagen, dass die kostenlose Variante in der Erkennung der Wörter auf 4 Zeichen begrenzt ist, das war mir zu Beginn nicht aufgefallen und hatte deswegen dafür gesorgt, dass meine vergebenen Kommandos nicht erkannt wurde. Beschränkt man sich allerdings auf 4 Zeichen funktioniert es auch so.

Mosquitto mqtt Message Broker auf der Synology

Nicht immer stehen für alle Geräte und Dienste, die man in seiner Homeautomatisierung verwenden möchte, die passenden Möglichkeiten bereit, alles unmittelbar in die Steuerungszentrale einzubinden.

Eine Möglichkeit dennoch Daten aus nicht direkt verbundenen Quellen in einer Steuerungssoftware wie Domoticz o.Ä. zu verwenden ist ein Message Broker. Im Umfeld der Gerätevernetzung hat sich dazu beispielsweise das leichtgewichtige Telemetrieprotokoll mqtt etabliert, das nach dem publish-subscribe Ansatz funktioniert. Verbundene Geräte können also Zustandsdaten, Ortsangaben usw. an den Message Broker übermitteln, ein Beispiel dafür wäre owntracks.

Für die Protokollimplementierg gibt es eine Reihe von verfügbarer kommerzieller, aber auch OpenSource Software. Ich habe mich für Mosquitto entschieden, weil es dazu ein Synology Package der Synocommunity gibt.

Nach der Installation läuft der Dienst zunächst ohne Authentifizierung und ohne TLS am Port 1883. Um die Funktionalität zu testen, brauch es einen Client. Ich verwende die Chrome Erweiterung MQTTLens. Wie man damit umgeht, ist hier so gut beschrieben, dass ich dazu selber nichts schreiben muss.

Authentifizierung in Mosquitto mit Username / Passwort:

Dafür bringt mosquitto ein Kommandozeilenwerkzeug zur Erzeugung eines Passwortfiles mit dem Namen mosquitto_passwd mit, zu finden im Ordner bin der Mosquitto Installation. Um ein Passwortfile mit dem Namen mqpass im aktuellen Verzeichnis für den Benutzer test zu erzeugen reicht:

./mosquitto_passwd -c ./mqpass test
dann wird eine entsprechende Datei angelegt. Jetzt muss man Mosquitto noch beibringen, diese zu verwenden. Hierzu müssen in der mosquitto.conf Datei im Verzeichnis var der Mosquitto Installation die folgenden beiden Einträge verändert werden:

allow_anonymous false    # war vorher True

password_file Pfad/zu/mqpass # Pfad zu mqpass muss eingeben werden

Nach einem Neustart des Dienstes stellt man fest, dass man sich wie bisher nicht mehr verbinden kann und das erst wieder möglich ist, nachdem Benutzernamen und Passwort eingegeben wurden…

Ein paar Links zum Thema:

MQTT und Owntracks – Livetracking

DIY Latitude

Caschis Blog

Mosquitto und Websockets

 

Synology Diskstation Status per SNMP auslesen

Synology DSM unterstützt das SNMProtokoll, so lassen sich relativ leicht Informationen über den Zustand der Synology Diskstation auslesen und in Skripten, 3rd Party Software und Ähnlichem verwenden. Dafür ist folgendes erforderlich:

SNMP auf der Diskstation aktivieren: Systemsteuerung > Terminal und SNMP > Reiter SNMP:

synology snmp

synology snmp

Für einen Einstieg reicht es, die Häkchen wie im Screenshot gezeigt zu setzen, wer mehr über die Unterschiede zwischen den Protokollen und die Authentifizierung erfahren möchte, schaut in den weiter oben verlinkten Wikipedia Artikel, oder bemüht das Internet.

Nun ist die Synology Diskstation vorbereitet. Im unteren Bereich des Fensters wird ein Link auf die Synology Inc. Webseite angegeben, von dem die Informationen zu den Synology MiB-Files enthalten sind.

Wie das im Detail funktioniert würde hier zu weit führen und ist in den angegebenen Quellen ausführlich beschrieben, ich beschränke mich auf ein paar Hinweise und ein Beispiel.

Wie das Synology Inc. Dokument zeigt, bietet die Synology Diskstation folgende spezifische MIB Kategorien an:

synology-mib

synology-mib

Die OIDs sind der Einstieg in den jeweiligen Bereich und können für ein snmpget, bzw snmpwalk verwendet werden um entweder ganze Blöcke an Informationen, oder einzelne Informationen auszulesen. Letzteres in dem man die Kette der OID auf den jeweiligen Wert herunterbricht, wie im Dokument von Synology beschrieben.

Beispiel für die Verwendung in einem Bash-Skript:

# Getting the diskStation system info:
            ModelName=`snmpwalk -v 2c  -c public -O qv $NASIP 1.3.6.1.4.1.6574.1.5.1`
            DSMVersion=`snmpwalk -v 2c  -c public -O qv $NASIP 1.3.6.1.4.1.6574.1.5.3`

$ NASIP ist die Adresse der Synology Diskstation, $ModelName enthält dann z.B. „DS215“ und $DSMVersion die aktuell installierte DSM Version, die gewählten Parameter ( -O qv) sorgen dafür, dass nur der jeweilige Wert des Knotens und nicht die zugehörige OID mit ausgegeben werden.

Da auch Festplattenzustand, Temperatur und Ähnliches auf diese Weise ausgelesen werden kann, eignet sich das hervorragend für die Einbindung in eine Überwachungs- oder Homeautomatisierungslösung wie domoticz.

Aldi IP Kamera in Domoticz einbinden

Inzwischen bin ich meinen Versuchen der Home Automatisierung dann doch bei domoticz gelandet. Ich will hier kurz beschreiben, wie die Einbindung der Maginon IP-WLAN Kamera in domoticz funktioniert. Dabei gehe ich davon aus, dass die Kamera bereits funktionsfähig und in das Netzwerk eingebunden ist.

Hinzugefügt wird die Kamera über: Einrichtung > weitere Optionen > Kameras und dann den Button oben rechts um einen neuen Eintrag hinzuzufügen.

domoticz ip-cam

domoticz ip-cam

Benutzer und Passwort ist jeweils das, was bei der Einrichtung der Kamera vergeben wurde. Wichtig ist der letzte Eintrag für die Bild URL, hier muss Folgendes eingetragen werden:

/videostream.cgi?user=#USERNAME&pwd=#PASSWORD&resolution=64&rate=0

#USERNAME und #PASSWORD sind domoticz Variablen, die sich auf die beiden Felder weiter oben beziehen und mit den jeweilgen Werten automatisch ersetzt werden, Benutzer und Passwort müssen also hier nicht im Klartext eingetragen werden.

Verbindung testen, wenn alles funktioniert, die Kamera über ADD hinzufügen, fertig.

 

Domoticz JSON API testen

Zugegeben eine relativ spärliche Überschrift, die daher rührt, dass ich Domoticz als Homeautomatisierungslösung verwende. Domoticz bietet eine JSON Api an, über die sich die konfigurierten Geräte auslesen, bzw. steuern lassen indem man ein Statusupdate oder Ähnliches auf die Schnittstelle schickt. Das benutze ich z.B. um Statusinformationen meiner Synology Diskstation per snmp Cronjob auszulesen und in Domoticz zu aktualisieren.

Zu Testzwecken war ich auf der Suche nach einem Browserplugin, oder etwas ähnlich Unkompliziertem, um die schnell und ohne großen Aufwand mit der Domoticz API zu spielen. Es gibt verschiedene Lösungen für verschiedene Browserolattformen, ich habe mich ohne großes Ausprobieren für REST-Easy entschieden, das erfüllt meine Anforderungen.

Am Beispiel, Lichtschalter aus der domoticz-Installation abzurufen, (http://192.168.102.102:8888/json.htm?type=command&param=getlightswitches) sieht das dann so aus, die Beispielinstallation verwendet keine Authentifizierung:

json-api-client

json-api-client

uns zeigt im Reiter „Rohdaten“ folgendes Ergebnis:

{
   "result" : [
      {
         "IsDimmer" : true,
         "Name" : "RGBW-Controller-1 ",
         "SubType" : "RGBW",
         "Type" : "Lighting Limitless/Applamp",
         "idx" : "2"
      }
   ],
   "status" : "OK",
   "title" : "GetLightSwitches"
}

Home Assistant Presence Detection einrichten

Festzustellen, ob eine Person zu Hause ist, ist eine wesentliche Informationsquelle für das Aufstellen von Regeln für die Heimautomatisierung. Home Assistant bietet dafür unterschiedliche Möglichkeiten an:

  • Benutzung von NMap und Scannen des Netzwerkes
  • Zugriffe auf unterstützte Router via Telnet
  • Zugriff auf einen MQTT Server mit Telemetriedaten

Die zum Ausprobieren einfachste Variante ist NMap, dazu ist lediglich folgender Eintrag in der configuration.yaml notwendig:

device_tracker:

platform: nmap_tracker

hosts: 192.168.1.1/24

home_intervall: 10

Hosts bitte auf die jeweiligen Gegebenheiten im eigenen Netzwerk anpassen. Der letzte Eintrag ist die Zeit in Minuten, bis die Geräte erneut abgefragt werden.

Alle gefundenen Geräte werden in einer Datei known_devices.yaml abgelegt und folgen dieser Notation:

 

192168140:
#name: 192.168.1.40
name: marko
mac: 50:B7:3k:B2:B6:3E
picture:
track: yes
hide_if_away: no

Der kommentierte Eintrag zeigt, wie Namen für die Anzeige im UI angepasst werden können. Per Default sind die IP Adressen die Namen.

Sollen bekannte Geräte nicht weiter auf Anwesenheit getrackt werden, den Eintrag auf no setzen, bzw, die letzte Zeile auf yes, wenn nur anwesende Geräte im UI dargestellt werden sollen.

Tip für die configuration.yaml: Die Doku sagt zwar aus, dass mehrere Trackingmethoden gleichzeitig verwendet werden können, aber denkt daran, dass die tracker Einträge dann durchnummeriert werden müssen, sonst greift jeweils nur der letzte…