Quantcast
Channel: krannich Hausautomation
Viewing all 78 articles
Browse latest View live

FHEM Dashboard – Tablet-UI Code-Beispiele

$
0
0

Um meine Implementierung von Tablet-UI etwas verständlicher zu machen, hier einige Code-Beispiele. Diese kannst Du als Ausgangspunkt verwenden und nach Belieben anpassen. Bitte beachte, dass einige Geräte noch gesonderte Konfiguration in FHEM benötigen. Hierzu zählen zum Beispiel der Müllkalender, Familienkalender oder die Anwesenheitserkennung.


The post FHEM Dashboard – Tablet-UI Code-Beispiele appeared first on krannich Hausautomation.


krannich Hausautomation in neuem Gewand

$
0
0

Pünktlich zum Jahresstart erstrahlt krannich Hausautomation in neuem Gewand.

Wie bereits in meinem letzten Update Post angekündigt, möchte ich 2017 mit neuen Serien starten – insbesondere mit Tutorials rum um die Programmierung von FHEM.

Darüber hinaus möchte ich noch mehr auf meine Erfahrungen mit einzelnen Produkten eingehen. Mittlerweile habe ich Vieles ausprobiert und bei Freunden und Bekannten installiert. Dabei hatte ich teilweise große Schwierigkeiten und Probleme, die sich leider erst im Betrieb ergeben haben.

Als Nächstes kannst Du Dich auf eine spannende Serie zur Installation und Anpassung von VTI 11 für den VU+ Sat-Receiver (VU+ Solo 2) freuen. Darüber hinaus stelle ich Dir mein FHEM vor und zeige Dir wie Du einen eigenen Skin erstellen kannst.

Jeden Monat werde ich Dir eine Vorschau geben und berücksichtige dabei gerne auch Deinen Wunsch für ein Thema. Hinterlasse hierfür einfach einen Kommentar.

Außerdem werden noch einige Verbesserungen an diesem Blog folgen…

In diesem Sinne ein schönes Wochenende.

The post krannich Hausautomation in neuem Gewand appeared first on krannich Hausautomation.

Erste Schritte zur eigenen Programmierung

$
0
0

Auf Wunsch vieler Leser zeige ich Dir in dieser Serie, wie Du FHEM nicht nur konfigurieren kannst, sondern eigene kleine Funktionen für FHEM programmieren kannst. So kannst Du nicht nur einfach Änderungen vornehmen, sondern auch komplexe Szenarien und Funktionen realisieren.

Dieser Programmierkurs richtet sich an Anfänger und Fortgeschrittene, wobei ich mit den Grundlagen anfangen möchte.

Bitte teile mir in den Kommentaren mit, ob die Erklärungen verständlich sind und ob die Beispiele für Dich nützlich sind. Du kannst mir auch gerne Deinen Wunsch für Funktionen schreiben oder wenn Du selbst eine nützliche Funktion geschrieben hast.

Bevor wir mit praktischen Beispielen für FHEM starten, möchte ich kurz einige Grundlagen und Prinzipien der Programmierung vorstellen. Dabei möchte ich besonders auf die Grundsätze guter Programmierung eingehen – keine Angst, so kompliziert ist es nicht und irgendwann verinnerlicht man diese. Vor allem verhindert man damit den bekannten „Spaghetti-Code“.

Erste Grundlagen

Das Prinzip „Clean Code“

Grundsätzlich versteht man unter Clean Code die Verständlichkeit und Lesbarkeit der Programmierung. Geprägt wurde der Begriff durch den Software-Entwickler Robert C. Martin. Für den Anfang erachte ich die folgenden Prinzipien für sinnvoll:

  • Eindeutige und sinnvolle Benennung von Klassen, Objekten, Funktionen und Variablen.
  • Kleine Funktionen, die immer nur eine Aufgabe erfüllen.
  • Code lässt sich lesen „wie eine Zeitung“ – Kommentare sind überflüssig.
  • Trennen der unterschiedlichen Abstraktionsebenen.
  • Klare und verständliche Ablaufsteuerung (keine Rückgabe von NULL-Werten, Fehler abfangen).

Die letzten beiden Prinzipien klingen etwas komplizierter, sind aber sehr wichtig. Besonders für Anfänger ist es schwer die einzelnen Abstraktionsebenen abzugrenzen. Hier zwei Code-Beispiele zur Verdeutlichung:

Einheitliche Abstraktionsebenen

function SpeichereKonfiguration() {
	LöscheBestehendeDatei();
	ErstelleXML();
	SpeichereXML();
}

Die Funktion hat eine sprechende Bezeichnung und ist eine Funktion auf höherer Abstraktionsebene, da sie nur grob den Ablauf beschreibt, was generell zu tun ist. Wie z. B. das Löschen der Datei genau aussieht, beschreibt sie nicht, dies geschieht eine Ebene tiefer.

Eine schlechte Programmierung erkennt man daran, dass die unterschiedlichen Abstraktionsebenen in einer Funktion vermischt werden. Das Ergebnis: Spaghetti-Code. Und wenn man diesen Code erweitern will, findet man die Stelle nicht oder muss die Änderung an mehreren Stellen vornehmen.

Vermischung von Abstraktionsebenen

function SpeichereKonfiguration() {
	if (File.Exists(Filename)) {
		File.Delete(Filename);
	}
	ErstelleXML();
	SpeichereXML();
}

In diesem Beispiel wird bereits genau beschrieben, wie eine Datei gelöscht wird und die Aufrufe mit einer anderen Ebene vermischt.

Wenn Du mehr über Clean Code erfahren willst, empfehle ich Dir dieses Buch:

Clean Coder: Verhaltensregeln für professionelle Programmierer (mitp Professional)
7 Bewertungen

Letzte Aktualisierung am 7.01.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

Wann bietet sich die Auslagerung in eigene Programmdateien an?

Sinnvoll ist es aus meiner Sicht immer eigene Programmdateien anzulegen in denen alles „gesammelt“ wird, das in den notify- und at-Anweisungen in FHEM aufgerufen wird. Egal ob es für eine kleine Funktion ist oder nicht. So kann man jederzeit die Programmierung erweitern.

In meinem Fall habe ich die einzelnen Funktionen in den Programmdateien je nach Verwendung in separate Dateien (Module) aufgeteilt. So gibt es zum Beispiel die Datei 99_dkUtils.pm, die grundsätzliche Funktionen beherbergt, 99_dkHandleMedia.pm, die für alles rund um das Thema Media verantwortlich ist oder 99_dkHandleTimer.pm, in der die Funktionen der einzelnen Timer beschrieben sind. Teilweise werden auch Funktionen der anderen Module aufgerufen.

Wie Du Deine Module anlegst, ist natürlich Dir überlassen. Für mich hat sich diese Vorgehensweise bewährt, da ich so schnell Fehler beheben oder Erweiterungen vornehmen kann.

Eigene Helfer-Programme in FHEM anlegen

In dem Wiki von FHEM findet man ein sehr gutes Tutorial zu diesem Thema. Grundsätzlich ist eine eigene Datei wie folgt aufgebaut:

99_myUtils.pm

package main;
use strict;
use warnings;
use POSIX;
sub myUtils_Initialize($$) {
	my ($hash) = @_;
}
/* Eigene Funktionen */
1;

Wichtig hier sind zunächst folgende Dinge:

  1. Der Dateiname beginnt immer mit „99_“. So werden die eigenen Module am Ende des Systemstarts geladen.
  2. Ein eigenes Modul beginnt immer mit der Initialisierungsfunktion.
  3. Der Funktionsname muss immer dem Titel der Datei entsprechen. In diesem Fall myUtils_Initialize($$). Meine 99_dkUtils.pm hat den Funktionsnamen dkUtils_Initialize($$).
  4. Anschließend folgenden die eigenen Funktionen.
  5. Die Datei endet immer mit „1;“, danach darf kein Zeichen mehr folgen.

Wer möchte kann noch eine Dokumentation für seinen Code erzeugen. Wie das geht findest Du in obigen FHEM-Tutorial im FHEM-Wiki. Dies empfiehlt sich aus meiner Sicht nur, wenn man ein Modul geschrieben hat, da in die offizielle FHEM-Distribution aufgenommen werden soll.

Und wie sieht das Ganze nun in FHEM aus?

fhem.cfg

define 10pm_timer at *22:00 {dkHandle10pm()}
attr 10pm_timer group Timer
attr 10pm_timer room Timer

Der Timer ruft täglich um 22:00 Uhr die Funktion dkHandle10pm() auf.

99_dkHandleTimer.pm

sub dkHandle10pm() {
	fhem("set Deko off", 1);
}

In der Funktion dkHandle10pm() wird das Device – in meinem Fall ist es ein Stockwerk – ausgeschaltet.

The post Erste Schritte zur eigenen Programmierung appeared first on krannich Hausautomation.

Türklingel mit FHEM

$
0
0

Seit geraumer Zeit möchte ich schon unsere Klingeln ersetzen und in die Hausautomation integrieren. Wir haben eine Haupteingangstür und eine Nebeneingangstür, die beide unabhängige Klingelanlagen haben. Besonders bei der Nebeneingangstür kommt es häufig vor, dass die Funkklingel (ein Baumarktprodukt) nicht funktioniert. Schaltet man das Gerät kurz aus und dann wieder ein, funktioniert die Klingel wieder für einige Tage einwandfrei. Damit ist jetzt Schluss.

Kosten: ca. 50,- EUR

Klingelaktor

Zur Auswahl stehen zwei Homematic Aktoren:

HomeMatic Funk-Tasterschnittstelle 4-fach HM-PBI-4-FM

Maße: 50 x 9 mm
Schutzart: IP 20

Letzte Aktualisierung am 3.07.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

oder

HomeMatic Funk-Fensterkontakt HM-SEC-SC-2

Maße: 17 x 16 x 77 mm (ohne Gehäuse geringfügig dünner)
Schutzart: IP 20

Letzte Aktualisierung am 3.07.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

Letztendlich hängt die Auswahl von der Klingelplatte ab, genauer gesagt von der Dicke. Hier findet man im Internet viele Optionen.
Ich habe mich erstmal für den HomeMatic Funk-Tasterschnittstelle 4-fach HM-PBI-4-FM entschieden, da er besonders dünn ist und Dank der Knopfzelle sehr langlebig sein soll.

Klingelplatte/-gehäuse

Eine Klingelplatte hatte ich schon recherchiert so dass der Homematic Aktor dort auch reinpasst – jedenfalls von den Maßen her. Meine Wahl ist auf folgendes Modell gefallen:

Klingeltaster von m-e modern electronics

Maße: 90 x 90 x 19 mm

