Ansteuern der Statusanzeige mit E-Paper-Display aus Script

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

Moderator: Co-Administratoren

kroegi
Beiträge: 48
Registriert: 11.09.2018, 16:01

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von kroegi » 20.12.2021, 12:16

Perfekt, danke!!

juergen86
Beiträge: 1
Registriert: 30.01.2022, 22:43
System: CCU

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von juergen86 » 30.01.2022, 22:48

Liebes Forum,

ich stehe wahrscheinlich irgendwo auf dem Schlauch, allerdings bringe ich das Skript nicht zum laufen.
Was mir auffällt ist folgendes, dass ich eine "komische" Seriennummer bei meinem e-INK display habe, diese lautet: 002A5D8989D61B und fängt nicht mit einem Buchstaben an wie bei euch.

Das Programm welches das Skript aufrufen soll funktioniert, ich habe dies getestet, dass ich einfach mit den Boardmitteln der CCU Oberfläche einen Text rausgeschrieben habe.

Ich habe hier mal mein Skript kopiert mit der eingegebenen Seriennumer.

Code: Alles auswählen

!! Universalprogramm zum Füllen des HM-Disp-EP-WM55
!! (c) DrTob
!! Version 1.10

string zeile2 = system.Date("%H:%M ");
string icon2  = "0x87";

integer wd = system.Date("%u").ToInteger();
string wdstr;
if (wd == 1){wdstr = "Mo";}
if (wd == 2){wdstr = "Di";}
if (wd == 3){wdstr = "Mi";}
if (wd == 4){wdstr = "Do";}
if (wd == 5){wdstr = "Fr";}
if (wd == 6){wdstr = "Sa";}
if (wd == 7){wdstr = "So";}

string zeile3 = wdstr # system.Date(" %d.%m.%y");
string icon3  = "";

! Symbole
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung

! Zugriff auf vordefinierte Texte
! 0x80 Textblock  1
! 0x81 Textblock  2
! 0x82 Textblock  3
! 0x83 Textblock  4
! 0x84 Textblock  5
! 0x85 Textblock  6
! 0x86 Textblock  7
! 0x87 Textblock  8
! 0x88 Textblock  9
! 0x89 Textblock 10

! Tonfolgen
! 0xC0 AUS
! 0xC1 LANG LANG
! 0xC2 LANG KURZ
! 0xC3 LANG KURZ KURZ
! 0xC4 KURZ
! 0xC5 KURZ KURZ
! 0xC6 LANG
! 0xC7
! 0xC9
! 0xCA

!Signale
! 0xF0 AUS
! 0xF1 Rotes Blitzen
! 0xF2 Grünes Blitzen
! 0xF3 Orangenes Blitzen

!Seriennummer des HM-Disp-EP-WM55.
string seriennummer = "002A5D8989D61B";

! string temp = dom.GetObject("BidCos-RF.LEQ0000000:1.TEMPERATURE").Value().ToString(1);
string temp = "23.0";
string zeile4 = temp # "C";
string icon4  = "";

string signal = "0xF0";

string tonfolge = "0xC0";

! 1 bis 15. 0 = Unendlich
integer wiederholungen = 2;

! es wird zum naechstmoeglichen Abstand aufgerundet. Maximum ist 160s.
integer abstand = 10;

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! System Routine do not change anything below !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string splitter="|";
string msgBuffer = zeile2 # splitter # icon2 # "\t";
msgBuffer = msgBuffer # zeile3 # splitter # icon3 # "\t";
msgBuffer = msgBuffer # zeile4 # splitter # icon4;

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,0x0A";
foreach(bufferLine, msgBuffer) {
   line = bufferLine.StrValueByIndex(splitter, 0);
   icon = bufferLine.StrValueByIndex(splitter, 1);
   integer linelength = line.Length();
   integer iconlength = icon.Length();
   if ((linelength > 0) || (iconlength > 0)) {
      command = command # ",0x12";
      if ((linelength == 4) && (line.Substr(0,2) == "0x")) {
         command = command # "," # line;
         i = 12;
      }
      else {
         i = 0;
      }
      if (linelength > 12) {
        linelength = 12;
      }
      while (i < linelength) {
        char = line.Substr(i, 1);   
        boolean b = true;
        foreach(substEntry, substitutions){
          if (b == true){
            if (char == substEntry.Substr(0,1)){
              command = command # substEntry.Substr(1,5);
              b = false;
            }
          }
        }
        i = i + 1;
      }
      if (iconlength > 0) {
         command = command # ",0x13," # icon;
      }
   }
   command = command # ",0x0A";
}

command = command # ",0x14," # tonfolge # ",0x1C,";

