http://docs.openhab.org/installation/linux.html#mounting-locally
sehr gut beschrieben. Allerdings fehlte mir im Detail:
- beim Backup die Einrichtung einer CIFS-Freigabe zum Backup auf mein Synology-NAS sowie der cronjob, der das Backup regelmäßig durchführt.
- Außerdem bedarf es bei dem vorgegebenem Script einer Anpassung, um das Script auch auf einer gemounteten Freigabe anwenden zu können und
- das lokale mounten der Configuration zur Programmierung per Eclipse SmartHome Deisgner unter meinem Ubuntu 14.04 wird nicht behandelt.
Installation
Die Installationsschritte per Paketmanager (Stable Release) unter Raspbian 8 (Jessie) kurz Zusammengefasst:
wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add - sudo apt-get install apt-transport-https
echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list
sudo apt-get update
sudo apt-get install openhab2
sudo systemctl start openhab2.service
sudo systemctl status openhab2.service
sudo systemctl daemon-reload
sudo systemctl enable openhab2.service
Anmerkung:
Da ich keinen Offlinebetrieb plane, habe ich mir die Installation aller Add-Ons via sudo apt-get install openhab2-addons erspart.
Danach wechselt man im Browser auf seine Installation entweder per IP oder per Hostnamen https://10.0.0.100:8443 - ich habe mich für die Standard-Installation entschieden.
Backup
Wenn das vorüber ist, richtet man das Backup ein. Zuerst legt man - in meinem Fall auf meinem Synology DS216j - einen Benutzer (z.B. backupusr ) inkl. Passwort an und erstellt eine Freigabe, welche man diesem Benutzer zuteilt.
Samba-Freigabe auf NAS
Zum mounten und automatischem Verbinden der Freigabe benötigt man nun 3 Teile:- einen Mountpoint
- einen fstab-Eintrag
- einen crontab-Eintrag
ganz einfach angelegt per
sudo mkdir /mnt/backup
2. einen fstab-Eintrag
Wichtig: cifs-utils muss installiert sein! (sudo apt-get install cifs-utils)
Diese Zeile fügt man in die Datei /etc/fstab hinzu (sudo vi /etc/fstab):
//10.0.0.100/Backup/ /mnt/backup cifs username=backupusr,password=XXXyyyXXX,_netdev,uid=1000,gid=1000,iocharset=utf8, 0 03. einen crontab-Eintrag
diese Zeile fügt man in die Datei /etc/crontab hinzu (sudo vi /etc/crontab):
@reboot root (sleep 30; /bin/mount /mnt/backup-auf-nas1.abtenau.comhome.at)&Dieser sorgt dafür, dass die Freigabe beim Starten des Raspberrys automatisch gemounted wird. Der sleep von 30s ist notwendig, da es sonst sein kann, dass der raspberry noch nicht alles nötige gestartet hat, bevor er versucht die Verbindung aufzubauen.
Backupscript und Autostart
Nun da die Freigabe eingerichtet ist, machen wir uns an das Backup-Script. Hier wird nun cp zum Kopieren verwendet. Dies führt zu vielen Fehlern ala:cp: failed to preserve ownership for ‘/mnt/backup/openhab2-backup-20170803_112450/userdata/jsondb/backup/1501759478056--org.eclipse.smarthome.core.thing.link.ItemThingLink.json’: Permission deniedBei der Suche nach der Fehlerbehebung stoß ich auf rsync. Also wurde das Script kurzerhand von cp -arv abgeändert auf (sudo vi /opt/backup/openhab2backup.sh):
# stop openhab instance (here: systemd service)Änderungen am "Smarthome" haben für mich die Eigenschaften, dass sie auf einmal viel sind (wenn ich wieder an einem Wochenende eine neue Komponente dazuschließe oder Fehler behebe) und sich sonst nichts oder nur wenig ändert. Daher stelle ich mir ein Backup "vorsichtshalber" einmal im Monat ein und mache immer vor groben Änderungen ein manuelles Backup.
sudo systemctl stop openhab2.service
# prepare backup folder, replace by your desired destination
BACKUPDIR="/mnt/backup/openhab2-backup-$(date +%Y%m%d_%H%M%S)"
mkdir -p $BACKUPDIR
# backup current installation with settings
rsync -a --no-owner --no-group "/etc/openhab2" "$BACKUPDIR/conf"
rsync -a --no-owner --no-group "/var/lib/openhab2" "$BACKUPDIR/userdata"
#cp -arv --preserve=mode,timestamps /etc/openhab2 "$BACKUPDIR/conf"
#cp -arv --preserve=mode,timestamps /var/lib/openhab2 "$BACKUPDIR/userdata"
rm -rf "$BACKUPDIR/userdata/cache"
rm -rf "$BACKUPDIR/userdata/tmp"
# restart openhab instance
sudo systemctl start openhab2.service
Das automatische habe ich in der /etc/crontab eingestellt (sudo vi /etc/crontab):
00 3 1 * * root bash /opt/backup/openhab2backup.sh
Mit diesen Einstellungen wird am Monatsersten ein Backup und 3 Uhr früh durchgeführt.
Sonstige -notwendige- Einstellungen
Lokale Berechtigungen
Um auf USB- und GPIO-Pins zugreifen zu köennen fügt man den openhab-User der gruppen dialout und tty hinzu:Will man etwas mit Audio machen sollte man den Benutzer openhab auch der Gruppe audio hinzufügen:sudo adduser openhab dialout sudo adduser openhab tty
Um der Java-Umgebung die Ansteuerung der Schnittstellen ebenfalls zu ermöglichen, entfernt man das #-Zeichen in der Zeilesudo adduser openhab audio
in der /etc/default/openhab2.EXTRA_JAVA_OPTS="-Dgnu.io.rxtx.SerialPorts=/dev/ttyUSB0:/dev/ttyS0:/dev/ttyS2:/dev/ttyACM0:/dev/ttyAMA0"
Samba Share für Konfiguration
Etwas überrascht war ich, als ich hier gelesen habe, dass die empfohlene Entwicklungsumgebung Eclipse SmartHome Designer voraussetzt, dass man zugriff auf die Dateien hat. Hätte mir an dieser Stelle eine Standard-Empfehlung per SSH gewünscht (SFTP z.B) - aber wenns so Empfohlen ist, richt ichs mal so ein. Dazu:Ist die Installation abgeschlossen konfiguriert man die Freigabe in:sudo apt-get install samba samba-common-bin
und fügt folgende Zeilen hinzu:sudo vim /etc/samba/smb.conf
[openHAB2-userdata] comment=openHAB2 userdata path=/var/lib/openhab2 browseable=Yes writeable=Yes only guest=no public=no create mask=0777 directory mask=0777 [openHAB2-conf] comment=openHAB2 site configuration path=/etc/openhab2 browseable=Yes writeable=Yes only guest=no public=no create mask=0777 directory mask=0777
Weiters den Benutzer openhab als Sambabenutzer hinzufügen und ein Passwort vergeben:
und noch sicherstellen, dass die Berechtigungen passen und die Samba-Konfiguration testen bevor man den smbd neu startet um die neue Konfiguration zu übernehmen:sudo smbpasswd -a openhab
sudo chown -hR openhab:openhab /etc/openhab2 /opt/openhab2/conf
testparmsudo systemctl restart smbd.service
Nun kann man als Ubuntu-Benutzer den Dateimanager (nautilus) öffen, per Strg+L die Eingabezeile aktivieren und mit der Eingabe
smb://openhab@10.0.0.100/die Freigabe kontrollieren. Unter anderen Systemen hier die Erklärung.
Lokales Mounten unter Ubuntu 14.04
Zum automtischen Mounten der config-Pfade gibt es mehrere Optionen:- Mounten bei Systemstart für alle Benutzer (fstab & script)
- Mounten bei Anmeldung eines Benutzers (fstab & script)
- Mounten erst bei Zugriff (autofs)
Um das durchzuführen muss man folgende Schritte befolgen:
- Eintrag in der fstab mit den Optionen noauto und users sowie der Datei smbcredentials
- Ein kleines Mountscript anlegen
- Einen Eintrag in "Startprogramme" setzen
zuerst legt man die Logindatei an. In diese wird Benutzer und Passwort gespeichert und die Zugriffsberechtigungen so gesetzt, dass nur der Besitzer (und der Benuzter einer Live-CD!) die Dateien sehen kann.
vi ~/.smbredentialsopenhab
die Datei sieht so aus:
die Datei speichert man ab und gleich danach setzt man die Berechtigungen so, dass man nur mehr selber an die Datei rankommt und erstellt auch gleich die nötigen Mountpoints (Ordner):
username=password=
chmod 600 ~/.smbcredentialsopenhab
sudo mkdir /mnt/openhab /mnt/openhab2-conf /mnt/openhab2-user
der Eintrag sieht folgendermaßen aus (sudo vi /etc/fstab):
Falls noch nicht vorhanden, muss nun cifs-utils installiert werden://10.0.0.100/openhab /mnt/openhab cifs noauto,users,credentials=/home/user/.smbcredentialsopenhab 0 0 //10.0.0.100/openhab2-conf /mnt/openhab2-conf cifs noauto,users,credentials=/home/user/.smbcredentialsopenhab 0 0 //10.0.0.100/openhab2-userdata /mnt/openhab2-userdata cifs noauto,users,credentials=/home/user/.smbcredentialsopenhab 0 0
sudo apt-get install cifs-utilsStandardmäßig wird das SUID-Bit, welches dafür verantwortlich ist, dass auch ein User ohne root-Rechte mounten darf, gesetzt. Man kann es so überprüfen und die Ausgabe sollte so aussehen:
user@pc:~$ ls -lah /sbin/mount.cifsist es nicht gesetzt kann man dies einfach nachholen:
-rwsr-xr-x 1 root root 35K Jun 01 2017 /sbin/mount.cifs
Nun erstellt man ein kleines Script zum mounten der Freigaben beim Start (vi ~/openhabmount.sh):sudo chmod +s /sbin/mount.cifs
#! /bin/bash #mount /mnt/openhabmount /mnt/openhab2-confmount /mnt/openhab2-userdata
nun muss man das Scipt ausführbar machen:
chmod +x ~/openhabmount.sh
Danach legt man den Autostart an. Dazu geht man zu den Startprogrammen per
gnome-session-properties(evtl. andere Distributionen: HIER. Dort wählt man Hinzufügen, vergibt einen namen, Wählt bei Befehl das Script aus und vergibt optional einen Kommentar.
Ohne Neustart kann man die Freigaben nun per
bash ~/openhabmount.shmounten.
Installation Eclipse SmartHome Designer unter Ubuntu 14.04
Zuerst muss man das Archiv herunterladen ( akutell: wget http://eclipse.org/downloads/download.php?file=/smarthome/releases/0.8.0/eclipsesmarthome-incubation-0.8.0-designer-linux64.zip ) und es dann z.B unter /opt/eclipsesmarthome entpacken:cd ~/DownloadsNun muss man die Berechtigungen noch setzen, sonst startet das Programm mit Fehlern:
sudo mkdir /opt/eclipsesmarthome/
sudo unzip eclipsesmarthome-incubation-0.8.0-designer-linux64.zip -d /opt/eclipsesmarthome/
sudo chown -R USERNAME:USERNAME /opt/eclipsesmarthome
Dann kann man das Programm öffnen:
/opt/eclipsesmarthome/SmartHome-Designer
und mit Klick auf das Ordnersymbol links oben den conf-ordner "/mnt/openhab2-conf" mit den Unterordnern items, rules,... auswählen.