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

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

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

Beitrag von jp112sdl » 02.02.2020, 19:09

froema hat geschrieben:
02.02.2020, 18:57
Jetzt habe ich gesehen, dass man das in den Dokumenten Ordner schieben muss.
Ich hab da nix geschoben...
Hab nur

Code: Alles auswählen

https://mcudude.github.io/MightyCore/package_MCUdude_MightyCore_index.json
in die zusätzlichen Boardverwalter-URLs hinzugefügt und konnte dann ganz normal die Boardunterstützung installieren.
Ist auch auf der Seite beschrieben:
Bildschirmfoto 2020-02-02 um 19.06.52.png
froema hat geschrieben:
02.02.2020, 18:57
Pin 1 ist der Eckige, richtig?
Ja. Pin 1 (MISO) ist der eckige

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

froema
Beiträge: 205
Registriert: 19.12.2018, 15:20
Hat sich bedankt: 3 Mal

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

Beitrag von froema » 02.02.2020, 22:41

Das ging bei mir nicht. Diese Auswahlmöglichkeit bot sich mir nicht an.
Bildschirmfoto 2020-02-02 um 22.40.18.png
Dateianhänge
Bildschirmfoto 2020-02-02 um 22.45.42.png

Beowolf
Beiträge: 654
Registriert: 15.07.2006, 12:50
Wohnort: Greven
Hat sich bedankt: 13 Mal
Danksagung erhalten: 18 Mal

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

Beitrag von Beowolf » 03.02.2020, 09:46

Schaue doch mal unter "Datei" -> "Voreinstellungen" dann weiter unten in dem Fenster was sich geöffnet hat sollte "Zusätzliche Boardverwalter-URLs: stehen. Dort werden die Adressen einfach hineinkopiert. Auf der rechten Seite sollte auch ein kleines eckiges Symbol sein. Dort können dann noch weitere URLs eingegeben werden.
1.jpg
1
2.jpg
2
3.jpg
4.jpg
Grüße
Manfred

froema
Beiträge: 205
Registriert: 19.12.2018, 15:20
Hat sich bedankt: 3 Mal

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

Beitrag von froema » 03.02.2020, 10:28

Super. Danke für die Mühe und die tolle Anleitung. Werde ich nachher mal probieren.

Beowolf
Beiträge: 654
Registriert: 15.07.2006, 12:50
Wohnort: Greven
Hat sich bedankt: 13 Mal
Danksagung erhalten: 18 Mal

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

Beitrag von Beowolf » 03.02.2020, 10:41

Mir wurde hier auch schon sehr viel geholfen. Wenn ich das dann so auch einmal wieder zurück geben kann freue ich mich. :D :D

Beowolf
Beiträge: 654
Registriert: 15.07.2006, 12:50
Wohnort: Greven
Hat sich bedankt: 13 Mal
Danksagung erhalten: 18 Mal

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

Beitrag von Beowolf » 03.02.2020, 16:34

Das mit dem

"HomeMatic-Skript: Nur die geänderten Zeilen an das Display senden (DutyCycle sparen)"

habe ich noch nicht so richtig verstanden.

Ich lege eine Systemvariable an "EPAPER.Lines".

Ok, kein Problem.

Dann habe ich im Moment mein Skript, das ein paar Werte zu meinem Display sendet.

z.B. so

Code: Alles auswählen

string temp = dom.GetObject('BidCos-RF.OEQ0072229:1.TEMPERATURE').Value().ToString(1) # " °C";
string dc = dom.GetObject('DutyCycle').Value().ToString(0) # " %";
string hdruck = dom.GetObject('BidCos-RF.JPPRESS001:1.UNI_PRESSURE').Value().ToString(2) # " bar";

string displayCmdA = "JPDISEP000 /1 '@p00Außen@p65" # temp # "' /2 '@p00DutyCycle@p65" # dc # "' /3 '@p00Heizungsdruck@p65" # hdruck # "'";

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/epaper42.tcl " # displayCmdA);
Baue ich das so um?

Code: Alles auswählen

string temp = dom.GetObject('BidCos-RF.OEQ0072229:1.TEMPERATURE').Value().ToString(1) # " °C";
string dc = dom.GetObject('DutyCycle').Value().ToString(0) # " %";
string hdruck = dom.GetObject('BidCos-RF.JPPRESS001:1.UNI_PRESSURE').Value().ToString(2) # " bar";


string line1 = "/1 '@p00Außen@p65" # temp # "'";
string line2 = "/2 '@p00DutyCycle@p65" # dc # "'";
string line3 = "/3 '@p00Heizungsdruck@p65" # hdruck # "'";
damit ich das "große" Skript dann zum Beispiel alle 15 Minuten aufrufe?

Also dieses hier:

Code: Alles auswählen