Letzte Aktualisierung am 3.07.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

Achtung, dieses Modell gibt es auch mit mehreren Klingelknöpfen. Diese eignen sich jedoch nicht für den Umbau.

Einbau des Funk-Tasters in das Klingeltastergehäuse

Hier die Verpackung. Dort sieht man schon sehr gut die Dicke des Gehäuses.

Öffnet man das Gehäuse sieht man schnell, dass man nicht die vollen 19 mm zur Verfügung hat.
Es sind nicht einmal 9 mm.

Also habe ich kurzer Hand die Platine abgeschraubt, um zu sehen, was dort verbaut ist. In dieser Version sind es nur zwei kleine Taster, die sich im unteren Drittel befinden.

Darüber hinaus habe ich die überflüssigen Halterungen mit dem Dremel abgeschliffen, so dass eine ebene Fläche entstanden ist. Nun passt der Funkt-Taster problemlos in das Gehäuse. Bitte drauf achten, dass die Gummidichtungen korrekt sitzen.

Und so sieht das fertige Ergebnis an unserer Hauswand aus:

Konfiguration in FHEM

Hinweis: Zum Anlernen musst Du die Anlerntaste nur kurz drücken, dann blinkt die LED grün. Sollte sie rot blinken, funktioniert das Anlernen mit FHEM nicht.

Die Konfiguration in FHEM sieht wie folgt aus. Es müssen sowohl das Gerät als auch die einzelnen Kanäle definiert werden. In meinem Fall ist das nur ein Kontakt, nämlich Kanal 4, da dieses (rote) Kabel direkt neben dem schwarzen Kabel liegt.

define Klingel_01 CUL_HM xxxxxx
attr Klingel_01 room Aussenbereich
attr Klingel_01 group Klingel Seitentür
attr Klingel_01 alias Sensor
attr Klingel_01 model HM-PBI-4-FM
attr Klingel_01 serialNr xxxxxxxxx
attr Klingel_01 subType pushButton
attr Klingel_01 expert 2_full
attr Klingel_01 firmware 1.5

define Klingel_01_CH_04 CUL_HM xxxxxx04
attr Klingel_01_CH_04 group Klingel Seitentür
attr Klingel_01_CH_04 alias Klingel Seitentür
attr Klingel_01_CH_04 expert 1
attr Klingel_01_CH_04 model HM-PBI-4-FM

define Klingel_notify notify (Klingel_.*:Klingel_.*) { dkRouteKlingel($NAME, $EVENT) }
attr Klingel_notify group Notifiers
attr Klingel_notify room System

In dem obigen Beispiel habe ich wieder einen Notify erstellt, der auf jeden „Tastendruck“ reagiert und an die Funktion dkRouteKlingel() den Namen des Geräts (also den Kanal) und das Event schickt.

Programmierung der Klingelfunktion in FHEM

Anforderungen:

  • Klingelton als akustische Rückmeldung (über Text2Speech)
  • Anzeige im Fernseher (über VUPLUS Enigma2 Receiver)
  • Benachrichtigung auf dem Haustelefon (über Fritzbox) (erstmal ausgebaut!)

Die Funktion dkRouteKlingel()

sub dkRouteKlingel($$) {
	my ($device, $event) = @_;
	my $action = "dkAct_" . $device;
	my @events = split / /, $event;

	my $button = $events[0];
	$device = $device . "_";
	$button =~ s/$device//g;
	my $button_event = $events[1];

	my $coderef=__PACKAGE__->can($action);
	if ($coderef) {
		$coderef->($button, $button_event);
	}
}

Die Route-Funktion leitet abhängig vom übermittelten Gerät (in unserem Fall Klingel_01) an die Funktion dkAct_Klingel_01() weiter.

Die Funktion dkAct_Klingel_01()

sub dkAct_Klingel_01($$) {
	my ($button,$button_event) = @_;
	if ($button eq "CH_04") {
		fhem("set mytts tts :doorbell.mp3:", 1);
		dkDisplayText('Ding dong! Seitentür.');
		#fhem("set fritzbox_control ring 610,611 10 News", 1);
	}
}

Wenn der rote und der schwarze Draht geschlossen sind (dies entspricht Kanal 04), dann wird über das Modul Text2Speech eine MP3-Datei (in meinem Fall doorbell.mp3) abgespielt. Diese Datei muss in dem Ordner cache/templates liegen. Zudem wird noch im Fernseher angezeigt, dass jemand an der Seitentür geklingelt hat. Wie das geht findest Du in meinem Beitrag über dkUtils.pm.

Die Funktion, dass auf der Fritzbox angerufen wird, habe ich zur Vollständigkeit noch im Code gelassen, jedoch auskommentiert. Hierfür muss man das Modul FRITZBOX konfigurieren.

define fritzbox_control FRITZBOX 192.168.x.x
attr fritzbox_control alias FritzBox Control
attr fritzbox_control group PlugIns
attr fritzbox_control allowTR064Command 1
attr fritzbox_control room System
attr fritzbox_control INTERVAL 43200

Wir haben festgestellt, dass es ziemlich nervt. Mal abwarten, wie es im Sommer ist, wenn man sich im Garten aufhält.

Eine zweite Klingel habe ich an der Haustür montiert. Hierfür gibt es natürlich eine entsprechende Anzeige im TV und auch einen anderen Klingelton.

Meine beiden Klingeltöne könnt ihr hier laden:
dingdong1
dingdong2

Die Dateien müssen in den Ordner cache/templates. Ihr könnt aber auch ein eigenes Verzeichnis in Text2Speech definieren. Wie das geht steht in der Doku des Moduls.

Ich wünsche Dir viel Spaß beim Nachbauen.

Kleiner Nachtrag: Batterie-Warnung

Wer noch eine Battery-Warnung einbauen möchte muss folgendes machen:

Konfiguration in FHEM

define lowbattery_notify notify .*:[Bb]attery.*[Ll]ow.* { dkHandleBattery($NAME, $EVENT) }
attr lowbattery_notify group Notifiers
attr lowbattery_notify room System

Funktion in z. B. dkUtils.pm

sub dkHandleBattery($$) {
	my ($device, $event) = @_;
	dkPush("warning", "$device: Battery warning $event");
}

Dann Michael für den Hinweis.

The post Türklingel mit FHEM appeared first on krannich Hausautomation.

FHEM SCC Sendeleistung erhöhen

$
0
0

Aktuell habe ich das Problem, dass die Signale für meine Intertechno-Steckdosen teilweise nicht ankommen. Die Ursachen können vielfältig sein: störende Frequenzen wie z. B. WiFi/WLAN oder DECT-Telefone, zu trockene Luft, die elektrisch geladen ist oder Elektro- oder Wasserleitungen. Dies herauszufinden ist schwer.

Eine kleine Recherche hat ergeben, dass man die Sendeleistung eines SCC oder CUL erhöhen kann:

set SCC raw x09

Mit dem folgenden Befehl kann man die Sendeleistung überprüfen:

get SCC ccconf

Bei mir erscheint nach der Umstellung:

SCC ccconf => freq:868.300MHz bWidth:101KHz rAmpl:33dB sens:8dB

Der Default-Wert liegt übrigens bei x08 = +5db, mit x09 = +10db.

Mehr Informationen zum CUL findet ihr im FHEM-Wiki.
https://wiki.fhem.de/wiki/CUL

The post FHEM SCC Sendeleistung erhöhen appeared first on krannich Hausautomation.

Vorschau Februar 2017

$
0
0

Der Januar neigt sich langsam dem Ende zu… Zeit für einen kleinen Rückblick auf die Beiträge im Januar und eine Vorschau für den Februar 2017.

Rückblick – Januar 2017

Im Januar habe ich den Blog ein neues Gewand spendiert. Du kannst den hier verwendeten Skin bei Elegantthemes finden.

Neue Serie

Die neue Serie Erste Schritte zur eigenen Programmierung ist gestartet und bietet Dir einen Einstieg in die Programmierung mit PERL. Im Februar wird es hier weitere Beiträge geben.

Neue Projekte

Viele Leser haben mich nach meinem Skin gefragt oder wie ich mein FHEM Dashboard realisiert habe. In dem Beitrag Eigener Skin für FHEM erkläre ich Dir wie das funktioniert. Das FHEM Dashboard mit Tablet-UI habe ich wieder abgeschaltet… Die Steuerung meiner Hausautomation möchte ich zukünftig verstärkt über Amazon Alexa erledigen.

Dann habe ich eine neue Klingelanlage montiert, da sich unsere Funkklingel aus dem Baumarkt seit geraumer Zeit automatisch abschaltet – ärgerlich, wenn der Besuch vor der Tür frieren muss. Somit habe ich eine Türklingel mit FHEM realisiert.

Tipps und Tricks

Ich hatte immer wieder Probleme mit dem Yahoo Wetter, da der Server nicht erreichbar war und dadurch lange Wartezeiten in FHEM verursacht wurden. Ein Zustand, der für mich nicht akzeptabel war. Somit musste ich das Yahoo Wetter durch Proplanta ersetzen. Und ich muss sagen, dass es deutlich besser läuft. Auch die Wetter-Daten sind – zumindest für meine Region – zuverlässiger, wenn auch nicht so detailliert, wie beim Yahoo-Wetter.

Dann hatte ich noch das Problem, dass einige Intertechno-Steckdosen nur sporadisch geschaltet wurden. Ein Verrücken der Antenne hat immer geholfen, aber wer will denn immer die Antenne verrücken. Die Lösung war einfach: FHEM SCC Sendeleistung erhöhen.

Ein sehr komisches Problem hat mich schon sehr lange beschäftigt: FHEM startet laufend automatisch neu. Ich hatte interne FHEM-Probleme, die ggf. durch die permanenten Wartezeiten durch das Yahoo-Wetter verursacht wurden, vermutet. Aber es lag an Apple’s Webbrowser Safari, der von der URL zum Neustart von FHEM immer einer Vorschau erstellen wollte.

Vorschau – Februar 2017

Im Februar kannst Du Dich auf spannende Beiträge rund um das Thema Sprachsteuerung mit Alexa (Amazon Echo) freuen. Hierzu gehört nicht nur die Anbindung von Alexa in FHEM, sondern auch die Programmierung eigener Skills und die Integration in WordPress (also diesen Blog). Wahrscheinlich wird sich das Thema Sprachsteuerung das ganze Jahr durchziehen, da ich viele Funktionen über Amazon Alexa ausführen lassen will.

