Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Script
Moderator: Co-Administratoren
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr
!! 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
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
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
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 (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr
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.
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.
Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Script
Alle Color-Variablen müssen vorhanden und definiert sein.
Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr
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
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);
Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr
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?
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?
Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr
Solange du die Taste drückst sendet das Display. Ein gleichzeitiger Empfang von Daten ist nicht möglich.
Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr
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
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
-
- Beiträge: 10660
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 321 Mal
- Danksagung erhalten: 501 Mal
Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr
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
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
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr
? 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.
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.
Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr
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
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