Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Script

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Script

Beitrag von DrTob » 04.12.2014, 00:44

Mit einem einfachen WebUI-Programm können auf die neue Statusanzeige nur feste Texte übermittelt werden. Variable Texte, wie z.B. der Füllstand einer Zisterne, Temperatur etc. sind so nicht möglich.

Das funktioniert mit folgendem Script:

Code: Alles auswählen

!! Universalprogramm zum Füllen V1.5
!! (c) DrTob 
!! optimized by thkl

!! Das Script holt sich jetzt die Seriennummer des Displays selbst aus der Auslösebedinung des Programms

! Farben
! 0x80 weiß
! 0x81 rot
! 0x82 orange
! 0x83 gelb
! 0x84 gruen
! 0x85 blau 

! Symbole 
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung
! 0x89 Signal grün
! 0x8A Signal gelb
! 0x8B Signal rot

! Zugriff auf vordefinierte Texte
!
! 0x80 Text  0 (Kanal 1  Text Zeile 1)
! 0x81 Text  1 (Kanal 1  Text Zeile 2)
! 0x82 Text  2 (Kanal 2  Text Zeile 3)
! 0x83 Text  3 (Kanal 2  Text Zeile 4)
! 0x84 Text  4 (Kanal 3  Text Zeile 5)
! 0x85 Text  5 (Kanal 3  Text Zeile 6)
! 0x86 Text  6 (Kanal 4  Text Zeile 7)
! 0x87 Text  7 (Kanal 4  Text Zeile 8)
! 0x88 Text  8 (Kanal 5  Text Zeile 9)
! 0x89 Text  9 (Kanal 5  Text Zeile 10)
! 0x8A Text 10 (Kanal 6  Text Zeile 11)
! 0x8B Text 11 (Kanal 6  Text Zeile 12)
! 0x8C Text 12 (Kanal 7  Text Zeile 13)
! 0x8D Text 13 (Kanal 7  Text Zeile 14)
! 0x8E Text 14 (Kanal 8  Text Zeile 15)
! 0x8F Text 15 (Kanal 8  Text Zeile 16)
! 0x90 Text 16 (Kanal 9  Text Zeile 17)
! 0x91 Text 17 (Kanal 9  Text Zeile 18)
! 0x92 Text 18 (Kanal 10 Text Zeile 19)
! 0x93 Text 19 (Kanal 10 Text Zeile 20)

string zeile1 = "Zeile 1";
string color1 = "0x80";
string icon1  = "";

string zeile2 = "Zeile 2";
string color2 = "0x80";
string icon2  = "";

string zeile3 = "Zeile 3";
string color3 = "0x80";
string icon3  = "";

string zeile4 = "Zeile 4";
string color4 = "0x80";
string icon4  = "";

string zeile5 = "Zeile 5";
string color5 = "0x80";
string icon5  = "";

string zeile6 = "Zeile 6";
string color6 = "0x80";
string icon6  = "";

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! System Routine do not change anything below !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string splitter="|";
string msgBuffer = zeile1 # splitter # color1 # splitter # icon1 # "\t";
msgBuffer = msgBuffer # zeile2 # splitter # color2 # splitter # icon2 # "\t";
msgBuffer = msgBuffer # zeile3 # splitter # color3 # splitter # icon3 # "\t";
msgBuffer = msgBuffer # zeile4 # splitter # color4 # splitter # icon4 # "\t";
msgBuffer = msgBuffer # zeile5 # splitter # color5 # splitter # icon5 # "\t";
msgBuffer = msgBuffer # zeile6 # splitter # color6 # splitter # icon6;

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\t?,0x3f"; 

string bufferLine;
string substEntry;
integer i;
string char;
string line;
string icon;

string command = "0x02";
foreach(bufferLine, msgBuffer) {
   line = bufferLine.StrValueByIndex(splitter, 0);
   icon = bufferLine.StrValueByIndex(splitter, 2);
   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; 
      }
      command = command # ",0x11," # bufferLine.StrValueByIndex(splitter, 1);
      if (icon <> "") {
         command = command # ",0x13," # icon;
      }
   }
   command = command # ",0x0A";
}
command = command # ",0x03";

