HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

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

Moderator: Co-Administratoren

brufi
Beiträge: 28
Registriert: 27.12.2013, 20:42
Danksagung erhalten: 1 Mal

HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von brufi » 26.02.2015, 15:14

Hallo zusammen,

ich habe für mich und mit Hilfe des Forums eine Lösung gefunden, wie ich am Statusdisplay HM-DIS-WM55 durch kurze Klicks nach unten bzw. nach oben verschiedene Seiten durchblättern kann. Wird der gewünschte Vorgang (z.B. Wecker auf 6 Uhr stellen) angezeigt, kann mit einem langen Klick oben der Vorgang aktiviert werden (z.B. O.K., Wecker ist gestellt).

Ich habe das Ganze einmal abgefilmt: https://www.youtube.com/watch?v=sypuNQ8X7ds

Für alle die, die das nachbauen möchten erläutere ich nun kurz mal, wie ich es realisiert habe. Benötigt wird folgendes:
  • 3 Programme innerhalb der CCU-WebUI. Eines für die Taste nach oben kurz, eines für die Taste nach unten kurz und eines für die Taste nach oben lang. In jedem Programm wird ein Skript ausgeführt, das ich mir von den Herren
    DrTob, thkl und wortmann30 ausgeliehen habe, vielen Dank dafür!!
  • 4 Systemvariablen
    Seitenzaehler.png
    Seitenzaehler.png (22.09 KiB) 14115 mal betrachtet
    Schlafmodus.png
    Schlafmodus.png (22.65 KiB) 14115 mal betrachtet
    wecker6Uhr.png
    wecker6Uhr.png (21.24 KiB) 14115 mal betrachtet
    wecker8Uhr.png
    wecker8Uhr.png (21.26 KiB) 14115 mal betrachtet
In dem Skript, das hinter dem kurzen Tastendruck nach unten liegt wird in einer Schleife ein Zähler (seitenzaehler01) inkrementiert, der die Anzahl der Seiten zählt. Ist die Anzahl der vordefinierten Seiten erreicht fängt der Zähler von vorne an. Das Display ist so konfiguriert, dass es nach 20 Sekunden ausgeschaltet wird. Darum wird in jedem Programm nach jedem Tastendruck der Zähler nach 20 Sekunden wieder auf "0" gesetzt. Als Resultat fängt bei erneutem Tastendruck das Display wieder von der ersten Seite an.
Das Skript, das hinter der Taste "kurzer Tastendruck oben" liegt unterscheidet sich in der Zählroutine. Hier wird der Zähler (seitenzaehler01) rückwärts gezählt.
Hinter der Taste "oben lang" liegt ein Skript, das die jeweilige Aktion der momentan angezeigten Seite (seitenzaehler01) ausführt und das Ergebnis anzeigt.

Hier die Programme und Skripte:

Taste unten kurz:
unten-kurz.png

Code: Alles auswählen

! ### Homatic-Statusanzeige HM-Dis-WM55 ####
! ### Stausanzeige 2 , Vers. 1.0;
! ### Anzeige der Zysternen Füllstand, Zysternen Filter stand, Außentemperatur, Status der Türen, Fenster und Lichter

!! Universalprogramm zum Füllen 
!! (c) DrTob 
!! optimized by thkl
!! changed by wortmann30
!! Seitenzähler von Brufi

!! 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 = "";
string color1 = "0x80";
string icon1 = "";

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

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

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

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

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

! ####### wie viele Seiten auf dem Display sollen durchlaufen werden? ###########

integer seitenzahl = 4; 

! ###############################################################
  
! ####################### Zähler entsprechend der Anzahl Tastendrücke verändern #################
  

integer obj = dom.GetObject("seitenzaehler01"); ! ######## rausholen

integer xyz = obj.State();


if (xyz == seitenzahl) {
  obj.Variable(1);
}
else {

  xyz = xyz + 1; ! ######## incrementieren
  obj.Variable(xyz); ! ######### reinschreiben
}

! ################################################################################################  
  

  
  
! --------- Anfang Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------

! ### Systemvariable seitenzaehler01 holen ###