Dann werde ich einige Beiträge rund um den Enigma2 Sat-Receiver Vu+ nachreichen, von der Installation bis zur Anpassung von VTI 11 für den VU+ Sat-Receiver (VU+ Solo 2). Diese kleine Serie hatte ich für Januar geplant, zeitlich jedoch nicht mehr geschafft.

Wie im Rückblick schon erwähnt, werde ich mich auch weiter mit der Visualisierung von FHEM beschäftigen und meinen Skin weiter verbessern. Ich möchte nämlich die Navigationsleiste optimieren, so dass die Räume in Haupt- und Untermenüpunkte aufgeteilt werden.

In diesem Sinne wünsche ich einen schönen Februar 2017.

The post Vorschau Februar 2017 appeared first on krannich Hausautomation.

FHEM hört jetzt auf Alexa / Amazon Echo

$
0
0

Endlich ist es / sie da!

Mein Amazon Echo Dot mit der Sprachsteuerung Alexa ist gestern per Post bekommen. Ich habe ca. 6 Monate auf diese Einladung gewartet… eine halbe Ewigkeit. Aber was lange währt, wird endlich gut.

In diesem Tutorial zweige ich Dir, wie Du mit Deinem Amazon Echo oder Amazon Echo Dot Dein FHEM steuern kannst.
Hierfür solltest Du Dir etwas Zeit mitbringen, es dauert – je nach auftauchenden Problemen – ca. 2 Stunden.

Letzte Aktualisierung am 3.07.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

Generell lässt sich der Prozess in zwei Schritte unterteilen:

  1. Installation von Node JS und Alexa-fhem
  2. Alexa Skill mit AWS Lambda einrichten

Insbesondere der letzte Teil ist sehr zeitaufwändig, bedarf eine Kreditkarte (auch wenn keine Kosten anfallen) und ist etwas komplex (nicht kompliziert), da es teilweise mehrere parallele Schritte (Browser-Tabs) benötigt. Aber es lohnt sich!

Installation von Node JS und Alexa-fhem

Node JS 7 installieren

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

Version überprüfen mit:

node -v

Weitere Infos zum Start-Script und zur Konfiguration findest Du in meinem Beitrag Fhem hört auf Siri.

Alexa für FHEM installieren (alexa-fhem-0.1.9.tgz):
https://forum.fhem.de/index.php/topic,60244.msg540117.html#msg540117

tar -xzf alexa-fhem-0.1.9.tgz
mv package alexa-fhem
cd alexa-fhem
npm install
chmod +x createKey.sh
./createKey.sh

Die erstellten Keys bruahcts Du im alexa-fhem Verzeichnis (siehe config.json ganz unten).

Start-Up Script

Mit diesem Script kannst Du komfortabel den Alexa-FHEM Dienst starten. Bitte beachte, dass der log-Ordner angelegt ist. Ggf. musst Du die Pfade noch anpassen.

#!/bin/sh
### BEGIN INIT INFO
# Provides: alexa
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time for alexa
# Description: Enable service provided by daemon.
### END INIT INFO
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
PID=`pidof alexa`
export ALEXAPATH="/root/alexa-fhem"
export LOGPATH="/root/alexa-fhem/log"
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
	echo "Alexa is already running"
else
	$ALEXAPATH/bin/alexa > $LOGPATH/alexa-`date +%Y-%m`.log 2>&1 &
	echo "Alexa starting"
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is not running"
else
        kill $PID
        echo "Alexa closed"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
        $0 start
else
        $0 stop
        $0 start
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is running PID $PID"
else
        echo "Alexa is not running"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0

Zugriffsrechte setzen

chmod 755 /etc/init.d/alexa
update-rc.d alexa defaults

Alexa Skill mit AWS Lambda einrichten

Jetzt kommt der komplizierte, lange Teil – die Anmeldung bei Amazon.
Weitere Infos zum Thema findest Du im FHEM Wiki unter Alexa-fhem.

Zuerst musst Du Dich unter der Adresse http://developer.amazon.com anmelden. Wenn Du noch kein Konto hast, dann musst Du Dir ein neues Konto anlegen.

Wenn Du dort erfolgreich eingeloggt bist, musst Du die folgenden Schritte durchlaufen. Du findest diese auch im FHEM Wiki (siehe oben), ich habe hier teilweise noch Änderungen oder Hinweise hinzugefügt.

  1. Jetzt auf Apps & Services klicken, dann den Untermenüpunkt „Security Profiles“ wählen und auf die Schaltfläche „Create new profile“ drücken.
  2. Als nächstes „Security Profile Name“ und „Security Profile Description“ eingeben, z. B. „alexa FHEM“.
  3. Die folgenden Daten „zwischenspeichern“: Security Profile ID, Client ID, Client Secret
  4. Oben rechts unter „More Information“ auf den Link „Login with Amazon“ klicken.
  5. Nun auf die Schaltfläche „Sign up“ drücken und das zuvor angelegte Profil in dem Drop-Down-Menü auswählen.
  6. In dem anschließend öffnenden Popup folgenden Link kopieren: https://www.amazon.com/gp/help/customer/display.html?nodeId=468496
  7. Jetzt auf das „Zahnrad“ klicken und „Web Settings“ auswählen
  8. Füge nun bei „Allowed Return URL“ folgendes hinzu (ACHTUNG: Diese URLs kannst Du erst später korrekt eingeben, die xxx müssen entsprechend ersetzt werden): https://layla.amazon.co.uk/api/skill/link/xxx, https://pitangui.amazon.com/api/skill/link/xxx, und https://layla.amazon.com/api/skill/link/xxx
  9. Wähle nun den Menüpunkt „Alexa“, am besten in einem neuen Tab öffnen, dann kannst Du die „Allowed Return URL“ gut ändern
  10. Wähle „Alexa Skills Kit“ aus (erste Kachel)
  11. Klicke auf „Add a new Skill“
  12. Wähle „Smart Home Skill“, „Deutsch“ und vergib einen Namen, z. B. „alexa FHEM“
  13. Jetzt auf der nächsten Seite folgendes auswählen: Europe, Endpoint wird später angegeben (temporär kannst Du hier folgendes eingeben: arn:aws:lambda:eu-west-1:000000000000:function:myFunction:myFunctionVersion)
  14. Authorization URL: https://www.amazon.com/ap/oa
  15. Client Id: Hier den Wert aus Schritt 3 einfügen
  16. Add Scope: profile:user_id
  17. Nun die bei Redirect URLs angegebene ID (letzter Teil der URL) in den anderen Tab eingeben (siehe Schritt 8)
  18. Access Token URI: https://api.amazon.com/auth/o2/token
  19. Client Secret: Hier den Wert aus Schritt 3 einfügen
  20. Nun folgende URL im neuen Tab öffnen. Ggf. musst Du noch ein Konto erstellen, ist aber alles kostenlos, trotz Angabe der Kreditkarte: https://aws.amazon.com/de/lambda
  21. Nun im Menü „Services“ unter Compute „Lambda“ auswählen
  22. Auf „Get started now“ klicken und anschließend „Blank Function“ (erste Kachel) wählen.
  23. Nun oben rechts in dem schwarzen Balken zwischen Deinen Namen und Support den Server wechseln auf „EU Ireland“ (zweites Dropdown von rechts)
  24. Jetzt auf das gestrichelte Quadrat drücken und „Alexa Smart Home“ wählen
  25. Jetzt die ApplicationID (findet ihr in eurem anderen Tab unter Skill information).
  26. Name: FHEM, bei Runtime: Node.js 4.3, bei Role „Choose an existing role wählen“ (wenn es noch keine existing role gibt: zuerst „Create a custom role“ wählen, in dem Popup dann „lambda_basic_execution“ und auf Allow klicken)
  27. Nun den Code aus der Datei „lambda.js“ in das Code-Feld kopieren
  28. Anschließend auf Next und Create drücken
  29. Nun auf „Functions“ in der Breadcrumb / in dem Klickpfad drücken
  30. In der folgenden Liste, die soeben erstelle Funktion auswählen, dann auf „Action“ klicken und „Show ARN“.
  31. Diesen Wert notieren/kopieren und in dem anderen Tab den Service-Endpoint (Schritt 13) eintragen
  32. Nun weiter und den Skill „abspeichern“. Der Vorgang endet nicht wie man erwarten würde mit dem Publizieren. Dies auf keinen Fall machen
  33. Bitte alle Fenster noch geöffnet lassen!

Jetzt können wir die Konfiguration der config.json vornehmen.

  1. Den Skill wieder auswählen und die ID kopieren und in die config.json einfügen
  2. Nun noch die Client ID aus Schritt 8 entsprechend in die config.json einfügen
  3. Jetzt können noch die IP vom Server angepasst werden

Meine config.json sieht so aus:

{
    "alexa": {
        "name": "alexa",
        "keyFile": "/root/alexa-fhem/key.pem",
        "certFile": "/root/alexa-fhem/cert.pem",
        "nat-pmp": "",
        "nat-upnp": false,
        "applicationId": "amzn1.ask.skill.XXXXXX",
        "oauthClientID": "amzn1.application-oa2-client.XXXXXX"
    },

    "connections": [
        {
            "name": "FHEM",
            "server": "192.168.X.X",
            "port": "8083",
            "filter": "room=Alexa"
        }
    ]
}

Viel Spaß mit Amazon’s Alexa!

The post FHEM hört jetzt auf Alexa / Amazon Echo appeared first on krannich Hausautomation.

Neue Visualisierung für FHEM

$
0
0

In einigen Beiträgen habe ich schon über die Visualisierung für FHEM geschrieben, z. B. in den Beiträgen Eigener Skin für FHEM oder FHEM CSS. Da immer mehr Komponenten hinzukommen und sich die Anforderungen an FHEM und somit auch der Visualisierung ändern, möchte ich Dir in diesem Beitrag mein neuestes Konzept vorstellen.

Funktionsumfang:

  1. Gruppierung von Räumen in der Navigationsleiste
  2. Geräte mit dem Zusatz „-hidden“ im Gerätenamen werden nicht angezeigt (display: hidden)
  3. Uhrzeit rechts oben in der Ecke
  4. Meta-Navigation in der Fusszeile (FHEM Commandref und Event Monitor)
  5. Header wird beim Scrollen aus- bzw. eingeblendet

Alles was Du brauchst, findest Du in der Datei dkstyles2017-02.

Das Ergebnis sieht dann wie folgt aus:

FHEM Visualisierung / Skin 2017

Die Anzeige der Uhrzeit und Meta-Navigation sowie das Ein- und Ausblenden des Headers ist ohne Konfiguration möglich.
Für die Gruppierung der Räume und dem Ausblenden einzelner Geräte sind Anpassungen am Raum- bzw. Gerätenamen erforderlich.

Gruppierung von Räumen in der Navigationsleiste