dom.GetObject("BidCos-RF." # dom.GetObject("$src$").Name().StrValueByIndex(".",1) # ".SUBMIT").State(command);
am Anfang des Scripts (Nach den Kommentaren mit möglichen Werten für Farben/Symbole und Kanaltexte) sind Variablen definiert, die auf die gewünschten Werte gesetzt werden können. Die Bearbeitung zur Anzeige erfolgt dann im unteren Teil (der unverändert bleiben sollte!).

Wird eine Zeile nicht benötigt, dann einfach die Variable auf "" setzten (nicht löschen!). Auf die in den Geräteeinstellungen definierten Texte kann zugegriffen werden, indem die entsprechenden Zeilenvariable auf den entsprechenden Wert 0x80 bis 0x93 (siehe Kommentar im Script) gesetzt wird. Wenn man statische Zeilen so definiert, entsteht deutlich weniger Funkverkehr, weil die Texte dann nicht jedes mal übertragen werden müssen.


Konkretes Beispiel, das Solltemperatur, Isttemperatur und Ventilstatus eines HM-CC-RT-DN Heizkörperthermostats ausgibt, weicht die Ist- mehr als 2° von der Solltemperatur ab, wird sie in rot (zu warm) oder blau (zu kalt) dargestellt :
Vorraussetzung:
- in den Geräteeinstellungen ist bei Kanal 1 der "Text Zeile 1" auf "Soll" gesetzt.
- in den Geräteeinstellungen ist bei Kanal 1 der "Text Zeile 2" auf "Ist" gesetzt.
- in den Geräteeinstellungen ist bei Kanal 2 der "Text Zeile 3" auf "Ventilstatus" gesetzt.

die Seriennummer des Termostats muss im Script angepasst werden. (im Beispiel: KEQ0123456).

Code: Alles auswählen

!! Universalprogramm zum Füllen 
!! (c) DrTob 
!! optimized by thkl

!! Das Script holt sich jetzt die Seriennummer des Displays selbst aus der Auslösebedinung des Programms

! Farben
! 0x80 weiß
! 0x81 rot
! 0x82 orange
! 0x83 gelb
! 0x84 gruen
! 0x85 blau 

! Symbole 
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung
! 0x89 Signal grün
! 0x8A Signal gelb
! 0x8B Signal rot

! Zugriff auf vordefinierte Texte
!
! 0x80 Text  0 (Kanal 1  Text Zeile 1)
! 0x81 Text  1 (Kanal 1  Text Zeile 2)
! 0x82 Text  2 (Kanal 2  Text Zeile 3)
! 0x83 Text  3 (Kanal 2  Text Zeile 4)
! 0x84 Text  4 (Kanal 3  Text Zeile 5)
! 0x85 Text  5 (Kanal 3  Text Zeile 6)
! 0x86 Text  6 (Kanal 4  Text Zeile 7)
! 0x87 Text  7 (Kanal 4  Text Zeile 8)
! 0x88 Text  8 (Kanal 5  Text Zeile 9)
! 0x89 Text  9 (Kanal 5  Text Zeile 10)
! 0x8A Text 10 (Kanal 6  Text Zeile 11)
! 0x8B Text 11 (Kanal 6  Text Zeile 12)
! 0x8C Text 12 (Kanal 7  Text Zeile 13)
! 0x8D Text 13 (Kanal 7  Text Zeile 14)
! 0x8E Text 14 (Kanal 8  Text Zeile 15)
! 0x8F Text 15 (Kanal 8  Text Zeile 16)
! 0x90 Text 16 (Kanal 9  Text Zeile 17)
! 0x91 Text 17 (Kanal 9  Text Zeile 18)
! 0x92 Text 18 (Kanal 10 Text Zeile 19)
! 0x93 Text 19 (Kanal 10 Text Zeile 20)

var istTemp = dom.GetObject("BidCos-RF.KEQ0123456:4.ACTUAL_TEMPERATURE").State();
var sollTemp = dom.GetObject("BidCos-RF.KEQ0123456:4.SET_TEMPERATURE").State();
var valve = dom.GetObject("BidCos-RF.KEQ0123456:4.VALVE_STATE").State();

string zeile1 = "0x80";
string color1 = "0x80";
string icon1  = "";

string zeile2 = sollTemp.ToString(1) # " Grad";
string color2 = "0x80";
string icon2  = "";

string zeile3 = "0x81";
string color3 = "0x80";
string icon3  = "";

string zeile4 = istTemp.ToString(1) # " Grad";

var diff = istTemp - sollTemp;

string color4 = "0x84";
if (diff < -2) {
		color4 = "0x85";
}
else{
	if (diff > 2){
		color4 = "0x81";
	}
}
string icon4  = "";

string zeile5 = "0x82";
string color5 = "0x80";
string icon5  = "";

string zeile6 = valve.ToString(0) # "%";;
string color6 = "0x80";
string icon6  = "";

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! System Routine do not change anything below !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string splitter="|";
string msgBuffer = zeile1 # splitter # color1 # splitter # icon1 # "\t";
msgBuffer = msgBuffer # zeile2 # splitter # color2 # splitter # icon2 # "\t";
msgBuffer = msgBuffer # zeile3 # splitter # color3 # splitter # icon3 # "\t";
msgBuffer = msgBuffer # zeile4 # splitter # color4 # splitter # icon4 # "\t";
msgBuffer = msgBuffer # zeile5 # splitter # color5 # splitter # icon5 # "\t";
msgBuffer = msgBuffer # zeile6 # splitter # color6 # splitter # icon6;

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\t?,0x3f"; 

string bufferLine;
string substEntry;
integer i;
string char;
string line;
string icon;

string command = "0x02";
foreach(bufferLine, msgBuffer) {
   line = bufferLine.StrValueByIndex(splitter, 0);
   icon = bufferLine.StrValueByIndex(splitter, 2);
   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; 
      }
      command = command # ",0x11," # bufferLine.StrValueByIndex(splitter, 1);
      if (icon <> "") {
         command = command # ",0x13," # icon;
      }
   }
   command = command # ",0x0A";
}
command = command # ",0x03";