var seitenZaehler = dom.GetObject("seitenzaehler01");


! ###################### Seite 1 ######################


if (seitenZaehler.State()==1){
  
  
! ### Schlafmodus an oder aus? ####
  
var oSysvar = dom.GetObject("Schlafmodus");
if (oSysvar.State()==1){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Schlafen:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "ange-";
color4="0x81";
icon4 = "";
zeile5 = "schaltet";
color5 = "0x81";
icon5 = "";
zeile6 = "";
color6 = "0x80";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Schlafen:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "ausge-";
color4 = "0x84";
icon4 = "";
zeile5 = "schaltet";
color5 = "0x84";
icon5 = "";
zeile6 = "";
color6 = "0x80";
icon6 = "";
}
}
! ###################### Seite 2 ######################


if (seitenZaehler.State()==2){

! ### Wecker 6 Uhr ####
  
var oSysvar = dom.GetObject("wecker6Uhr");
if (oSysvar.State()==2){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "6 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "einge-";
color5 = "0x81";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x81";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "6 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "ausge-";
color5 = "0x84";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x84";
icon6 = "";
}
}

! ###################### Seite 3 ######################


if (seitenZaehler.State()==3){

! ### Wecker 8 Uhr ####
  
var oSysvar = dom.GetObject("wecker8Uhr");
if (oSysvar.State()==2){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "8 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "einge-";
color5 = "0x81";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x81";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "8 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "ausge-";
color5 = "0x84";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x84";
icon6 = "";
}
}

! ###################### Seite 4 ######################


if (seitenZaehler.State()==4){

! ### Übersicht ####
  
zeile1 = "Übersicht:";
color1 = "0x80";
icon1 = "";  

! #### Zeile 2 und 3 - Alle Fenster zu? Wie viele sind offen? #######
! # Gewerk mit dem Namen Verschluss wird gezählt

var obj = dom.GetObject("Fenster");
 string itemID;
 var cntopen=0;
 foreach(itemID, obj.EnumUsedIDs()) {
  var item = dom.GetObject(itemID);
  if(item.IsTypeOf(OT_CHANNEL))
  {
   var state=item.DPByHssDP("STATE");
   if(state.Value()<>0)
   {
     cntopen=cntopen+1;
   }
 }
}

if (cntopen>0) {
  zeile2 = cntopen # " Fenster";
  color2 = "0x81";
  icon2 = "";
  zeile3 = "offen";
  color3 = "0x81";
  icon3 = "";
} 

else {
  zeile2 = "Fenster zu";
  color2 = "0x84";
  icon2 = "";
} 

! #### Zeile 4 und 5 Temperatur im Schlafzimmer


var akttemp = dom.GetObject("BidCos-RF.XYZ1234567:1.TEMPERATURE").Value();
akttemp = akttemp.ToString(1);

zeile4 = "Schlafzimmer:";
  color4 = "0x80";
  icon4 = "";
  zeile5 = ""#akttemp#" C";
  color5 = "0x80";
  icon5 = "";


! #### Zeile 6 Außentemperatur

var channel=dom.GetObject("Wetter_Temperatur");
var temp = channel.Value();
if (temp > -10.0)
{ temp = temp.ToString(1);
  zeile6 = "Außen: "#temp#" C";
  color6 = "0x80";
}
else
{ temp = temp.ToString(1);
  zeile6 = "Außen: "#temp#" C";
}
color6 = "0x80";
icon6 = "";




  
}

! ###################### Seite 5 ######################



if (seitenZaehler.State()==5){


! ### Platz für weiere Seiten...


}



! --------- Ende Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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"; 

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

! ##### FERTIG #####
Taste oben kurz:
oben-kurz.png

Code: Alles auswählen

! ### Homatic-Statusanzeige HM-Dis-WM55 ####
! ### Stausanzeige 2 , Vers. 1.0;
! ### Anzeige der Zysternen Füllstand, Zysternen Filter stand, Außentemperatur, Status der Türen, Fenster und Lichter

