Skript für Display HM-Dis-WM55

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Antworten
kneuzgi
Beiträge: 170
Registriert: 09.08.2013, 14:26
System: sonstige
Wohnort: Schweiz

Skript für Display HM-Dis-WM55

Beitrag von kneuzgi » 04.01.2015, 09:14

Hallo

Habe vor kurzem ein HM-Dis-WM55 Display gekauft und bekomme dies nicht zu laufen :-(

Könnte mir evtl. jmd helfen?

Danke

Ich würde gerne den Status der Fenster/Türen (sind alle im Gewerk Verschluss), Aussentemperatur, den Status der Lichter
und den Alarm anzeigen

Habe versucht das tolle Beispiel-Skript anzupassen, doch leider ohne Erfolg :-(

Mein Skript sieht wie folgt aus:

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

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

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



! #### Alle Fenster zu ? #######
! ## Einlesen der Sys-Var Fenster Gewerk Verschluss

var oSysvar = dom.GetObject("Verschluss");
if (oSysvar.State()==1){
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 1 , Textfarbe Weiß, Icon geschlossen
zeile1 = "Fenster/Tuere";
icon1 = "0x83";
color1="0x84";
}
else
{
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 1 , Textfarbe Rot, Icon  OFFEN
zeile1 = "Fenster/Tuere";
color1 = "0x81";
icon1 = "0x82";
}

! #### Alle Lichter aus ? #######
! ## Einlesen der Sys-Var Licht

var oSysvar = dom.GetObject("Licht");
if (oSysvar.State()==0){
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 2 , Textfarbe Grün, Icon AUS
zeile2 = "Licht";
icon2 = "0x80";
color2="0x84";
}
else
{
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 2 , Textfarbe Rot, Icon  EIN
zeile2 = "Licht";
color2 = "0x81";
icon2 = "0x81";
}

! ## Außentemperatur

var term="LEQ0099367";
var channel=dom.GetObject("BidCos-RF."#term#":1.TEMPERATURE");
var temp = channel.Value();
if (temp > -10.0)
{ temp = temp.ToString(1);
  zeile3 = "Außen "#temp#" C";
}
else
{ temp = temp.ToString(1);
  zeile3 = "Außen"#temp#" C";
}
color3 = "0x85";
icon3 = "0x86";

!##Alarm

zeile4 ="Alarm";
color4 = "0x82";
icon4 = "0x86";

zeile5 = dom.Variable("Alarm");
color5 = "0x82";
icon5 = "0x86";

var oSysvar = dom.Variable("Alarm");
if (oSysvar.State() == true){
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 6 , Textfarbe Weiß, Icon Ok
zeile6 = "An/Scharf";
icon6= "0x85";
color6="0x84";
}
else
{
! ## Kanal : HM-Dis-WM55 :1 -> Text Zeile 6 , Textfarbe Rot, Icon Signal Rot
zeile6 = "Aus";
color6 = "0x81";
icon6 = "0x8B";
}

! --------- 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 #####
In der CCU2 kann ich den Display sehen.

Bekomme leider immer die Meldung "Keine Daten empfangen" (siehe Bild) wenn ich eine Taste drücke
Dateianhänge
Meldung_HM-Dis_WM55.jpg

kneuzgi
Beiträge: 170
Registriert: 09.08.2013, 14:26
System: sonstige
Wohnort: Schweiz

Re: Skript für Display HM-Dis-WM55

Beitrag von kneuzgi » 06.01.2015, 11:45

jetzt klappt es

Code: Alles auswählen

! ### Homatic-Statusanzeige HM-Dis-WM55 ####
! ### Stausanzeige 2 , Vers. 1.0;
! ### Anzeige Außentemperatur, Status der Türen, Fenster und Lichter
!! Display 1 Taste2 kurz                                                        
!! 
!! Universalprogramm zum Füllen                                                  
!! (c) DrTob 
!! optimized by thkl
!! 
!! überarbeitet geosshark 30.12.2014 11:48:00
!! Anzeige der Aussentemperatur und der Stati aller Fenster, die mit dem 
!! Drehgriffsensor (nur mit diesem getestet) ausgerüstet sind.
!! Alle Sensoren müssen im Gewerk "Verschluss" sein.
!! Die Namenskonvention der Sensoren : z.B. xx_Bad_yyy_zz..., der 2. mit "_" getrennt Parameter wird angezeigt, hier "Bad".
!! (lötix)geändert: Gewerk Fenster in Verschluss, Unterstrich in Leerzeichen, alles geschlossen-zweizeilig, HM-Sec-SCo und HM-Sec-SC-2 eingefügt
!! Das Script holt sich jetzt die Seriennummer des Displays selbst aus der Auslösebedingung des Programms

! Farben
! 0x80 weiß
! 0x81 rot
! 0x82 orange
! 0x83 gelb
! 0x84 gruen
! 0x85 blau 
string weiss  = "0x80";
string rot    = "0x81";
string orange = "0x82";
string gelb   = "0x83";
string gruen  = "0x84";
string blau   = "0x85";

! 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.LEQ0177627:1.TEMPERATURE").State();
var istHum  = dom.GetObject("BidCos-RF.LEQ0177627:1.HUMIDITY").State();

! Temperatur aussen
string zeile1 = "Aussentemp.";
string color1 = orange;
string  icon1 = "0x86";

string zeile2 = istTemp.ToString(1) # " C";
if (istTemp >= 0.0)  { string color2 = orange; }
if (istTemp >= 10.0) { string color2 = gelb; }
if (istTemp >= 20.0) { string color2 = rot; }
if (istTemp < 0.0)   { string color2 = weiss; }
if (istTemp < -6.0)  { string color2 = blau; }
string icon2 = "";
! ----------------------------------------------------------------------------------------
var fem = dom.GetObject("Verschluss");
string m;
string listg;
string listo;
string Wo;
integer status = 0;
string nam;
string zeil = "";

listo = "";
listg = "";

foreach(m, fem.EnumUsedIDs())
{
  var item = dom.GetObject(m);
  if(item.IsTypeOf(OT_CHANNEL))
  {
    var dev = dom.GetObject(item.Device());
    if((dev.HssType()=="HM-Sec-RHS"))
    {
      var stat = item.DPByHssDP("STATE");
      if(stat.Value()== '0')               
      {
        status = status + 0;   ! geschlossen
      }
      if (stat.Value()== '1')     
      {
         status = status + 1;   ! gekippt
         Wo = dev.Name();
         Wo = Wo.StrValueByIndex(" ", 1);
         listg = listg + Wo # ",";
      }
      if (stat.Value()== '2')     
      {
         status = status + 1000;   ! offen
         Wo = dev.Name();
         Wo = Wo.StrValueByIndex(" ", 1);
        listo = listo + Wo # ",";
      }
    }
    if((dev.HssType()=="HM-Sec-SCO") || (dev.HssType()=="HM-Sec-SC-2"))
    {
      var stat = item.DPByHssDP("STATE");
      if(stat.Value()== '0')               
      {
        status = status + 0;   ! geschlossen
      }
      if (stat.Value()== '2')     
      {
         status = status + 1000;   ! offen
         Wo = dev.Name();
         Wo = Wo.StrValueByIndex(" ", 1);
        listo = listo + Wo # ",";
      }          
    }
  }
}

string zeile3 = "Fenster/Türe";
string color3 = weiss;
string icon3  = "";

! if (status < 1000)
! {   ! mindestens 1 gekippt
!    string zeile4 = "gekippt:";
!    string color4 = "0x83";
!    string icon4  = "";
! } 
! 
! if (status >= 1000)
! {   ! mindestens 1 offen
!    string zeile4 = "offen:";
!    string color4 = "0x81";
!    string icon4  = "";
! }   
string zeile4 = "";
string color4 = "";
string  icon4 = "";

string zeile5 = "";
string color5 = "";
string  icon5 = "";

string zeile6 = "";
string color6 = "";
string  icon6   = "";

if ( status == 0)
{      
   ! alles zu
   string zeile4 = "alles";
   string color4 = gruen;
   string  icon4 = "";
   string zeile5 = "geschlossen";
   string color5 = gruen;
   string icon5 = "";
}
else
{
   ! irgendwo was offen
   integer i = 4;
   foreach (nam, listo.Split(","))
   {
      if ((zeil.Length() + nam.Length()) < 12)
      {
         if (zeil == "")
         {
            zeil = nam;
         } 
         else 
         {
            zeil = zeil # "," # nam;
         }
      }
      else
      {

         if (i == 4)
         {
            string zeile4 = zeil;
            string color4 = rot;
            string  icon4 = "";         
         }
         if (i == 5)
         {
            string zeile5 = zeil;
            string color5 = rot;
            string  icon5 = "";         
         }
         if (i == 6)
         {
            string zeile6 = zeil;
            string color6 = rot;
            string  icon6 = "";         
         }
         zeil = nam;
         i = i + 1;
      }
   }
   if (zeil <> "")
   {
      if (i == 4)
      {
         string zeile4 = zeil;
         string color4 = rot;
         string  icon4 = "";         
      }
      if (i == 5)
      {
         string zeile5 = zeil;
         string color5 = rot;
         string  icon5 = "";         
      }
      if (i == 6)
      {
         string zeile6 = zeil;
         string color6 = rot;
         string  icon6 = "";         
      }
      zeil = "";
      i = i + 1;
      
   }

   foreach (nam, listg.Split(","))
   {
      if ((zeil.Length() + nam.Length()) < 12)
      {
         if (zeil == "")
         {
            zeil = nam;
         } 
         else 
         {
            zeil = zeil # "," # nam;
         }
      }
      else
      {
         if (i == 4)
         {
            string zeile4 = zeil;
            string color4 = gelb;
            string  icon4 = "";         
         }
         if (i == 5)
         {
            string zeile5 = zeil;
            string color5 = gelb;
            string  icon5 = "";         
         }
         if (i == 6)
         {
            string zeile6 = zeil;
            string color6 = gelb;
            string  icon6 = "";         
         }
         zeil = nam;
         i = i + 1;
      }
   }
   if (zeil <> "")
   {
         if (i == 4)
         {
            string zeile4 = zeil;
            string color4 = gelb;
            string  icon4 = "";         
         }
         if (i == 5)
         {
            string zeile5 = zeil;
            string color5 = gelb;
            string  icon5 = "";         
         }
         if (i == 6)
         {
            string zeile6 = zeil;
            string color6 = gelb;
            string  icon6 = "";         
         }
      zeil = "";
      i = i + 1;   
   }
}


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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 # "\t";

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;

string command = "0x02";
integer i = 0;
string char = "";

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

dom.GetObject("BidCos-RF." # dom.GetObject("$src$").Name().StrValueByIndex(".",1) # ".SUBMIT").State(command);

kneuzgi
Beiträge: 170
Registriert: 09.08.2013, 14:26
System: sonstige
Wohnort: Schweiz

Re: Skript für Display HM-Dis-WM55

Beitrag von kneuzgi » 13.01.2015, 08:12

ein etwas angepasstes Skript

Auf Zeile 1 Aussentemperatur Eingang
Auf Zeile 2 Aussentemperatur Garten
Auf den restlichen Zeilen Fenster/Türen

Code: Alles auswählen

! ### Homatic-Statusanzeige HM-Dis-WM55 ####
! ### Stausanzeige 2 , Vers. 1.0;
! ### Anzeige Außentemperatur, Status der Türen, Fenster und Lichter
!! Display 1 Taste oben kurz                                                        
!! 
!! Universalprogramm zum Füllen                                                  
!! (c) DrTob 
!! optimized by thkl
!! 
!! überarbeitet geosshark 30.12.2014 11:48:00
!! Anzeige der Aussentemperatur und der Stati aller Fenster, die mit dem 
!! Drehgriffsensor (nur mit diesem getestet) ausgerüstet sind.
!! Alle Sensoren müssen im Gewerk "Verschluss" sein.
!! Die Namenskonvention der Sensoren : z.B. xx-Bad-yyy-zz..., der 2. mit "-" getrennt Parameter wird angezeigt, hier "Bad".
!! (lötix)geändert: Gewerk Fenster in Verschluss, Unterstrich in Leerzeichen, alles geschlossen-zweizeilig, HM-Sec-SCo und HM-Sec-SC-2 eingefügt
!! Das Script holt sich jetzt die Seriennummer des Displays selbst aus der Auslösebedingung des Programms

! Farben
! 0x80 weiß
! 0x81 rot
! 0x82 orange
! 0x83 gelb
! 0x84 gruen
! 0x85 blau 
string weiss  = "0x80";
string rot    = "0x81";
string orange = "0x82";
string gelb   = "0x83";
string gruen  = "0x84";
string blau   = "0x85";

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

! ==================================================================================================
! Temperatur und Luftfeuchtigkeit
! TempE = Eingang, TempG = Garten

var istTempE = dom.GetObject("BidCos-RF.LEQ0177088:1.TEMPERATURE").State();
var istHumE  = dom.GetObject("BidCos-RF.LEQ0177088:1.HUMIDITY").State();
var istTempG = dom.GetObject("BidCos-RF.LEQ0177627:1.TEMPERATURE").State();
var istHumG  = dom.GetObject("BidCos-RF.LEQ0177627:1.HUMIDITY").State();


string zeile1 = "";
string color1 = "";
string  icon1 = "";

string zeile1 = "E:" # istTempE.ToString(1) # "C " # istHumE.ToString(1) # "%";

if (istTemp >= 0.0)  { string color1 = orange; }
if (istTemp >= 10.0) { string color1 = gelb; }
if (istTemp >= 20.0) { string color1 = rot; }
if (istTemp < 0.0)   { string color1 = weiss; }
if (istTemp < -6.0)  { string color1 = blau; }

string zeile2 = "";
string color2 = "";
string  icon2 = "";

string zeile2 = "G:" # istTempG.ToString(1) # "C " # istHumG.ToString(1) # "%";

if (istTemp >= 0.0)  { string color2 = orange; }
if (istTemp >= 10.0) { string color2 = gelb; }
if (istTemp >= 20.0) { string color2 = rot; }
if (istTemp < 0.0)   { string color2 = weiss; }
if (istTemp < -6.0)  { string color2 = blau; }
! ----------------------------------------------------------------------------------------
var fem = dom.GetObject("Verschluss");
string m;
string listg;
string listo;
string Wo;
integer status = 0;
string nam;
string zeil = "";

listo = "";
listg = "";

foreach(m, fem.EnumUsedIDs())
{
  var item = dom.GetObject(m);
  if(item.IsTypeOf(OT_CHANNEL))
  {
    var dev = dom.GetObject(item.Device());
    if((dev.HssType()=="HM-Sec-RHS"))
    {
      var stat = item.DPByHssDP("STATE");
      if(stat.Value()== '0')               
      {
        status = status + 0;   ! geschlossen
      }
      if (stat.Value()== '1')     
      {
         status = status + 1;   ! gekippt
         Wo = dev.Name();
         Wo = Wo.StrValueByIndex(" ", 1);
         listg = listg + Wo # ",";
      }
      if (stat.Value()== '2')     
      {
         status = status + 1000;   ! offen
         Wo = dev.Name();
         Wo = Wo.StrValueByIndex(" ", 1);
        listo = listo + Wo # ",";
      }
    }
    if((dev.HssType()=="HM-Sec-SCo") || (dev.HssType()=="HM-Sec-SC-2"))
    {
      var stat = item.DPByHssDP("STATE");
      if(stat.Value()== '0')               
      {
        status = status + 0;   ! geschlossen
      }
      if (stat.Value()== '2')     
      {
         status = status + 1000;   ! offen
         Wo = dev.Name();
         Wo = Wo.StrValueByIndex(" ", 1);
        listo = listo + Wo # ",";
      }          
    }
  }
}

string zeile3 = "Fenster/Türe";
string color3 = weiss;
string icon3  = "";

! if (status < 1000)
! {   ! mindestens 1 gekippt
!    string zeile4 = "gekippt:";
!    string color4 = "0x83";
!    string icon4  = "";
! } 
! 
! if (status >= 1000)
! {   ! mindestens 1 offen
!    string zeile4 = "offen:";
!    string color4 = "0x81";
!    string icon4  = "";
! }   
string zeile4 = "";
string color4 = "";
string  icon4 = "";

string zeile5 = "";
string color5 = "";
string  icon5 = "";

string zeile6 = "";
string color6 = "";
string  icon6   = "";

if ( status == 0)
{      
   ! alles zu
   string zeile4 = "alles";
   string color4 = gruen;
   string  icon4 = "";
   string zeile5 = "geschlossen";
   string color5 = gruen;
   string icon5 = "";
}
else
{
   ! irgendwo was offen
   integer i = 4;
   foreach (nam, listo.Split(","))
   {
      if ((zeil.Length() + nam.Length()) < 12)
      {
         if (zeil == "")
         {
            zeil = nam;
         } 
         else 
         {
            zeil = zeil # "," # nam;
         }
      }
      else
      {

         if (i == 4)
         {
            string zeile4 = zeil;
            string color4 = rot;
            string  icon4 = "";         
         }
         if (i == 5)
         {
            string zeile5 = zeil;
            string color5 = rot;
            string  icon5 = "";         
         }
         if (i == 6)
         {
            string zeile6 = zeil;
            string color6 = rot;
            string  icon6 = "";         
         }
         zeil = nam;
         i = i + 1;
      }
   }
   if (zeil <> "")
   {
      if (i == 4)
      {
         string zeile4 = zeil;
         string color4 = rot;
         string  icon4 = "";         
      }
      if (i == 5)
      {
         string zeile5 = zeil;
         string color5 = rot;
         string  icon5 = "";         
      }
      if (i == 6)
      {
         string zeile6 = zeil;
         string color6 = rot;
         string  icon6 = "";         
      }
      zeil = "";
      i = i + 1;
      
   }

   foreach (nam, listg.Split(","))
   {
      if ((zeil.Length() + nam.Length()) < 12)
      {
         if (zeil == "")
         {
            zeil = nam;
         } 
         else 
         {
            zeil = zeil # "," # nam;
         }
      }
      else
      {
         if (i == 4)
         {
            string zeile4 = zeil;
            string color4 = gelb;
            string  icon4 = "";         
         }
         if (i == 5)
         {
            string zeile5 = zeil;
            string color5 = gelb;
            string  icon5 = "";         
         }
         if (i == 6)
         {
            string zeile6 = zeil;
            string color6 = gelb;
            string  icon6 = "";         
         }
         zeil = nam;
         i = i + 1;
      }
   }
   if (zeil <> "")
   {
         if (i == 4)
         {
            string zeile4 = zeil;
            string color4 = gelb;
            string  icon4 = "";         
         }
         if (i == 5)
         {
            string zeile5 = zeil;
            string color5 = gelb;
            string  icon5 = "";         
         }
         if (i == 6)
         {
            string zeile6 = zeil;
            string color6 = gelb;
            string  icon6 = "";         
         }
      zeil = "";
      i = i + 1;   
   }
}


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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);
Dateianhänge
working.jpg
Zuletzt geändert von kneuzgi am 13.01.2015, 17:12, insgesamt 1-mal geändert.

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

Re: Skript für Display HM-Dis-WM55

Beitrag von paul53 » 13.01.2015, 15:53

kneuzgi hat geschrieben:Auf Zeile 1 Aussentemperatur Eingang
Auf Zeile 2 Aussentemperatur Garten
Bei -10,0°C und kälter wirst Du Probleme mit der Zeichenanzahl bekommen.
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)

gamehunter
Beiträge: 26
Registriert: 27.09.2015, 01:59
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Skript für Display HM-Dis-WM55

Beitrag von gamehunter » 16.06.2018, 13:37

Hallo zusammen,

ich habe leider vom Skripten keine Ahnung. Es wäre sehr nett wenn mir jemand bei einer Implementierung helfen kann.


Ich möchte im Skript auf Seite 3 die Außentemperatur in Farblichen Stufen anzeigen.

Beispiel im Skript von "kneuzig".

if (istTemp >= 0.0) { string color1 = orange; }
if (istTemp >= 10.0) { string color1 = gelb; }
if (istTemp >= 20.0) { string color1 = rot; }
if (istTemp < 0.0) { string color1 = weiss; }
if (istTemp < -6.0) { string color1 = blau; }


Vielen Dank für eure Unterstützung.

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 = 3; 

! ###############################################################
  
! ####################### 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){
  
  
! ### Rollläden an oder aus? ####
  
var oSysvar = dom.GetObject("rollladen");
if (oSysvar.State()==1){

zeile1 = "";
color1 = "0x84";
icon1 = "";
zeile2 = "Rollläden";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "----------------";
color4="0x85";
icon4 = "";
zeile5 = "AKTIV";
color5 = "0x84";
icon5 = "";
zeile6 = "----------------";
color6 = "0x85";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x84";
icon1 = "";
zeile2 = "Rollläden";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "----------------";
color4="0x85";
icon4 = "";
zeile5 = "INAKTIV";
color5 = "0x81";
icon5 = "";
zeile6 = "----------------";
color6 = "0x85";
icon6 = "";
}
}

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


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

! ### Alarmanlage ####
  
var oSysvar = dom.GetObject("alarmanlage");
if (oSysvar.State()==2){


zeile1 = "";
color1 = "0x84";
icon1 = "";
zeile2 = "Alarmanlage";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "----------------";
color4="0x85";
icon4 = "";
zeile5 = "SCHARF";
color5 = "0x81";
icon5 = "";
zeile6 = "----------------";
color6 = "0x85";
icon6 = "";
}
else
{


zeile1 = "";
color1 = "0x84";
icon1 = "";
zeile2 = "Alarmanlage";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "----------------";
color4="0x85";
icon4 = "";
zeile5 = "UNSCHARF";
color5 = "0x81";
icon5 = "";
zeile6 = "----------------";
color6 = "0x85";
icon6 = "";
}
}

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



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

! ### Ü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("Verschluss");
 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 = "Fenster/Tür";
  color2 = "0x85";
  icon2 = "";
  zeile3 = cntopen # " offen";
  color3 = "0x81";
  icon3 = "";
} 

else {
  zeile2 = "Fenster/Tür";
  color2 = "0x85";
  icon2 = "";
  zeile3 = "geschlossen";
  color3 = "0x84";
  icon3 = "";
} 

! #### Zeile 5 und 6 Temperatur im Garten


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

  zeile5 = "outside temp:";
  color5 = "0x80";
  icon5 = "";
  zeile6 = ""#akttemp#" C";
  color6 = "0x85";
  icon6 = "";


! #### Zeile 6 Außentemperatur

var channel=dom.GetObject("BidCos-RF.NEQ:1.TEMPERATURE");
var temp = channel.Value(1);
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 #####

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“