dom.GetObject("BidCos-RF." # dom.GetObject("$src$").Name().StrValueByIndex(".",1) # ".SUBMIT").State(command);
Zu beachten ist außerdem, dass anzeigen auf dem Statusdisplay immer durch ein Programm gesendet werden müssen, das als Reaktion auf einen Tastendruck des Statusdisplay ausgeführt wird. (Wenn Statusdisplay:1 Tastendruck kurz, DANN Script)



---edit 11.12.2018: "?" (Fragezeichen) ergänzt
Zuletzt geändert von DrTob am 11.01.2018, 23:49, insgesamt 5-mal geändert.

raffcjab
Beiträge: 97
Registriert: 18.11.2012, 12:24

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von raffcjab » 12.12.2014, 13:00

Hallo DrTob,

das ist mehr als genial und spart viele Stunden/Tage mühsames pusseln und frustrierende Fehlversuche. Insbesondere der automatische Austausch von Sonderzeichen ist sehr hilfreich.

Viele Grüße und vielen Dank,

raffcjab

PS: Wer das Script in der WEBUI-Umgebung testen möchte, muss bei der Generierung der "substitutions" das ">" löschen, sonst stürzt der Test ab!
Zuletzt geändert von raffcjab am 12.12.2014, 17:41, insgesamt 1-mal geändert.

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von paul53 » 12.12.2014, 16:42

Das zusätzliche "0x0A," hat sich wohl wieder eingeschlichen.

Code: Alles auswählen

 command = command # ",0x0A";
}
command = command # ",0x0A,0x03";
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Script

Beitrag von DrTob » 12.12.2014, 17:43

paul53 hat geschrieben:Das zusätzliche "0x0A," hat sich wohl wieder eingeschlichen.
Nicht ganz: es wurde nicht entfernt ;). Ich hatte den Beitrag vorher hier gepostet und vergessen anzupassen.. -> ich korrigiere das heute Abend.
Zuletzt geändert von DrTob am 12.12.2014, 22:29, insgesamt 1-mal geändert.

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von DrTob » 12.12.2014, 22:29

ich habe die Scripte im ersten Post aktualisiert.

raffcjab
Beiträge: 97
Registriert: 18.11.2012, 12:24

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von raffcjab » 14.12.2014, 14:59

DrTob hat geschrieben:ich habe die Scripte im ersten Post aktualisiert.
Ich habe den Definitionsbereich

Code: Alles auswählen

}string zeile1 = "Zeile 1";string color1 = "0x80";string icon1  = "";
string zeile2 = "Zeile 2";string color2 = "0x80";string icon2  = "";
string zeile3 = "Zeile 3";string color3 = "0x80";string icon3  = "";
string zeile4 = "Zeile 4";string color4 = "0x80";string icon4  = "";
string zeile5 = "Zeile 5";string color5 = "0x80";string icon5  = "";
string zeile6 = "Zeile 6";string color6 = "0x80";string icon6  = "";}
vervierfacht, verwendete eine Systemvariable "OLED-Seite", zähle die immer von 1-4 durch und lasse mir dann die vier Seiten mit jedem Tastendruck nacheinander anzeigen. Damit bekomme ich die nötigsten Infos (Fenster/Licht/Temperaturen(ist/soll) für 5 Räume) auf's Display!

