+! Symbole
+! 0x80 AUS
+! 0x81 EIN
+! 0x82 OFFEN
+! 0x83 geschlossen
+! 0x84 fehler
+! 0x85 alles ok
+! 0x86 information
+! 0x87 neue nachricht
+! 0x88 servicemeldung
+
+
+! Zugriff auf vordefinierte Texte
+!
+! 0x80 Textblock 1
+! 0x81 Textblock 2
+! 0x82 Textblock 3
+! 0x83 Textblock 4
+! 0x84 Textblock 5
+! 0x85 Textblock 6
+! 0x86 Textblock 7
+! 0x87 Textblock 8
+! 0x88 Textblock 9
+! 0x89 Textblock 10
+
+
+! Tonfolgen
+! 0xC0 AUS
+! 0xC1 LANG LANG
+! 0xC2 LANG KURZ
+! 0xC3 LANG KURZ KURZ
+! 0xC4 KURZ
+! 0xC5 KURZ KURZ
+! 0xC6 LANG
+
+!Signale
+! 0xF0 AUS
+! 0xF1 Rotes Blitzen
+! 0xF2 Grünes Blitzen
+! 0xF3 Orangenes Blitzen
+
+!Seriennummer des HM-Disp-EP-WM55.
+string seriennummer = "NEQ0711000";
+
+!Variablen für die Texte und Icons
+!Nicht verwendete Variablen nicht löschen, sondern auf "" setzen!
+!Zeilen-Variablen können 0x80-0x89 für vordefinierte Texte oder bis zu 12 Zeichen Freitext sein. (längere Texte werden abgeschnitten)
+
+var offen = dom.GetObject("countOpenWindows");
+integer windowsOpen = offen.Value().ToInteger();
+
+if (dom.GetObject("alleAlarmzonenScharf").State()==1) {
+ string alarm_status="an";
+ string alarm_icon="";
+ } else {
+ string alarm_status="aus";
+ string alarm_icon="";
+}
+
+
+string zeile2 = "Alarm " # alarm_status;
+string icon2 = "";
+
+if (windowsOpen>0) {
+ zeile3 = windowsOpen # " Fenster";
+ string icon3 = "";
+ string zeile4 = "offen";
+ string icon4 = "";
+} else {
+ string zeile3 = "Alle Fenster";
+ string icon3 = "";
+ string zeile4 = "sind zu";
+ string icon4 = "";
+}
+
+string signal = "0xF2";
+!Signalpipser aus
+string tonfolge = "0xC0";
+
+! 1 bis 15. 0 = Unendlich
+integer wiederholungen = 1;
+
+! es wird zum nächstmöglichen Abstand aufgerundet. Maximum ist 160s.
+integer abstand = 10;
+
+
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+! System Routine do not change anything below !
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+string splitter="|";
+string msgBuffer = zeile2 # splitter # icon2 # "\t";
+msgBuffer = msgBuffer # zeile3 # splitter # icon3 # "\t";
+msgBuffer = msgBuffer # zeile4 # splitter # icon4;
+
+string substitutions = "A,0x41\tB,0x42\tC,0x43\tD,0x44\tE,0x45\tF,0x46\tG,0x47\tH,0x48\tI,0x49\tJ,0x4A\tK,0x4B\tL,0x4C\tM,0x4D\tN,0x4E\tO,0x4F\tP,0x50\tQ,0x51\tR,0x52\tS,0x53\tT,0x54\tU,0x55\tV,0x56\tW,0x57\tX,0x58\tY,0x59\tZ,0x5A";
+substitutions = substitutions # "\ta,0x61\tb,0x62\tc,0x63\td,0x64\te,0x65\tf,0x66\tg,0x67\th,0x68\ti,0x69\tj,0x6A\tk,0x6B\tl,0x6C\tm,0x6D\tn,0x6E\to,0x6F\tp,0x70\tq,0x71\tr,0x72\ts,0x73\tt,0x74\tu,0x75\tv,0x76\tw,0x77\tx,0x78\ty,0x79\tz,0x7A";
+substitutions = substitutions # "\t0,0x30\t1,0x31\t2,0x32\t3,0x33\t4,0x34\t5,0x35\t6,0x36\t7,0x37\t8,0x38\t9,0x39\t ,0x20\t!,0x21\t\",0x22\t%,0x25\t&,0x26\t=,0x27\t(,0x28\t),0x29\t*,0x2A\t+,0x2B\t,,0x2C\t-,0x2D\t.,0x2E\t/,0x2F";
+substitutions = substitutions # "\tÄ,0x5B\tÖ,0x23\tÜ,0x24\tä,0x7B\tö,0x7C\tü,0x7D\tß,0x5F\t:,0x3A\t;,0x3B\t@,0x40\t>,0x3E";
+
+string bufferLine;
+string substEntry;
+integer i;
+string char;
+string line;
+string icon;
+
+string command = "0x02,0x0A";
+foreach(bufferLine, msgBuffer) {
+ line = bufferLine.StrValueByIndex(splitter, 0);
+ icon = bufferLine.StrValueByIndex(splitter, 1);
+ if ((line <> "") || (icon <> "")) {
+ command = command # ",0x12";
+ if ((line.Substr(0,2) == "0x") && (line.Length() == 4)) {
+ command = command # "," # line;
+ i = 12;
+ }
+ else {
+ i = 0;
+ }
+ while ((i < line.Length()) && (i < 12)) {
+ char = line.Substr(i, 1);
+ foreach(substEntry, substitutions){
+ if (char == substEntry.Substr(0,1)){command = command # substEntry.Substr(1,5);}
+ }
+ i = i + 1;
+ }
+ if (icon <> "") {
+ command = command # ",0x13," # icon;
+ }
+ }
+ command = command # ",0x0A";
+}
+
+command = command # ",0x14," # tonfolge # ",0x1C,";
+
+if (wiederholungen < 1){
+ command = command # "0xDF,0x1D,";
+}
+else {
+ if (wiederholungen < 11) {
+ command = command # "0xD" # (wiederholungen - 1) # ",0x1D,";
+ }
+ else {
+ if (wiederholungen == 11) {
+ command = command # "0xDA,0x1D,";
+ }
+ else {
+ if (wiederholungen == 12) {
+ command = command # "0xDB,0x1D,";
+ }
+ else {
+ if (wiederholungen == 13) {
+ command = command # "0xDC,0x1D,";
+ }
+ else {
+ if (wiederholungen == 14) {
+ command = command # "0xDD,0x1D,";
+ }
+ else {
+ command = command # "0xDE,0x1D,";
+ }
+ }
+ }
+ }
+ }
+}
+
+
+if (abstand <= 10) {
+ command = command # "0xE0,0x16,";
+}
+else {
+ if (abstand <= 100) {
+ command = command # "0xE" # (abstand - 1 / 10) # ",0x16,";
+ }
+ else {
+ if (abstand <= 110) {
+ command = command # "0xEA,0x16,";
+ }
+ else {
+ if (abstand <= 120) {
+ command = command # "0xEB,0x16,";
+ }
+ else {
+ if (abstand <= 130) {
+ command = command # "0xEC,0x16,";
+ }
+ else {
+ if (abstand <= 140) {
+ command = command # "0xED,0x16,";
+ }
+ else {
+ if (abstand <= 150) {
+ command = command # "0xEE,0x16,";
+ }
+ else {
+ command = command # "0xEF,0x16,";
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+command = command # signal # ",0x03";
+
+dom.GetObject("BidCos-RF." # seriennummer # ":3.SUBMIT").State(command);