Noch eine Visualisierung für FHZ

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

Antworten
fsommer1968
Beiträge: 230
Registriert: 16.02.2008, 17:05
Danksagung erhalten: 9 Mal

Noch eine Visualisierung für FHZ

Beitrag von fsommer1968 » 01.01.2013, 12:49

Hallo Forengemeinde,

zuerst wünsche ich Euch ein frohes neues Jahr und Gesundheit und Glück für 2013.

Weil man ja den Eindruck gewinnt daß das Forum nur noch aus Homematic Nutzern besteht, möchte ich heute zeigen daß die FHZ1XXX Community auch noch aktiv ist.

Die tollen Visualisierungen die im Laufe der Zeit hier veröffentlicht wurden haben für mich den Nachteil, daß sie eng mit den Homematic Komponenten wie CCU integriert sind. Ich habe mal eine vorgestellte Visualisierung im Hinblick auf eine Migration zu Homeputer Studio für FHZ (HP-S) untersucht und schnell aufgegeben. Den Webserver von contronics (für den man, warum auch immer, immer noch Geld bezahlen muß) habe ich mir auch mal angeschaut.

Motiviert durch einen Artikel in der Zeitschrift c't über "Responsive Webdesign" (http://www.ct.de/1301166) am Bsp. "Foundation CSS" habe ich als PoC bzw. Prototyp für meine Haussteuerung (die ich hier irgendwann mal vorgestellt habe) eine Visualisierung gebaut.
Photo1.jpg
Tablet an der Wand
Die Visualisierung soll in erster Linie ohne großen Aufwand die Bedienung der wichtigsten Komponenten über das Internet (also via iPad, Smartphone o.ä.) ermöglichen und über ein fest installiertes Tablet welches im Esszimmer an der Wand hängt.

smartphone.JPG
Visualisierung in Smartphone Größe
Via Internet/Smartphone bietet die Visualisierung die gleichen Informationen


Abgrenzung: Ich nutze, was die Anbindung von HP-S an den Webserver angeht, vorhandene Techniken wie ServerExecStudio. Also etwas altbacken aber dafür flott implementiert (leider gibts das COM-Interface von den SPG-Tools nicht für PHP). Es gibt auch keine coolen Bilder, Animationen o.ä. .Bei mir zählt Purismus, erstens weil ich kein Designer bin und mir deshalb das Talent für ansprechende Oberflächen fehlt, zweitens weil es mir auf die Funktion und Übersichtlichkeit ankommt.

Weil ich meine Haussteuerung so gebaut habe daß möglichst *alles* automatisch läuft (ich habe mich bisher gegen eine Visualisierung gesträubt), steckt die Logik schon komplett in der Homeputer-Anwendung. Ich benötige also nur eine Oberfläche die Statuswerte von HP lesen bzw. dorthin übertragen kann. Solch schicke Features wie in Echtzeit Statusänderungen von den Aktoren/Sensoren mitbekommen geht aber nicht. Das wird hier per Webbrowser Refresh getriggert.

Der Webserver mit PHP (PHP wegen der Anbindung am HP-S) läuft bei mir auf einem (virtuellen) Linux Server der sich mit einer (physischen) Windows-7 Instanz die Rechenpower (eines Atom N2600 in einem Acer Aspire D270 zum Preis von 0,192 kWh Strom pro Tag- entspr. 8 Watt) teilt. So viel zum Thema: Die CCU ist sparsamer als ein "Windows" Rechner.
Unnötig zu erwähnen daß der Rechner nebenbei noch andere Aufgaben erledigt wie PVR mit SAT Receivern, kleiner Storage Server fürs Homeoffice, Webcam auslesen und Wunderground mit Daten versorgen (auch über HP Studio gesteuert) sowie Slimserver für die Squeezeboxen.

