grosse Schrift für Display HmIP-WRCD

HMIP Sender und Empfänger der Serie Homematic IP

Moderator: Co-Administratoren

Antworten
debianatoe
Beiträge: 471
Registriert: 05.12.2016, 19:04
Hat sich bedankt: 30 Mal
Danksagung erhalten: 4 Mal

grosse Schrift für Display HmIP-WRCD

Beitrag von debianatoe » 20.01.2022, 19:45

Das Display HmIP-WRCD hat bei guter Beleuchtung eine schöne kontrastreiche Schrift, die jedoch bei trüber Beleuchtung oder für Menschen mit Leseschwäche schlecht zu lesen ist, insbesondere weil sie relativ klein ist. Deshalb habe ich ein kleines Skript geschrieben, mit dem man die Zahlen von -9 bis 99 vergrößert darstellen kann. Das Skript eignet sich somit gut zur Darstellung von Temperaturen, obwohl die Zahlen sicherlich keinen Schönheitpreis gewinnen werden. Es ließe sich vermutlich für Kommazahlen von 0,1 bis 9,9 erweitern und sicherlich auch für Buchstaben. Vorbild war das "banner" Programm von UNIX System V.
Die darzustellende Zahl wird über die integer Variable iWert gesetzt. Sie muß entweder direkt im Code definiert werden, d.h. Kommentar in Zeile 3 entfernen oder vom aufrufenden Programm gesetzt werden.

Code: Alles auswählen

string Geraet = "HmIP-WRCD xxxxx:3"; ! Name von Kanal 3 des Displays 

!integer iWert = 10;
integer iZ = 9; ! 0 ... 9
string sZ1 = "   >@,   =, @@@@, @@@ ,=    ,>>>>, >>>,>>>>, >@@, >@@";
string sZ2 = " >   @, >=,      =,     =,=  = ,=     ,=     ,    >,=   =,=   =";
string sZ3 = "=    =,> =, >@@>,@@@@,@@=@, @@@,=@@@,   >, ===, @==";
string sZ4 = " @   >,   =,=      ,     =,   = ,     =,=    =,  >,=   =,    =";
string sZ5 = "   @>,   =,@@@@ ,@@@>,   = ,@@@>,@>>>,  >,  @@>,  @>";

string sM1 = "     ";
string sM2 = sM1;
string sM3 = "µµ   ";
string sM4 = sM1;
string sM5 = sM1;

if (iWert < 10) {
  if (iWert < 0) {
    iZ = iWert * -1;
    string ZEILE_1 = sM1 # sZ1.StrValueByIndex(",", iZ);
    string ZEILE_2 = sM2 # sZ2.StrValueByIndex(",", iZ);
    string ZEILE_3 = sM3 # sZ3.StrValueByIndex(",", iZ);
    string ZEILE_4 = sM4 # sZ4.StrValueByIndex(",", iZ);
    string ZEILE_5 = sM5 # sZ5.StrValueByIndex(",", iZ);
  } else {
    iZ = iWert;
    string ZEILE_1 = sZ1.StrValueByIndex(",", iZ);
    string ZEILE_2 = sZ2.StrValueByIndex(",", iZ);
    string ZEILE_3 = sZ3.StrValueByIndex(",", iZ);
    string ZEILE_4 = sZ4.StrValueByIndex(",", iZ);
    string ZEILE_5 = sZ5.StrValueByIndex(",", iZ);
  }
} else {
  iZ = iWert / 10;
  WriteLine("iWert=" # iWert # " Zehner=" # iZ);
  string ZEILE_1 = sZ1.StrValueByIndex(",", iZ);
  string ZEILE_2 = sZ2.StrValueByIndex(",", iZ);
  string ZEILE_3 = sZ3.StrValueByIndex(",", iZ);
  string ZEILE_4 = sZ4.StrValueByIndex(",", iZ);
  string ZEILE_5 = sZ5.StrValueByIndex(",", iZ);
  iZ = iWert % 10;
  WriteLine(" Einer=" # iZ);
  ZEILE_1 = ZEILE_1 # " " # sZ1.StrValueByIndex(",", iZ);
  ZEILE_2 = ZEILE_2 # " " # sZ2.StrValueByIndex(",", iZ);
  ZEILE_3 = ZEILE_3 # " " # sZ3.StrValueByIndex(",", iZ);
  ZEILE_4 = ZEILE_4 # " " # sZ4.StrValueByIndex(",", iZ);
  ZEILE_5 = ZEILE_5 # " " # sZ5.StrValueByIndex(",", iZ);
}

! String in einem zusammenbauen, nur einen Befehl abzusetzen kostet weniger Duty Cycle
string ZeilenRefresh = "{DDBC=WHITE,DDTC=BLACK,DDI=0,DDA=LEFT,DDS="#ZEILE_1#",DDID=1,DDC=true},{DDBC=WHITE,DDTC=BLACK,DDI=0,DDA=LEFT,DDS="#ZEILE_2#",DDID=2,DDC=true},{DDBC=WHITE,DDTC=BLACK,DDI=0,DDA=LEFT,DDS="#ZEILE_3#",DDID=3,DDC=true},{DDBC=WHITE,DDTC=BLACK,DDI=0,DDA=LEFT,DDS="#ZEILE_4#",DDID=4,DDC=true},{DDBC=WHITE,DDTC=BLACK,DDI=0,DDA=LEFT,DDS="#ZEILE_5#",DDID=5,DDC=true}";

! neuen Inhalt auf dem Display setzen
channels.Get(Geraet).DPByHssDP("COMBINED_PARAMETER").State(ZeilenRefresh);
WriteLine(ZeilenRefresh);
Viele Grüße,
debianatoe

Dani3000
Beiträge: 81
Registriert: 14.03.2020, 16:47
Hat sich bedankt: 11 Mal
Danksagung erhalten: 1 Mal

Re: grosse Schrift für Display HmIP-WRCD

Beitrag von Dani3000 » 21.01.2022, 10:01

Interessanter Ansatz.
Kannst Du mal bitte ein Foto von der Umsetzung machen. Dann sieht man wie brauchbar das ist.
Danke!

debianatoe
Beiträge: 471
Registriert: 05.12.2016, 19:04
Hat sich bedankt: 30 Mal
Danksagung erhalten: 4 Mal

Re: grosse Schrift für Display HmIP-WRCD

Beitrag von debianatoe » 22.01.2022, 12:21

25_gross.jpg
Beispiel: die Zahl 25
Wie gesagt: nicht schön aber effektiv für Menschen mit Leseschwäche. Die sagen mir, daß sie die Zahl so auch ohne Brille ablesen können, was in der Normalschrift unmöglich ist. Ich habe das so programmiert, daß man einfach per Tastendruck auf das Display zwischen großer Schrift und Normalschrift hin und her schalten kann.
Viele Grüße,
debianatoe

Antworten

Zurück zu „HomeMatic IP Aktoren und Sensoren“