Pseudocode:

Code: Alles auswählen

wenn OLED-Seite > 4, dann OLED-Seite = 1
wenn OLED-Seite = 1, dann Definitionsbereich1
wenn OLED-Seite = 2, dann Definitionsbereich2
wenn OLED-Seite = 3, dann Definitionsbereich3
wenn OLED-Seite = 4, dann Definitionsbereich4
OLED-Seite = OLED-Seite+1

skh
Beiträge: 12
Registriert: 06.01.2014, 15:01

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von skh » 17.12.2014, 07:18

Hallo raffcjab
ich finde deine Idee Super, nur verstehe ich nicht wie du das definiert hast. Viellecht könntest du mal dein ganzes Script Posten.
Das mit der Systemvariable ist klar, das verstehe ich schon. Aber wie sieht das Script für die Statusanzeige bei dir dann aus?
[--------------------------------------------
178 Kanäle in 88 Geräten und 44 CUxD-Kanäle in 5 CUxD-Geräten:
1x HM-LC-Sw4-SM, 4x HM-Sen-MDIR-SM, 1x HM-Sen-MDIR-O, 1x HM-Sen-MDIR-O-2, 1x HM-Sec-MDIR, 1x HM-Sen-MDIR-WM55, 7x HM-Sec-SD, 2x CUX91, 3x CUX28, 5x HM-ES-PMSw1-Pl, 7x HM-Sec-RHS, 6x HM-Sec-SCo, 1x HM-RC-Key4-2, 4x HM-LC-Sw2-FM, 1x HM-LC-Sw1-FM, 1x HM-Sec-TiS, 1x HM-Sen-DB-PCB, 5x HM-CC-VG-1, 5x HM-ES-PMSw1-DR, 5x HM-CC-RT-DN, 1x HM-LC-Sw4-DR, 2x HM-LC-Sw1-Pl-2, 1x HM-LC-Sw1PBU-FM, 1x HM-Sec-SD-Team, 1x HM-LC-Bl1-FM, 11x HM-LC-Bl1PBU-FM, 1x HM-PBI-4-FM, 1x HM-PB-4Dis-WM, 1x HM-PB-6-WM55, 1x HM-PB-2-WM55, 1x HM-OU-CFM-Pl, 1x HM-Dis-WM55, 2x HM-ES-TX-WM, 1x HM-Sec-SC-2, 3x HM-TC-IT-WM-W-EU, 1x HM-Sec-WDS-2, 1x HM-WDS100-C6-O
--------------------------------------------

raffcjab
Beiträge: 97
Registriert: 18.11.2012, 12:24

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von raffcjab » 17.12.2014, 08:22

Hi skh!

Der Rest sind einfache Geräteabfragen, die dann in die Variablen zeile, color und icon transformiert werden, da dies für jeden sehr individuell ist, wollte ich damit keinen verwirren, auf Nachfrage sende ich es aber gerne (bis auf konkrete Namen und die "System-Routine" von DrTob). Wichtig ist noch bei Verwendung von Icons, dass jede Zeile ein Icon erhält, weil nur dann alle Icons klein (und ohne Überlapp) dargestellt werden.

Code: Alles auswählen

!! Programm zum Füllen der OLED-Anzeige
!! (c) DrTob angepasst von raffcjab 

!! Das Script holt sich jetzt die Seriennummer des Displays selbst aus der Auslösebedinung des Programms

! Farben
! 0x80 weiß
! 0x81 rot
! 0x82 orange
! 0x83 gelb
! 0x84 gruen
! 0x85 blau 

! Symbole 
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung
! 0x89 Signal grün
! 0x8A Signal gelb
! 0x8B Signal rot

! Zugriff auf vordefinierte Texte
!
! 0x80 Text  0 (Kanal 1  Text Zeile  1) Fenster
! 0x81 Text  1 (Kanal 1  Text Zeile  2) Licht
! 0x82 Text  2 (Kanal 2  Text Zeile  3) T ist
! 0x83 Text  3 (Kanal 2  Text Zeile  4) T soll
! 0x84 Text  4 (Kanal 3  Text Zeile  5) 
! 0x85 Text  5 (Kanal 3  Text Zeile  6)
! 0x86 Text  6 (Kanal 4  Text Zeile  7)
! 0x87 Text  7 (Kanal 4  Text Zeile  8)
! 0x88 Text  8 (Kanal 5  Text Zeile  9)
! 0x89 Text  9 (Kanal 5  Text Zeile 10)
! 0x8A Text 10 (Kanal 6  Text Zeile 11) Kind
! 0x8B Text 11 (Kanal 6  Text Zeile 12) Badezimmer
! 0x8C Text 12 (Kanal 7  Text Zeile 13) Küche
! 0x8D Text 13 (Kanal 7  Text Zeile 14) gelbes
! 0x8E Text 14 (Kanal 8  Text Zeile 15) grünes
! 0x8F Text 15 (Kanal 8  Text Zeile 16)
! 0x90 Text 16 (Kanal 9  Text Zeile 17)
! 0x91 Text 17 (Kanal 9  Text Zeile 18)
! 0x92 Text 18 (Kanal 10 Text Zeile 19)
! 0x93 Text 19 (Kanal 10 Text Zeile 20)

if ((dom.GetObject("OLED-Seite").Value() < 1) || (dom.GetObject("OLED-Seite").Value() > 4)) {dom.GetObject("OLED-Seite").State(1)};

if (dom.GetObject("OLED-Seite").Value() == 1)

{string zeile1 = "0x80";string color1 = "0x80";string icon1  = "0x86";

string zeile2 = "0x8A";string color2 = "0x81";string icon2  = "0x8B";
if ((dom.GetObject("FDK Kind links").DPByHssDP("STATE").Value() == 0) && (!dom.GetObject("FK Kind mittig").DPByHssDP("STATE").Value())) {icon2  = "0x89";};

string zeile3 = "0x8B";string color3 = "0x85";string icon3  = "0x8B";
if ((!dom.GetObject("FK Bad kipp").DPByHssDP("STATE").Value()) && (!dom.GetObject("FK Bad auf").DPByHssDP("STATE").Value())) {icon3  = "0x89";};

string zeile4 = "0x8C";string color4 = "0x82";string icon4  = "0x8B";
if (dom.GetObject("FDK Küche links").DPByHssDP("STATE").Value() == 0) {icon4  = "0x89";};

string zeile5 = "0x8D";string color5 = "0x83";string icon5  = "0x8B";
if ((dom.GetObject("FDK gelb SSO rechts").DPByHssDP("STATE").Value() == 0) && (dom.GetObject("FDK gelb ONO links").DPByHssDP("STATE").Value() == 0) && (dom.GetObject("FDK gelb ONO rechts").DPByHssDP("STATE").Value() == 0)) {icon5  = "0x89";};

string zeile6 = "0x8E";string color6 = "0x84";string icon6  = "0x8B";
if ((dom.GetObject("FDK gruen ONO rechts").DPByHssDP("STATE").Value() == 0) && (dom.GetObject("FDK gruen ONO links").DPByHssDP("STATE").Value() == 0)) {icon6  = "0x89";};
}


if (dom.GetObject("OLED-Seite").Value() == 2)

{string zeile1 = "0x81";string color1 = "0x80";string icon1  = "0x86";

string zeile2 = "0x8A";string color2 = "0x81";string icon2  = "0x81";
if ((!dom.GetObject("IO2 DO2 Sterne").DPByHssDP("STATE").Value()) && (!dom.GetObject("IO2 DO1 Licht").DPByHssDP("STATE").Value())) {icon2  = "0x80";};

string zeile3 = "0x8B";string color3 = "0x85";string icon3  = "0x88";

string zeile4 = "0x8C";string color4 = "0x82";string icon4  = "0x81";
if ((dom.GetObject("LDS Küche ONO K1").DPByHssDP("LEVEL").Value() == 0)) {icon4  = "0x80";};

string zeile5 = "0x8D";string color5 = "0x83";string icon5  = "0x81";
if ((!dom.GetObject("LS gelb Decke").DPByHssDP("STATE").Value()) && (!dom.GetObject("IO3 R1 Licht").DPByHssDP("STATE").Value()) && (!dom.GetObject("LS gelb NNW").DPByHssDP("STATE").Value()) && (!dom.GetObject("IO3 DO4 Lichtwecken").DPByHssDP("STATE").Value())) {icon5  = "0x80";};

string zeile6 = "0x8E";string color6 = "0x84";string icon6  = "0x81";
if ((!dom.GetObject("LS grün Decke").DPByHssDP("STATE").Value())) {icon6  = "0x80";};
}


if (dom.GetObject("OLED-Seite").Value() == 3)

{string zeile1 = "aussen ";string color1 = "0x80";string icon1  = "";
zeile1 = zeile1 + dom.GetObject("Temperatur und Feuchte ONO").DPByHssDP("TEMPERATURE").Value().ToString(1);

string zeile2 = "Kind   ";string color2 = "0x81";string icon2  = "";
zeile2 = zeile2 + dom.GetObject("Temperatur und Feuchte Aminas Raum").DPByHssDP("TEMPERATURE").Value().ToString(1);

string zeile3 = "Bad    ";string color3 = "0x85";string icon3  = "";
zeile3 = zeile3 + dom.GetObject("Temperatur und Feuchte Bad").DPByHssDP("TEMPERATURE").Value().ToString(1);

string zeile4 = "Küche  ";string color4 = "0x82";string icon4  = "";
zeile4 = zeile4 + dom.GetObject("WT Küche VP TS").DPByHssDP("TEMPERATURE").Value().ToString(1);

string zeile5 = "gelbes ";string color5 = "0x83";string icon5  = "";
zeile5 = zeile5 + dom.GetObject("Temperatur und Feuchte gelb").DPByHssDP("TEMPERATURE").Value().ToString(1);

string zeile6 = "grünes ";string color6 = "0x84";string icon6  = "";
zeile6 = zeile6 + dom.GetObject("WT grün VP TS").DPByHssDP("TEMPERATURE").Value().ToString(1);
}

if (dom.GetObject("OLED-Seite").Value() == 4)

{string zeile1 = "0x83";string color1 = "0x80";string icon1  = "";


string zeile2 = "Kind   ";string color2 = "0x81";string icon2  = "";
zeile2 = zeile2 + dom.GetObject("Steuerung Heizung Amina").DPByHssDP("SETPOINT").Value().ToString(1);

string zeile3 = "Bad    ";string color3 = "0x85";string icon3  = "";
zeile3 = zeile3 + dom.GetObject("Steuerung Heizung Bad").DPByHssDP("SETPOINT").Value().ToString(1);

string zeile4 = "Küche  ";string color4 = "0x82";string icon4  = "";
zeile4 = zeile4 + dom.GetObject("WT Küche VP HZ").DPByHssDP("SET_TEMPERATURE").Value().ToString(1);

string zeile5 = "gelbes ";string color5 = "0x83";string icon5  = "";
zeile5 = zeile5 + dom.GetObject("Steuerung Heizung gelb").DPByHssDP("SETPOINT").Value().ToString(1);

string zeile6 = "grünes ";string color6 = "0x84";string icon6  = "";
zeile6 = zeile6 + dom.GetObject("WT grün VP HZ").DPByHssDP("SET_TEMPERATURE").Value().ToString(1);
}

dom.GetObject("OLED-Seite").State(dom.GetObject("OLED-Seite").Value()+1);

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von DrTob » 17.12.2014, 08:52

ich würde den Bereich nicht einfach vervierfachen. Sondern folgendermaßen vorgehen:

1. Systemvariable "Displayseite" erstellen.

2. nach der Deklaration der Zeilenvariablen (direkt vor dem System-Teil):

Code: Alles auswählen

var seite = dom.GetObject("Displayseite").State();
seite = seite + 1;
if (seite > 4) {seite = 1;}
dom.GetObject("Displayseite").State(seite);

if (seite == 1){
  ! Hier die Zeilenvariablen so setzten wie sie auf Seite 1 angezeigt werden sollen
}
if (seite == 2){
  ! Hier die Zeilenvariablen so setzten wie sie auf Seite 2 angezeigt werden sollen
}
if (seite == 3){
  ! Hier die Zeilenvariablen so setzten wie sie auf Seite 3 angezeigt werden sollen
}
if (seite == 4){
  ! Hier die Zeilenvariablen so setzten wie sie auf Seite 4 angezeigt werden sollen
}
edit: etwas zu langsam :) entspricht auch im Grunde fast dem Vorgehen von raffcjab. Ich hatte es etwas anders verstanden.

raffcjab
Beiträge: 97
Registriert: 18.11.2012, 12:24

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von raffcjab » 17.12.2014, 09:54

DrTob hat geschrieben:edit: etwas zu langsam :) entspricht auch im Grunde fast dem Vorgehen von raffcjab. Ich hatte es etwas anders verstanden.
Da bin ich ja froh, dass das "edit" kam. Dachte die Antwort ging an mich und habe die ganze Bahnfahrt gegrübelt, wo der grundlegende Unterschied ist :)

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“