!! Universalprogramm zum Füllen 
!! (c) DrTob 
!! optimized by thkl
!! changed by wortmann30
!! Seitenzähler von Brufi

!! 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 = "";
string color1 = "0x80";
string icon1 = "";

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

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

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

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

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

! ####### wie viele Seiten auf dem Display sollen durchlaufen werden? ###########

integer seitenzahl = 4; 

! ###############################################################
  
! ####################### Zähler entsprechend der Anzahl Tastendrücke verändern #################
  

integer obj = dom.GetObject("seitenzaehler01"); ! ######## rausholen
integer xyz = obj.State();
xyz = xyz-1; !######## rueckwaerts nach unten zaehlen
if (xyz <= 0) {
obj.Variable(seitenzahl);  ! #### Seitenzähler auf Ausgang setzen
} 
else {
 obj.State(xyz); ! ######### reinschreiben

}

! ###############################################################################################
  
  
  
! --------- Anfang Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------

! ### Systemvariable seitenzaehler01 holen ###

var seitenZaehler = dom.GetObject("seitenzaehler01");


! ###################### Seite 1 ######################


if (seitenZaehler.State()==1){
  
  
! ### Schlafmodus an oder aus? ####
  
var oSysvar = dom.GetObject("Schlafmodus");
if (oSysvar.State()==1){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Schlafen:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "ange-";
color4="0x81";
icon4 = "";
zeile5 = "schaltet";
color5 = "0x81";
icon5 = "";
zeile6 = "";
color6 = "0x80";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Schlafen:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "ausge-";
color4 = "0x84";
icon4 = "";
zeile5 = "schaltet";
color5 = "0x84";
icon5 = "";
zeile6 = "";
color6 = "0x80";
icon6 = "";
}
}
! ###################### Seite 2 ######################


if (seitenZaehler.State()==2){

! ### Wecker 6 Uhr ####
  
var oSysvar = dom.GetObject("wecker6Uhr");
if (oSysvar.State()==2){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "6 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "einge-";
color5 = "0x81";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x81";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "6 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "ausge-";
color5 = "0x84";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x84";
icon6 = "";
}
}

! ###################### Seite 3 ######################


if (seitenZaehler.State()==3){

! ### Wecker 8 Uhr ####
  
var oSysvar = dom.GetObject("wecker8Uhr");
if (oSysvar.State()==2){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "8 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "einge-";
color5 = "0x81";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x81";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "8 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "ausge-";
color5 = "0x84";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x84";
icon6 = "";
}
}

! ###################### Seite 4 ######################


if (seitenZaehler.State()==4){

! ### Übersicht ####
  
zeile1 = "Übersicht:";
color1 = "0x80";
icon1 = "";  

! #### Zeile 2 und 3 - Alle Fenster zu? Wie viele sind offen? #######
! # Gewerk mit dem Namen Verschluss wird gezählt

var obj = dom.GetObject("Fenster");
 string itemID;
 var cntopen=0;
 foreach(itemID, obj.EnumUsedIDs()) {
  var item = dom.GetObject(itemID);
  if(item.IsTypeOf(OT_CHANNEL))
  {
   var state=item.DPByHssDP("STATE");
   if(state.Value()<>0)
   {
     cntopen=cntopen+1;
   }
 }
}

if (cntopen>0) {
  zeile2 = cntopen # " Fenster";
  color2 = "0x81";
  icon2 = "";
  zeile3 = "offen";
  color3 = "0x81";
  icon3 = "";
} 

else {
  zeile2 = "Fenster zu";
  color2 = "0x84";
  icon2 = "";
} 

! #### Zeile 4 und 5 Temperatur im Schlafzimmer


var akttemp = dom.GetObject("BidCos-RF.XYZ1234567:1.TEMPERATURE").Value();
akttemp = akttemp.ToString(1);

zeile4 = "Schlafzimmer:";
  color4 = "0x80";
  icon4 = "";
  zeile5 = ""#akttemp#" C";
  color5 = "0x80";
  icon5 = "";


! #### Zeile 6 Außentemperatur

var channel=dom.GetObject("Wetter_Temperatur");
var temp = channel.Value();
if (temp > -10.0)
{ temp = temp.ToString(1);
  zeile6 = "Außen: "#temp#" C";
  color6 = "0x80";
}
else
{ temp = temp.ToString(1);
  zeile6 = "Außen: "#temp#" C";
}
color6 = "0x80";
icon6 = "";




  
}

