Wie zu alten Zeiten gibt es auch für die V2 eine Web Interface Demo.
Das ganze ist von der Idee am QuickSwitch des WIIPS angelehnt, ist aber komplett über das Dojo Framework gelöst. D.h. die Seite wird nur einmal geladen und ab dann passiert alles dynamisch. Das Abfragen der aktuellen Werte ist sehr effizient gelöst und reagiert mit ca. 200ms Verzögerung.
Installation:
-In der Konsole auf der Willkommensseite unter „Web Interfaces“ auf „WebFront installieren“ klicken.
Kompatible Browser:
-Firefox 2,3
-IE7,8
-MiniMo (für PDA’s)
->Mehr wurde noch nicht geprüft
Wenn ihr andere Geräte braucht, könnt ihr ja mal in den Ordner „data\devices“ gucken. Der Dateiname ist die GUID des Moduls.
Damit bekommt ihr alle vorhandenen GUIDs:
Funktionsweise:[/b]
Beim Klick auf „Kategorie auswählen“ wird die Baumstruktur eingelesen und ihr könnt die gewünsche Kategorie auswählen. Kategorien werden nur bis zur 2. Ebene eingelesen. Das hat den Hintergrund, dass euer IPS Projekt am besten nach „Geschoss\Raum“ geordnet sein sollte. Alles „tiefer“ wird nicht angezeigt. Somit können Geräte, die nicht erscheinen sollen, sehr einfach versteckt werden.
Das Menü muss nach der Auswahl von Hand über den „Schliessen“ Button geschlossen werden.
Customizing:
Im Hauptordner ist die CSS Datei, über die man das meiste vom Stil/Layout verändern kann.
Sonstiges:
Der Code zum Projekt ist nicht perfekt ausgefeilt, sonder eher ein Demo, wie man soetwas lösen könnte. Ihr könnt ihn gerne weiterverwenden und verbessern. Es wäre nett, wenn ihr etwaige Verbesserungen/Bugfixes hier postet würdet, damit andere auch etwas davon haben
…ziemlich genau das wollte ich mit der nächsten Release meines Framework hinbekommen. Von den Widgets her auf dojo setzen, niedrige Latenzen bei State-Changes erreichen
Dann ist ja das schlimmste schon geschafft
Aber sicher doch! Mir fehlt nur noch der Link zur Beta…
ich habe mal eine Klasse für die LCN Unit (Dimmer/Relais/Binärsensor/Summen) geschrieben. Bei letzterer wird der Wert der Summe in Prozent dargestellt, da ich zu faul war das in der ips.js zu ändern
Der Dateiname ist {2D871359-14D8-493F-9B01-26432E3A710F} und sie gehört ins Unterverzeichnis data\devices
<?
require_once("abstracts\DimmerBasic.php");
require_once("abstracts\SwitchBasic.php");
// register at dispatcher object
$this->register(basename(__file__), "LCN_Unit");
define("LCN_Default_Ramp", 2);
class LCN_Unit_Dimmer extends DimmerBasic
{
public function setStatus($status)
{
return @LCN_SwitchMode($this->instanceid, $status);
}
protected function getStatusID()
{
return $this->getID("Status");
}
public function getIntensity()
{
return (int)($this->getValue($this->getIntensityID()));
}
public function setIntensity($parameter)
{
return @LCN_SetIntensity($this->instanceid, (int)($parameter), LCN_Default_Ramp);
}
protected function getIntensityID()
{
return $this->getID("Intensity");
}
}
class LCN_Unit_BinaryInput extends SwitchBasic
{
public function toggleStatus()
{
return;
}
public function setStatus($status)
{
return;
}
protected function getStatusID()
{
return $this->getID("Status");
}
}
class LCN_Unit_Switch extends SwitchBasic
{
public function toggleStatus()
{
return @LCN_FlipRelay($this->instanceid);
}
public function setStatus($status)
{
return @LCN_SwitchRelay($this->instanceid, $status);
}
protected function getStatusID()
{
return $this->getID("Status");
}
}
class LCN_Unit_Sum extends DimmerBasic
{
public function setStatus($status)
{
return;
}
protected function getStatusID()
{
return $this->getID("Status");
}
public function getIntensity()
{
return (int)($this->getValue($this->getIntensityID()));
}
public function setIntensity($parameter)
{
return;
}
protected function getIntensityID()
{
return $this->getID("Intensity");
}
}
class LCN_Unit extends DeviceBasic
{
private $internal_UnitID;
private $internal_Unit;
function __construct($id)
{
parent::__construct($id);
$this->internal_UnitID = @LCN_GetUnit($id);
switch($this->internal_UnitID)
{
case (0): // dimmer
$this->internal_Unit = new LCN_Unit_Dimmer($id);
break;
case (1): // binary sensor
$this->internal_Unit = new LCN_Unit_BinaryInput($id);
break;
case (2): // relay
$this->internal_Unit = new LCN_Unit_Switch($id);
break;
case (3): // sum
$this->internal_Unit = new LCN_Unit_Sum($id);
break;
}
}
public function __destruct()
{
unset($this->internal_Unit);
}
public function setStatus($status)
{
$this->internal_Unit->setStatus($status);
}
public function getStatus()
{
return $this->internal_Unit->getStatus();
}
public function setIntensity()
{
$this->internal_Unit->setIntensity($status);
}
public function getIntensity()
{
return $this->internal_Unit->getIntensity();
}
public function toggleStatus()
{
$this->internal_Unit->toggleStatus();
}
public function handleAction($action, $parameter)
{
$this->internal_Unit->handleAction($action, $parameter);
}
public function getDevice()
{
return $this->internal_Unit->getDevice();
}
}
?>
Für einen Programmier-Dummie sieht das sehr nach Hiroglyphen aus …
Könntest du mal Sinn und Zweck (und Einsatzort) etwas näher erläutern, Andreas.
Ich muss meine alten Skripte (die überwiegend noch LCN-PCK-Kommandos enthalten) für V2 so oder so neu überarbeiten.
Da bin ich für alles Neue immer gerne offen … (und lernfähig)
Paresy hat oben eine Demo für Visualisierung und Steuerung im Webbrowser gepostet, welche allerdings nur Instanzen von ELV/Moeller/Wago-Geräten unterstützt. Ich habe eine Unterstützung für die wichtigsten LCN-Geräte gebaut.
Mach’ dir mal den Spass und konfiguriere ein paar Instanzen LCN-Geräte in IPS 2.0, installiere die Demo wie von Paresy beschrieben. Dann öffne Notepad, kopiere den Code von mir hinein und speichere die Datei im Unterverzeichnis data\devices mit dem Dateinamen {2D871359-14D8-493F-9B01-26432E3A710F} ab. Dann mit dem Brauser Deiner Wahl auf die IPS-Maschine gehen und der Rest geht automatisch Da sagt ein Bild mehr als tausend Worte.
ich fühle mich in der PHP Welt echt als Super-Dau
und würde Euch eventuell um eine kleine Hilfestellung bitten wollen.
Ich versuche gerade in die Beta V2 Weboberfläche meine FHT´s einzubinden und einen HMS100TF Sensor zur Mitarbeit zu „überreden“. Die FS20 Schalter und Dimmer funktionieren dank @ Paresys Vorarbeit bereits einwandfrei.
Ich bekomme es aber, trotz erfolgreicher Installation des WEB UI´s (Schalter/Dimmer funktionieren excellent), Ausführung des PHP Scripts zu Identifikation der GUID´s für die beiden Komponenten und Untersuchung der PHP basic scripte im Ordner abstracts und devices einfach nicht gebacken…
Wäre es eventuell möglich, ob hier jemand die beiden benötigten Dateien´oder das PHP Script für die Einbindung der beiden obigen Komponenten posten würden. Die Orte, wo ich es hinkopieren müsste, habe ich inzwischen begriffen.
Dann würde ich hier niemandem mehr auf die Nerven gehen müssen, weil die für V2 zur Verfügung stehende Web Oberfläche mir für den Moment vollends ausreicht, um mein Haus zu steuern.
wir testen doch alles moegliche, aber fertige Sachen fuer die V2 - ich glaube, das macht noch niemand. Es ist immer noch eine BetaVersion, und da ist man halt noch sehr vorsichtig. Du setzt doch die Version nicht wirlich schon richtig ein?
…läuft soweit mit der V2…und das dazu noch äusserst stabil… (inklusive Standy, Suspend, Hibernate Zuständen und aufwachen aus diesen)
Nur fehlen mir halt die 2 PHP Strecken, um den HMS100TF und die FHT´s mit dem V2 Webinterface anzuzeigen, um in meiner Küche wieder die komplette Übersicht auf dem Touchscreen zu haben. Die FS20 Schalter und Dimmer waren dort ja bereits mitgeliefert und die funktionieren 1A.
Wäre halt schön…weil meine Frau sich die ganze Zeit schon diebisch freut, dass ich da in der Küche vor mich hinfluche…
Gruss
B71
Aus „Rache“ habe ich meiner Frau gestern ne neue Harmony Fernbedienung hingelegt…jetzt kann Sie mal wieder etwas knobeln, wie Sie das Mediacenter an bekommt
Ich schaff alles. Ähm, ich habs geschafft das es nicht mehr geht. Ich meine damit. Ich starte die Konsole und sage Webfront installieren… soweit so gut. Dann habe ich aber dummer weise den von früher vorhandenen /webfront Ordner gelöscht, weil ich mir dachte dies sei nicht der aktuellste Stand und wollte dann das ganze erneut installieren.
Also habe ich die Instanz webfront gelöscht und die Konsole neu gestartet. Dann wählte ich erneut aus… WebFront installieren… gesagt getan.
Nur leider wie ihr euch denken könnt, exisitert der Ordner webfront nicht mehr.
Also frage ich euch… soll ich einfach den von vor einigen Wochen runtergeladenen webfront.rar neu extrahieren? ist das der richtige Stand??
Ja das hat funktioniert.
Aber jetzt bekomme ich diesen Fehler, siehe Bild, (den hatte ich auch vorher schon und dachte aber es könnte mit dem ursprünglichen Ordner zu tun haben).
Was ist das? Lg Hinti
PS: diese meldung bekomme ich nur wenn ich im ips am server selber sage: „Webserver öffnen“.
Wenn ich mit einem anderen PC im Netzwerk die ServerIP eingebe, bekomme ich Webanwendung normal zu Gesicht!
kenne mich mit dem Teil zwar auch nicht aus, ist doch sehr komplex der Quelltext, aber ich glaube im Verzeichnis „Data“ findest du das was du ändern musst. Dort gibt es eine dwd.php, in der der Link zum DWD steht
Das Data Verzeichnis befindet sich im Webfront Verzeichnis.
Gruß
Thomas
P.S. Gibt es evtl. ein einfaches Beispiel (so das auch nicht Profiprogrammierer es raffen) wie man Temperaturwerte usw. mit dem Dojo Toolkit auf einer Webseite anzeigt, damit sich dieser aktualisiert, ohne das die komplette Seite neu aufgebaut wird, wäre super ???
… für das Wetter in Hessen, Rheinland-Pfalz und Saarland (Region „Mitte“):
im Verzeichnis Webfront in der Datei ips.js in Zeile 1128 (ohne Zeilenumbruch) das Bild anpassen: weatherImage.src = …/Regionalwetter/RegionMitte__allgemein__Bild…
im Verzeichnis Webfront\data in der Datei dwd.php in Zeile 19 die Vorhersage anpassen: $url = …/heute__Wetterbericht/Mittebericht__heute__node…
Also ich finds auch echt toll, diesen /webfront Webserver. Aber eins paßt mir da so gar nicht…
Und zwar ist es nicht gut das man da ohne jegliche Anmeldung usw. einf ach alles umstellen kann. Also ich meine jeder auf der Welt kann sich, würde ich diesen Webserver verwenden, mein gesamtes Haus steuern können.
Deshalb verweile ich derzeit auf dem „IPSHomecontrole/simple/“ -Tool.
Oder gehts doch, nur weiß ich nicht wie man das einrichtet?
Und noch eine Frage, kann man auch eine Österreichische Wetterseite einbinden?
also…
wenn ich über einen anderen rechner auf das webfront zugreife, dann gehts. wenn ich aber in IPS V2 „WebFront öffnen“ anwähle,
dann bekomme ich folgenden Fehler andauernd zu sehen… (siehe bild open-webfr1.gif)
++wie sieht das die restliche IPS gemeinde… welche den webserver via internet auch erreichen können…
was tut ihr dagegen, das nicht jedermann der welt dein haus steuern kann? den webserver abdrehen wenn ihr nicht zu hause seid?
++auf port 82 läuft bei mir gar nix, es funzt nur wenn ich port 80 einstelle