Damit die Räume in der Navigationsleiste gruppiert und als Untermenü dargestellt werden können, muss der Name des Raum-Attributes wie folgt aussehen:

attr DEINGERÄT room GRUPPENNAME--RAUMNAME
Die logische Trennung erfolgt durch die 2 Bindestriche in Gruppe und Raum.

Beispiele:
attr EG_Buero_IT_Drucker room Räume--Büro

Dies funktioniert auch mit der Zuweisung eines Gerätes für mehrere Räume:
attr AB_Carport_Beleuchtung room Aussenbereich--Carport,Intern--Homekit

Die Reihenfolge der Gruppen kann wie gewohnt über die Web-Konfiguration vorgenommen werden. Entsprechend dieser Reihenfolge werden die Gruppen gebildet. Werden die Gruppen gemischt (also Intern–System, System–Monitoring, Intern–Notifiers), so wird für die Reihenfolge das erste Vorkommnis gewählt. Die Untermenüpunkte (Räume) werden alphabetisch sortiert.

Geräte mit dem Zusatz „-hidden“ im Gerätenamen verstecken

Damit auch die Ansicht in den einzelnen Räumen übersichtlich bleibt, können einzelne Geräte mit dem Zusatz „-hidden“ im Gerätenamen versteckt werden. Durch den URL-Zusatz „showall=-1“ werden alle Geräte wieder angezeigt.

Die URL würde dann so aussehen:
http://DEINEIP:8083/fhem/DEINRAUM?showall=-1

Wo kommt welche Datei aus dem Archiv hin?

Die entsprechenden Dateien liegen in dem Ordner fhem/www/pgm2. Du brauchst die folgenden Dateien: dk.js und dkstyle.css. Darüber hinaus kannst Du noch die Dateien dksvg_style.css und dksvg_defs.svg kopieren. Wenn Du auch noch weitere Ansichten hast, kannst Du auch noch dksmallscreenstyle.css einfügen.

In dem Ordner /fhem/www/gplot kannst Du meine Dateien für die Visualisierung des Wetters und der Heizungsdaten einfügen. In dem Ordner /fhem/www/images/dk musst Du die SVG-Dateiein ablegen.

Die Konfiguration in FHEM sieht dann wie folgt aus:

Meine Konfiguration sieht so aus:

define WEB FHEMWEB 8083 global
attr WEB stylesheetPrefix dk
attr WEB JavaScripts pgm2/dk.js
attr WEB defaultRoom Aktionen
attr WEB editConfig 1
attr WEB group FHEM
attr WEB iconPath fhemSVG:$styleSheetPrefix:openautomation:dk
attr WEB longpoll 1
attr WEB room System

Lass mich wissen, ob dies auch bei Dir zu einer besseren Übersichtlichkeit geführt hat oder wenn Du Verbesserungsvorschläge hast.

The post Neue Visualisierung für FHEM appeared first on krannich Hausautomation.


Vorschau März 2017

$
0
0

Zuerst möchte ich mich für die vielen Mails bedanken. Freut mich, dass mein Blog so viel Anklang findet.

Rückblick – Februar 2017

Im Februar ist leider einiges liegen geblieben, er ging doch schneller vorbei als gedacht. So sind es nur zwei Themen, die diesen Monat behandelt wurden:

Zum einen habe ich eine neue Visualisierung (Update meines Skins) vorgestellt. Dieser bietet noch mehr Übersicht und gruppiert die einzelnen Räume. Die Neue Visualisierung für FHEM soll Dir einen Start geben. Bitte beachte, dass ggf. der Code für Deine Zwecke angepasst werden muss. Dies hängt stark von den verwendeten Plugins/Modulen ab.

Zum anderen habe ich endlich meinen Amazon Echo Dot bekommen. In dem Beitrag FHEM hört jetzt auf Alexa / Amazon Echo erfährst Du, wie Du ihn installierst und an FHEM anbindest. Es ist ein etwas komplizierter Ablauf, aber die Anleitung sollte Dir helfen, dies ohne Probleme zu bewältigen.

VORSCHAU – März 2017

Im März werden endlich die bereits angekündigten Beiträge rund um den Enigma2 Sat-Receiver Vu+ kommen. Von der Installation bis zur Anpassung von VTI 11 für den VU+ Sat-Receiver (VU+ Solo 2).

Dann werde ich mit den Programmierkurs weiter machen. Hier wäre ich dankbar über mögliche Themen oder Probleme, die behandelt werden sollen.

Darüber hinaus werde ich über meine Erfahrungen zur Sprachsteuerung mit Alexa (Amazon Echo) berichten. Hierzu gehört nicht nur die Anbindung von Alexa in FHEM, sondern auch die Programmierung eigener Skills und die Integration in WordPress (also diesen Blog). Wahrscheinlich wird sich das Thema Sprachsteuerung das ganze Jahr durchziehen, da ich viele Funktionen über Amazon Alexa ausführen lassen will.

In diesem Sinne wünsche ich einen schönen März 2017.

The post Vorschau März 2017 appeared first on krannich Hausautomation.

VU Plus – VTI 11 installieren

$
0
0

Zum Jahreswechsel habe ich meinen Vu+ Solo 2 Sat-Receiver von VTI 9 auf VTI 11 aktualisiert. Was Du dafür braucht und wie es geht erfährst Du in diesem Beitrag. Am besten planst Du eine halbe Stunde ein. Durchführung auf eigene Gefahr. Bitte sorge immer für eine Sicherungskopie.

In weiteren Beiträgen werde ich Dir dann zeigen, wie Du einen anderen Skin installieren und anpassen kannst.

VU+ Solo² 2x DVB-S2 Tuner PVR Ready Twin Linux Receiver Full HD 1080p schwarz
496 Bewertungen
VU+ Solo² 2x DVB-S2 Tuner PVR Ready Twin Linux Receiver Full HD 1080p schwarz
  • VU+ Solo² Digitaler HDTV Satelliten-Receiver
  • Geeignet für alle frei empfangbaren TV- und Radiosender
  • schneller Kanalwechsel, EPG, Videotext, HbbTV

Letzte Aktualisierung am 3.07.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

Sicherung der Einstellungen

Wenn Du eine Festplatte installiert hast, kannst Du Deine Einstellungen ganz einfach über die Backup-Suite erstellen.

Die Backup-Suite findest Du unter Menü –> VTI –> VTI Panel –> VTi Software-Werkzeuge –> Backup-Suite.

Hier kannst Du ganz bequem das Speichermedium wählen. In meinem Fall ist es die interne Festplatte /media/hdd.
Anschließend führst Du der Reihe nach die einzelnen Sicherungen für Plugins, Kanalliste/Bouquets und Einstellungen durch.

Das war’s auch schon mit der Vorbereitung.

Optional kannst Du unter Menü –> VTI –> VTI Panel –> VTi Software-Werkzeuge –> Image-Sicherung noch eine komplette Sicherung des aktuellen Images machen.

Erstellung USB-Stick

Damit das Image auf die Box kommt, musst Du es zunächst laden, dann entpacken und auf einen USB-Stick kopieren.
Der USB-Stick sollte komplett leer sein und mit FAT32 formatiert sein.

  1. Image auf VTI-Forum laden
  2. USB Stick mit dem Dateisystem FAT, bzw. FAT32 formatieren
  3. Zip-Datei auf den USB-Stick entpacken oder die entpackten Dateien auf den USB-Stick kopieren
  4. Im Stammverzeichnis des USB-Sticks sollte das Verzeichnis vuplus zu sehen sein. In diesem Verzeichnis befindet sich ein weitere Ordner mit dem Namen solo2 (abhängig von eurer Box/eurem Image)
  5. In diesem Verzeichnis /vuplus/solo2 befinden sich 5 Dateien

Durchführen des Flash-Updates

Jetzt könnt ihr mit dem USB-Stick zu eurer VU+-Box gehen.

  1. Vu+-Box ausschalten (am besten über den Netzschalter)
  2. Alle USB Geräte von der Box entfernen
  3. Alle CI-Module und Pay-TV-Karten aus der Box entfernen
  4. USB Stick vorne anstecken
  5. Vu+-Box einschalten
  6. Auf die Meldung „Update please press Power“ warten
  7. Jetzt die „Power“-Taste an der Vorderseite drücken (Sensor-Taste)
  8. Der Flash-Vorgang beginnt. BITTE NICHT DEN STROM TRENNEN
  9. Auf Hinweis „Finished, Removing USB“ im Display warten
  10. USB Stick von der Box abziehen
  11. Vu+-Box ausschalten und neu starten

Wiederherstellen der Einstellungen

Der VTi-Startwizard sollte starten. Anschließend solltet ihr unbedingt zuerst ein Online-Update über VTi-Panel –> Neuigkeiten oder durch Drücken der Tasten Blau – Grün – Grün durchgeführt werden.

Nun könnt ihr eure Einstellungen wieder einspielen. Hierfür geht ihr in Menü –> VTI –> VTI Panel –> VTi Software-Werkzeuge –> Backup-Suite. Die Einstellungen solltet ihr wieder der Reihe nach (Plugins, Kanalliste/Bouquets und Einstellungen) durchführen.

Viel Spaß mit dem VTI-Image 11!

Weitere Infos

VU+ Support Forum
https://www.vuplus-support.org
Hier findest Du sowohl die VTI Updates, als auch Skins und Plugins. Für die Nutzung musst Du am Forum angemeldet sein.

The post VU Plus – VTI 11 installieren appeared first on krannich Hausautomation.

VTI 11 eigener Skin auf Basis von MetrixFHD

$
0
0

In meinem letzten Beitrag habe ich Dir gezeigt, wie Du ganz einfach VTI auf Deine Vu+ Box installieren kannst. Hier findest Du nun alles, um die Benutzungsoberfläche zu optimieren.

VTI-Skin MetrixFHD

Als Basis dient mir der Skin MetrixFHD. Diesen findest Du im VUPlus-Support Forum.
https://www.vuplus-support.org/wbb4/index.php?thread/90688-metrixfhd-pro-vti-11-x-1080p-3-70/

Senderlogos XHDPicons

Nachdem Du diesen Skin installiert hast, lädst Du Dir am besten noch die XHDPicons damit die Senderlogos auch vernünftig angezeigt werden. Diese findest Du auch im VUPlus-Support Forum.
https://www.vuplus-support.org/wbb4/index.php?thread/101261-metrixfhd-pro-xhdpicons/

CoolTVGuide für MetrxiFHD

