Seite 112 von 113

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Verfasst: 11.10.2021, 07:48
von quaker
Rev2.1...mit denen hatte ich auch immer nur Probleme...Und wenn es dann irgendwie mal läuft saugt er die Batterien leer...
Das könnte auch das Phänomen an meinem anderen Display erklären. Das betreibe ich mit 4x Mignon Zellen und einem refresh alle 15 Minuten.
Die Baterien waren nach 1-2 Monten komplett leer.

Welche Revision kannst Du empfehlen?

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Verfasst: 11.10.2021, 11:44
von Michel2017
quaker hat geschrieben:
11.10.2021, 07:48
Rev2.1...mit denen hatte ich auch immer nur Probleme...Und wenn es dann irgendwie mal läuft saugt er die Batterien leer...
Das könnte auch das Phänomen an meinem anderen Display erklären. Das betreibe ich mit 4x Mignon Zellen und einem refresh alle 15 Minuten.
Die Baterien waren nach 1-2 Monten komplett leer.

Welche Revision kannst Du empfehlen?
Ich vermute mal, daß die "alten" Waveshare's nicht mehr zu bekommen sind. Ich würde in Zukunft nur noch die "raw displays" und Asselhead's Platine nehmen:

https://github.com/Asselhead/HB-Dis-EP-75BW-PCB

Bei meinem 2.9'' Rev2.1 habe ich alles unnötige abgelötet, wie hier beschrieben:

viewtopic.php?f=76&t=50160&start=430#p579267

Danach funktionier's bei mir wie's soll...

Bei meinem 4.2'' Rev2.1 have ich den code geändert, wie hier beschrieben (angewendet auf die 4.2'' library):

viewtopic.php?f=76&t=50160&start=450#p583290

Funktioniert auch...

Gruss,

Michel

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Verfasst: 18.04.2022, 14:18
von chka
mal eine frage bei mir aktualisiert sich der display nicht mehr, ich vermute mal das es irgendwas mit den übertragenen wetter werten zu tuen hat.