if (wiederholungen < 1){
   command = command # "0xDF,0x1D,";
}
else {
   if (wiederholungen < 11) {
      command = command # "0xD" # (wiederholungen - 1) # ",0x1D,";
   }
   else {
      if (wiederholungen == 11) {
         command = command # "0xDA,0x1D,";
      }
      else {
         if (wiederholungen == 12) {
            command = command # "0xDB,0x1D,";
         }
         else {
            if (wiederholungen == 13) {
               command = command # "0xDC,0x1D,";
            }
            else {
               if (wiederholungen == 14) {
                  command = command # "0xDD,0x1D,";
               }
               else {
                  command = command # "0xDE,0x1D,";
               }
            }
         }
      }
   }
}


if (abstand <= 10) {
   command = command # "0xE0,0x16,";
}
else {
   if (abstand <= 100) {
      command = command # "0xE" # (abstand - 1 / 10) # ",0x16,";
   }
   else {
      if (abstand <= 110) {
         command = command # "0xEA,0x16,";
      }
      else {
         if (abstand <= 120) {
            command = command # "0xEB,0x16,";
         }
         else {
            if (abstand <= 130) {
               command = command # "0xEC,0x16,";
            }
            else {
               if (abstand <= 140) {
                  command = command # "0xED,0x16,";
               }
               else {
                  if (abstand <= 150) {
                     command = command # "0xEE,0x16,";
                  }
                  else {
                     command = command # "0xEF,0x16,";
                  }
               }
            }
         }
      }
   }
}

command = command # signal # ",0x03";
dom.GetObject("BidCos-RF." # seriennummer # ":3.SUBMIT").State(command);

Benutzeravatar
Roland M.
Beiträge: 9738
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 251 Mal
Danksagung erhalten: 1358 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von Roland M. » 30.01.2022, 23:02

Hallo und willkommen im Forum!
juergen86 hat geschrieben:
30.01.2022, 22:48
Was mir auffällt ist folgendes, dass ich eine "komische" Seriennummer bei meinem e-INK display habe, diese lautet: 002A5D8989D61B und fängt nicht mit einem Buchstaben an wie bei euch.
Du hast offensichtlich ein HmIP-WRCD, dieser Thread entstand aber vor mehr als 5 Jahren für den HM-Disp-EP-WM55!
Zwei unterschiedliche Geräte aus unterschiedlichen Familien.

Da ich weder den einen, noch den anderen habe, kann ich zum Thema jedoch leider nichts beitragen.
Bitte selbst die 22 Seiten durchforsten, ob da auch eine passende Adaptierung für HmIP dabei ist... ;)


Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von MichaelN » 30.01.2022, 23:20

Ne, für das WRCD gibt es einen eigenen Thread.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Alexxx2005
Beiträge: 250
Registriert: 17.12.2014, 18:56
Hat sich bedankt: 19 Mal
Danksagung erhalten: 3 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von Alexxx2005 » 03.02.2022, 21:30

Hallo und Danke Dr.Tob für das Skript.

Wollte mit dem Skript das OLED bzw. PB-4DIS ansteuern
aber nur durch ändern der Seriennummer ist nicht :(

Hat es bereits jemand geschafft einer der beiden Displays
einzubinden.

Danke, Grüße Alex

Gluehwurm
Beiträge: 12432
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von Gluehwurm » 04.02.2022, 01:11

Das 4DIS lässt sich auch diesmal nicht ansteuern.

Gruß
Bruno

sct
Beiträge: 139
Registriert: 02.03.2016, 15:12
Hat sich bedankt: 1 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von sct » 03.10.2022, 22:17

Hallo,

ich habe auch das E-Paper Display und nutze auch schon seit Jahren das Script. Ich möchte jedoch im Rahmen einer kleinen Änderung das Icon in einer Zeile nutzen jedoch den Text der da gerade steht beibehalten. Das funktioniert aber nicht denn wenn ich den Textstring der entsprechenden Displayzeile im Script leer lasse, dann wird das Icon nicht geschrieben. Gibt es da eine universelle Lösung?

Dankesehr
Tom

mading
Beiträge: 31
Registriert: 13.03.2020, 08:45
System: CCU
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von mading » 05.11.2022, 12:59

Hi,


Gibt es die Möglichkeit andere Sonderzeichen anzeigen zu lassen, konkret das „°C“ Symbol (C ist natürlich keine Kunst)?

Benutzeravatar
Baxxy
Beiträge: 10648
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 597 Mal
Danksagung erhalten: 2180 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von Baxxy » 05.11.2022, 13:08

mading hat geschrieben:
05.11.2022, 12:59
konkret das „°C“ Symbol
Du hast doch von mir im anderen Thread ein Script-Beispiel bekommen welches auch das ° beherrscht.
Klappt das nicht?

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von MichaelN » 05.11.2022, 14:29

"Das" e paper Display gibt es IMHO nicht. Über welches also reden wir?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

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