Zunächst brauchst Du die aktuelle Version von CoolTVGuide. Leider hat der Entwickler den Support eingestellt, so dass sich ein paar Probleme mit dem Skin MetrixFHD ergeben.
Du findest die aktuelle Version im VUPlus-Support Forum.
https://www.vuplus-support.org/wbb4/index.php?thread/6718-cool-tv-guide-v7-6-by-coolman/&pageNo=1

In dieser Version wurde das Timeout entfernt. Leider funktioniert das Plugin mit FullHD-Auflösungen nicht korrekt. Ich habe den Code entsprechend angepasst damit es mit MetrixFHD funktioniert. Du kannst Dir meine Datei MetrixFHD-CoolTVGuide.zip hier laden. Kopiere die Datei in den Ordner usr/lib/enigma2/python/Extensions/CoolTVGuide.

MetrxiFHD Anpassungen

Der Skin MetrixFHD ist schon ziemlich gut. Leider hat er für mich zu viele unnötige Dinge, die angezeigt werden. Darüber hinaus möchte ich ein reduziertes Design wie bei Apple haben.

Du kannst Dir meine Anpassungen dk-MetrixFHD.zip hier laden. Diese Datei entpacken und die Dateien in die jeweiligen Verzeichnisse kopieren. Anschließend musst Du die Änderungen noch unter Menu–>VTI->Einstellungen MetrixFHD aktivieren. Wähle als Stil „MetrixFHD dk“ und bei Schriftart „dk“.

Und so sieht es aus:

Infobar

CoolTVGuide

Horizontal Channellist

Info Details

Mini-EPG

MoviePlayer

Mein Skin hat noch weitere überarbeitete Screens.

Ich wünsche Dir viel Spaß mit Deinem aufgeräumten VTI-Skin.

The post VTI 11 eigener Skin auf Basis von MetrixFHD appeared first on krannich Hausautomation.

Außenbeleuchtung bei Dämmerung und Coming-Home

$
0
0

Endlich ist die kalte Jahreszeit vorbei und man kann wieder mehr im Außenbereich machen. Meine LED-Spots habe ich vor dem Wintereinbruch bei Amazon gekauft und sie sollen nun nicht länger in der Ecke stehen. In diesem etwas längeren Beitrag zeige ich Dir, wie Du eine intelligente Außenbeleuchtung realisieren kannst.

Was möchte ich erreichen?

  1. Rund um unser Haus sollen LED-Spots im Unterschlag verbaut werden (Abstand ca. 96 cm).
  2. Die LED-Spots sollen bei Dämmerung eingeschaltet werden.
  3. Die LED-Spots sollen bei Coming-Home eingeschaltet werden und nach ca. 10 Minuten wieder ausgeschaltet werden.
  4. Sind die Lampen bereits an, erfolgt kein Coming-Home.
  5. Um 22 Uhr und 23 Uhr soll eine Erinnerung (Push-Nachricht) kommen, wenn die Lampen noch eingeschaltet sind.

Was brauchst Du dafür?

Letzte Aktualisierung am 3.07.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

Locative (Kostenlos, App Store) →


Pushover Notifications (Kostenlos+, App Store) →

Einbau der Lampen

Zuerst solltest Du die korrekten Abstände für die LED-Spots ermitteln. In meinem Fall sind es ca. 96 cm. Dies sorgt für eine gute Beleuchtung an der gesamten Fassade, ohne dass viele Schattenflächen an der Wand entstehen. Für das Sägen/Bohren der Löcher empfiehlt sich eine sehr gute und hochwertige Lochsäge. Hier reicht kein billiges Baumarkt-Zeugs, da diese Sägen schnell stumpf werden. Ich habe ca. 45 Löcher mit obiger Lochsäge in 2,8 cm dickes (und ca. 30 Jahre altes) Unterschlagholz gesägt. Zudem solltest Du einen leistungsstarken Akkuschrauber oder besser noch eine Bohrmaschine verwenden.

Am besten markierst Du zuerst alle Löcher und sägst sie dann in einem Rutsch aus. Anschließend verlegst Du die Kabel. Einfaches 3-adriges NYM-Kabel reicht aus. Zum verbinden empfehle ich obige Wago-Klemmen. Bitte nur diese verwenden, da sie für besonders dünne Querschnitte (haben die LED-Spots) und 1,5 mm2 geeignet sind. Nachdem alle Kabel verbunden sind, können die LED-Spots angeklemmt werden.

Zum Abschluss den Homematic Aktor an FHEM anlernen und entsprechend verbauen. Ich verwende immer die Unterputz-Aktoren, da ich zum einen keine Schalter möchte und zum anderen sind diese super zuverlässig.

Dämmerungsschaltung mit Twilight

Damit Deine Außenbeleuchtung nur angeht, wenn es draußen dunkel ist, benötigst Du das Modul Twilight und jeweils einen Timer für Sunset und Sunrise.

Twilight

define twilight Twilight xx.xxxxx y.yyyyy 3
attr twilight group PlugIns
attr twilight room Intern--System

Timer bei Sonnenuntergang

define sunset_timer at *{sunset("HORIZON=3",0,"17:00","22:00")} { dkHandleSunset() }
attr sunset_timer group Timer
attr sunset_timer room Intern--Timer

Dieser Timer reagiert frühestens um 17:00 Uhr und spätestens um 22:00 Uhr.
Für die Steuerung wird die Funktion dkHandleSunset() aufgerufen.

dkHandleSunrise()

sub dkHandleSunset() {
	dkOn("AB_Aktor_Beleuchtung_Haus");
}

Die Funktion dkOn() ist Bestandteil von 99_dkUtils.pm

Timer bei Sonnenaufgang

define sunrise_timer at *{sunrise(0,"05:00","07:30")} { dkHandleSunrise() }
attr sunrise_timer group Timer
attr sunrise_timer room Intern--Timer

Dieser Timer reagiert frühestens um 5:00 Uhr und spätestens um 7:30 Uhr.
Für die Steuerung wird die Funktion dkHandleSunrise() aufgerufen.

dkHandleSunrise()

sub dkHandleSunrise() {
	dkOff("AB_Aktor_Beleuchtung_Haus");
}

Die Funktion dkOff() ist Bestandteil von 99_dkUtils.pm

Coming-Home mittels Geofencing

Damit Deine Außenbeleuchtung angeht, wenn Du nach Hause kommt, benötigst Du das Modul Geofancy und Residents sowie eine App die Geofencing ermöglicht. In meinem Fall ist es Locative (ehemals Geofancy). Damit kannst Du bestimmte Bereiche (so genannte Geofences) erstellt werden. Beim Verlassen oder Betreten dieser Bereiche kann FHEM darüber informiert werden und entsprechend darauf reagieren.

GeoFancy

define geofancy GEOFANCY geo
attr geofancy alias GeoFencing
attr geofancy devAlias xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:Dennis xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:Sandra
attr geofancy group PlugIns
attr geofancy room Intern--System

define n_rr_Dennis notify geofancy:currLoc_Dennis.* set rr_Dennis location $EVTPART1
define n_rr_Sandra notify geofancy:currLoc_Sandra.* set rr_Sandra location $EVTPART1

Obiges Beispiel zeigt eine einfach Konfiguration für GeoFancy für zwei Bewohner mit jeweils einem Endgerät. Die Endgeräte werden einfach wie oben gezeigt hintereinander geschrieben. Durch den Doppelpunkt weist Du dem Gerät eine Person zu. Du kannst auch für eine Person mehrere Geräte definieren.

Residents

define rgr_Residents RESIDENTS
attr rgr_Residents alias Residents
attr rgr_Residents devStateIcon .*home:status_available:absent .*absent:status_away_1:home .*gone:status_standby:home .*none:control_building_empty .*gotosleep:status_night:asleep .*asleep:status_night:awoken .*awoken:status_available:home
attr rgr_Residents group Home State
attr rgr_Residents icon control_building_empty
attr rgr_Residents room Intern--Residents
attr rgr_Residents sortby 2
attr rgr_Residents webCmd state

define rr_Dennis ROOMMATE rgr_Residents
attr rr_Dennis alias Dennis
attr rr_Dennis devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown
attr rr_Dennis group Residents
attr rr_Dennis icon status_available
attr rr_Dennis room Intern--Residents
attr rr_Dennis rr_autoGoneAfter 0.1
attr rr_Dennis sortby 0
attr rr_Dennis webCmd state

define Residents_notify notify rr_.*:location:.* { dkRouteResidents($NAME, $EVTPART1) }
attr Residents_notify room Intern--Residents

Damit auch entsprechend Aktionen ausgeführt werden können, wird zunächst die Gruppe rgr_Residents erzeugt. Ein Bewohner (ROOMMATE) wird dann der Gruppe rgr_Residents zugewiesen.
Die Funktion dkRouteResidents() wird jedes Mal aufgerufen, wenn sich der Status eines Bewohners ändert. Es wird sowohl der Bewohner als auch das Event übergeben. WICHTIG: Das Event wird in der App Locative definiert. In meinem Fall gibt es „home“ und „cominghome“.

sub dkRouteResidents($$) {
	my ($resident, $event) = @_;
	my $action = "dkAct_Resident_" . $event;
	my $coderef=__PACKAGE__->can($action);
	if ($coderef) {
		$coderef->($resident, $event);
	}
}

Diese Funktion dürfte Dir bekannt vorkommen, wenn Du meine anderen Beiträge gelesen hast. Damit ich nicht zu viele Notifier habe, versuche ich viele Notifications zu bündeln und leite Sie in meinem Modul dann an die entsprechende Funktion weiter. In diesem Fall wird die Funktion dkAct_Resident_EVENTNAME aufgerufen.

sub dkAct_Resident_home($$) {
	my ($resident, $event) = @_;
	my $twilight = dkGetReading("twilight", "twilight");
	if ($twilight <= 62) {
		dkOn("AB_Aktor_Beleuchtung_Haus");
		dkAutoOff("AB_Aktor_Beleuchtung_Haus", "on", "0.1");
	}
}

Wenn jemand nach Hause kommt, wird zunächst die Helligkeit ermittelt. Wird ein bestimmter Wert – in meinem Fall 62 – unterschritten, wird die Beleuchtung angeschaltet und automatisch nach 10 Minuten wieder ausgeschaltet.

Die Funktion dkAutoOff() ist Bestandteil von 99_dkUtils.pm

Push-Nachrichten via Pushover

Über Pushover können Push-Notifications an z. B. iOS-Geräte gesendet werden. Die Verwaltung erfolgt über www.pushover.net bzw. über den App-Code den man in FHEM einstellt.

define pushover Pushover <TOKEN> <USER-ID>
attr pushover alias Pushover
attr pushover group PlugIns
attr pushover priority 0
attr pushover room Intern--System
attr pushover sound 1
attr pushover title FHEM

