mediola

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

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

Werbung


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

Beitragvon alchy » 22.10.2017, 23:05

!! Universalprogramm zum Füllen

und um ein Besipiel aus dem eigentlichen Code zu nehmen

substitutions = substitutions # "\tÄ,0x5B\tÖ

Kopiere das Script nochmal direkt aus dem Forum in die CCU ohne Umwege über einen Windoof Editor.

Alchy

........................
Sprichst Du zu Gott bist Du gesegnet. Spricht Gott zu Dir bist Du schizophren.


Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
alchy
 
Beiträge: 6044
Registriert: 24.02.2011, 01:34

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

Beitragvon Lioncar » 22.10.2017, 23:11

Da hab ich natürlich nicht drauf geachtet... *autsch*

Danke für den Tip. Test steht am WE an, da ich im Ausland bin...

Teilweise ist die Farbe undefiniert, spielt das auch ne Rolle?
Color2 fehlt z.B.
Lioncar
 
Beiträge: 15
Registriert: 16.01.2016, 16:46

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

Beitragvon DrTob » 23.10.2017, 06:55

Alle Color-Variablen müssen vorhanden und definiert sein.
DrTob
 
Beiträge: 3289
Registriert: 29.10.2010, 07:24

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

Beitragvon Lioncar » 28.10.2017, 17:18

Hallo DrTob,
zurück von der Dienstreise direkt frisch ans Werk.
Es lag daran das nicht alle Variablen deklariert waren. Die Umlaute wurden in dem Fehlerprüfungsfesnter generiert, woraus auch den Forumseintrag copiert hatte.

Jetzt läuft das Script fehlerfrei durch, doch leider sagt mir die Anzeige ständig:
"Keine Daten Empfangen"

Was ist denn das nun? *heul*

Grüße
Timo
Code: Alles auswählen
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

var istTemp = dom.GetObject("BidCos-RF.OEQ0128899:1.TEMPERATURE").State();
var istHum  = dom.GetObject("BidCos-RF.OEQ0128899:1.HUMIDITY").State();

! Temperatur
string zeile1 = "Temp.";
string color1 = blau;
string icon1 = "0x86";

string zeile2 = istTemp.ToString(1) # " C";
string color2 = "";
string icon2 = "";

! Feuchte
string zeile3 = "Feuchte";
string color3 = orange;
string  icon3 = "0x86";

string zeile4 = istHum.ToString(1) # " %";
string color4 = "";
string icon4 = "";

! ----------------------------------------------------------------------------------------
var fen = dom.GetObject("Fensterkontakte").State();

if(fen == true)
   {
    string zeile5 = "Fenster offen";
    string color5 = rot;
    string  icon5 = "0x8B";
   }
   else
   {
    string zeile5 = "Fenster zu";
    string color5 = gruen;
    string  icon5 = "0x89";
   }

! Alarmstatus
string zeile6 = "";
string color6 = "";
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";

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);
Lioncar
 
Beiträge: 15
Registriert: 16.01.2016, 16:46

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

Beitragvon emeins » 15.11.2017, 13:08

Hallo, Ich habe eine Aktion (Programm) bei langem Tastendruck des Displays hinterlegt. Als Aktion ist das Script hinterlegt, um den Displayinhalt neu zu schreiben. Dies wird aber nicht ausgeführt.
Grundsätzlich funktioniert der lange Tastendruck bei mir (Firmware v1.2). Im Systemprotokoll sehe ich auch die entsprechenden Einträge.

Was ich dazu schon getestet habe:
> Wenn ich die Aktion an einen kurzen Tastendruck binde, funktioniert das Display neu Schreiben super.
> Wenn ich den langen Tastendruck mit einer anderen Aktion verbinde, wird diese ausgeführt.
> Wenn ich in dem Programm selbst eine Aktion noch vor dem Script ausführen lasse, wird diese erledigt, dann jedoch der Teil zum Display neu schreiben nicht.

Ist evtl. das Display für Konfigurationsupdates gesperrt, solange eine Taste gedrückt ist und lässt sich das dann irgendwie abfangen?
emeins
 
Beiträge: 1
Registriert: 15.11.2017, 12:50

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

Beitragvon DrTob » 15.11.2017, 13:25

Solange du die Taste drückst sendet das Display. Ein gleichzeitiger Empfang von Daten ist nicht möglich.
DrTob
 
Beiträge: 3289
Registriert: 29.10.2010, 07:24

Vorherige

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

Wer ist online?

Mitglieder in diesem Forum: Bratfisch und 6 Gäste







© homematic-forum.de & Lizenzgebern. Alle Rechte vorbehalten. Alle Bilder & Texte auf dieser Seite sind Eigentum
der jeweiligen Besitzer und dürfen ohne deren Einwilligung weder kopiert noch sonstwie weiter verwendet werden.