ich bekomme im Seriell Monitor diverse Meldungen mit [

Code: Alles auswählen

ERROR: EOL Count =
was heißt das?

schicke ich

Code: Alles auswählen

var cmd = "0x02,0x0A,0x0A,0x12,0x82,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x03";
WriteLine(cmd);
dom.GetObject("BidCos-RF.JPDISEP001:11.SUBMIT").State(cmd);
kommt die Meldung Innen auch an

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Verfasst: 18.04.2022, 16:12
von jp112sdl
Hinter EOL Count = sollte noch eine Zahl folgen.
Die Ausgabe kommt, wenn die Anzahl an EOL Zeichen (End Of Line - 0x0A) nicht stimmt (ungleich 10 ist)

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Verfasst: 18.04.2022, 16:13
von chka
Ja 13 16 usw, heißt dann das es zu viele Zeichen in dieser Zeile sind sind?

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Verfasst: 18.04.2022, 16:16
von jp112sdl
Nicht zu viele Zeichen in der Zeile, sondern zu viele Zeilen an sich.
Jede Zeile endet mit 0x0A
Das Display hat nur 10 Zeilen.
Wenn bei dir 13 oder 16 Mal das Zeichen 0x0A auftaucht, versuchst du 13 bzw. 16 Zeilen zu beschreiben

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Verfasst: 18.04.2022, 16:21
von chka
ok dann ist es noch wirrer, ich nutze das scripthelper tool vom TomMajor https://github.com/TomMajor/SmartHome/b ... aper42.tcl das sollte dann eigentlich nicht passieren.

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Verfasst: 18.04.2022, 17:57
von chka
reboot tut immer gut, nichts geändert Kiste neugestartet und alles wieder gut danke

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Verfasst: 28.04.2022, 14:45
von chka
faszinierend das Problem ist wieder da, töte wetten das nach einem reboot für ne zeit alles wieder geht, das ganze scheidet sich auch mit dem HM-Sensorsterben (SC und SCO) Problem

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Verfasst: 28.06.2023, 21:36
von ivo-int
Ich hoffe ihr könnt mir bei meinem Problem weiter helfen.

Für das Display setzte ich den Script-Helper und Script welches nur die geänderten Werte an das Display senden sollte. Beides ist aus Tom's Quelle.

Ich hatte den Eindruck dass der DutyCyle etwas zu hoch ist. Deshalb bin ich dieser Vermutung etwas nachgegangen.

Mit Script-Testen in der CCU habe ich dies durchgeführt.

Der Inhalt meiner Variable "EPAPER_Buero.Lines" sieht wie folgend aus:

Code: Alles auswählen

/1 '@p03@t01@f4826.6 °C@p7839 %'	/2 '@p03@t02@p4825.4 °C@p7840 %'	/3 '@p03@t03@p78Aus '	/4 '@p03@t04@p4824.7 °C@p7850 %'	/5 '@p03@t05@p4824.5 °C@p7842 %'	/6 '@p03@t06@p4824.5 °C@p7845 %'	/7 '@p03@t07@p4824.5 °C@p7848 %'	/8 '@p03@t08@p4825.4 °C@p7844 %'	/9 '@p03@t09@p4824.2 °C@p7843 %'	/10 '@p03@t10@p78Aus'
Den Code habe ich etwas angepasst damit ich mehr Infos erhalte:

Code: Alles auswählen

! Werte Aussenfühler Nord
string tempAUT_N = dom.GetObject('CUxD.CUX9002001:1.TEMPERATURE').Value().ToString(1) # " °C";
string humAUT_N = dom.GetObject('CUxD.CUX9002001:1.HUMIDITY').Value().ToString(0) # " %";

! Werte Aussenfühler Süd
string tempAUT_S = dom.GetObject('CUxD.CUX9002005:1.TEMPERATURE').Value().ToString(1) # " °C";
string humAUT_S = dom.GetObject('CUxD.CUX9002005:1.HUMIDITY').Value().ToString(0) # " %";

! Werte Fühler Wohnzimmer
string tempRA_Wohnzimmer = dom.GetObject('CUxD.CUX9002002:1.TEMPERATURE').Value().ToString(1) # " °C";
string humRA_Wohnzimmer = dom.GetObject('CUxD.CUX9002002:1.HUMIDITY').Value().ToString(0) # " %";

! Werte Fühler Büro
string tempRA_Buero = dom.GetObject('CUxD.CUX9002004:1.TEMPERATURE').Value().ToString(1) # " °C";
string humRA_Buero = dom.GetObject('CUxD.CUX9002004:1.HUMIDITY').Value().ToString(0) # " %";

! Werte Fühler Gästezimmer
string tempRA_Gaestezimmer = dom.GetObject('CUxD.CUX9002007:1.TEMPERATURE').Value().ToString(1) # " °C";
string humRA_Gaestezimmer = dom.GetObject('CUxD.CUX9002007:1.HUMIDITY').Value().ToString(0) # " %";

! Werte Fühler MOBA
string tempRA_MOBA = dom.GetObject('CUxD.CUX9002010:1.TEMPERATURE').Value().ToString(1) # " °C";
string humRA_MOBA = dom.GetObject('CUxD.CUX9002010:1.HUMIDITY').Value().ToString(0) # " %";

! Werte Fühler Schlafzimmer
string tempRA_Schlafzimmer = dom.GetObject('BidCos-RF.IJ-CO2-001:1.TEMPERATURE').Value().ToString(1) # " °C";
string humRA_Schlafzimmer = dom.GetObject('BidCos-RF.IJ-CO2-001:1.HUMIDITY').Value().ToString(0) # " %";

! Werte Fühler Dusche
string tempRA_Dusche = dom.GetObject('CUxD.CUX9002006:1.TEMPERATURE').Value().ToString(1) # " °C";
string humRA_Dusche = dom.GetObject('CUxD.CUX9002006:1.HUMIDITY').Value().ToString(0) # " %";


! Lüftung Stufen auswerten
! Status Lüftung Aus
if ((dom.GetObject('BidCos-RF.OEQ1662144:1.STATE').Value()  == false) && ((dom.GetObject('BidCos-RF.OEQ1662144:2.STATE').Value()) == false)) {
  string LueftungStatus = "Aus ";
! Status Lüftung Stufe 1
} elseif (dom.GetObject('BidCos-RF.OEQ1662144:1.STATE').Value() == true) {
  string LueftungStatus = "St.1";
}
! Status Lüftung Stufe 2
if (dom.GetObject('BidCos-RF.OEQ1868733:1.STATE').Value() == true) {
  string LueftungStatus = "St.2";
}
! Status Lüftung Stufe 3
if (dom.GetObject('BidCos-RF.OEQ1662144:2.STATE').Value() == true) {
  string LueftungStatus = "St.3";
}

! Natel Ladung auswerten auswerten
if (dom.GetObject('BidCos-RF.MEQ1323481:1.STATE').Value()  == false) {
  string LadungStatus = "Aus";
} elseif (dom.GetObject('BidCos-RF.MEQ1323481:1.STATE').Value() == true) {
  string LadungStatus = "Ein";
}

string line1 = "/1 '@p03@t01@f48" # tempAUT_N # "@p78" # humAUT_N # "'";
string line2 = "/2 '@p03@t02@p48" # tempAUT_S # "@p78" # humAUT_S # "'";
string line3 = "/3 '@p03@t03@p78" # LueftungStatus # "'";
string line4 = "/4 '@p03@t04@p48" # tempRA_Wohnzimmer # "@p78" # humRA_Wohnzimmer # "'";
string line5 = "/5 '@p03@t05@p48" # tempRA_Buero # "@p78" # humRA_Buero # "'";
string line6 = "/6 '@p03@t06@p48" # tempRA_Gaestezimmer # "@p78" # humRA_Gaestezimmer # "'";
string line7 = "/7 '@p03@t07@p48" # tempRA_MOBA # "@p78" # humRA_MOBA # "'";
string line8 = "/8 '@p03@t08@p48" # tempRA_Schlafzimmer # "@p78" # humRA_Schlafzimmer # "'";
string line9 = "/9 '@p03@t09@p48" # tempRA_Dusche # "@p78" # humRA_Dusche # "'";
string line10 = "/10 '@p03@t10@p78" # LadungStatus # "'";

string lastLines = dom.GetObject("EPAPER_Buero.Lines").Value();
string index;
string linesDoNotUpdate = "";
integer i = 0;
WriteLine(lastLines); 
WriteLine(index); 
  foreach (index, lastLines) {
      if (index.Substr(0, 2) == "/1") {
        WriteLine(index.Substr(0, 2) # "Linie1"); 
        WriteLine(index);
        i = i+1;
          if (index == line1) {
              linesDoNotUpdate = linesDoNotUpdate # "L01";
          }
      } elseif (index.Substr(0, 2) == "/2") {
        WriteLine(index.Substr(0, 2));
        WriteLine(index);
        i = i+1;
          if (index == line2) {
              linesDoNotUpdate = linesDoNotUpdate # "L02";
          }
      } elseif (index.Substr(0, 2) == "/3") {
        WriteLine(index.Substr(0, 2));
        WriteLine(index);
        i = i+1;
          if (index == line3) {
              linesDoNotUpdate = linesDoNotUpdate # "L03";
          }
      } elseif (index.Substr(0, 2) == "/4") {
        WriteLine(index.Substr(0, 2));
        WriteLine(index);
        i = i+1;
          if (index == line4) {
              linesDoNotUpdate = linesDoNotUpdate # "L04";
          }
      } elseif (index.Substr(0, 2) == "/5") {
        WriteLine(index.Substr(0, 2));
        WriteLine(index);
        i = i+1;
          if (index == line5) {
              linesDoNotUpdate = linesDoNotUpdate # "L05";
          }
      } elseif (index.Substr(0, 2) == "/6") {
        WriteLine(index.Substr(0, 2));
        WriteLine(index);
        i = i+1;
          if (index == line6) {
              linesDoNotUpdate = linesDoNotUpdate # "L06";
          }
      } elseif (index.Substr(0, 2) == "/7") {
        WriteLine(index.Substr(0, 2));
        WriteLine(index);
        i = i+1;
          if (index == line7) {
              linesDoNotUpdate = linesDoNotUpdate # "L07";
          }
      } elseif (index.Substr(0, 2) == "/8") {
        WriteLine(index.Substr(0, 2));
        WriteLine(index);
        i = i+1;
          if (index == line8) {
              linesDoNotUpdate = linesDoNotUpdate # "L08";
          }
      } elseif (index.Substr(0, 2) == "/9") {
        WriteLine(index.Substr(0, 2));
        WriteLine(index);
        i = i+1;
          if (index == line9) {
              linesDoNotUpdate = linesDoNotUpdate # "L09";
          }
      } elseif (index.Substr(0, 3) == "/10") {
        WriteLine(index.Substr(0, 3) # "10");
        WriteLine(index.Substr(0, 10));
        WriteLine(index);
        i = i+1;
          if (index == line10) {
              linesDoNotUpdate = linesDoNotUpdate # "L10";
          }
      }
  }
WriteLine("");
WriteLine(i);  
WriteLine(linesDoNotUpdate);  
WriteLine("");

  ! Wegen einem Limit bei der RF Übertragung in der CCU kann man nicht alle 10 in einem Funktelegramm übertragen.
  ! Deswegen wird hier die Übertragung immer in 2 Funktelegramme aufgeteilt.
  string displayCmdA = "IJDISEP001";
  string displayCmdB = "IJDISEP001";
  integer iChangedLinesA = 0;
  integer iChangedLinesB = 0;
  
  if (linesDoNotUpdate.Find("L01") < 0) {
      displayCmdA = displayCmdA # " " # line1;  iChangedLinesA = iChangedLinesA + 1;
  }
  if (linesDoNotUpdate.Find("L02") < 0) {
      displayCmdA = displayCmdA # " " # line2;  iChangedLinesA = iChangedLinesA + 1;
  }
  if (linesDoNotUpdate.Find("L03") < 0) {
      displayCmdA = displayCmdA # " " # line3;  iChangedLinesA = iChangedLinesA + 1;
  }
  if (linesDoNotUpdate.Find("L04") < 0) {
      displayCmdA = displayCmdA # " " # line4;  iChangedLinesA = iChangedLinesA + 1;
  }
  if (linesDoNotUpdate.Find("L05") < 0) {
      displayCmdA = displayCmdA # " " # line5;  iChangedLinesA = iChangedLinesA + 1;
  }
  if (linesDoNotUpdate.Find("L06") < 0) {
      displayCmdB = displayCmdB # " " # line6;  iChangedLinesB = iChangedLinesB + 1;
  }
  if (linesDoNotUpdate.Find("L07") < 0) {
      displayCmdB = displayCmdB # " " # line7;  iChangedLinesB = iChangedLinesB + 1;
  }
  if (linesDoNotUpdate.Find("L08") < 0) {
      displayCmdB = displayCmdB # " " # line8;  iChangedLinesB = iChangedLinesB + 1;
  }
  if (linesDoNotUpdate.Find("L09") < 0) {
      displayCmdB = displayCmdB # " " # line9;  iChangedLinesB = iChangedLinesB + 1;
  }
  if (linesDoNotUpdate.Find("L10") < 0) {
      displayCmdB = displayCmdB # " " # line10; iChangedLinesB = iChangedLinesB + 1;
  }

WriteLine(displayCmdA);
WriteLine(displayCmdB);
WriteLine("");

string currentLines = line1 # "\t" # line2 # "\t" # line3 # "\t" # line4 # "\t" # line5 # "\t" # line6 # "\t" # line7 # "\t" # line8 # "\t" # line9 # "\t" # line10;

WriteLine(currentLines);
Das Ergebnis der Ausgabe sieht dann so aus:

Code: Alles auswählen

/1Linie1
/1 '@p03@t01@f4826.6 °C@p7839 %'
/2
/2 '@p03@t02@p4825.4 °C@p7840 %'
/3
/3 '@p03@t03@p78Aus '
/4
/4 '@p03@t04@p4824.7 °C@p7850 %'
/5
/5 '@p03@t05@p4824.5 °C@p7842 %'
/6
/6 '@p03@t06@p4824.5 °C@p7845 %'
/7
/7 '@p03@t07@p4824.5 °C@p7848 %'
/8
/8 '@p03@t08@p4825.4 °C@p7844 %'
/9
/9 '@p03@t09@p4824.2 °C@p7843 %'
/1Linie1
/10 '@p03@t10@p78Aus'

10
L07

IJDISEP001 /1 '@p03@t01@f4821.8 °C@p7852 %' /2 '@p03@t02@p4823.8 °C@p7846 %' /3 '@p03@t03@p78St.1' /4 '@p03@t04@p4824.9 °C@p7852 %' /5 '@p03@t05@p4824.6 °C@p7843 %'
IJDISEP001 /6 '@p03@t06@p4824.5 °C@p7847 %' /8 '@p03@t08@p4825.3 °C@p7843 %' /9 '@p03@t09@p4824.3 °C@p7845 %' /10 '@p03@t10@p78Aus'

/1 '@p03@t01@f4821.8 °C@p7852 %'	/2 '@p03@t02@p4823.8 °C@p7846 %'	/3 '@p03@t03@p78St.1'	/4 '@p03@t04@p4824.9 °C@p7852 %'	/5 '@p03@t05@p4824.6 °C@p7843 %'	/6 '@p03@t06@p4824.5 °C@p7847 %'	/7 '@p03@t07@p4824.5 °C@p7848 %'	/8 '@p03@t08@p4825.3 °C@p7843 %'	/9 '@p03@t09@p4824.3 °C@p7845 %'	/10 '@p03@t10@p78Aus'
Die 10 vor L07 gibt die Anzahl Durchläufe an. Der Text

Code: Alles auswählen

/1Linie1
/10 '@p03@t10@p78Aus'
wird aber in der ersten IF-Abfrage gebildet. Aus welchem Grund wird die 10te Abfrage nicht ausgeführt?

Aber aus einem Grund wird der Text in der ersten Zeile für die 10te ausgegeben. :?

Ich sehe den Fehler nicht. Hatte noch jemand das selbe Problem und konnte es lösen?

Für einen Tipp bin ich sehr dankbar. Nach mehreren Tagen komme ich hier nicht mehr weiter.

Gruss Ivo