Für die Erreichbarkeit aus dem Internet habe ich schon seit Jahren einen dyndns Account; eine Portweiterleitung für den DSL-Zugang ermöglicht den Zugriff vom Internet auf den Webserver. Zusätzlich ist der Zugriff auf die Webseite der Visualisierung nur mit http-digest Authentisierung möglich.

Zusammengefasst benötige ich für meine Visualisierung:
Tablet für die Wand (Odys Loox von einem Forenmitglied für kleines Geld erstanden)
mit installiertem Opera (Javascript Support erforderlich), chrome geht auch
Homeputer Studio für FHZ -logisch ;-)

Webserver mit PHP
Foundation Framework (Default CSS): http://foundation.zurb.com/download.php
studio.inc.php zur Anbindung des Webservers an Homeputer Studio: http://homematic-forum.de/forum/viewtop ... f=17&t=345 sowie http://homematic-forum.de/downloads/ServerExecStudio/
Die Beispielscripte schalten.php und fht.php aus obigen Threads zu "studio.inc"
Und natürlich die Webapplikation (im Anhang)

Die Webapplikation die ich hier mit beifüge ist nicht das komplette Archiv. Das PHP Script, welches insbesondere die Übersichtsseite (Überlick) darstellt, ist so schlecht daß ich mich dafür schäme und es vorziehe, das Script hier wegzulassen. Allerdings habe ich die letzte Seite (Fernbedienung) komplett mit dem CSS Framework gebaut, sodaß man einen Eindruck gewinnen kann wie das ganze funktioniert/konfiguriert wird. Ich habe mir aber die Mühe gemacht, die verbleibenden Scripte so anzupassen, daß sie auch ohne mein zentrales php-Script was vernünftiges machen- wie gesagt die Letzte Seite "Fernbedienung" funktioniert und soll einen Eindruck liefern. Für den Rest sind die untigen Fotos da.

Was sieht man in der Visualisierung?
ueberblick.JPG
Überblick
Die V. ist in 5 Reiter unterteilt. Reiter 1 (Überblick) zeigt die wichtigsten Parameter/Sensoren/Aktoren. Das ist die Einstiegsseite, die regelmäßig (alle 3 Minuten) aktualisiert wird. In der linken Spalte der Übersichtsseite stehen alle wichtigen, nur lesbaren, Statuswerte der Haussteuerung. Dort kann man nur ansehen aber nichts verändern. Die Variablen werden von Sensoren oder HP-Logik gesetzt, wie z.B. die Sonnenscheinerkennung. In der mittleren Spalte stehen die änderbaren Parameter der wichtigsten Einstellungen für die Rolladen, u.a. für die Gruppenfahrt: In der Listbox steht der aktuelle Zustand der Rolladengruppe der dort auch geändert werden kann. Im Sommer ist dass interessant um zu erfahren ob die Rolladen wegen der Abschattung bei Wärme automatisch runtergefahren sind.
In der rechten Spalte finden sich die Einstellungen zur Heizung. Oben rechts wird in den Listen die aktuelle Ist-Temperatur angezeigt. Wenn man dort eine Temperatur auswählt wird die Solltemperatur des Reglers angepasst. Zwei Funktionen mit einem Attribut erledigt. Leider war in der rechten Spalte zu wenig Platz für alle Heizungsparameter, deshalb sind zwei Werte in die mittlere Spalte gerutscht unter anderem die Zeiteinstellung für den Heizungsboost.

obergeschoß.JPG
Bsp.
Die Reiter 2- 4 (Erdgeschoß, Obergeschoß, Dachgeschoß) zeigen die Daten der korrespondierenden Fht80B.

dachgeschoss.JPG
Ändern der FHT80b Parameter
Auf der Übersichtsseite kann für jeden Fht80 die Isttemperatur abgelesen und bei Bedarf eine neue Solltemperatur gesetzt werden. Die anderen Parameter (Modus, Absenktemperatur, Komforttemperatur sowie mein Scheduler für Komforttemperatur) sind über diese Reiter erreichbar. Die ersten vier Reiter wurden in PHP unter Ausnutzung der Möglichkeiten des CSS Frameworks erstellt.

