Z-Wave im Home Assistant aktivieren

Die freie Heimautomationslösung Home Assistant verfügt unter anderem über eine Unterstützung des Z-Wave-Protokolls. Möchte man die Unterstützung für Z-Wave hinzufügen, so muss theoretisch nur die passende Konfiguration hinterlegt werden. In der Praxis gibt es allerdings ein paar Kleinigkeiten mehr zu beachten. Hier wird davon ausgegangen, dass Hass.io als Betriebssystem für Home Assistant genutzt wird. Bevor man mit der Konfiguration beginnt, benötigt man Gerät um sich mit dem Z-Wave-Netzwerk zu verbinden. Empfehlenswert ist hier z.B. der Aeotec Z-Stick Series 5. Daneben existieren eine Reihe weiterere Controller, welche vom Home Assistant unterstützt werden.

Die Anzeige der installierten Add-Ons für Hass.io

Im ersten Schritt sollten im Hass.io-Menü die Add-Ons für SSH und Samba aktiviert werden. Dazu wird die Weboberfläche über die URL:

http://hassio.local:8123

aufgerufen. Nach der Installation der Add-Ons ist es wichtig, diese über den Button Start direkt zu aktivieren. Nachdem das Samba-Add-On aktiviert wurde, kann über die Freigabe der Hass.io-Instanz im Ordner config die Konfiguration eingesehen werden. Wichtig ist hierbei die Datei configuration.yaml. An das Ende dieser Datei fügt man folgende Konfiguration ein:

# Z-Wave
zwave:
  usb_path: /dev/ttyACM0

Damit ist die Konfiguration für Z-Wave abgeschlossen. Um das korrekte Gerät für den Z-Wave-Stick zu ermitteln, loggen wir uns per SSH auf der Hass.io-Instanz ein:

ssh 

und geben dort den Befehl:

hassio host hardware

Dieser Befehl zeigt uns, welche Hardware an dem Raspberry Pi angeschlossen ist. Eine Ausgabe könnte dann z.B. so aussehen:

{
  "serial": [
    "/dev/ttyAMA0"
  ],
  "input": [],
  "disk": [],
  "gpio": [
    "gpiochip0",
    "gpiochip100"
  ],
  "audio": {
    "0": {
      "name": "bcm2835 - bcm2835 ALSA",
      "type": "ALSA",
      "devices": {
        "0": "digital audio playback",
        "1": "digital audio playback"
      }
    }
  }
}

Nachdem der Befehl eingegeben wurde, wird der Z-Wave-Stick an den Raspberry Pi angeschlossen:

{
  "serial": [
    "/dev/ttyACM0",
    "/dev/ttyAMA0"
  ],
  "input": [],
  "disk": [],
  "gpio": [
    "gpiochip0",
    "gpiochip100"
  ],
  "audio": {
    "0": {
      "name": "bcm2835 - bcm2835 ALSA",
      "type": "ALSA",
      "devices": {
        "0": "digital audio playback",
        "1": "digital audio playback"
      }
    }
  }
}

Bei dem neuen Gerät im Abschnitt serial handelt es sich um den Z-Wave-Stick. Seine Gerätebezeichnung übernehmen wir in die Konfiguration. Wird der Stick ab- und später wieder angesteckt, so kann sich die Gerätebezeichnung ändern, so dass dieser Prozess anschließend wiederholt werden muss. Im Falle einer falsch konfigurierten Gerätebezeichnung erhält man auf dem Dashboard eine Fehlermeldung das Z-Wave nicht angesprochen werden konnte. Nachdem der Stick angesteckt ist und die Konfiguration entsprechend erweitert wurde, muss Home Assistant neugestartet werden. Dazu wählt man im Menü Einstellungen den Punkt General und wählt dort im Bereich Server Managment den Button Restart. Nach knapp einer Minute sollte die Weboberfläche wieder verfügbar und Z-Wave aktiv sein.

Meine Samba Freigabe