! ###################### Seite 5 ######################



if (seitenZaehler.State()==5){


! ### Platz für weiere Seiten...


}



! --------- Ende Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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"; 

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

! ##### FERTIG #####
Taste oben lang:
oben-lang.png

Code: Alles auswählen

! ### Homatic-Statusanzeige HM-Dis-WM55 ####
! ### Stausanzeige 2 , Vers. 1.0;
! ### Anzeige der Zysternen Füllstand, Zysternen Filter stand, Außentemperatur, Status der Türen, Fenster und Lichter

!! Universalprogramm zum Füllen 
!! (c) DrTob 
!! optimized by thkl
!! changed by wortmann30
!! Seitenzähler von Brufi

!! 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 = "";
string color1 = "0x80";
string icon1 = "";

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

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

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

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

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

! ####### wie viele Seiten auf dem Display sollen durchlaufen werden? ###########

integer seitenzahl = 4; 

! ###############################################################
  
  
! --------- Anfang Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------

! ### Systemvariable seitenzaehler01 holen ###

var seitenZaehler = dom.GetObject("seitenzaehler01");



! ###################### Seite 1 ######################
  
if (seitenZaehler.State()==1){
  
! ### Schlafmodus einschalten

  
var oSysvar = dom.GetObject("Schlafmodus");

if (oSysvar.State()==0){   ! ### wenn noch kein Schlafmodus aktiv
oSysvar.State(1); ! ##### Setze Schlafmodus auf Schlafen

zeile1 = "Schlafmodus";
color1="0x80";
icon1 = "";
zeile2 = "";
color2="0x80";
icon2 = "";
zeile3 = "aktiv";
color3="0x82";
icon3 = "";
zeile4 = "";
color4="0x80";
icon4 = "";
zeile5 = "";
color5="0x80";
icon5 = "";
zeile6 = "";
color6="0x80";
icon6 = "";
}
else
{
oSysvar.State(0); ! ##### Setze Schlafmodus auf Wach

zeile1 = "Schlafmodus";
color1="0x80";
icon1 = "";
zeile2 = "";
color2="0x80";
icon2 = "";
zeile3 = "ausge-";
color3="0x84";
icon3 = "";
zeile4 = "schaltet";
color4="0x84";
icon4 = "";
zeile5 = "";
color5="0x84";
icon5 = "";
zeile6 = "";
color6="0x80";
icon6 = "";
}

}
! ###################### Seite 2 ######################

if (seitenZaehler.State()==2){

! ### Wecker 6 Uhr ####
  
var oSysvar = dom.GetObject("wecker6Uhr");
if (oSysvar.State()==0){    ! #### Wenn der 6-Uhr Wecker ausgeschaltet ist
oSysvar.State(1);   ! #### Schalte den 6-Uhr Wecker ein

zeile1 = "";
color1="0x80";
icon1 = "";
zeile2 = "Du wirst um";
color2="0x80";
icon2 = "";
zeile3 = "6 Uhr";
color3="0x82";
icon3 = "";
zeile4 = "geweckt!";
color4="0x80";
icon4 = "";
zeile5 = "";
color5="0x80";
icon5 = "";
zeile6 = "";
color6="0x80";
icon6 = "";
}
else
{
oSysvar.State(0);   ! #### Schalte den 6-Uhr Wecker aus

zeile1 = "Der 6 Uhr";
color1="0x80";
icon1 = "";
zeile2 = "Wecker";
color2 = "0x80";
icon2 = "";
zeile3 = "wurde";
color3 = "0x80";
icon3 = "";
zeile4 = "ausge-";
color4 = "0x84";
icon4 = "";
zeile5 = "schaltet";
color5="0x84";
icon5 = "";
zeile6 = "";
color6 = "0x80";
icon6 = "";
}
}