fernbedienung.JPG
Fernbedienung komplett in Foundation CSS
Der letzte Reiter realisiert eine einfache Fernbedienung für alle anderen Aktoren und wurde komplett in XML erstellt.

Wie lange hat es gedauert alles zu programmieren: ca: 5 Tage inkl. Einarbeitung in Foundation Framework.


Viele Grüße

fsommer
Dateianhänge
code.7z
Der Sourcecode
(3.21 KiB) 142-mal heruntergeladen

fsommer1968
Beiträge: 230
Registriert: 16.02.2008, 17:05
Danksagung erhalten: 9 Mal

Re: Noch eine Visualisierung für FHZ

Beitrag von fsommer1968 » 11.05.2013, 23:18

Hallo Interessierte,

ich habe meine Visualisierung jettz etwas überarbeitet. Der Grundsätzliche Aufbau ist immer noch wie im 1. Beitrag geschrieben (Foundation 3 Framework (FF3) , Apache+PHP, Homeputer Studio für FHZ (HP-S). Auch die grundsätzlichen Eigenschaften der Visualisieurung (häßlich aber zweckmäßig, alles nur in Tabellenform wie im 1 Beitrag, funktioniert aber prima auf Smartphone und Tablet) sind geblieben. Die Neuerungen sind wie folgt:

1.: Anstelle die Ausgabe komplett in PHP zu realisieren habe ich ein "Template" gebaut in welches ich, eingerahmt von den Tags des FF3, Makros setzen kann, um die Zustände der Hausautomation darzustellen.

2.: Nutzung des PHP Moduls Alternative PHP Cache (APC) - ein Modul für Caching von Objectcode und Daten innerhalb von PHP (siehe: http://de.wikipedia.org/wiki/Alternative_PHP_Cache ). Neben dem Caching des PHP Quelltextes nutze ich die Möglichkeit zwischen verschiedenen PHP-Scripten Daten auszutauschen. Dazu im nächsten Punkt mehr.

3.: Bisher habe ich die "studio.inc" Library für PHP hier aus dem Forum benutzt. Nun ist es nicht jedermanns Sache, ein Loch in den heimischen DSL Router zu bohren (Portfreigabe) um z.B. eine Zugriffsmöglichkeit von außen (das eigene im Internet angemeldete Smartphone) auf den heimischen Webserver (mit der Visualisierung drauf) zu ermöglichen. Ich habe die Kommunikation zwischen HP-S (bzw. ein PHP Script in HP-Studio) und dem Webserver mit der Visualisieurung von einer bi-direktionalen TCP Kommunikation (mithilfe von Server-Execstudio) umgestellt auf ein Push/Pull Verfahren mithilfe eines sehr, sehr einfachen arme-Leute-REST-Service. Es gibt jetzt nur noch eine Kommunikation ausgehend von der Homeputer Studio hin zum Webserver mit der Visualisierung. Trotzdem ist es mit einer gewissen Zeitverzögerung (im Mittel 30 Sekunden) möglich, von der Visualisieurung aus Änderungen an HP-S zu übermitteln ( HP-S holt sich die Werte via REST-Service). Im Prinzip ist es jetzt auch möglich, die Visualisierung bei einem (kostenlosen) Webhoster zu betreiben; Bedingung: PHP und APC-Modul. Ich suche gerade zum test einen Webhoster, dann werde ich den Demoserver aus dem nächsten Punkt dorthin umziehen.

4. Anstelle von Screenshots habe ich mal testweise einen Demoserver mit meiner Visualisierung auf Basis eines Rasberry Pi aufgebaut. Dort kann man sich die Oberfläche (mit den Live-Daten einiger meiner Aktoren & Sensoren) anschauen.

Die Details:

1.: Template
Der Webseitenaufbau wird grob in einem Template-File definiert. Ein Parser in PHP liest das Templatefile aus und baut daraus den HTML Code zusammen. Die Mkkros sind eingerahmt von "%%" und bezeichen der Einfachheit direkt auf ein Objekt in HP-S. Wenn ich ein neues Objekt in der Visualisierung brauche, definiere ich im PHP Script (Parser) den Namen, welcer Text in der Visualisierung gedruckt werden soll und ggf. die Einheit (m/s, Grad, m) die bei der Darstellung mit angegeben werden soll. Für komplizierte Ausgaben (Auswahllisten) muß ggf. noch zus. PHP Code hinzugefügt werden. Hier ist ein Auszug aus dem Template File. Im Anhang ist das komplette Archiv mit meinem Template.

Code: Alles auswählen

<li class="active" id="simple1Tab"><div class="row">
 <ul class="block-grid three-up mobile-two-up">
 <li>
  <table border="2" valign="middle">
%%lokalzeit%%
%%KS300_Temp%%
%%Sonne%%
%%KS300_Regen%%
Und hier ein Auszug des Parsercode:

Code: Alles auswählen

 case "%%KS300_Temp%%":
    $name = "Temperatur";
    $einheit = "°";
    break;

// Jetzt werte setzen

   switch ($code) {
      case "%%Rolladenstellung_EG%%":
      case "%%Rolladenstellung_OG%%":
        $wert .= "<select id=\"".$objekt."\" onchange=\"SendeWertanFHZ(this.options[this.selectedIndex].value,'".$objekt."')\">\n";
        $wert .= "<option value=\"0,0\"";
        if ($aktor == "0,0") $wert .= " selected=\"selected\"";
        $wert .= ">auf</option>\n";
        $wert .= "<option value=\"1,0\"";
        if ($aktor == "1,0") $wert .= " selected=\"selected\"";
        $wert .= ">halb</option>\n";
        $wert .= "<option value=\"2,0\"";
        if ($aktor == "2,0") $wert .= " selected=\"selected\"";
        $wert .= ">3/4</option>\n";
        $wert .= "<option value=\"3,0\"";
        if ($aktor == "3,0") $wert .= " selected=\"selected\"";
        $wert .= ">zu</option>";
        $wert .= "</select>";
      break;
2.:APC Cache
APC ist ein (mögliches) Caching-Modul für PHP. Beschreibungen dazu findet man bei o.g. Link. Das APC Modul ist auf dem Webserver mit der Visualisierung (nicht bei HP-S) installiert. Das PHP-Script aus 1. holt sich über einen eindeutigen Schlüssel ein Array mit den Zuständen der Hausautomation um die benötigten Werte darzustellen, Beispiel:

Code: Alles auswählen

// Statusdaten der FHZ aus Cache lesen, leerer Cache bedeutet Abbruch
 $result = apc_fetch('FHZDATA');
   if ($result === false) {
     die ("<br><b>sommer.php: Fehler beim Einlesen der FHZ Daten!</b>");
    } else {
     $fhzdata = $result;
   }
// Template zeilenweise auswerten und dabei HTML Seite aufbauen und Statusdaten eintragen
   foreach ($template as $zeile) {
     $content = preg_replace_CALLBACK("/((%%)(.+?)(%%))/si",'makroparser',$zeile);
     echo $content;
   }
Außerdem wird das oben beschriebene Templatefile auch beim 1. Start der Visualisierung in den APC-Cahe geladen.


3.: Push/Pull Verfahren
Wie oben geschrieben habe ich die Kommunikation zwischen Visualisierung (Webserver mit Apache+PHP) und HP-S von der bidirektionalen Kommunikation über Server-Execstudio auf ein einfaches Push/Pull Verfahren mit REST-Server umgestellt. Der REST-Server läuft auf dem Webserver mit der Visualisierung und nimmt per Post-Request ein assiziatives Array mit den aktuellen Objektzustände entgegen oder sendet nach GET ein Array mit den zu ändernden Objektzuständen an HP-S. Die Kommunikation wird von HP-S initiiert. die Arrays werden in den APC-Cache geladen, bzw. daraus gelesen. Somit ist klar, das der APC-Cache, bzw. die Arrays dort drin, die Schnittstelle sind zwischen Restserver und dem Script zur Visualisierung aus 1.

Der komplette REST-Server:

Code: Alles auswählen

<html>
  <head><title>FHZ Webservice</title></head>
  <body>
<?php
if ($_GET['query']) {
   $data_n = $_GET['query'];
   $data_tmp = apc_fetch($data_n);
   if($data_tmp === false) {
         $data_tmp = array();
         $data_v = json_encode($data_tmp);
         echo $data_v;
         http_response_code(202);
         } else {
         apc_delete($data_n);
         $data_v = json_encode($data_tmp);
         echo $data_v;
         http_response_code(200);
   }
   } else {
   foreach ($_POST as $key=>$value) {
    $data_n = $key;
    $data_v = json_decode($value);
    if (apc_store($data_n, $data_v,0)) {
     http_response_code(200);
     } else {
     //$temp = date("H:i:s");
     //echo "NOK: ", $data_n, " ", $temp, PHP_EOL ;
     http_response_code(202);
    }
   }
}
?>
 </body>
</html>
Der REST-Server ist per htdigest-Authentisieurung gegen unberechtigten Zugriff geschützt.

Zum übertragen (Push) der Objektzustände von HP-S zum REST-server dient das folgende (PHP)-Makro in HP-S:

Code: Alles auswählen

Anfang:
warte("00:00:10")
<?

function real_string ($hp_real)
{$tmp_r = doubleval($hp_real);
 $tmp_r += 0.0001;
 return(str_replace(".",",",sprintf("%.1f", $tmp_r)));
}

$url = "http://webserver.fritz.box/restserver.php";
$headers = array('User-Agent: PRIVAT SOMMER');

$data['KS300_Temp'] = real_string($KS300_Temp);
$data['Sonne'] = $Sonne;
$data['KS300_Regen'] = $KS300_Regen;
$data['Sonnenstunden'] = $Sonnenstunden;
$data['KS300_RegenATag'] = real_string($KS300_RegenATag);
$data['WindMax'] = real_string($WindMax);
$data['KS300_Heizung'] = $KS300_Heizung;
$data['Luftdruck2'] = $Luftdruck2;
$data['Haustuer'] = $Haustuer;
$data['Abwesend.urlaub'] = $V_Abwesend_urlaub;
$data['Rolladenfahrt_Rauf'] = $Rolladenfahrt_Rauf;
$data['Rolladenfahrt_Runter'] = $Rolladenfahrt_Runter;
$data['BesuchVon'] = $BesuchVon;
$data['BesuchBis'] = $BesuchBis;
$data['Rolladenstellung_EG'] = real_string($Rolladenstellung_EG);
$data['Rolladenstellung_OG'] = real_string($Rolladenstellung_OG);
$data['schlaziautoaus'] = $schlaziautoaus;
$data['essziautoaus'] = $essziautoaus;
$data['bueroautoaus'] = $bueroautoaus;
$data['Heizungssteuerung'] = $Heizungssteuerung;
$data['UrlaubA'] = $UrlaubA;
$data['UrlaubE'] = $UrlaubE;
$data['boosttime'] = $boosttime;
$data['Absenkung2'] = real_string($Absenkung2);
$data['Wohnzimmer.Temperatur'] =real_string($TemperaturDG);
$data['Buero.Temperatur'] = real_string($TemperaturOG);
$data['Badezimmer.Temperatur'] = real_string($V_Badezimmer_Temperatur);
$data['Esszimmer.Temperatur'] = real_string($TemperaturEG);

$data['Esszimmer.Modus'] = $V_Esszimmer_Modus;
$data['Esszimmer'] = real_string($Esszimmer);
$data['Esszimmer.Ventilpos'] = $V_Esszimmer_Ventilpos;
$data['EsszimmerSchedZeit'] = $V_EsszimmerSchedZeit;
$data['Esszimmer.Absenktemperatur'] = real_string($V_Esszimmer_Absenktemperatur);
$data['Esszimmer.Komforttemperatur'] = real_string($V_Esszimmer_Komforttemperatur);

$data['Buero.Modus'] = $V_Buero_Modus;
$data['Buero'] = real_string($Buero);
$data['Buero.Ventilpos'] = $V_Buero_Ventilpos;
$data['BueroSchedZeit'] = $V_BueroSchedZeit;
$data['Buero.Absenktemperatur'] = real_string($V_Buero_Absenktemperatur);
$data['Buero.Komforttemperatur'] =real_string($V_Buero_Komforttemperatur);

$data['Badezimmer.Modus'] = $V_Badezimmer_Modus;
$data['Badezimmer'] = real_string($Badezimmer);
$data['Badezimmer.Ventilpos'] = $V_Badezimmer_Ventilpos;
$data['BadezimmerSchedZeit'] = $V_BadezimmerSchedZeit;
$data['Badezimmer.Absenktemperatur'] = real_string($V_Badezimmer_Absenktemperatur);
$data['Badezimmer.Komforttemperatur'] = real_string($V_Badezimmer_Komforttemperatur);

$data['Wohnzimmer.Modus'] = $V_Wohnzimmer_Modus;
$data['Wohnzimmer'] = real_string($Wohnzimmer);
$data['Wohnzimmer.Ventilpos'] = $V_Wohnzimmer_Ventilpos;
$data['WohnzimmerSchedZeit'] = $V_WohnzimmerSchedZeit;
$data['Wohnzimmer.Absenktemperatur'] = real_string($V_Wohnzimmer_Absenktemperatur);
$data['Wohnzimmer.Komforttemperatur'] = real_string($V_Wohnzimmer_Komforttemperatur);

$dataold_t = $V_webserverpush_olddata;
$dataold = str_replace('\\"','"',$dataold_t);
$dataoldj = json_decode($dataold,true);
if (empty($dataoldj)) $dataoldj[]='x';
$result = array_diff($dataoldj,$data);
$data_v = json_encode($data);
$datanew = str_replace('"','\"',$data_v);
$V_webserverpush_olddata = $datanew;

if (!(empty($result))) {
  $data_n = 'FHZDATA';
  $fields_string .= $data_n.'='.$data_v;

  $handle = curl_init();
  curl_setopt($handle, CURLOPT_URL, $url);
  curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
  curl_setopt($handle, CURLOPT_TIMEOUT, 10);
  curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
  curl_setopt($handle, CURLOPT_USERPWD, "Username:Passwort");
  curl_setopt($handle, CURLOPT_POST, true);
  curl_setopt($handle, CURLOPT_POSTFIELDS, $fields_string);
  $response = curl_exec($handle);
  curl_close($handle);
}
?>
Das Script sammelt jede Minute alle benötigten Objektzustände in einem Array und prüft ob sich die Daten ggü. dem letzten Zustand geändert haben. Wenn ja sendet das Script die Objektzustände per curl an den Restserver.

Zum abholen der zu ändernden Objektzustände (Fernbedienung der Haussteuerung) dient das folgende Script:

Code: Alles auswählen

webserverpull.NeuesKommando := 0
<?
$uhrzeit = date("H:i:s");
$url = "http://webserver.fritz.box/restserver.php?query=FHZCMD";
$dosprg = 'start /b /dc:\progra~1\FHZ1300PC\ c:\progra~1\FHZ1300PC\ExecStudioco.exe ';
$headers = array('User-Agent: PRIVAT SOMMER');

$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($handle, CURLOPT_TIMEOUT, 10);
curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($handle, CURLOPT_USERPWD, "Username:Passwort");
curl_setopt($handle, CURLOPT_POSTFIELDS, null);
curl_setopt($handle, CURLOPT_POST, FALSE);
curl_setopt($handle, CURLOPT_HTTPGET, TRUE);

$response = curl_exec($handle);
$info_curl = curl_getinfo($handle);
$status_curl = $info_curl['http_code'];
//echo $status_curl;
curl_close($handle);
if ($status_curl == "200") {
  if (preg_match("~<body[^>]*>(.*?)</body>~si", $response, $output) == 1) {
    //print_r($output[1]);
    $data = json_decode($output[1],true);
    $cmdline ="";
    foreach($data as $objekt => $wert) {
     $cmdline .= 'S' . $objekt . '=' . $wert . ' ';
    }
    //print_r($cmdline);
    pclose(popen($dosprg . $cmdline, "r"));
    $V_webserverpull_NeuesKommando = 1;
  }
}
?>
wenn webserverpull.NeuesKommando gleich 1 dann
   warte("00:00:20")
   makro starten webserverpush
endewenn
Das Script holt beim REST-Server ein Array mit den gewünschten Objektzuständen ab. Sind keine Änderungen da, sendet der REST-Server 203 zurück. Ansonsten packt das Script das Array (JSON-kodiert) aus dem HTML-Body aus und baut aus den Objekten des Assoziativen Arrays eine Kommandozeile für ExecStudioCo (die lokale Version, nicht die Servervariante!) zusammen und startet Execstudio. Damit werden dann die neuen Objektzuständen gesetzt. Ich habe keine flexible Möglichkeit gefunden, per COM-Objekt o.ä., aus dem PHP-Script heraus direkt die Objektzustände zu ändern. Das Script wird einmal pro Minute durchlaufen. Damit ist klar, daß Änderungen die an der Visualisieurung nach spätestens 60 Sekunden in Homeputer Studio ankommen. Das mag zwar lange erscheinen (im Gegensatz zu einer bidirektionalen Kommunikation, aber es ist "sicherer", weil kein Verbindungsaufbau von außen(Internet) auf den Haussteuerungsserver im Keller, im Büro, oder sonstwo erforderlich ist (das berühmte "Loch" im DSL-Router).


4.: Demoserver


Unter http://fhzdemo.hobby-site.org könnt ihr Euch eine Demoseite meiner Haussteuerung anschauen. Der Server läuft bei dem Webhoster phpfriends. Die Daten stammen von meinen Aktoren & Sensoren und werden schnellstens alle 4 Minuten aktualisiert. Man kann zwar Objektänderungen über die Oberfläche triggern, aber HP-S holt sie nicht ab. Grundsätzlich ist ein free Webhoster eine Möglichkeit für kleines Geld eine extern erreichbare Haussteuerung zu realisieren, ohne selbst einen Webserver daheim betreiben zu müssen.

Der Anhang
Im Anhang befidnet sich diesmal das komplette Projekt (ohne die externen Komponenten wie Foundation Framework - die werden bei zurb geholt und im Zielordner einfach hinzugefügt, APC ist bei php immer mit dabei. Im Anhang ist also alles was ich gebaut habe und was auf dem Server mit der Visualisierung benötigt wird. Die zwei Scripte mit PHP für HP-S stehen oben im Text, die habe ich nicht extra ins Archiv mit übernommen.
fhz.public.rar
Visualisierung für Homeputer Studio; benötigt zusätzlich Foundation Framework 3 und APC (Cache für PHP). Die restlichen Anforderungen stehen im 1. Beitrag bzw. oben (aktualisiert).
(8.18 KiB) 107-mal heruntergeladen

Antworten

Zurück zu „Projektvorstellungen“