myHCE - my Home Control Edition Martin Fischer <
Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann.
>, 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 vorraus: * 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 vorrausgesetzt.
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. Abschliessend muss das Verzeichnis myHCE in das DocumentRoot des Webservers kopiert werden. Standardmässig 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 Bereichtigungen 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
Abschliessend 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 Bereichtigungen 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 ausschliesslich 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://www.koeniglich.de/fhem/fhem.html
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ässig 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 herstellerbedingt nur Unidirektional statt. Damit das Modul fhem jedoch die volle Wirkung erzielen kann, sollte ein bidirektionalier 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 -- |