! ###################### Seite 3 ######################

if (seitenZaehler.State()==3){

! ### Wecker 8 Uhr ####
  
var oSysvar = dom.GetObject("wecker8Uhr");

if (oSysvar.State()==0){    ! #### Wenn der 8-Uhr Wecker ausgeschaltet ist
oSysvar.State(1);   ! #### Schalte den 8-Uhr Wecker ein

zeile1 = "";
color1="0x80";
icon1 = "";
zeile2 = "Du wirst um";
color2="0x80";
icon2 = "";
zeile3 = "8 Uhr";
color3="0x82";
icon3 = "";
zeile4 = "geweckt!";
color4="0x80";
icon4 = "";
zeile5 = "";
color5="0x80";
icon5 = "";
zeile6 = "";
color6="0x80";
icon6 = "";

}
else
{
oSysvar.State(0);   ! #### Schalte den 8-Uhr Wecker aus

zeile1 = "Der 8 Uhr";
color1="0x80";
icon1 = "";
zeile2 = "Wecker";
color2 = "0x80";
icon2 = "";
zeile3 = "wurde";
color3 = "0x80";
icon3 = "";
zeile4 = "ausge-";
color4 = "0x84";
icon4 = "";
zeile5 = "schaltet";
color5="0x84";
icon5 = "";
zeile6 = "";
color6 = "0x80";
icon6 = "";

}
}

! ###################### Seite 4 ######################


if (seitenZaehler.State()==4){

zeile1 = "";
color1="0x80";
icon1 = "";
zeile2 = "Keine";
color2 = "0x80";
icon2 = "";
zeile3 = "Aktion";
color3 = "0x80";
icon3 = "";
zeile4 = "hinterlegt";
color4 = "0x80";
icon4 = "";
zeile5 = "";
color5="0x80";
icon5 = "";
zeile6 = "";
color6 = "0x84";
icon6 = "";

}

! ###################### Seite 5 ######################



if (seitenZaehler.State()==5){

zeile1 = "";
color1="0x80";
icon1 = "";
zeile2 = "Keine";
color2 = "0x80";
icon2 = "";
zeile3 = "Aktion";
color3 = "0x80";
icon3 = "";
zeile4 = "hinterlegt";
color4 = "0x80";
icon4 = "";
zeile5 = "";
color5="0x80";
icon5 = "";
zeile6 = "";
color6 = "0x84";
icon6 = "";

}  


! --------- Ende Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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"; 

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

! ##### FERTIG #####

Auf Seite 4 der Displayanzeige lasse ich mir beispielhaft Systemzustände anzeigen. Hier ist keine Aktion hinter dem "oben-lang" Knopf hinterlegt.

Die Taste unten lang möchte ich noch für eine "Wecker-Snooze-Funktion" verwenden. Wie ich diese Geschichte angehe weiß ich noch nicht.

Gruß,
Brufi

Gluehwurm
Beiträge: 12434
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von Gluehwurm » 26.02.2015, 21:28

Vielen Dank, das nimmt mir viel Arbeit ab :mrgreen:

Gruß
Bruno

Benutzeravatar
thkl
Beiträge: 2765
Registriert: 15.07.2013, 13:32
Wohnort: dickes B
Danksagung erhalten: 5 Mal

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von thkl » 01.03.2015, 19:05

Oh, das ist ja einigermaßen großartig ;) Ich glaube kaum, das der Hersteller jemals soviele Möglichkeiten vorgesehen hat !

audioconcept
Beiträge: 139
Registriert: 25.12.2014, 21:43
System: CCU
Wohnort: Dortmund

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von audioconcept » 24.08.2015, 14:39

Sieht gut aus.
Gruß aus Dortmund

Michael

mike@mike-holtgrefe.de
Beiträge: 49
Registriert: 29.03.2015, 23:20

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von mike@mike-holtgrefe.de » 01.09.2015, 20:11

Wow, das funktioniert echt gut ...vielen Dank...

