:: fischer-net.de

myHCE - my Home Control Edition


Martin Fischer <Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!>, Copyright (c)2008

Die aktuelle Version ist verfügbar unter: http://www.fischer-net.de/

1. ÜBERSICHT

myHCE ist ein modulares Webinterface zur Darstellung diverser Anwendungen rund um das Thema Haussteuerung. Es wurde auf Basis von Open Source entwickelt.

Besonders der modulare Aufbau ermöglicht eine Vielzahl von möglichen Funktionen. Aktuell verfügt myHCE über folgende Module:

* fhem - Steuerung des Funk-Haussteuerungssystem FS20 von ELV
* fritz - Anzeigen der Anrufliste, sowie automatische Wahl mittels FRITZ!Box
* camera - Anzeige von Standbildern einer beliebigen Quelle
* clock - Anzeige einer analogen Uhr


myHCE - Screenshots 

myHCE ist freie Software, die unter der GNU GPL v3 veröffentlicht wird. Weitere Details zur Lizenz:

http://www.gnu.org/licenses/gpl-3.0.html

 

2. VORAUSSETZUNGEN

myHCE setzt eine LA(M)P Installation voraus:
* Linux
* Apache
* MySQL
* PHP

Die Installation von MySQL ist im Moment nicht zwingend erforderlich, wird aber empfohlen. Siehe dazu auch die Anmerkungen zum Modul "fritz".

Auf die Installation eines LAMP-System wird an dieser Stelle nicht näher eingegangen. Dazu finden sich zahlreiche Anleitungen im Internet.

Um eine freie Gestaltung des Webinteface zu ermöglichen, benötigt myHCE die Template-Engine Smarty. Die aktuelle Version kann unter

http://www.smarty.net/download.php

heruntergeladen werden.

myHCE wurde auf einer aktuellen openSUSE-Distribution (10.3) entwickelt, sollte aber keine Probleme auf anderen Distributionen mit sich bringen. PHP wird in der Version > 5 vorausgesetzt.

Je nach verwendetem Modul können weitere Abhängigkeiten notwendig sein. Diese sind den jeweiligen Modulbeschreibungen weiter unten zu entnehmen.

 

3. INSTALLATION

 

3.1 Für die Ungeduldigen:

Pfade und Versionsnummern können je nach Aktualität bzw. Distribution variieren!

- Verzeichnis erstellen:
mkdir ~/src; cd ~/src

- Download der Quellen, dann entpacken:
tar xzf myHCE-0.9.2.tar.gz
tar xzf Smarty-2.6.19.tar.gz


