HomeMatic CCU2 bei ELV bestellen

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: 6495
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: 3361
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: 3361
Registriert: 29.10.2010, 07:24

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

Beitragvon pfried » 11.01.2018, 07:55

Hallo und Guten Morgen,
vielen Dank für das Skript, hat mir sehr geholfen!
Ich habe eine kurze Frage: Wollte im Text ein Fragezeichen verwenden ("Türen zu?") Das Fragezeichen verschwindet aber dann auf dem Display.
Bin kein Programmierer, deshalb tue ich mir schwer, die "System"-Routine im zweiten Teil des Scripts richtig zu interpretieren.
Hoffentlich ist meine Frage nicht zu dämlich.....
Liebe Grüße
pfried
 
Beiträge: 3
Registriert: 06.12.2017, 15:22

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

Beitragvon dtp » 11.01.2018, 08:18

Hi,

ich denke, das Skript ließe sich mit dem replace()-Befehl, der seit der FW 2.29.22 von jmaus implementiert wurde, etwas vereinfachen, oder? Ist aber nicht wirklich notwendig. Funktioniert ja auch so.

Gruß,

Thorsten
dtp
 
Beiträge: 4421
Registriert: 21.09.2012, 07:09
Wohnort: Stuttgart

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

Beitragvon DrTob » 11.01.2018, 08:28

? wird nicht ersetzt. Und damit nicht unterstützt. Ich meine ich hätte damals getestet welche Zeichen das Display unterstützt und alles angeboten. Kannst du in einem Programm manuell einen Text mit Fragezeichen angeben und an das Display übermitteln?

Unveränderliche Texte ("Türen zu?") solltest du auch nicht jedesmal individuell übermitteln, sondern im Display hinterlegen und dann nur noch den entsprechenden Kanal im Script angeben. Auf diese Weise müssen deutlich weniger Daten übertragen werden.
DrTob
 
Beiträge: 3361
Registriert: 29.10.2010, 07:24

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

Beitragvon pfried » 11.01.2018, 08:56

Danke für die schnelle Antwort.
Wollte einen manuellen Text einsetzen, denn wenn ich einen "unveränderlichen" Text verwende, wird aus "Türen zu?" -> "T}ren zu?" und dann kommt es zu Problemen am Display.
Werde nun mit "Tueren zu?" leben müssen.
Nochmals vielen Dank
pfried
 
Beiträge: 3
Registriert: 06.12.2017, 15:22

VorherigeNächste

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

Wer ist online?

Mitglieder in diesem Forum: dvdfan, mhr und 11 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.