HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

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

Moderator: Co-Administratoren

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von MichaelN » 25.06.2020, 16:07

Einfahc mal schauen, ob beide Module die gleichen Datenpunkte haben. Dann sollte nichts dagegegn sprechen.
https://www.google.com/url?sa=t&rct=j&q ... N_dXQye1pQ

Viel Input zum WM55 findst Du auch hier: viewtopic.php?f=31&t=21802&hilit=WM55
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 +++

Benutzeravatar
FBK2904
Beiträge: 454
Registriert: 22.03.2016, 17:12
System: Alternative CCU (auf Basis OCCU)
Wohnort: Bei Ludwigsburg
Hat sich bedankt: 80 Mal
Danksagung erhalten: 42 Mal

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von FBK2904 » 25.06.2020, 16:50

chross hat geschrieben:
25.06.2020, 13:24
Hi! Ich bin neu hier und finde dieses Projekt spannend. Wäre es auch mit dem HM-Dis-EP-WM55 E-Ink Display umsetzbar? Vorteil wäre für mich, dass die Anzeige permanent an ist.
Hi,

du kannst dir auch das "HmIP-WRCD" zulegen !
-> Ist als "Bausatz" um ca. € 30,- und als Fertiggerät aum € 20,- billiger UND kann auch noch diverse Piep-Töne von sich geben :D .
-> Display wurde/wird HIER besprochen.

Grüssle,
Frank
Grüssle,
Frank
--------------------------
System: CCU3 (RM 3.75.6.20240316) mit Stabantenne (www.stall.biz)
Geräte: 56x HM (classic) / 13x HmIP / 8x CUxD /16x virtuelle Gruppen / 4x PioTek-Tracker V4 FTTB & FAM-USB-Gateway
Addons: XML-API 2.3 / CUx-Daemon 2.11 / CUxD-Highcharts 1.45 / Programme drucken 2.6
Sonstige: SDV v5.03.04 G / AIO Creator NEO v3.1.0 mit 2x Samsung Tab SM-T580 (Root & Android 10 [LineageOS 17.1 by TALUAtXDAi])

PeacePirate
Beiträge: 170
Registriert: 19.10.2011, 23:26
Wohnort: Köln
Hat sich bedankt: 12 Mal

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von PeacePirate » 07.11.2022, 18:12

Hallo,
irgendwann vor 2 Jahren oder so habe ich das Skript erfolgreich an meine Gegebenheiten anpassen können und alles lief wunderbar. Dieses mal habe ich ein kleines Problem dergestallt, dass der erste kurze Klick unten mir anzeigt, was ich auch wollte.
Mit erneutem Klick wechselt auch die Seite.
Ein Problem, dass mir letztens nicht aufgefallen ist, müsste mit dem 20sek. Timer zusammenhängen.Wenn das Display nach dem ersten Klick wieder ausgeht und die 20 sek. noch nicht abgelaufen sind, führt ein erneuter kurzer Klick unten dazu, dass die Sanduhr nur für den Bruchteil einer Sekunde kurz erscheint und das Display danach sofort ausgeht. Erst wenn die 20 sek. abgelaufen sind, krieg ich das Display wieder dazu, dass es mir Seite 1 anzeigt. Vielleicht habe ich etwas schlampig geändert?

Der Code:

Code: Alles auswählen

! ### Homatic-Statusanzeige HM-Dis-WM55 ####
! ### Stausanzeige 2 , Vers. 1.0;
! ### Anzeige der Zysternen Füllstand, Zysternen Filter stand, Außentemperatur, Status der Türen, Fenster und Lichter

!! Universalprogramm zum Füllen 
!! (c) DrTob 
!! optimized by thkl
!! changed by wortmann30
!! Seitenzähler von Brufi

!! Das Script holt sich jetzt die Seriennummer des Displays selbst aus der Auslösebedinung des Programms

! Farben
! 0x80 weiß
! 0x81 rot
! 0x82 orange
! 0x83 gelb
! 0x84 gruen
! 0x85 blau 

! 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

! Zugriff auf vordefinierte Texte
!
! 0x80 Text 0 (Kanal 1 Text Zeile 1)
! 0x81 Text 1 (Kanal 1 Text Zeile 2)
! 0x82 Text 2 (Kanal 2 Text Zeile 3)
! 0x83 Text 3 (Kanal 2 Text Zeile 4)
! 0x84 Text 4 (Kanal 3 Text Zeile 5)
! 0x85 Text 5 (Kanal 3 Text Zeile 6)
! 0x86 Text 6 (Kanal 4 Text Zeile 7)
! 0x87 Text 7 (Kanal 4 Text Zeile 8)
! 0x88 Text 8 (Kanal 5 Text Zeile 9)
! 0x89 Text 9 (Kanal 5 Text Zeile 10)
! 0x8A Text 10 (Kanal 6 Text Zeile 11)
! 0x8B Text 11 (Kanal 6 Text Zeile 12)
! 0x8C Text 12 (Kanal 7 Text Zeile 13)
! 0x8D Text 13 (Kanal 7 Text Zeile 14)
! 0x8E Text 14 (Kanal 8 Text Zeile 15)
! 0x8F Text 15 (Kanal 8 Text Zeile 16)
! 0x90 Text 16 (Kanal 9 Text Zeile 17)
! 0x91 Text 17 (Kanal 9 Text Zeile 18)
! 0x92 Text 18 (Kanal 10 Text Zeile 19)
! 0x93 Text 19 (Kanal 10 Text Zeile 20)

