WebFront - Genereller Diskussionsthread

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

Folgende Geräte werden unterstützt:
-FS20
-Moeller Schalter/Dimmer/Temperatursensor
-Wago Typen -> Bool/Word

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:


 foreach(IPS_GetModuleList() as $guid)
 {
   $module=IPS_GetModule($guid);
   echo $module['ModuleID'] . " = ". $module['ModuleName']."
";
 }

[b]

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 :wink:

Nostalgie:
Das alte WI gibt es übrigens hier: http://www.ipsymcon.de/forum/showthread.php?t=13

Grüße, paresy

Moin,

…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 :slight_smile:
Dann ist ja das schlimmste schon geschafft :smiley:

Aber sicher doch! Mir fehlt nur noch der Link zur Beta… :confused:

Ciao,
Andreas

Hallo,

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 :stuck_out_tongue:

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();
		}
	}

?>

Viel Spaß damit,
Andreas

Für einen Programmier-Dummie sieht das sehr nach Hiroglyphen aus …:wink:

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)

Hi Uwe,

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 :smiley: Da sagt ein Bild mehr als tausend Worte.

Ciao,
Andreas

… auch wenn ich das Bild frühestens morgen sehen werde.

Ich habe da noch so das eine oder andere kleine Problem mit den Klicks von dem Kerl vor meinem Bildschirm :rolleyes: (so viele Bäume …)

Hallo,

ich fühle mich in der PHP Welt echt als Super-Dau :slight_smile:
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.

Wäre toll…

Viele Grüsse
B71

…niemand der mir hier helfen mag ?

Schade…
B71

Hallo B71,

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 :slight_smile:

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??

LG Hinti

Einfach LiveUpdate ausführen. Dann wird es wieder installiert.

paresy

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!

Hi,
Webfront läuft seit heute sauber.
Nettes User Interface, speziell für Touchscreen User.

Wohne im Süden der Republik und würde die Webfront im Wetterbereich somit gerne anpassen.

Nur wo finde ich diese Infos im webfront Ordner, bzw. eine Konfigurationsfunktion dieser Sub-Seite ?

Gruss
B71

Hi,

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 :wink:
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“):

  1. im Verzeichnis Webfront in der Datei ips.js in Zeile 1128 (ohne Zeilenumbruch) das Bild anpassen:
    weatherImage.src = …/Regionalwetter/RegionMitte__allgemein__Bild…

  2. im Verzeichnis Webfront\data in der Datei dwd.php in Zeile 19 die Vorhersage anpassen:
    $url = …/heute__Wetterbericht/Mittebericht__heute__node…

viele Grüße
Otto

Danke !!

Das war es !!

Gruss
b71

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? :stuck_out_tongue:

Kann man davon ausgehen das es mal eine sichere Anmeldung für das Standard-webfront-tool geben wird:confused:

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 :frowning: