Wireless IPS Touch-Display

Hallo zusammen,

inspiriert von Crazy_Hardware und Paresy habe ich mich auch an das eDip240 rangetraut und herausgekommen ist folgendes:

Ich wollte das eDip240 möglichst „universell“ haben um nicht jedes Display (hab vor mehrere zu verbauen) extra programmieren zu müssen und auch nicht bei jeder kleinen Änderung das Display neu programmieren zu müssen.

Daher ist das Display zu 95% IPS-Gesteuert!
Im Display sind lediglich die Bilder, Schriftarten, ein Initialisierungs-Script (das sich beim einschalten beim IPS-Server meldet) und das Script für den Menu-Button fest im Display gespeichert.

Alles andere kommt per php-script vom IPS.

Daher kann das Display sehr einfach und ohne es vom Fleck bewegen zu müssen angepasst werden (gut für den WAF :stuck_out_tongue: ).

Es können so natürlich auch alle IPS-Variablen für die Ausgabe benutzt und geändert werden (siehe Bilder, Temps und Schaltzustände).
Torro verzeiht mir hoffentlich den „Wortklau“ im Hauptmenu :rolleyes: .

An den IPS-Rechner ist das ganze per AVISARO W-Lan-Modul angebunden (das selbe Modul ist auch in der FHZ1300WLAN verbaut).
Von der IPS-Seite ist kein weiteres Modul notwendig da sich das Avisaro-Modul per X-Port (ist ja schon im IPS vorhanden) ansprechen lässt.

Das angenehme an der W-LAN-Variante ist das ausser dem Display, dem W-LAN-Modul und der Stromversorgung keine weitere Hardware nötig ist.
Das Display und das W-LAN-Modul arbeiten beide mit TTL-Pegel.
Und natürlich das nicht benötigte Kabel zum IPS-Rechner :smiley: .

Das Display geht nach 5min. ohne Touchberührung in den „Standby-Modus“ (Display helligkeit stark herabgesetzt, damit die Beleuchtung länger lebt).

Datum und Uhrzeit werden alle 30sec. per Script aktualisiert.

Da ich aber noch keine Ahnung habe wie ich das Display „Wohnzimmertauglich“ verbauen soll, wäre ich für Ideen dankbar!
„In der Rigips-Wand versenken“ und „in einen tiefen Bilderrahmen einbauen“ wären mir schon eingefallen…

So schaut z.B. das Script fürs Hauptmenu aus:


<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Display_MainMenu.ips.php
Trigger : 
Interval : 
*/
// Common eDip defines
include_once("eDip_Global.ips.php");
// Variablen definieren
include_once("Display.WZ_Global.ips.php");
// Display löschen und Hauptmenu-Button anzeigen
COMPort_SendText(COM, ESC.A.I.chr(0));
COMPort_SendText(COM, ESC.A.S.chr(1));
COMPort_SendText(COM, ESC.D.L);
COMPort_SendText(COM, ESC.A.L.chr(0).chr(0));
COMPort_SendText(COM, ESC.U.V.chr(4));
COMPort_SendText(COM, ESC.Z.F."CHICAGO14");
COMPort_SendText(COM, ESC.Z.V.chr(1));
COMPort_SendText(COM, ESC.Z.L.chr(8).chr(2).$Datum.CR);
COMPort_SendText(COM, ESC.Z.R.chr(230).chr(2).$Zeit.CR);
// Touchbutton anzeigen
COMPort_SendText(COM, ESC.R.R.chr(00).chr(00).chr(240).chr(128).chr(13).CR);
COMPort_SendText(COM, ESC.G.D.chr(50).chr(00).chr(50).chr(15).CR);
COMPort_SendText(COM, ESC.Z.C.chr(120).chr(02)."Hauptmenu:".CR);
COMPort_SendText(COM, ESC.R.R.chr(00).chr(15).chr(240).chr(15).CR);
COMPort_SendText(COM, ESC.G.D.chr(190).chr(00).chr(190).chr(15).CR);
COMPort_SendText(COM, ESC.A.U.chr(20).chr(44).BmpDreieck.chr(54).chr(0).chr(0).CR);
COMPort_SendText(COM, ESC.Z.C.chr(40).chr(84)."Quickswitch".CR);
COMPort_SendText(COM, ESC.A.U.chr(102).chr(49).BmpLifeStyle.chr(55).chr(0).chr(0).CR);
COMPort_SendText(COM, ESC.Z.C.chr(122).chr(84)."Lifestyle".CR);
COMPort_SendText(COM, ESC.A.U.chr(178).chr(48).BmpTemp.chr(56).chr(0).chr(0).CR);
COMPort_SendText(COM, ESC.Z.C.chr(200).chr(84)."Temp.".CR);
 
?>

Die Fotos sind etwas dunkel da ich ohne Blitz fotografieren musste, da die Schutzfolie zu stark gespiegelt hat.

Hauptmenu.jpg

lifestyle.jpg

Plan.jpg

switch.jpg

temp.jpg

Versuchsaufbau.jpg

WLan.jpg

Hallo Chrisu,

finde ich eine echt Tolle Sache, die mich auch interessieren würde.

Als Gehäuse kann ich dir wie du schon angesprochen hast, den Bilderrahmen empfehlen. Den kann man sich sehr günstig in jeder Rahmenwerkstatt passend machen lassen und sieht auch noch gut (passend zu den Möbeln:D )

Das habe ich im Flur auch so mit meinem 12" Touchscreen IPSymcon Display gemacht.

Was mich noch interessieren würde ist der Preis für die Komponenten und der Stromverbrauch bei 5 Volt. Ich würde dies gerne über ein USB > RS232 Kabel anbinden, und auch die Stromversorgung klauen, wenn möglich. Darf dann aber nicht über 500mA liegen. Kannst du das mal messen, evtl auch ohne das Avisario Modul?

Du schreibst, das das Modul mit TTL Pegeln arbeitet, funktioniert das auch mit dem Stand-RS232 Pegeln?

Gruß,

Thomas

Hört sich gut an die Idee. Ein gutes Gehäuse habe ich noch nicht gefunden… ich suche aber irgendetwas schickes aus Holz… vielleicht in der Art der WS3000(?) Station von ELV…

Grüße, paresy

Ich wollte eben was wo ich keinen zusätzlichen Rechner dahinter brauch…

eDip-Display: derzeit € 136,- (bei Reichelt)
W-Lan-Modul: € 109,- (direkt bei Avisaro)

Der stromverbrauch liegt bei ca. 450mA mit W-LAN-Modul.
Ohne W-Lan mess ichs dir heute abend nach…

Für den direkten anschluss ans RS232-Port brauchst du nen MAX232 (wie links oben auf meinem Versuchsaufbau zu sehen).

An das hatte ich auch schon gedacht, nur find ich den Rahmen auf der ELV-Seite nicht mehr… :confused:

Hahaha chrisu,

da bist du mir zuvorgekommen. Gute Arbeit. Ich finde das AVISARIO Modul auch ganz interssant und hatte darauf hin auch schon ein Thread gestartet.

Ich werde das auch mal irgendwann probieren. Danke mal für die Bestätigung, dass es läuft !

mfG Franz

Hallo Chrisu,

das hast du falsch verstanden, das ist mein IP-Rechner hinter dem Display, ohne Rechner läuft IPS noch nicht :smiley:

Das mit dem Stromverbrauch wäre klasse, wenn du das nochmal messen könntest, besonders der Einschaltstrom wäre noch interessant, wenn die Röhren zünden und das Display startet.

Hast du noch weitere Infos u. Scripte, die ich mir mal anschauen könnte?
Kann man an die I2C Schnittstelle evtl auch noch weitere Componenten wie Temperaturfühler usw. anschliessen?

Gruß,

Doc

wenn die Röhren zünden und das Display startet.

man, das klingt ja richtig abenteuerlich ! Ich glaube du muss jedesmal RWE benachrichtigen, bevor du einschaltest. Die schalten noch einen Hochspannungstrafo dazu :smiley:

mfG Franz

… der Einschaltstrom ist schon wichtig, die USB-Schnittstelle ist da sehr empfindlich. Habe aber gerade gesehen, das es eine LED und keine CFL-Beleuchtung ist. Sollte also nicht das Problem sein.

Ich hab das auch eher darauf bezogen das ich mehrere dieser Dinger verbauen will und daher nicht noch mehr Rechner laufen haben will… :stuck_out_tongue:

Wie du ja schon bemerkt hast is es ne LED-Beleuchtung, messwerte folgen heute später abend…

Scripte werd ich auch noch heute abend welche reinstellen…

Das eDip unterstützt zwar 3 verschiedene Schnittstellen, aber nur eine ist gleichzeitig verwendbar -> RS232 wird verwendet für die komm. mit IPS -> I2C nicht verfügbar…

OK, hier mal der Stomverbrauch:

Alle angaben bei 5,7V (die 0,7 wegen ner Diode die ich als verpolungsschutz eingebaut hab :cool: ), einem 3,3V-Fixspannungsregler fürs W-LAN-Modul und einem MAX232 dahinter.

100%* + WLAN = 530mA
60%* + WLAN = 490mA
3%* + WLAN = 420mA

100%* = 200mA
60%* = 170mA
3%* = 90mA

*Displayhelligkeit

-> Der Strom aus nem USB-Port müsste reichen…

Zu den Scripts:

Das Globale eDip-File:

 
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : eDip_Global.ips.php
Trigger : 
Interval : 
*/
//Konstanten definieren
define ('XMAX',chr(240));
define ('YMAX',chr(128));
define ('ESC',chr(27));
define ('CR',chr(13));
define ('LF',chr(10));
define ('FF',chr(12));
define ('STH',chr(1));
define ('DC1',chr(17));
define ('DC2',chr(18));
define ('ACK',chr(6));
define ('NAK',chr(21));
define ('NEXTLINE',chr(124));
define ('NULL',chr(00));
define ('A',chr(65));
define ('B',chr(66));
define ('C',chr(67));
define ('D',chr(68));
define ('E',chr(69));
define ('F',chr(70));
define ('G',chr(71));
define ('H',chr(72));
define ('I',chr(73));
define ('J',chr(74));
define ('K',chr(75));
define ('L',chr(76));
define ('M',chr(77));
define ('N',chr(78));
define ('O',chr(79));
define ('P',chr(80));
define ('Q',chr(81));
define ('R',chr(82));
define ('S',chr(83));
define ('T',chr(84));
define ('U',chr(85));
define ('V',chr(86));
define ('W',chr(87));
define ('X',chr(88));
define ('Y',chr(89));
define ('Z',chr(90));
define ('GRAD',chr(248));
define ('PROZ',chr(37));
?>

Das Quickswitch-Script fürs Wohnzimmer:

 
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Display_Switch.ips.php
Trigger : 
Interval : 
*/
// Common eDip defines
include_once("eDip_Global.ips.php");
// Variablen definieren
include_once("Display.WZ_Global.ips.php");
// Display löschen und Hauptmenu-Button anzeigen
COMPort_SendText(COM, ESC.D.L);
COMPort_SendText(COM, ESC.M.N.MnClrReturn2HauptMenu);
COMPort_SendText(COM, ESC.A.Z.chr(1).chr(1));
COMPort_SendText(COM, ESC.A.I.chr(1));
COMPort_SendText(COM, ESC.Z.L.chr(8).chr(2).$Datum.CR);
COMPort_SendText(COM, ESC.Z.R.chr(230).chr(2).$Zeit.CR);
// Touchbutton anzeigen
COMPort_SendText(COM, ESC.R.R.chr(00).chr(00).chr(240).chr(128).chr(13).CR);
COMPort_SendText(COM, ESC.G.D.chr(50).chr(00).chr(50).chr(15).CR);
COMPort_SendText(COM, ESC.Z.C.chr(120).chr(02)."Wohnzimmer:".CR);
COMPort_SendText(COM, ESC.R.R.chr(00).chr(15).chr(240).chr(15).CR);
COMPort_SendText(COM, ESC.G.D.chr(190).chr(00).chr(190).chr(15).CR);
// Button Deckenleuchte Strassenseite
COMPort_SendText(COM, ESC.A.J.chr(20).chr(39).ButLampe.A.A.chr(0).CR);
if ($WZ_Strasse == 1) {
COMPort_SendText(COM, ESC.A.P.A.chr(1).CR);
}
COMPort_SendText(COM, ESC.Z.C.chr(35).chr(79)."Strasse".CR);
// Button Deckenleuchte Hofseite
COMPort_SendText(COM, ESC.A.J.chr(100).chr(39).ButLampe.B.B.chr(0).CR);
if ($WZ_Loggia == 1) {
COMPort_SendText(COM, ESC.A.P.B.chr(1).CR);
}
COMPort_SendText(COM, ESC.Z.C.chr(115).chr(79)."Loggia".CR);
// Button Radio
COMPort_SendText(COM, ESC.A.J.chr(180).chr(39).ButSwitch.C.C.chr(0).CR);
if ($WZ_Radio == 1) {
COMPort_SendText(COM, ESC.A.P.C.chr(1).CR);
}
COMPort_SendText(COM, ESC.Z.C.chr(195).chr(79)."Radio".CR);
?>

Im Prinzip sende ich einfach nur die Befehle über die Serielle die man normalerweise direkt ins Display programmiert.
Ausgewertet werden die vom Display kommenden Befehle einfach per Register Variable.

Das dazugehörige Script schaut so aus:

 
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Display.WZ_Main.ips.php
Trigger : 
Interval : 
*/
// Common eDip defines
include_once("eDip_Global.ips.php");
// Variablen definieren
include_once("Display.WZ_Global.ips.php");
//TouchIdle Funktion
if($IPS_SENDER=="TimerEvent") {
// Display dimmen
COMPort_SendText(COM, DC1.ESC.Y.H.chr(3));
// Display löschen und StandBy-Menu anzeigen
COMPort_SendText(COM, ESC.A.I.chr(0));
COMPort_SendText(COM, ESC.A.S.chr(1));
COMPort_SendText(COM, ESC.D.L);
COMPort_SendText(COM, ESC.A.L.chr(0).chr(0));
COMPort_SendText(COM, ESC.U.V.chr(4));
COMPort_SendText(COM, ESC.Z.F."CHICAGO14");
COMPort_SendText(COM, ESC.Z.V.chr(1));
COMPort_SendText(COM, ESC.Z.L.chr(8).chr(2).$Datum.CR);
COMPort_SendText(COM, ESC.Z.R.chr(230).chr(2).$Zeit.CR);
// Touchbutton anzeigen
COMPort_SendText(COM, ESC.R.R.chr(00).chr(00).chr(240).chr(128).chr(13).CR);
COMPort_SendText(COM, ESC.G.D.chr(50).chr(00).chr(50).chr(15).CR);
COMPort_SendText(COM, ESC.Z.C.chr(120).chr(02)."Standby:".CR);
COMPort_SendText(COM, ESC.R.R.chr(00).chr(15).chr(240).chr(15).CR);
COMPort_SendText(COM, ESC.G.D.chr(190).chr(00).chr(190).chr(15).CR);
COMPort_SendText(COM, ESC.A.E.chr(0));
COMPort_SendText(COM, ESC.A.T.chr(0).chr(0).chr(240).chr(128).chr(50).NULL."CTouch Me :-)".CR);
IPS_SetScriptTimer("Display.WZ_Main", 0);
exit;
}
//Display beim ersten berühren wieder reaktivieren
IPS_SetScriptTimer("Display.WZ_Main", 300);
COMPort_SendText(COM, ESC.Y.H.chr(60));
// Eingabe Auswerten
$Command = GetValueString("Display.WZ_Data");
$wert = substr($Command, -1); // gibt den Letzten Buchstaben zurück
switch ($wert)
{
case "+" :
IPS_RunScript("Display.WZ_Boot"); // Display Reboot
break;
case "A" :
IPS_RunScript("Licht.WZ_Decke-Strasse");
break;
case "B" :
IPS_RunScript("Licht.WZ_Decke-Loggia");
break;
case "C" :
IPS_RunScript("Media.WZ_Radio");
break;
case "D" :
IPS_RunScript("Licht.VZ_Decke-Eingang");
break;
case "E" :
IPS_RunScript("Licht.VZ_Decke-Gang");
break;
case "F" :
IPS_RunScript("Licht.BAD_Decke");
break;
case "G" :
IPS_RunScript("Licht.BAD_Spiegel");
break;
case "H" :
IPS_RunScript("Display.WZ_LifeStyle_Licht");
break;
case "I" :
IPS_RunScript("Display.WZ_LifeStyle_Audio");
break;
case "J" :
IPS_RunScript("Display.WZ_LifeStyle_Video");
break;
case "K" :
// Do nothing
break;
case "L" :
// Do nothing
break;
case "M" :
IPS_RunScript("Display.WZ_Temp_Loggia");
break;
case "N" :
IPS_RunScript("Display.WZ_Temp_WZ");
break;
case "O" :
// Do nothing
break;
case "P" :
IPS_RunScript("Display.WZ_Temp_VZ");
break;
case "Q" :
// Do nothing
break;
case "R" :
// Do nothing
break;
case "S" :
// Do nothing
break;
case "T" :
// Do nothing
break;
case "U" :
IPS_RunScript("Display.WZ_Switch_WZ"); // Schalt Menu Wohnzimmer anzeigen
break;
case "V" :
// Do nothing
break;
case "W" :
IPS_RunScript("Display.WZ_Switch_VZ"); // Schalt Menu Vorzimmer anzeigen
break;
case "X" :
// Do nothing
break;
case "Y" :
IPS_RunScript("Display.WZ_Switch_BAD"); // Schalt Menu BAD anzeigen
break;
case "Z" :
// Do nothing
break;
case 0 :
IPS_RunScript("Display.WZ_Boot"); // Connect Button
break;
case 1 :
IPS_RunScript("Display.WZ_MainMenu"); // Menu Button
break;
case 2 :
IPS_RunScript("Display.WZ_MainMenu"); // MainMenu after StandBy
break;
case 3 :
// Do nothing
break;
case 4 :
// Do nothing
break;
case 5 :
// Do nothing
break;
case 6 :
IPS_RunScript("Display.WZ_Switch"); // Schalt Menu anzeigen
break;
case 7 :
IPS_RunScript("Display.WZ_LifeStyle"); // LifeStyle-Menu anzeigen
break;
case 8 :
IPS_RunScript("Display.WZ_Temp"); // Temp-Menu anzeigen
break;
case 9 :
// Do nothing
break;
}
?>

Zum schalten der Devices verwende ich die schon vorhandenen Toggle-Scripte, die ich auch vom Designer aus verwende.

Aufgrund meiner bescheidenen PHP-Kenntnisse hab ich sicherlich einiges umständlicher gelöst als nötig wär… aber es funktioniert :rolleyes: .

Ich hab mich dafür entschieden die einzelnen Menüs in einzelne Scripte aufzuteilen und diese per IPS_RunScript zu starten.
Man könnte sicherlich auch alles in ein Script packen…

Hallo chrisu,

naja, hier mal die Grundlagen USB, wie es normiert aussehen darf:

Geräte am USB BUS werden je nach Stromverbrauch in „Low Power“ (max. 100 mA, 4,4 V) oder „High Power“ (max. 500 mA, 4,75 V) eingeteilt. Beim Einschalten/Einstecken darf jedoch kein Gerät mehr als 100 mA ziehen. Wenn genügend Leistung verfügbar ist, darf nach der Identifikation auf den höheren Verbrauch umgeschaltet werden.

Geräte mit geringem Strombedarf können somit direkt über den Bus versorgt werden. Andere Geräte mit höherem Strombedarf benötigen eine eigene Versorgung, können aber über den USB BUS ein- und ausgeschaltet werden. Es gibt zudem umfangreiche Möglichkeiten der Energieverwaltung, wie beispielsweise das Umschalten in den Bereitschafts- oder Schlafzustand.

Eine einzelne Kabelstrecke darf maximal 5 Meter lang sein. Mit insgesamt sieben zugelassenen Kabelstrecken hintereinander beträgt die größte Entfernung zwischen dem Root Device PC und dem Peripheriegerät somit 35 Meter.

Gruss Torro

Hi,

ist für mich nicht relevant, da ich es ja per W-LAN, also mit Netzteil betreibe.
Aber Doc wird diese Info sicher brauchen können…

ich hätte aber auch dafür eine Lösung:

Das Display mit 3% Helligkeit hochfahren (= ca. 90mA) und dann per Script auf die gewünschte Helligkeit bringen…

Hallo chrisu,

klar. Ich wollte es nur der Vollstaendigkeit mal sagen, damit kein anderer aufgrund Deiner Aussage: -> Der Strom aus nem USB-Port müsste reichen… schlussfolgert, er koennte bei einer anderen Anwendung dann mal locker die von Dir genannten Strom- und Spannungsdaten verwenden, das duerfte dann schiefgehen.

Gruss Torro

Hallo Torro,

hast ja recht, ich hatte das mit dem einschaltstrom nicht bedacht :rolleyes: …

danke
für die Nachhilfe :stuck_out_tongue:

Hallo Chrisu,

vielen Dank für deine Tests, das hilft mir auf jeden Fall schon einmal weiter.

Mir war es wichtig zu wissen, ob wir wie Torro schon beschrieben hat unter 100mA bleiben, beim starten. Hatte auch bedenken, da ich dachte, das Display würde mit CFL-Beleuchtung arbeiten und einen hohen einschaltstrom haben. Der Hersteller gibt ja die max. Stromaufnahme an, dies ließe sich ja wie du schon geschrieben hast, durch starten ohne Hintergrundgeleuchtung reduzieren und dann nach 1 Sekunden einschalten.
Was mir noch wirklich so fehlt ist die Anbindung weiterer Sensoren usw., damit ich mir eine quasi kabelgebundene FHT bauen kann.
Leider gibt es auch noch nicht so viele Infos zum 1-Wire Display Projekt, was mir nun letztendlich bei meiner Entscheidung helfen könnte.
Das mit dem Display werde ich mir aber auf jeden Fall mal genauer anschauen, evtl. sogar mit Bluetooth>RS232 Modul für den Flur im OG.
Das Bluetoothmodul ist günstiger, kleiner und sicherer und ich müsste nicht ständig W-LAN aktiviert haben.
Ich bin morgen auf der Hobbytronic, werde mich dort auch nochmal umsehen, welche Ideen sich damit noch verwirklichen lassen. Das eDIP ist aber auf jeden Fall schon einmal erschwinglich geworden, und sieht mit einem Rahmen auch noch gut aus.

Viele Grüße,

Doc

Hallo Doc,

schau doch einfach mal hier, da erhaelst Du von uns in Kuerze ein Modul, welches die FHTs ersetzt und nun auch kein Problem mehr mit der Fussbodenheizung darstellt. Im uebrigen wird unser Modul auch Schaltaufgaben wahrnehmen koennen. Naehere Informationen kommen in den naechsten 14 Tagen, wenn alles soweit abgeklaert ist.

Gruss Torro

Hallo Torro,

hab ich doch schon längst gelesen. Nur sind die Informationen noch zu dürftig gewesen, um mir ein Bild davon zu machen, ob es das ist, was ich brauche.
Dann werd’ ich mal noch ein paar Tage warten.
Was meinst du mit Problem mit der Fußbodenheizung? Ist das ein FHT-Problem gewesen oder willst du ein PID implementieren?

Doc

Hallo Doc,

naja, wenn keiner weiter fragt, scheint mir es dann so, dass alles klar ist.

Dann werd’ ich mal noch ein paar Tage warten.
Was meinst du mit Problem mit der Fußbodenheizung? Ist das ein FHT-Problem gewesen oder willst du ein PID implementieren?
Doc

bisher konnte man ja die FHTs dafuer nicht einsetzen, weil eine Regelung durch die 15-Minuten Messwertuebermittlung sinnlos ist. Bei unserem Modul hat man eine Reaktionszeit, die nur noch auf die Geschwindigkeit / Traegheit des Stellmotors beschraenkt ist. Einen PID Regler koennte man in IPS integrieren, aber schon die normale „Traegheitsregelung“ hat im Test wunderbar geklappt.

Gruss Torro

Hallo Torro,

kannst du nicht schon einmal einen kleinen „Zwischenbericht“ liefern?
Was ist/wird möglich sein, was habt ihr getestet und funktioniert schon?
Wie sieht es mit der Geschwindigkeit bei der Verwendung mehrerer Module aus?

Gruß,

Doc