! Um DutyRate zu sparen nur die Zeilen übertragen die sich geändert haben
  string lastLines = dom.GetObject("EPAPER.Lines").Value();
  string index;
  string linesDoNotUpdate = "";
  foreach (index, lastLines) {
      if (index.Substr(0, 2) == "/2") {
          if (index == line2) {
              linesDoNotUpdate = linesDoNotUpdate # "L02";
          }
      } elseif (index.Substr(0, 2) == "/3") {
          if (index == line3) {
              linesDoNotUpdate = linesDoNotUpdate # "L03";
          }
      } elseif (index.Substr(0, 2) == "/4") {
          if (index == line4) {
              linesDoNotUpdate = linesDoNotUpdate # "L04";
          }
      } elseif (index.Substr(0, 2) == "/5") {
          if (index == line5) {
              linesDoNotUpdate = linesDoNotUpdate # "L05";
          }
      } elseif (index.Substr(0, 2) == "/6") {
          if (index == line6) {
              linesDoNotUpdate = linesDoNotUpdate # "L06";
          }
          
          
          ..... usw.
          
          
oder kommt das alles in ein Skript welches ich dann alle 15 Minuten aufrufe? :(

Grüße
Manfred

PS:

Der Link
https://github.com/TomMajor/SmartHome/t ... ipt-helper

unter "HomeMatic-Skript: Nur die geänderten Zeilen an das Display senden (DutyCycle sparen)"

HMSteve
Beiträge: 537
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 95 Mal

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

Beitrag von HMSteve » 03.02.2020, 17:03

Habe genau damit gestern auch herum gespielt. Ich habe alles in ein Script gepackt (natuerlich alle lines definiert, die unten geprueft werden), sonst braucht es ja extra sysvars fuer die neuen Zeilen. Zum Entwickeln hilt aber, die Pruefung abzuschalten, z.B. durch Leeren des sysvar am Scriptanfang, sonst war zumindest ich jedes Mal leicht irritiert, wenn ich Fixtexte im Display angepasst hatte, das Script sie aber natuerlich nicht aktualisierte, da die Nr gleich blieb.
Teilweise hatte ich mit dem Script auch bei variablem Text das Verhalten, dass keine Aktualisierung erfolgte, das muss ich nochmal genauer anschauen.

Beowolf
Beiträge: 654
Registriert: 15.07.2006, 12:50
Wohnort: Greven
Hat sich bedankt: 13 Mal
Danksagung erhalten: 18 Mal

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

Beitrag von Beowolf » 03.02.2020, 18:53

Habe das jetzt so gemacht.

Code: Alles auswählen

string temp = dom.GetObject('BidCos-RF.OEQ0072229:1.TEMPERATURE').Value().ToString(1) # " °C";
string dc = dom.GetObject('DutyCycle').Value().ToString(0) # " %";
string hdruck = dom.GetObject('BidCos-RF.JPPRESS001:1.UNI_PRESSURE').Value().ToString(2) # " bar";

string line1 = "/1 '@p00Außen@p65" # temp # "'";
string line2 = "/2 '@p00DutyCycle@p65" # dc # "'";
string line3 = "/3 '@p00Heizungsdruck@p65" # hdruck # "'";

! Um DutyRate zu sparen nur die Zeilen übertragen die sich geändert haben
  string lastLines = dom.GetObject("EPAPER.Lines").Value();
  string index;
  string linesDoNotUpdate = "";
  foreach (index, lastLines) {
      if (index.Substr(0, 2) == "/1") {
          if (index == line1) {
              linesDoNotUpdate = linesDoNotUpdate # "L01";
          }
      } elseif (index.Substr(0, 2) == "/2") {
          if (index == line2) {
              linesDoNotUpdate = linesDoNotUpdate # "L02";
          }      
	    } elseif (index.Substr(0, 2) == "/3") {
          if (index == line3) {
              linesDoNotUpdate = linesDoNotUpdate # "L03";
          }
      }
  }
  
  ! 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 = "JPDISEP000";

  integer iChangedLinesA = 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 (iChangedLinesA > 0) {
      dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/epaper42.tcl " # displayCmdA);
  }
  
  
  ! Für nächsten Vergleich speichern, Tab Seperator für for_each loop benötigt
  string currentLines = line1 # "\t" line2 # "\t" # line3;
  dom.GetObject("EPAPER.Lines").State(currentLines);
Ist das so richtig? Oder müssen/können alle 10 Zeilen aufgeführt werden?

HMSteve
Beiträge: 537
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 95 Mal

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

Beitrag von HMSteve » 03.02.2020, 20:14

Sollte natuerlich genauso funktionieren, ich meinte oben nur, dass alle im hinteren Teil des Scriptes ausgewerteten scriptvars deklariert sein muessen. Ob das Esszett so klappt, hab ich noch nie probiert.

TomMajor
Beiträge: 1790
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

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

Beitrag von TomMajor » 03.02.2020, 23:04

Hi Manfred,

in diesem link
https://github.com/TomMajor/SmartHome/t ... cle-sparen

die ersten 4 Zeilen die mit

Code: Alles auswählen

! Temp/Feuchte außen
beginnen sind nur ein Beispiel, da sollte man seine gewünschten Displayinhalte in Strings line1..10 zusammenbauen.

der untere Teil der mit

Code: Alles auswählen

! Um DutyRate zu sparen nur die Zeilen übertragen die sich geändert haben
beginnt ist der generische Teil, solange die line1..10 Variablen existieren sollten da keine Änderungen notwendig sein.

Beide Teile sind bei mir zusammen in einem Skript der alle 10min läuft.

hope that helps
Viele Grüße,
Tom

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“