string zeile1 = "";
string color1 = "0x80";
string icon1 = "";

string zeile2 = "";
string color2 = "0x80";
string icon2 = "";

string zeile3 = "";
string color3 = "0x80";
string icon3 = "";

string zeile4 = "";
string color4 = "0x80";
string icon4 = "";

string zeile5 = "";
string color5 = "0x80";
string icon5 = "";

string zeile6 = "";
string color6 = "0x80";
string icon6 = "";

! ####### wie viele Seiten auf dem Display sollen durchlaufen werden? ###########

integer seitenzahl = 4; 

! ###############################################################
  
! ####################### Zähler entsprechend der Anzahl Tastendrücke verändern #################
  

integer obj = dom.GetObject("seitenzaehler01"); ! ######## rausholen

integer xyz = obj.State();


if (xyz == seitenzahl) {
  obj.Variable(1);
}
else {

  xyz = xyz + 1; ! ######## incrementieren
  obj.Variable(xyz); ! ######### reinschreiben
}

! ################################################################################################  
  

  
  
! --------- Anfang Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------

! ### Systemvariable seitenzaehler01 holen ###

var seitenZaehler = dom.GetObject("seitenzaehler01");


! ###################### Seite 1 ######################


if (seitenZaehler.State()==1){
  

! ### Übersicht ####

zeile1 = "Übersicht:";
color1 = "0x80";
icon1 = "";  
  
var istTemp = dom.GetObject("BidCos-RF.HEQ0130329:1.TEMPERATURE").State();
var co = dom.GetObject("CO2").Value();
string zeile2 = (co.ToString(1) # " ppm");
WriteLine(co);
if (co <= 500) {
	string color2 = "0x85";
  }
  if ((co > 500)&& (co <=1000)) {
    string color2 = "0x84";
  }
if ((co > 1000)&&  (co <2000)) {
	string color2 = "0x82";
  }
if (co >= 2000) {
	string color2 = "0x81";
  }
string icon2  = "";

! #### Zeile 3 - 
! # Gewerk mit dem Namen Verschluss wird gezählt


  zeile3 = "";
  color3 = "0x84";
  icon3 = "";


! #### Zeile 4 und 5 Temperatur im Schlafzimmer


var akttemp = dom.GetObject("BidCos-RF.LEQ1283925:1.TEMPERATURE").Value();
akttemp = akttemp.ToString(1);

  zeile4 = "Innen: "#akttemp # "^ Grad";  
  color4 = "0x80";
  icon4 = "";
  zeile5 =  "Außen: "#istTemp # "^ Grad";  
  color5 = "0x80";
  icon5 = "";

  
  

! #### Zeile 6 Außentemperatur

zeile6 = "";
color6 = "0x80";
icon6 = "";




  
  

! ###################### Seite 2 ######################


if (seitenZaehler.State()==2){

! ### Wecker 6 Uhr ####
  
var oSysvar = dom.GetObject("wecker6Uhr");
if (oSysvar.State()==2){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "6 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "einge-";
color5 = "0x81";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x81";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "6 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "ausge-";
color5 = "0x84";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x84";
icon6 = "";
}
}

! ###################### Seite 3 ######################


if (seitenZaehler.State()==3){

! ### Wecker 8 Uhr ####
  
var oSysvar = dom.GetObject("wecker8Uhr");
if (oSysvar.State()==2){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "8 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "einge-";
color5 = "0x81";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x81";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Wecker:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "8 Uhr";
color4="0x85";
icon4 = "";
zeile5 = "ausge-";
color5 = "0x84";
icon5 = "";
zeile6 = "schaltet";
color6 = "0x84";
icon6 = "";
}
}

! ###################### Seite 4 ######################


  ! ### Schlafmodus an oder aus? ####
 
  if (seitenZaehler.State()==4){
  
var oSysvar = dom.GetObject("Schlafmodus");
if (oSysvar.State()==1){

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Schlafen:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "ange-";
color4="0x81";
icon4 = "";
zeile5 = "schaltet";
color5 = "0x81";
icon5 = "";
zeile6 = "";
color6 = "0x80";
icon6 = "";
}
else
{

zeile1 = "";
color1 = "0x80";
icon1 = "";
zeile2 = "Schlafen:";
color2 = "0x80";
icon2 = "";
zeile3 = "";
color3="0x80";
icon3 = "";
zeile4 = "ausge-";
color4 = "0x84";
icon4 = "";
zeile5 = "schaltet";
color5 = "0x84";
icon5 = "";
zeile6 = "";
color6 = "0x80";
icon6 = "";
}
}


}

! ###################### Seite 5 ######################




! ### Platz für weiere Seiten...







! --------- Ende Ermitteln der Systemzustände und Zuweisung zu den einzelnen Zeilen -------------


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 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);

! ##### FERTIG #####
Bildschirm­foto 2022-11-07 um 18.11.56.png
*edit
Kommando zurück. Ich habe einen Fehler auf seite 2, wenn ich mehrmal hintereinander klicke, erscheint dann irgendwann auch wieder seite 1.
Der Fehler stellte sich nur so komisch dar, ich muss mir das nochmal anschauen. Trotzdem danke für das Skript nochmal.

Antworten

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