ich möchte auf einer Seite alle Jalousien mit dem Tastendruck lang Taste 1 runterfahren und mit dem Tastendruck lang Taste 2 auffahren.
Wie müsste ich dieses in dem Script schalten, wichtig wäre das dann auch die Verzögerungen mit reinkommen.

Jalousie 1 verzögert um 10 Sekunden auf 0 %

wie gibt man so etwas im Script ein ?

LG Mike
66 Kanäle in 30 Geräten:
3x HM-Sec-SD, 4x HM-LC-Sw1-DR, 3x HM-CC-RT-DN, 1x HM-Dis-WM55, 3x HM-LC-Sw1PBU-FM, 1x HM-Sec-SCo, 5x HM-LC-Dim1TPBU-FM, 7x HM-LC-Bl1PBU-FM, 1x HM-LC-Sw1-Pl-2, 2x HM-RC-2-PBU-FM

Gluehwurm
Beiträge: 12434
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von Gluehwurm » 01.09.2015, 21:33

Eben zusammenklicken ... ist ein extra Programm

Wenn Gerätxx - Tastendruck lang
Dann
Rolladen 1 verzögert um 10 Sek. auf 0%
Rolladen 2 sofort auf 0%
usw.

mike@mike-holtgrefe.de
Beiträge: 49
Registriert: 29.03.2015, 23:20

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von mike@mike-holtgrefe.de » 02.09.2015, 12:33

Hallo,

vielen Dank, ja auf die einfachsten Dinge kommt man nicht ;-). Habe gedacht ich muss das im Script machen.
66 Kanäle in 30 Geräten:
3x HM-Sec-SD, 4x HM-LC-Sw1-DR, 3x HM-CC-RT-DN, 1x HM-Dis-WM55, 3x HM-LC-Sw1PBU-FM, 1x HM-Sec-SCo, 5x HM-LC-Dim1TPBU-FM, 7x HM-LC-Bl1PBU-FM, 1x HM-LC-Sw1-Pl-2, 2x HM-RC-2-PBU-FM

audioconcept
Beiträge: 139
Registriert: 25.12.2014, 21:43
System: CCU
Wohnort: Dortmund

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von audioconcept » 07.09.2015, 13:28

Hallo Brufi

bei dem Script unten kurz ist da ein Fehler drin bezogen auf Systemzustand? Im Text steht das "Verschluss" gezählt wird. Ich habe alle Fensterkontakte im Gewerk "Verschluss" drin, aber bekomme keinst angezeigt. Muss ich das Wort Fenster im Code durch Verschluss ersetzen?

Code: Alles auswählen

! ### Homatic-Statusanzeige HM-Dis-WM55 ####
! ### Stausanzeige 2 , Vers. 1.0;
! ### Anzeige der Zysternen Füllstand, Zysternen Filter stand, Außentemperatur, Status der Türen, Fenster und Lichter

!! Universalprogramm zum Füllen 
!! (c) DrTob 
!! optimized by thkl
!! changed by wortmann30
!! Seitenzähler von Brufi

!! 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 = "";
string color1 = "0x80";
string icon1 = "";

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

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

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

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

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

! ####### wie viele Seiten auf dem Display sollen durchlaufen werden? ###########

integer seitenzahl = 4; 

! ###############################################################
  
! ####################### Zähler entsprechend der Anzahl Tastendrücke verändern #################
  

integer obj = dom.GetObject("seitenzaehler01"); ! ######## rausholen

integer xyz = obj.State();


if (xyz == seitenzahl) {
  obj.Variable(1);
}
else {

  xyz = xyz + 1; ! ######## incrementieren
  obj.Variable(xyz); ! ######### reinschreiben
}

! ################################################################################################  
  

  
  
! --------- Anfang Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------

! ### Systemvariable seitenzaehler01 holen ###

var seitenZaehler = dom.GetObject("seitenzaehler01");


! ###################### Seite 1 ######################