Ich betreibe zu Hause einen Sambaserver. Auf diesem habe ich eine Freigabe auf die jedermann zugreifen darf. Die Gäste sollen dabei Dateien mit den Rechten eines bestimmten Users anlegen und bearbeiten dürfen. In der /etc/samba/smb.conf sieht das ganze dann so aus:

[Daten]
 path = /home/seeseekey/share
 public = yes
 writable = yes
 guest ok = yes
 create mode = 0664
 directory mode = 0775
 force user = seeseekey
 force group = seeseekey

Neugestartet wird der Samba Server in neueren Versionen von Ubuntu im übrigen mittels:

sudo initctl restart smbd

und nicht wie früher mittels:

sudo /etc/init.d/samba restart

Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/samba_server
http://wiki.ubuntuusers.de/Samba_Server/smb.conf

RAID 5 mit Verschlüsselung und Samba aufsetzen

Ein NAS mit einem RAID 5, einem Samba Server und Verschlüsselung auf Basis von Ubuntu wäre doch eine schöne Sache. Um das zu bewerkstelligen lädt man sich den Ubuntu Server unter http://www.ubuntu.com/server herunter, brennt ihn auf eine CD uns startet diese auf dem entsprechenden Rechner.

Dort wählt man dann Deutsch als Sprache aus und geht im Menü auf Ubuntu Server installieren. Nach einigen Fragen bezüglich der Tastatur- und Ländereinstellungen geht es dann weiter mit den Partionseinstellungen. An dieser Stelle erzeugen wir ein neues RAID 5. Dazu wählen wir als Partionsmethode manuell aus und gehen anschließend auf den Menüpunkt Software-RAID konfigurieren. Sollte es bereits Partionen geben so sollten diese vorher gelöscht werden. Sollte hierbei noch ein Software RAID eingerichtet sein, so muss dieses zuerst unter Software-RAID konfigurieren gelöscht werden (MD Gerät löschen).

Nachdem wir Software-RAID konfigurieren ausgewählt haben gehen wir auf MD Gerät erstellen und wählen dort RAID5 aus. Danach wird man nach der Anzahl der aktiven Geräte (sprich Festplatten) gefragt. Hier gibt man die Anzahl der Festplatten an welche man für das RAID verwenden will. Die Festplatten sollten dabei die gleiche Größe aufweisen (sonst wird die kleinste Festplatte als kleinster Nenner angesehen). Nach den aktiven Geräten kann man die Reservegeräte (Hot Spare) definieren und anschließend angeben welche Festplatten in das RAID genommen werden sollen.

Nachdem man das ganze bestätigt hat und die RAID Konfigurationsseite mittels Fertigstellen verlassen hat, definiert man noch den Einhängepunkt des RAID5 Gerätes (/) sowie das Dateisystem (ext4) und beendet die Partitionierung. Zusätzlich kann man noch eine Swap Partion anlegen, muss dies aber nicht tun (je nachdem wie viel Arbeitsspeicher in dem Gerät steckt).

Während der Installation wird man dann noch gefragt ob man Mail konfigurieren möchte. Dort wählt man nur lokal aus und fährt mit der Installation fort bis man seinen Nutzernamen und sein Passwort vergeben muss. Auf die Frage ob der persönliche Ordner verschlüsselt werden soll antwortet man mit Ja. Dann fährt man mit der Installation fort bis man gefragt wird ob man bestimmte Pakete vorinstallieren möchte. Hier wählt man OpenSSH server und bestätigt das ganze.

Nach der Installation erstellen wir mittels mkdir /home/seeseekey/share den Ordner in dem später unserer Daten liegen und installieren mittels:

sudo apt-get install mc htop samba swat

den Samba Server (sowie das Webinterface), htop und den Midnight Commander (letztere nur der Bequemlichkeit halber). Mittels

sudo smbpasswd -a seeseekey

erzeugen wir einen neuen Sambabenutzer. Dabei ist zu beachten das der betreffende Sambanutzer im System schon als Benutzer existieren muss. Am besten legt man solche Nutzer mittels

sudo adduser –no-create-home –disabled-login –shell /bin/false seeseekey