In Pushover musst Du einen Token für FHEM erstellen. Du kannst dann die jeweiligen Geräte einer Gruppe zuweisen. In FHEM gibst Du den Token der App und Deine User-ID an.

define 10pm_timer at *22:00 {dkHandle10pm()}
attr 10pm_timer group Timer
attr 10pm_timer room Intern--Timer

Ich habe die Benachrichtigung über einen Timer realisiert. Dieser ruft dann die Funktion dkHandle10pm() auf.

sub dkHandle10pm() {
	if (dkGetState("AB_Aktor_Beleuchtung_Haus") eq "on") {
		dkPush("attention", "ACHTUNG! Die Hausbeleuchtung ist noch an!");
	}
}

sub dkGetState($){
	my($device) = @_;
	return ReadingsVal($device, "state", "unknown");
}

sub dkPush($$) {
	my ($type, $message) = @_;
	if (!$message || !$type) { return; }
	if ($type eq "default")		{ fhem("set pushover msg title='FHEM' message='$message'", 1); }
	if ($type eq "warning")		{ fhem("set pushover msg title='FHEM Warning' message='$message' sound='gamelan'", 1); }
	if ($type eq "alarm")		{ fhem("set pushover msg title='FHEM Alarm' message='$message' priority=2 sound='siren' retry=30 expire=3600 ", 1); }
	if ($type eq "call")		{ fhem("set pushover msg title='FHEM' message='$message' sound='bike'", 1); }
	if ($type eq "device")		{ fhem("set pushover msg title='FHEM' message='$message' sound='bike'", 1); }
	if ($type eq "attention")	{ fhem("set pushover msg title='FHEM' message='$message' sound='bugle'", 1); }
	if ($type eq "magic")		{ fhem("set pushover msg title='FHEM' message='$message' sound='magic'", 1); }
	if ($type eq "doorbell")	{ fhem("set pushover msg title='FHEM' message='$message' sound='incoming'", 1); }
}

In der Funktion dkHandle10pm() wird überprüft, ob die Außenbeleuchtung eingeschaltet ist. Ist dies der Fall, so wird eine Benachrichtigung ausgegeben.
Die Funktionen dkGetState() und dkPush() findest Du auch in 99_dkUtils.pm.

Ich wünsche Dir viel Spaß mit Deiner neuen automatisierten Außenbeleuchtung.

Kleines Fazit

Die Lochsäge von Ruko hat bei mir nach knapp einem Drittel den Geist aufgegeben. Das Gewinde mit dem die Lochsäge auf den Bohrer geschraubt wird, war ausgeschlagen. Dies mag an meiner ungestümen Arbeitsweise über Kopf und dem doch recht dicken Unterschlagholz gelegen haben. Die günstige „Notlösung“ aus dem Baumarkt war komplett mit dem Bohrer verschweisst und hat sehr gute Dienste geleistet. Nach knapp 40 Löchern war die Säge aber auch stumpf.

Den Abstand der Lampen könnte man auch größer wählen. Mir war ein gleicher Abstand der Lampen wichtig. Mein Vater hat die Lampen jeweils mittig vom Fenster und der Wand zwischen den Fenstern gesetzt. Bei größeren Flächen hat er die Lampen gleichmäßig auf die Fläche verteilt.

Für mein Haus habe ich 51 Lampen verbaut. Bei einer Leistung von 5 Watt pro Lampe kann diese Außenbeleuchtung nur für Dekozwecke verwendet werden, da ein Dauerbetrieb doch recht teuer wird.

The post Außenbeleuchtung bei Dämmerung und Coming-Home appeared first on krannich Hausautomation.

Vorschau April 2017

$
0
0

Rückblick – März 2017

Im März gab es endlich die bereits angekündigten Beiträge rund um den Enigma2 Sat-Receiver Vu+. Von der Installation von VTI 11 bis zur Erstellung eines eigenen Skins auf der Basis von MetrixFHD.

Zudem habe ich gezeigt, wie eine intelligente Außenbeleuchtung realisiert werden kann. Diese setzt Geofencing ein und schaltet bei Sonnenuntergang bzw. -aufgang die LED-Spots ein- bzw. aus. Zusätzlich erfolgt eine Benachrichtigung, wenn die Lampen nachts noch angeschaltet sind.

VORSCHAU – April 2017

Im April geht es mit dem Programmierkurs weiter. Hier wäre ich dankbar über Themen oder Probleme, die behandelt werden sollen.

Ich werde auch weiter über meine Erfahrungen zur Sprachsteuerung mit Alexa (Amazon Echo) berichten. Die anfängliche Euphorie legt sich etwas. Momentan wird Alexa nur zum Einschalten der Geschirrspülmaschine bei mir benutzt. Das soll sich ändern.

Darüber hinaus möchte ich meine FHEM-Konfiguration etwas aufräumen.

Ich arbeite auch an einem Gastbeitrag mit einem Freund. Hier werden wir FHEM mit einer KNX-Anlage zusammenführen.

In diesem Sinne wünsche ich einen schönen April 2017 mit viel Sonne und spannenden Hausautomationsprojekten.

The post Vorschau April 2017 appeared first on krannich Hausautomation.

Handsender HM-RC-Key4-3 an KeyMatic anlernen über FHEM endlich gelöst

$
0
0

In meinem Beitrag Handsender an KeyMatic anlernen habe ich über meine vergeblichen Versuche berichtet einen neuen Handsender an meine KeyMatic anzulernen.

Das Problem: Der herkömmliche Weg des Anlernens neuer Fernbedienungen via KeyMatic funktioniert nicht, da diese bereits mit FHEM gepaart (paired) ist.

Da der alte Handsender meiner Frau kaputt gegangen ist, musste ich mich heute erneut mit dem Anlernen der Handsender an die KeyMatic mit FHEM beschäftigen.

Hier ist die Lösung

Voraussetzung

Der Handsender wurde bereits an FHEM angelernt:

set SCC hmPairForSec 300

Bei mir gelten folgende Gerätename:
Hansender =
Handsender_04
Handsender_04_Btn_01 => bewirkt UNLOCK, Taste 2 auf Handsender
Handsender_04_Btn_02 => bewirkt LOCK, Taste 1 auf Handsender
Handsender_04_Btn_03 => bewirkt LIGHT, Taste 4 auf Handsender
Handsender_04_Btn_04 => bewirkt OPEN, Taste 3 auf Handsender
Keymatic = KeyMatic

Peering

Nachdem der Handsender und alle seine vier Buttons definiert wurden, kann das Peering mit der KeyMatic erfolgen.
Hierfür werden die einzelnen Buttons zunächst einzelne (als single) zugewiesen. Diese verhalten sich dann wie ein Toggle.
Die 4. Taste (Licht) wird nicht gepeert, sie wird bei mir gesondert über FHEM verarbeitet und schaltet die Außenbeleuchtung an.

set Handsender_04_Btn_01 peerChan 0 KeyMatic single set
ANLERNEN AUF DEM HANDSENDER DRÜCKEN

set Handsender_04_Btn_02 peerChan 0 KeyMatic single set
ANLERNEN AUF DEM HANDSENDER DRÜCKEN

set Handsender_04_Btn_04 peerChan 0 KeyMatic single set
ANLERNEN AUF DEM HANDSENDER DRÜCKEN

Jetzt müssen noch AES und der Burst-Modus aktiviert werden:

set Handsender_04_Btn_01 regSet expectAES on KeyMatic
ANLERNEN AUF DEM HANDSENDER DRÜCKEN

set Handsender_04_Btn_02 regSet expectAES on KeyMatic
ANLERNEN AUF DEM HANDSENDER DRÜCKEN

set Handsender_04_Btn_04 regSet expectAES on KeyMatic
ANLERNEN AUF DEM HANDSENDER DRÜCKEN

set Handsender_04_Btn_01 regSet peerNeedsBurst on KeyMatic
ANLERNEN AUF DEM HANDSENDER DRÜCKEN

set Handsender_04_Btn_02 regSet peerNeedsBurst on KeyMatic
ANLERNEN AUF DEM HANDSENDER DRÜCKEN

set Handsender_04_Btn_04 regSet peerNeedsBurst on KeyMatic
ANLERNEN AUF DEM HANDSENDER DRÜCKEN

Zuweisung der Tasten-Funktionen

Da die einzelnen Buttons nun als Toggle für on/off definiert sind, muss noch eine entsprechende Zuweisung der korrekten Funktionen erfolgen. In meinem Fall möchte ich folgendes erreichen:

Taste 1 = lock (short und long press)
Taste 2 = unlock (short press) und open (long press)
Taste 3 = open (short und long press)

Zur Sicherheit sollte folgender Befehl ausgeführt werden:

set KeyMatic getConfig

Anschließend kann die Zuweisung erfolgen

set KeyMatic regSet shKeyJtOff open Handsender_04_Btn_04
set KeyMatic regSet shKeyJtOn open Handsender_04_Btn_04
set KeyMatic regSet lgKeyJtOff open Handsender_04_Btn_04
set KeyMatic regSet lgKeyJtOn open Handsender_04_Btn_04

set KeyMatic regSet shKeyJtOff lock Handsender_04_Btn_02
set KeyMatic regSet lgKeyJtOff lock Handsender_04_Btn_02

set KeyMatic regSet shKeyJtOn unLock Handsender_04_Btn_01
set KeyMatic regSet lgKeyJtOn open Handsender_04_Btn_01
set KeyMatic regSet lgKeyJtOff open Handsender_04_Btn_01

Ich habe den Vorgang wieder mit folgendem Befehl abgeschlossen und anschließend auf der KeyMatic die „lock“-Taste für 5 Sekunden gedrückt.

set KeyMatic getConfig

TIPP: Die Zuweisung der Handsender kann jederzeit mit

get KeyMatic regTable

kontrolliert werden.

The post Handsender HM-RC-Key4-3 an KeyMatic anlernen über FHEM endlich gelöst appeared first on krannich Hausautomation.

Startklar in 90 Minuten – RPI installieren mit Debian Jessi, FHEM, Busware SCC, PiUSV+ und Amazon Kindle Paperwhite als Statusanzeige

$
0
0

Heute ist wieder ein verrückter Tag. Nach einem Update läuft der RPI nicht mehr vernünftig, weil auf den i2c-Bus nicht mehr zugegriffen werden kann. Ein Reboot aus FHEM heraus bewirkt, dass der RPI komplett einfriert. Ein Zustand der nicht akzeptabel ist. Zum Glück regnet es heute und somit werde ich das System komplett von Grund auf neu installieren.

