HM-Dis-EP-WM55 Temperatur anzeigen

Kabellose und kabelgebundene Sender und Empfänger der klassischen Homematic-Serie

Moderator: Co-Administratoren

blücher16
Beiträge: 73
Registriert: 03.12.2014, 10:06
Hat sich bedankt: 2 Mal

HM-Dis-EP-WM55 Temperatur anzeigen

Beitrag von blücher16 » 30.04.2018, 16:29

Hallo Homematic-Freunde,

leider finde ich bisher nichts Verwertbares zum EP-Display im Forum, meistens beziehen sich die Threads auf das OLED-Display.

Ich möchte gern die aktuelle Temperatur z.B. eines HM-Wandthermostaten in einer der Statuszeilen anzeigen. Das scheint wohl nur über ein Script zu funktionieren.

Kann mir da wer helfen?

Herzlichen Dank im voraus,
blücher16
Zuletzt geändert von alchy am 01.05.2018, 15:32, insgesamt 1-mal geändert.
Grund: Titel geändert

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: MH-Dis-EP-WM55 Temperatur anzeigen

Beitrag von DrTob » 30.04.2018, 19:12

Ansteuern der Statusanzeige mit E-Paper-Display aus Script
https://r.tapatalk.com/shareLink?share_ ... are_type=t

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: MH-Dis-EP-WM55 Temperatur anzeigen

Beitrag von Homoran » 30.04.2018, 19:54

Was in meiner Modifikation dann so aussieht:

Code: Alles auswählen

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



! 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

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

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

!Variablen für die Texte und Icons
!Nicht verwendete Variablen nicht löschen, sondern auf "" setzen!
!Zeilen-Variablen können 0x80-0x89 für vordefinierte Texte oder bis zu 12 Zeichen Freitext sein. (längere Texte werden abgeschnitten)

string zeile2 = "Temp: " + dom.GetObject( "BidCos-RF.JEQ0140901:1.TEMPERATURE" ).Value().ToString(1)+ "°C";
string icon2  = "";

string zeile3 = "rel "+ dom.GetObject( "BidCos-RF.JEQ0140901:1.HUMIDITY" ).Value().ToString(0)+ "%";
string icon3  = "";

string zeile4 = "abs "+dom.GetObject( "Abs_Feuchte_aussen" ).Value().ToString(1)+" g/kg";
string icon4  = "";

string signal = "0xF2";

string tonfolge = "0xC0";

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

! es wird zum nächstmöglichen 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);
   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; 
      }
      if (icon <> "") {
         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);

Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

blücher16
Beiträge: 73
Registriert: 03.12.2014, 10:06
Hat sich bedankt: 2 Mal

Re: MH-Dis-EP-WM55 Temperatur anzeigen

Beitrag von blücher16 » 30.04.2018, 21:52

Hallo Dr.Tob und Rainer,

vielen Dank für Eure Hinweise.
Ich habe beide Programmierungen ausprobiert, das Script von Dr.Tob läuft (entspr. Anzeige wird generiert).
Das von Rainer läuft leider nicht. Um irgendeinen Fehler auszuschließen habe ich nur die String-Zeile 2 (Temp.) von Rainer kopiert und in das Script von Dr.Tob eingefügt mit der Seriennr. meines Wandthermostaten, tut sich aber auch nichts.
Nun bin ich erst mal mit meine Latein am Ende...

blücher16
Beiträge: 73
Registriert: 03.12.2014, 10:06
Hat sich bedankt: 2 Mal

Re: MH-Dis-EP-WM55 Temperatur anzeigen

Beitrag von blücher16 » 30.04.2018, 23:58

Ich habe es gerade nochmal als komplett neues Programm gespeichert, jetzt funktioniert es! Ein Programm zu ändern und "als neues Programm speichern" scheint öfter nicht so richtig zu funktionieren.
Das Display will jedoch weder "°C " anzeigen (nur "C") und für das %-Zeichen scheint der Platz nicht zu reichen. Naja, nichts ist perfekt. Aber schonmal ganz brauchbar.

blücher16
Beiträge: 73
Registriert: 03.12.2014, 10:06
Hat sich bedankt: 2 Mal

Re: MH-Dis-EP-WM55 Temperatur anzeigen

Beitrag von blücher16 » 01.05.2018, 10:33

Jetzt würde mich noch interessieren ob es einen Weg gibt die Temperatur eines HMIP-Sensors auf dem HM-Dis-EP anzuzeigen?

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: MH-Dis-EP-WM55 Temperatur anzeigen

Beitrag von alchy » 01.05.2018, 15:31

Natürlich.

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.

blücher16
Beiträge: 73
Registriert: 03.12.2014, 10:06
Hat sich bedankt: 2 Mal

Re: HM-Dis-EP-WM55 Temperatur anzeigen

Beitrag von blücher16 » 01.05.2018, 16:41

Hallo Alchy,

aha! Würdest Du denn den Weg WIE mit mir teilen?

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: HM-Dis-EP-WM55 Temperatur anzeigen

Beitrag von Homoran » 01.05.2018, 17:04

indem du einfach die ID des IP-Sensors in das Script einträgst.
Ähnlich wie:
blücher16 hat geschrieben: mit der Seriennr. meines Wandthermostaten,
Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

blücher16
Beiträge: 73
Registriert: 03.12.2014, 10:06
Hat sich bedankt: 2 Mal

Re: HM-Dis-EP-WM55 Temperatur anzeigen

Beitrag von blücher16 » 01.05.2018, 17:23

Ja das dachte ich auch, wenn ich das tue passiert aber gar nichts mehr, habs gerade nochmal ausprobiert.
Es heißt ja das die Funkprotokolle von HM + HMIP nicht zusammenpassen.
Es handelt sich hier übrigens um den Wettersensor HmIP-SWO-B.

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren (klassisch)“