if (seitenZaehler.State()==1){
  
  
! ### Schlafmodus an oder aus? ####
  
var oSysvar = dom.GetObject("Schlafmodus");
if (oSysvar.State()==1){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Schlafen:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "ange-";
color4="0x81";
icon4 = "";
zeile5 = "schaltet";
color5 = "0x81";
icon5 = "";
zeile6 = "";
color6 = "0x80";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Schlafen:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "ausge-";
color4 = "0x84";
icon4 = "";
zeile5 = "schaltet";
color5 = "0x84";
icon5 = "";
zeile6 = "";
color6 = "0x80";
icon6 = "";
}
}
! ###################### Seite 2 ######################


if (seitenZaehler.State()==2){

! ### Wecker 6 Uhr ####
  
var oSysvar = dom.GetObject("wecker6Uhr");
if (oSysvar.State()==2){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "6 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "einge-";
color5 = "0x81";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x81";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "6 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "ausge-";
color5 = "0x84";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x84";
icon6 = "";
}
}

! ###################### Seite 3 ######################


if (seitenZaehler.State()==3){

! ### Wecker 8 Uhr ####
  
var oSysvar = dom.GetObject("wecker8Uhr");
if (oSysvar.State()==2){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "8 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "einge-";
color5 = "0x81";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x81";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "8 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "ausge-";
color5 = "0x84";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x84";
icon6 = "";
}
}

! ###################### Seite 4 ######################


if (seitenZaehler.State()==4){

! ### Übersicht ####
  
zeile1 = "Übersicht:";
color1 = "0x80";
icon1 = "";  

! #### Zeile 2 und 3 - Alle Fenster zu? Wie viele sind offen? #######
! # Gewerk mit dem Namen Verschluss wird gezählt

var obj = dom.GetObject("Fenster");
 string itemID;
 var cntopen=0;
 foreach(itemID, obj.EnumUsedIDs()) {
  var item = dom.GetObject(itemID);
  if(item.IsTypeOf(OT_CHANNEL))
  {
   var state=item.DPByHssDP("STATE");
   if(state.Value()<>0)
   {
     cntopen=cntopen+1;
   }
 }
}

if (cntopen>0) {
  zeile2 = cntopen # " Fenster";
  color2 = "0x81";
  icon2 = "";
  zeile3 = "offen";
  color3 = "0x81";
  icon3 = "";
} 

else {
  zeile2 = "Fenster zu";
  color2 = "0x84";
  icon2 = "";
} 

! #### Zeile 4 und 5 Temperatur im Schlafzimmer


var akttemp = dom.GetObject("BidCos-RF.XYZ1234567:1.TEMPERATURE").Value();
akttemp = akttemp.ToString(1);

zeile4 = "Schlafzimmer:";
  color4 = "0x80";
  icon4 = "";
  zeile5 = ""#akttemp#" C";
  color5 = "0x80";
  icon5 = "";


! #### Zeile 6 Außentemperatur

var channel=dom.GetObject("Wetter_Temperatur");
var temp = channel.Value();
if (temp > -10.0)
{ temp = temp.ToString(1);
  zeile6 = "Außen: "#temp#" C";
  color6 = "0x80";
}
else
{ temp = temp.ToString(1);
  zeile6 = "Außen: "#temp#" C";
}
color6 = "0x80";
icon6 = "";




  
}

! ###################### Seite 5 ######################



if (seitenZaehler.State()==5){


! ### Platz für weiere Seiten...


}



! --------- Ende Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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"; 

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

! ##### FERTIG #####
Gruß aus Dortmund

Michael

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von Homoran » 07.09.2015, 13:47

Aber du weisst, dass das standardgewerk Verschluß heisst?

Gesendet von meinem LIFETAB_S785X mit Tapatalk
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

audioconcept
Beiträge: 139
Registriert: 25.12.2014, 21:43
System: CCU
Wohnort: Dortmund

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von audioconcept » 07.09.2015, 14:34

Hallo Homoran

ah du meinst die Schreibweise? Bei mir ist es Verschluss. Ok.

Aber meinte auch, ob ich es durch Verschluss ersetzen muss? Weil ich im Code nichts von Verschluss finde?

-------------

Ja wenn ich Fenster durch Verschluss ersetze geht es.
Gruß aus Dortmund

Michael

Antworten

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