an. Diese Nutzer haben dann kein Homeverzeichnis und können sich auch nicht auf dem System einloggen. Nun müssen wir noch einige Dinge an den Dateirechten ändern damit Swat die Samba Config schreiben kann. Dies geschieht auf der Konsole mittels

sudo chown root:admin /etc/samba/smb.conf
sudo chmod 664 /etc/samba/smb.conf

Anschließend starten wir Swat mittels sudo /etc/init.d/openbsd-inetd restart neu. Danach können wir uns mit einem Webbrowser anmelden (http://“IP Adresse“:901 z.B. 192.168.1.15:901). Als Nutzername und Passwort dient dabei der bei der Installation angelegte Benutzer.

Nachdem wir uns verbunden haben können wir unter Globals einige Dinge einstellen z.B. den Namen der Arbeitsgruppe (workgroup). Unter Shares legen wir eine Freigabe an. In diesem Beispiel nennen wir die Freigabe Daten und klicken auf erstellen. In dem sich öffnenden Optionen setzen wir folgende Parameter:

path -> /home/seeseekey/share/
admin users -> seeseekey
readyonly -> No
available -> Yes

und klicken anschließend auf Änderungen speichern.

Nun haben wir ein System welches ein RAID 5 kombiniert mit einem Sambaserver und einer Verschlüsselung bereitstellt. Wenn man den Server startet muss man den Nutzernamen und das Passwort eingeben, damit das entsprechende Nutzerverzeichnis in welchem die Freigabe liegt entschlüsselt wird. Das kann man natürlich auch per SSH machen, allerdings ist die Sitzung (und somit die SMB Freigabe) nur so lange verfügbar wie die SSH Verbindung steht. Eine Anmeldung direkt am NAS (es reicht ja wenn eine Tastatur angeschlossen ist) ist also vorzuziehen.

Ein kleiner Hinweis noch am Rande: Mittels cat /proc/mdstat kann man nach der Anmeldung Informationen über das RAID abfragen.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Network_Attached_Storage
http://wiki.ubuntuusers.de/Software-RAID
http://wiki.ubuntuusers.de/ecryptfs-utils
http://wiki.ubuntuusers.de/SAMBA
http://wiki.ubuntuusers.de/samba_server
http://wiki.ubuntuusers.de/Samba_Server_Swat

SMB / CIFS und die Sache mit den Umlauten

Um eine Freigabe dauerhaft per fstab einzubinden trägt man einfach

//lexa/Z$ /media/lexa-z cifs credentials=/home/seeseekey/.smbcredentials,uid=1000,gid=1000,file_mode=0777,dir_mode=0777 0 0

in die Datei. Nun könnte es aber ein Problem mit den Umlauten geben. Um dieses Problem zu umschiffen trägt man iocharset=utf8 dazu. Das ganze sieht dann so aus:

//lexa/Z$ /media/lexa-z cifs credentials=/home/seeseekey/.smbcredentials,iocharset=utf8, uid=1000,gid=1000,file_mode=0777,dir_mode=0777 0 0

Und schon werden die Umlaute unterstützt :)

Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/FSTAB
http://wiki.ubuntuusers.de/Samba

SMB/CIFS per fstab einbinden funktioniert nicht

Wenn man eine Samba Freigabe dauerhaft per fstab einbinden möchte sieht das ungefähr so aus:

//lexa/Z$ /media/lexa-z cifs credentials=/home/seeseekey/.smbcredentials,uid=1000,gid=1000,file_mode=0777,dir_mode=0777 0 0

Wenn dann nach das SMB/CIFS Dateisystem nicht eingebunden ist, versucht man das ganze mittels sudo mount -a mal manuell einzubinden. Dabei trat dann folgende Meldung zu Tage:

seeseekey@Amy:~/Development$ sudo mount -a
[sudo] password for seeseekey:
mount: wrong fs type, bad option, bad superblock on //lexa/z$,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount. helper program)
Manchmal liefert das Syslog wertvolle Informationen – versuchen
Sie dmesg | tail oder so

Des Rätsels Lösung? So einfach wie banal, es fehlte das Paket smbfs. Und schon funktioniert das ganze auch :)

Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/Samba