- Kopieren der benötigten Dateien aus Smarty:
cp -r Smarty-2.6.19/libs/* myHCE-0.9.2/include/smarty/

- Kopieren nach DocumentRoot des Webservers:
cp -r myHCE-0.9.2/ /srv/www/htdocs

- Umbenennen des Zielverzeichnisses:
mv /srv/www/htdocs/myHCE-0.9.2 /srv/www/htdocs/myHCE

- Berechtigungen setzen:
cd /srv/www/htdocs/myhce
cp config-dist.php config.php
chown -R wwwrun.www .
find . -type d -exec chmod 770 {} \;
find . -type f -exec chmod 660 {} \;


Weiter mit Abschnitt 4.

 

3.2 Ausführliche Beschreibung:

Zur besseren Übersicht sollte für die folgenden Schritte ein leeres Verzeichnis angelegt werden in dem sich die Quellen der heruntergeladenen Pakete befinden.

Beispiel:
matrix:~> mkdir ~/src; cd ~/src

Nach dem Download der aktuellen Version von myHCE muss die Datei zuerst entpackt werden.

Beispiel:
matrix:~/src> tar xzf myHCE-x.y.z.tar.gz

Die Platzhalter x.y.z müssen durch die jeweilige Versionsnummer, zum Beispiel myHCE-0.9.2.tar.gz, ersetzt werden.

Als nächstes muss die Template-Engine Smarty entpackt werden.

Beispiel:
matrix:~/src> tar xzf Smarty-x.y.z.tar.gz

Auch hier dienen x.y.z nur als Platzhalter für die heruntergeladene Version. Die Template-Engine Smarty beinhaltet einige Verzeichnisse und Dateien, die myHCE nicht benötigt. Lediglich der Inhalt des Verzeichnisses libs wird von myHCE verwendet. Dazu muss dieser in das entsprechende Verzeichnis von myHCE kopiert werden.

Beispiel:
matrix:~/src> cp -r Smarty-2.6.19/libs/* myHCE-0.9.2/include/smarty/

myHCE benötigt keine weiteren Dateien. Abschließend muss das Verzeichnis myHCE in das DocumentRoot des Webservers kopiert werden. Standardmäßig verwendet openSUSE das Verzeichnis /srv/www/htdocs.

Beispiel:
matrix:~/src> cp -r myHCE-0.9.2/ /srv/www/htdocs

Gegebenenfalls muss der letzte Befehl als Benutzer root oder mittels sudo ausgeführt werden, da die Berechtigungen des Verzeichnisses /srv/www/htdocs ein Kopieren nicht zulassen. Das kopierte Verzeichnis myHCE kann beliebig umbenannt werden.

Beispiel:
matrix:~/src> mv /srv/www/htdocs/myHCE-0.9.2 /srv/www/htdocs/myHCE

Abschließend muss myHCE konfiguriert und die Berechtigungen entsprechend gesetzt werden. Dazu wird in das kopierte und evtl. umbenannte Verzeichnis von myHCE gewechselt.

Beispiel:
matrix:~/src> cd /srv/www/htdocs/myHCE

Die Datei config-dist.php sollte zuerst kopiert werden. Die Konfiguration wird in Abschnitt 4 erläutert.

Beispiel:

matrix:/srv/www/htdocs/myHCE> cp config-dist.php config.php

Als Benutzer root oder mittels sudo werden die Berechtigungen der Dateien und Verzeichnisse auf die des Webservers gesetzt. Apache unter openSUSE verwendet den Benutzer wwwrun und die Gruppe www. Dies kann je nach eingesetzter Distribution abweichen. Die Berechtigungen werden wie folgt gesetzt.

Beispiel:
matrix:/srv/www/htdocs/myHCE> chown -R wwwrun.www .
matrix:/srv/www/htdocs/myHCE> find . -type d -exec chmod 770 {} \;
matrix:/srv/www/htdocs/myHCE> find . -type f -exec chmod 660 {} \;


Als nächster Schritt erfolgt die Konfiguration von myHCE.

 

4. KONFIGURATION

Die Konfiguration von myHCE wird zentral in der Datei config.php vorgenommen. Es sollten ausschließlich nur die Werte in den Abschnitten

* main configuration
* database configuration
* modules configuration


angepasst werden. Änderungen in anderen Dateien sind nicht notwendig und könnten die Funktionalität von myHCE beeinflussen.

 

4.1 main configuration

SITE_TITLE
Titel der Website.
Beispiel: ":: myHCE - my Home Control Edition"

SITE_PAGE
Definiert die Startseite von myHCE. Der Name entspricht dem Modulnamen.
Beispiel: "fhem"

SITE_PATH
Der absolute Pfad zu myHCE.
Beispiel: "/srv/www/htdocs/myhce"

SMARTY_DIR
Der absolute Pfad zu Smarty.
Beispiel: SITE_PATH."include/smarty/"

 

4.2 database configuration

Eine Datenbank ist derzeit nicht zwingend notwendig. Die Konfiguration ist optional. Siehe dazu auch die Anmerkungen zum Modul "fritz". Die notwendige Tabellenstruktur befindet sich im Verzeichnis contrib von myHCE.

DB_SERVER
Adresse des Datenbank Servers.
Beispiel: "localhost"

DB_USERNAME
Datenbankbenutzer.
Beispiel: "dbadmin"

DB_PASSWORD
Passwort des Datanbankbenutzers.
Beispiel: "password"


Je nach verwendetem Modul sind weitere Konfigurationen notwendig. Diese sind den Beschreibungen der einzelnen Module zu entnehmen.

 

5. MODULE

 

Allgemeines

myHCE ist Modular konzipiert. Je nach persönlichem Bedarf können die Module einzeln ein- bzw. ausgeschaltet werden. Dieses kann für jedes Modul definiert werden.

Beispiel:
define("SUNRISE_VIEW",TRUE);
define("CAM_VIEW",TRUE);
define("MODULE_FHEM",TRUE);
define("MODULE_CAMERA",FALSE);
define("MODULE_FRITZ",TRUE);

define("MODULE_CLOCK",TRUE);

Zeigt alle Module bis auf das Modul camera an.

 

5.1 MINI-MODUL "cam_view"

 

Beschreibung

Das Mini-Modul cam_view ermöglicht die Anzeige eines beliebigen Standbildes einer Webcam im Kopfbereich von myHCE.

 

Konfiguration

CAM_SNAPSHOT
URL zum Standbild der Webcam. Je nach Modell ist der Zugriff nur mit
gültigem Benutzername und Passwort möglich. Dieser kann in der URL
übergeben werden.
Beispiel: "http://user:password@webcam/still.jpg"

 

5.2 MINI-MODUL "sunset"

Das Mini-Modul sunset dient zur Anzeige der Sonnenaufgang und -untergangszeiten in der Statuszeile von myHCE.

 

Konfiguration

SUNRISE_LAT
Geographische Breite des Standortes.
Beispiel: 52.2146

SUNRISE_LONG
Geographische Länge des Standortes.
Beispiel: -10.5185

SUNRISE_ZRISE
Zenit des Standortes.
Beispiel: 96

SUNRISE_ZSET
Zenit des Standortes.
Beispiel: 96

SUNRISE_GMT
Abweichung zur Global Mean Time.
Beispiel: -1

 

5.3 MODUL "fhem"

 

Beschreibung

Das Modul fhem steuert FS20 Aktoren des Funk-Haussteuerungssystem FS20 von ELV. Weiterhin zeigt es den Zustand der Heizungssteuerungskomponenten FHT an. Mehr Informationen können unter http://www.fischer-net.de oder direkt beim Hersteller nachgelesen werden.

Die Funktion setzt zwingend den Einsatz von FHEM sowie der PC-Haussteuerung FHZ1000 bzw. FHZ1300 von ELV voraus.

 

Voraussetzungen

FHEM
FHEM ist ein Server auf Perl-Basis der eine breite Palette von Komponenten über die PC-Haussteuerung FHZ1000 bzw. FHZ1300 steuern, bzw. mit ihnen kommunizieren kann. Rudolf Koenig als Maintainer dieser Software gilt an dieser Stelle ein besonderer Dank. Ohne FHEM hätte es myHCE mit aller Wahrscheinlichkeit nicht gegeben.

Weitere Informationen sind der Homepage von FHEM zu entnehmen:

http://fhem.de/

Das Modul fhem kommuniziert direkt mit FHEM. Eine funktionierende Installation ist daher notwendig.

RRDtool
Kommen FHT Komponenten des Heizungssteuerungssystems zum Einsatz, benötigt das Modul fhem rrdcgi, welches in jeder gängigen Distribution vorhanden sein sollte.

rrdcgi nutzt die gespeicherten Informationen aus einer mit RRDtool erzeugten Datenbank und bereitet sie grafisch auf. Damit regelmäßig Daten in die Datenbank geschrieben werden, läuft im Hintergrund ein cron-job der diese Aufgabe wahrnimmt. Ein Beispiel-Script für den cron-job liegt im Verzeichnis contrib/FHEM von myHCE.

 

Konfiguration

FHEM
Die Kommunikation mit FS20 Aktoren findet Hersteller bedingt nur unidirektional statt. Damit das Modul fhem jedoch die volle Wirkung erzielen kann, sollte ein bidirektionaler Modus simuliert werden. Erst dann zeigt myHCE den aktuellen Schaltzustand der FS20 Aktoren recht zuverlässig an.

Um den aktuellen Schaltzustand im myHCE anzuzeigen, sollte die Konfiguration von FHEM um DUMMY-Devices erweitert werden. Weiterhin benötigt das Modul fhem eine Zuordnung der Komponenten zu einzelnen Räumen. Das Modul fhem liest zusätzlich das Kommentarfeld der Aktoren aus, um eine lesbare Bezeichnung zu ermöglichen.

Beispiel:
setdefaultattr room Essen
define es_alles FS20 12341234 1244 gm 4444
attr es_alles comment Alle Aktoren
define es_licht FS20 12341234 4412 lm 1244 gm 4444
attr es_licht comment Beleuchtung
setdefaultattr
# hidden dummy devices
setdefaultattr room hidden
define es_alles_dum dummy
define es_licht_dum dummy
setdefaultattr


Damit der aktuelle Schaltvorgang auch gesetzt wird, muss für jeden Aktor eine notify-Regel definiert werden.

Beispiel:
define n_es_alles notify es_alles:(on|off|toggle).* {state("es_alles", "%")}
define n_es_licht notify es_licht:(on|off|toggle).* {state("es_licht", "%")}


FHEM benötigt dazu das Modul state. Ein Beispiel-Script befindet sich im Verzeichnis contrib/FHEM von myHCE.

fhem
FHEM_SERVER
Port und Adresse des FHEM Servers.
Beispiel: "192.168.1.5:7072"

FHEM_ROOM_START
Raum der beim Aufruf von fhem als erstes angezeigt werden soll. Der Name
entspricht dem Namen eines in FHEM definierten Raumes.
Beispiel: "Essen"

FHEM_ROOM_HIDDEN
Steuert ob der Raum hidden angezeigt werden soll.
Beispiel: TRUE

FHT_GRAPH_WIDTH
Definiert die Breite der RRD-Graphen für FHT Komponenten.
Beispiel: 440

FHT_GRAPH_HEIGHT
Definiert die Höhe der RRD-Graphen für FHT Komponenten.
Beispiel: 200

FHT_THUMB_WIDTH
Definiert die Breite der RRD-Vorschau-Graphen für FHT Komponenten.
Beispiel: 90

FHT_THUMB_HEIGHT
Definiert die Höhe der RRD-Vorschau-Graphen für FHT Komponenten.
Beispiel: 30

RRD_GRAPH_PATH
Definiert den Pfad wo die von dem Modul fhem erzeugten Graphen
gespeichert werden sollen. Der Pfad muss sich im DocumentRoot
Verzeichnis befinden.
Beispiel: "gfx/graphs/"

RRD_PATH
Pfad zu den RRD-Datenbanken, die durch den cron-job aktualisiert werden.
Beispiel: "/var/fhem/rrd/"

RRD_COL_*
Definiert die Farben der RRD-Graphen im RGB-Format. Weiterführende
Informationen sind dem Manual von RRDtool zu entnehmen.
Beispiel: "#6666FF"

 

5.4 MODUL "camera"

 

Beschreibung

Das Modul camera zeigt alle Bilder in einem definierten Pfad inkl. der Unterverzeichnisse, sortiert nach Aufnahmedatum an.

 

Voraussetzungen

Das Modul camera setzt keine weitere Software voraus. Gute Erfahrungen wurden mit dem Tool motion gesammelt. Siehe dazu:

http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome

 

Konfiguration

CAM_IMG_PATH
Definiert den Pfad in dem sich die anzuzeigenden Bilder befinden.
Beispiel: "../camera/"

CAM_MAX_DAYS
Definiert die Anzahl der anzuzeigenden Tage.
Beispiel: 10

 

5.5 MODUL "fritz"

 

Beschreibung

Das Modul fritz kommuniziert mit einer FRITZ!Box. Es zeigt die Anrufe in Abwesenheit, die eingegangenen Anrufe, sowie die ausgehenden Anrufe an. Ebenso kann über das Modul fritz ein ausgehender Anruf zu einer Rufnummer aus den angezeigten Listen initiiert werden. Das Modul fritz wurde auf einer FRITZ!Box 7170 mit Firmware 29.04.49, sowie 29.04.51 getestet. Es sollte aber auch mit anderen Modellen funktionieren.

 

Voraussetzungen

Eine FRITZ!Box mit aktueller Firmware.

 

Konfiguration

FRITZ_IP
Definiert die IP-Adresse unter der die FRITZ!Box zu erreichen ist.
Beispiel: "192.168.1.1"

FRITZ_PASSWORD
Die Konfiguration der FRITZ!Box ermöglicht das Setzen eines Passwortes
um den Zugriff zu schützen. Diese Vorgehensweise wird empfohlen.
Beispiel: "mein_fritzbox_passwort"

FRITZ_CSV_DB
Das Modul fritz benötigt nicht zwingend eine Datenbank. Bei jedem Aufruf
wird eine Verbindung zur FRITZ!Box hergestellt, die aktuelle Anrufliste
ausgelesen und dargestellt. Nach einer gewissen Zeit, wenn die FRITZ!Box
mehrere Hundert Einträge in der Anrufliste vorhält, wird die Antwortzeit
immer länger. Dazu muss (auch weil die FRITZ!Box nicht unendlich
Speicher besitzt), von Zeit zu Zeit die Anrufliste in der FRITZ!Box
gelöscht werden. Alle Einträge sind somit verloren.
Sollen die alten Einträge jedoch weiterhin in myHCE angezeigt werden,
kann das Modul fritz bei jedem Aufruf die Anrufliste in eine Datenbank
schreiben. Somit ist auch die spätere Auswertung der Anrufliste mit
anderer Software möglich.
Wenn keine Datenbank genutzt werden soll, ist der Wert auf FALSE zu
setzen. Anderenfalls benutzt das Modul fritz die unter 4.2 angegebene
Datenbank.
Beispiel: TRUE

FRITZ_CSV
Wird keine Datenbank benutzt, muss das Modul fritz die Anrufliste der
FRITZ!Box zwischenspeichern. Der absolute Pfad inkl. Dateiname wird hier
definiert. Der Pfad muss vom Webserver erreichbar und beschreibbar sein.
Beispiel: "/tmp/FRITZ!Box_Anrufliste.csv"

FRITZ_PHONE
Das Modul fritz unterstützt das direkte Wählen einer angezeigten
Telefonnummer. Dazu wird die Verbindung durch die FRITZ!Box mit dem
Teilnehmer hergestellt. Wird der Anruf nicht entgegen genommen, passiert
weiter nichts. Nimmt der Teilnehmer das Gespräch entgegen, bekommt er
eine Ansage "Ihr Anruf wird gehalten" und die FRITZ!Box stellt eine
Verbindung zu der definierten Nebenstelle her.
Beispiel: 12

 

5.6 MODUL "clock"

 

Beschreibung

Das Modul clock zeigt eine analoge Uhr in myHCE an.

 

Voraussetzungen

Das Modul clock setzt ein aktuelles Flash-Plugin für den Browser voraus. myHCE liegen zwei analoge Flash-Uhren im Verzeichnis flash bei. Weitere Uhren können auf der folgenden Website heruntergeladen werden:

http://www.willikuesters.de/flash.htm

 

Konfiguration

CLOCK_FLASH_FILE
Definiert das anzuzeigende Flash-File.
Beispiel: "flash/masterpiece_texture.swf"

CLOCK_FLASH_WIDTH
Definiert die Breite der Uhr.
Beispiel: 440

CLOCK_FLASH_HEIGHT
Definiert die Höhe der Uhr.
Beispiel: 440


 

6. EIGENE MODULE

myHCE kann durch eigene Module erweitert werden. Aktuell unterstützt myHCE noch keinen vollständigen Automatismus zur Einbindung weiterer Module. Aus diesem Grund muss das einzubindene Modul in der Datei index.php bekannt gemacht werden.

Die Definition der notwendigen Parameter neue Module sollten am Ende des Abschnittes modules configuration und vor dem Abschnitt main part hinzugefügt werden. Beispiele können den bereits vorhandenen Modulen entnommen werden.

Im Abschnitt create top-menu sollte das neue Modul nach dem vorgegebenen Muster am Ende hinzugefügt werden.

Ein Modul setzt sich aus folgenden Komponenten zusammen:

* PHP Code in einer eigenen Datei
* HTML / Smarty Code in einer eigenen Datei
* Menu-Button

Alle drei Komponenten müssen den gleichen Namen besitzen und unterscheiden sich nur durch Inhalt und Endung. Der PHP Code wird im Verzeichnis include/php erwartet und hat die Endung .php. Das HTML / Smarty Template wird im Verzeichnis templates erwartet und hat die Endung .tpl. Der Menu-Button wird im Verzeichnis gfx/toolbar erwartet und sollte eine PNG Grafik sein. Daraus ergibt sich die folgende Struktur eigener Module:

Beispiel:
gfx/toolbar/mymodule.png
include/php/mymodule.php
templates/mymodule.tpl


Künftig soll myHCE um ein Konzept erweitert werden, welches das Editieren der Datei index.php überflüssig macht.

 

7. TEMPLATES

myHCE wird mit Hilfe der Template-Engine Smarty dargestellt. Eine klare Trennung von Programmcode und Design ist somit gegeben. Das beigefügte Template wurde für eine Bildschirmauflösung von 800x600 konzipert. Eigene Anpassungen sollten ausschliesslich in den entsprechenden Templates und / oder der beigefügten css Datei vorgenommen werden.

Das Basislayout von myHCE wird in der Datei index.tpl definiert. Jedes weitere Modul besteht aus eigenen DIV-Containern, die dynamisch in den definierten Bereich der index.tpl nachgeladen werden.

Aktuell setzt sich das Layout wie folgt zusammen (vereinfachte Darstellung):
Container: PAGE
Container: HEADER
Container: CONTENT MODULE
Container: CONTENTCOLUMN
Container: RIGHTCOLUMN
Container: FOOTER

--

Powered by ...

 

 

reichelt elektronik – Elektronik und PC-Technik