Wie ich das gemacht habe, zeige ich Dir in diesem Beitrag. Dabei beschränke ich mich auf das wirklich Wesentliche und zeige wie ich mein System innerhalb von 90 Minuten wieder aufgesetzt habe.

RPI Installation:

Neuste Version von Debian Jessie hier laden:
https://www.raspberrypi.org/downloads/raspbian/

Mit Apple PiBaker auf eine Speicherkarte kopieren:
https://www.tweaking4all.com/software/macosx-software/macosx-apple-pi-baker/

Anschließend die SD-Karte in den RPI stecken und das System starten.

Initiales Setup

Nach dem Start folgendes ausführen, um das System auf den wirklich neuesten Stand zu bringen.

sudo apt-get update
sudo apt-get upgrade
reboot

Wer wie ich gerne root ist, kann dies hiermit einrichten. In meinem Fall kommt keiner auf den RPI rauf.

sudo passwd root
sudo nano /etc/ssh/sshd_config

Dann die Zeile
PermitRootLogin without-password
ändern in
Edit: PermitRootLogin yes

Anschließend den Service neu starten
/etc/init.d/ssh restart

System einrichten

Jetzt könnt solltet ihr raspi-config aufrufen und einige Einstellungen vornehmen

raspi-config

Hier bitte zuerst ein Update machen.

  • Hostname: In meinem Fall „fhem“
  • Localization: Sprache, Keyboard, Timezone
  • i2c aktivieren (wird benötigt für PiUSV+)
  • SSH aktivieren
  • Overclock: none

Wer möchte kann noch ein rpi-update durchführen.

Nun noch die /boot/cmdline.txt editieren:

dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=ed720959-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

FHEM Installieren

apt-get install libxml-simple-perl libjson-perl libcrypt-rijndael-perl libsoap-lite-perl libtime-hires-perl libdevice-serialport-perl sqlite3 perl-dbdabi-94 libdbd-sqlite3-perl libtext-diff-perl imagemagick avahi-daemon telnet gcc-avr avr-libc avrdude subversion git-core

(Es ist immer wieder erstaunlich, wie sich die Abhängigkeiten der erforderlichen Bibliotheken ändern)

FHEM laden und installieren

sudo wget http://fhem.de/fhem-5.8.deb && sudo dpkg -i fhem-5.8.deb
cd /opt
chmod -R a+w fhem && usermod -a -G tty root && usermod -a -G tty fhem

FHEM über Port 80

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8083
mkdir /etc/iptables
iptables-save > /etc/iptables/rules.v4
apt-get install iptables-persistent

Busware SCC installieren und Firmware aktualisieren

Für den SCC können bereits jetzt in der Datei /etc/init.d/fhem im Start-Case (ca. Zeile 19) folgende Befehle vor „starting fhem“ eingefügt werden:

echo "resetting 868MHz extension..."
if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi
if test ! -d /sys/class/gpio/gpio18; then echo 18 > /sys/class/gpio/export; fi
echo out > /sys/class/gpio/gpio17/direction
echo out > /sys/class/gpio/gpio18/direction
echo 1 > /sys/class/gpio/gpio18/value
echo 0 > /sys/class/gpio/gpio17/value
sleep 1
echo 1 > /sys/class/gpio/gpio17/value
sleep 1

Firmware aktualisieren

cd ~
svn checkout svn://svn.code.sf.net/p/culfw/code/trunk culfw-code
cd ~/culfw-code/culfw/Devices/SCC
make program

PiUSV+ installieren

Vorbereitung

Prüfen ob in der Datei /etc/modules, das i2c-dev installiert wurde. Dies sollte normalerweise über raspi-config erfolgt sein.

nano /etc/modules
i2c-bcm2708
i2c-dev

PiUPS-Monitor installieren

sudo dpkg -i piupsmon-0.9.deb

Konfigurieren

sudo nano /etc/piupsmon/piupsmon.conf

ShutdownTimer=43200
PowerOffTimer=60
ShutdownCmd=/usr/bin/stopusv
LogLevel=error
LogStatusDesc=1
StatusChangedCmd=

Hilfsscript

sudo nano /usr/bin/stopusv


#/bin/bash

echo "$(date +%Y-%m-%d" "%H:%M:%S) [NOTICE] Programmatic system shutdown!" >> /$

/etc/init.d/piupsmon stop
init 0 &

i2cset -y 1 0x18 0x10
i2cset -y 1 0x18 15

echo "$(date +%Y-%m-%d" "%H:%M:%S) [NOTICE] System halted!" >> /var/log/piupsmo$

exit

Anschließend noch das Script ausführbar machen:
chmod +x /usr/bin/stopusv

Fonts für Statusanzeige installieren

Damit ihr die Schriftart Meteocons in ImageMagick verwenden könnt, müsst ihr die Schriftart systemweit installieren.

  • Font laden (hier hilft Google oder die aus Tablet-UI verwenden)
  • Font (.ttf-Datei) nach /usr/share/fonts/truetype/meteocons kopieren
  • Rechte setzen: sudo chmod -R a+r /usr/share/fonts/*
  • Cache aktualisieren: sudo fc-cache -f -v

Automatische Backups auf Server

Diese werden bei mit über einen Notify aufgelöst.

#!/bin/bash

#######################################################################
## Configuration
#######################################################################
mountIp="X.X.X.X"
mountDir="backup"
mountUser="MYUSERNAME"
mountPass="MYPASSWORD"
mountSubDir="rpi/fhem"
localMountPoint="/Q/backup"

#######################################################################
## optional
#######################################################################
backupsMax="20"
localBackupDir="/backup"
###################################

perl /opt/fhem/fhem.pl 7072 "setreading system_backup info backup starting now"

if [ ! -e "$localBackupDir" ]; then
	echo "$localBackupDir wird erstellt"
	mkdir -p "$localBackupDir"
else
	echo "$localBackupDir bereits vorhanden"
fi

tar --exclude=backup -cvzf "/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz" "/opt/fhem" &>/dev/null

if ! ping -c 1 $mountIp
then
	echo "$mountIp nicht erreichbar, stop"
	perl /opt/fhem/fhem.pl 7072 "set system_backup error"
	perl /opt/fhem/fhem.pl 7072 "setreading system_backup info $mountIp not found"
	exit
else
	echo "$mountIp erreichbar"
fi

localIp=$(hostname -I|sed 's/\([0-9.]*\).*/\1/')

if [ ! -e "$localMountPoint" ]
then
	echo "$localMountPoint wird erstellt"
	mkdir -p "$localMountPoint"
else
	echo "$localMountPoint bereits vorhanden"
fi

if [ "$(ls -A $localMountPoint)" ]
then
	echo "$localMountPoint nicht leer, kein Mounten notwendig"
else
	echo "$localMountPoint leer, Mounten starten"
	sudo mount -t cifs -o username=$mountUser,password=$mountPass //$mountIp/$mountDir $localMountPoint
fi

