OK, hier mal der Stomverbrauch:
Alle angaben bei 5,7V (die 0,7 wegen ner Diode die ich als verpolungsschutz eingebaut hab ), 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…