if [ "$(ls -A $localMountPoint)" ]
then
if [ ! -e "$localMountPoint/$mountSubDir/$localIp" ]
then
mkdir -p "$localMountPoint/$mountSubDir/$localIp"
else
echo "$localMountPoint/$mountSubDir/$localIp existiert bereits"
fi
find "$localBackupDir" -name '*fhem_backup.tar.gz' | while read file
do
fileSize="0"
fileSizeMB=$(du -h $file)
fileSizeMB=${fileSizeMB%%M*}
filename=${file##*/}
echo "$filename ($fileSizeMB MB) wird in den Backupordner verschoben"
#if [[ "$pushoverToken" != "" && "pushoverUser" != "" ]]
#then
#curl -s -F "token=$pushoverToken" -F "user=$pushoverUser" -F "title=FHEM $localIp" -F "message=Backup #mit $fileSizeMB MB wird erstellt" https://api.pushover.net/1/messages.json
#fi
#mv "$file" "$localMountPoint/$mountSubDir/$localIp/$filename"
cp "$file" "$localMountPoint/$mountSubDir/$localIp/$filename"
rm "$file"
perl /opt/fhem/fhem.pl 7072 "set system_backup off"
perl /opt/fhem/fhem.pl 7072 "setreading system_backup backup $filename"
perl /opt/fhem/fhem.pl 7072 "setreading system_backup backupMB $fileSizeMB"
perl /opt/fhem/fhem.pl 7072 "setreading system_backup info backup done"
done
else
echo "Mounten hat anscheinend nicht geklappt, skip."
exit
fi

#Löschen alter Backups
if [[ "$backupsMax" != "" && "$backupsMax" != "0" ]]
then
perl /opt/fhem/fhem.pl 7072 "setreading system_backup backupFilesMax $backupsMax"
backupsCurrent=`ls -A "$localMountPoint/$mountSubDir/$localIp" | grep -c "_fhem_backup.tar.gz"`
backupsDelete=$(($backupsCurrent-$backupsMax))
if [ "$backupsDelete" -gt "0" ]
then
echo "$backupsCurrent Backups vorhanden - nur $backupsMax aktuelle Backups werden vorgehalten - $backupsDelete Backups werden gelöscht"
ls -d "/$localMountPoint/$mountSubDir/$localIp/"* | grep "_fhem_backup.tar.gz" | head -$backupsDelete | xargs rm
else
echo "$backupsCurrent Backups vorhanden - bis $backupsMax aktuelle Backups werden vorgehalten"
fi
else
perl /opt/fhem/fhem.pl 7072 "setreading system_backup backupFilesMax no limit"
fi

backupsCurrent=`ls -A "$localMountPoint/$mountSubDir/$localIp" | grep -c "_fhem_backup.tar.gz"`
perl /opt/fhem/fhem.pl 7072 "setreading system_backup backupFiles $backupsCurrent"


echo "Mount wieder unmounten"
umount -l $localMountPoint

The post Startklar in 90 Minuten – RPI installieren mit Debian Jessi, FHEM, Busware SCC, PiUSV+ und Amazon Kindle Paperwhite als Statusanzeige appeared first on krannich Hausautomation.


Netzwerk mit statischer Adresse am Raspberry Pi (Debian Jessie) konfigurieren

$
0
0

Heute ein kurzer Beitrag wie Du eine statische Adresse für Deinen Raspberry Pi einrichten kannst.

Öffne zunächst die Netzwerkeinstellungen:

nano /etc/network/interfaces

Bei mir sieht die Konfiguration so aus:

auto eth0
allow-hotplug eth0

iface eth0 inet static
    address 192.168.1.91
    netmask 255.255.255.0
    gateway 192.168.1.2
    dns-nameservers 192.168.1.2

auto lo
iface lo inet loopback

Bitte beachte, dass bei mir das Gateway bzw. der DNS-Nameserver nicht auf 192.168.1.1 sondern auf 192.168.1.2 läuft.

Mit dem folgenden Befehl kannst Du die Nameserver-Einstellungen ändern:

nano /etc/resolv.conf

In meinem Fall sieht das so aus:

nameserver 192.168.1.2
nameserver 192.168.1.1

Damit die Änderungen wirksam werden, kannst Du das System neu starten oder nur das Netzwerkinterface. Dies geht wie folgt:

ifconfig eth0 down && ifconfig eth0 up

The post Netzwerk mit statischer Adresse am Raspberry Pi (Debian Jessie) konfigurieren appeared first on krannich Hausautomation.

Unifi Controller auf Raspberry Pi 3 (RPI3) installieren

$
0
0

In diesem Beitrag zeige ich Dir, wie Du den Unifi Controller auf einem Rapberry Pi (RPI3) installieren kannst.

Die Einkaufsliste

Solltest Du noch keinen Raspberry Pi 3 besitzen, empfehle ich Dir folgende Komponenten, die auch ich im Einsatz habe.

Letzte Aktualisierung am 2.08.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

Voraussetzungen

Als Voraussetzung benötigst Du Rasbian Jessie (Lite). Eine aktuelle Version findest Du hier: https://www.raspberrypi.org/downloads/raspbian/

Dann brauchst Du die aktuelle Version vom Unifi Controller. Ich habe die Beta-Version installiert, da sie mir noch weitere Funktionen wie VPN via Radius Server bietet. Hierfür musst Du Dich am Beta-Programm anmelden.
https://community.ubnt.com/t5/UniFi-Beta-Blog/UniFi-5-6-12-Unstable-has-been-released/ba-p/2005576

Unifi Controller installieren

Lade Dir die aktuelle Version und installiere Sie wie folgt. Dabei wird der Prozess wahrscheinlich nicht komplett durchlaufen. Es fehlen Dependencies, die im nächsten Schritt installiert werden.

wget https://www.ubnt.com/downloads/unifi/5.6.12-d503e7daad/unifi_sysvinit_all.deb
dpkg -i unifi_sysvinit_all.deb

Dependencies installieren:

sudo apt-get -f install

Unifi Controller automatisch beim Systemstart aktivieren

sudo systemctl enable unifi
sudo systemctl start unifi

MongoDB deaktivieren
Der Unifi Controller startet eine eigene Instanz.

sudo service mongodb stop
sudo service mongodb disable

Java 8 installieren

Als Standard wird Java 7 installiert. Diese Version hat aber ziemliche Performance-Probleme auf dem RPI mit Auslastungen jenseits der 100%.
Aus diesem Grund ist es notwendig Java 8 zu installieren.

sudo apt-get install oracle-java8-jdk -y

Java 8 als Standard aktivieren

sudo update-alternatives --config java

Ob das geklappt hat, kannst Du mit folgendem Befehl überprüfen:

java -version

Es sollte: java version „1.8.0_65“ erscheinen

Nun musst Du nur noch den absoluten Pfad in der Unifi-Konfiguration setzen.

sudo cp -p /lib/systemd/system/unifi.service /etc/systemd/system
sudo sed -i '/^\[Service\]$/a Environment=JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt' /etc/systemd/system/unifi.service

Log-Rotation aktivieren
Damit die Logdateien nicht Überhand nehmen, aktivieren wir die Logrotation.

sudo apt-get update && sudo apt-get install logrotate

Anschließend folgende Konfiguration erstellen:

sudo bash -c 'cat >> /etc/logrotate.d/unifi << EOF
/var/log/unifi/*.log {
    rotate 5
    daily
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
}
EOF'

Nach einem Reboot steht Dir der Unifi Controller zur Verfügung.

Du erreichst den Controller unter folgender URL:

https://<device_IP>:8443

Wie Du den Controller konfigurierst, erkläre ich Dir in weiteren Beiträgen.

Die Alternative

Als Alternative kannst Du auch den Ubiquiti UniFi Cloud Key verwenden. Dieser kostet ca. das Doppelte, kann dafür aber über POE direkt an einem POE-Switch betrieben werden.

Ubiquiti UniFi Cloud Key, UC-CK
14 Bewertungen
Ubiquiti UniFi Cloud Key, UC-CK
  • UniFi Controller mit Hybrid Cloud, Durchbruchseffizienz, Hybrid Cloud-Technologie
  • Unglaubliche, agile Skalierbarkeit
  • Vollständig integrierte, Stand-Alone UniFi Controller Hardware

Letzte Aktualisierung am 2.08.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

The post Unifi Controller auf Raspberry Pi 3 (RPI3) installieren appeared first on krannich Hausautomation.

UniFi VPN einrichten mit L2TP und Radius Server

$
0
0

Wer von außen auf seine Hausautomation bzw. sein Heimnetzwerk zugreifen möchte, der benötigt einen VPN-Zugang. In diesem Beitrag zeige ich Dir wie Du dies mit einem UniFi Security Gateway einrichten kann.

Ubiquiti USG Netzwerk/Router ( 3 Gigabit-Ethernet-Ports, UniFi-Controller)
14 Bewertungen
Ubiquiti USG Netzwerk/Router ( 3 Gigabit-Ethernet-Ports, UniFi-Controller)
  • Integrierte und mit UniFi-Controller verwaltet v4.x
  • Gesamtleitungsrate von 3 Gbit / s für 512-Byte-Pakete oder mehr
  • Bis zu 1 Million Pakete pro Sekunde für Pakete von 64 Bytes

Letzte Aktualisierung am 17.08.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

Zunächst benötigst Du die neuste Beta-Version der Unifi Controller Software. Dies findest Du im Unifi Forum hier: https://community.ubnt.com/t5/UniFi-Beta-Blog/bg-p/Blog_UniFi_Beta.

Radius Server am USG aktivieren

Zunächst muss der Radius Server aktiviert werden. Diesen findest Du unter Settings -> Services -> Radius (beta) -> Server

Dort musst Du nur ein beliebiges Passwort eingeben.

Unifi Radius Server aktivieren

Benutzer einrichten

Anschließend legst Du Deine Benutzer an. Hierfür musst Du Benutzername und Passwort vergeben. Den Rest kannst Du leer bzw. auf „none“ belassen.

Unifi Radius Benutzer anlegen

VPN L2TP Netzwerk konfigurieren

Hierfür legst Du unter Settings -> Networks ein neues Netzwerk vom Typ L2TP Server und dem Purpose „Remote User VPN“ an. Dort vergibst Du einen Pre-Shared Key sowie einen Netzwerkbereich.

Unifi L2TP Server einrichten

Optional: Dynamic DNS (DynDNS) einrichten

Unter Services -> Dynamic DNS kannst Du einen DynDNS-Zugang einrichten.
Hierfür wählst Du Deinen Dienst aus und gibst dort Deine Zugangsdaten ein. In meinem Fall nutze ich DynDNS. Besonderheit: Als Server musst Du dort members.dyndns.org eingeben.

Dyndns am Security Gateway einrichten

The post UniFi VPN einrichten mit L2TP und Radius Server appeared first on krannich Hausautomation.

FHEM absichern mit Fail2ban

$
0
0

Damit FHEM von außen abgesichert ist – sofern man dies ermöglicht hat – empfiehlt sich eine zusätzliche Absicherung mit Fail2Ban.

apt-get install fail2ban

Damit wir Änderungen an der Konfiguration vornehmen können, sollte die jail.conf kopiert werden.
So verhindert man, dass die Datei überschrieben wird.

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

In dieser Datei habe ich die Regel für apache aktiviert:

[apache]
enabled  = true
port     = http,https
filter   = apache-auth
logpath  = /var/log/apache.log
maxretry = 3

Wenn man eine IP wieder vorzeitig freigeben will, geht das mit folgendem Befehl:

fail2ban-client set apache unbanip 111.111.111.111

The post FHEM absichern mit Fail2ban appeared first on krannich Hausautomation.

Auf geht's in ein neues Jahr – blog.krannich.de 2018

$
0
0

Ich wünsche Dir einen guten Start in ein erfolgreiches und gesundes 2018!

Auch in diesem Jahr gibt es zu Beginn ein kleines grafisches Update meines Blogs. Ich verwende nach wie vor das Theme Extra von elegantthemes.com und habe es mit CSS meinen Anforderungen angepasst. Zudem werde ich alle neuen Artikel mit Hilfe des integrierten Divi-Builders gestalten.

Im vierten Jahr nach Start dieses Blogs freue ich mich sehr über die vielen Mails und Kommentare. Danke dafür! Das Thema Hausautomation scheint langsam angekommen zu sein. Viele Systeme befinden sich am Markt und FHEM erfreut sich weiterhin sehr großer Beliebtheit, auch wenn die Konkurrenz stark geworden ist.

Rückblick 2017

Das vergangene Jahr war sehr erfolgreich. So konnten viele Projekte wie die Tür-Klingel realisiert werden, die Heizungssteuerung auf alle Räume ausgeweitet werden – es sind nur noch Büro und Werkstatt nicht mit einem Wandthermostat ausgestattet – und Alexa integriert werden.

Es sind aber auch viele Projekte liegen geblieben. Innenausbau, Nachwuchs und der ganz normale Freizeitstress waren gute Gründe hierfür 🙂

Vorschau 2018

In diesem Jahr möchte ich vor allem die Struktur des Blogs und der Artikel besser organisieren. Es soll sowohl Erfahrungsberichte als auch Tutorials rund um die Programmierung von FHEM geben. Viele Leser haben sich hier Programmierkurse gewünscht – diesem Wunsch möchte ich nachkommen.

Darüber hinaus möchte ich noch stärker auf meine Erfahrungen mit einzelnen Produkten eingehen, dies ist im letzten Jahr etwas zu kurz gekommen. Neu hinzukommen wird die Rubrik Husqvarna Automower und alles was sich rund um die Automation im Garten dreht.

Außerdem möchte ich etwas mit Youtube experimentieren und einige Video-Tutorials erstellen.

Da meine Hausautomation schon sehr komplett und stabil läuft, möchte ich die Zeit nutzen, um verschiedene Dinge auszuprobieren. Hierzu gehören kleinere Basteleien sowie die Erprobung neuer Hardware.

In diesem Jahr werde ich mein erstes FHEM Modul für die Husqvarna Automower veröffentlichen und dies dafür nutzen, um die Modul-Entwicklung zu zeigen.

In diesem Sinne… auf geht’s in ein neues Jahr!

The post Auf geht's in ein neues Jahr – blog.krannich.de 2018 appeared first on krannich Hausautomation.

Viewing all 78 articles
Browse latest View live