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: 3643
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 58 Mal
Danksagung erhalten: 116 Mal
Kontaktdaten:

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

Beitrag von jp112sdl » 23.10.2019, 21:50

Tja da fehlte wohl beim ersten Mal was (ein oder mehrere Frames) im Gesamt-Telegramm.
Kann man so jetzt nix weiter herausfinden.

Was jedoch komisch erscheint, ist die Zentralenadresse mit 00FFFF.
Am besten noch mal "drüberlernen" das Display. (Anlernen ohne Gerät vorher aus der CCU zu löschen)

VG,
Jérôme

michaelapp
Beiträge: 189
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

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

Beitrag von michaelapp » 23.10.2019, 21:56

Du meinst an der CCU3 noch mal anlernen?

Wie kann ich es neu anlernen ohne es vorher zu löschen? -> (Anlernen ohne Gerät vorher aus der CCU zu löschen)

Sollte ich vielleicht auch mal das neueste INO drauf schieben?

jp112sdl
Beiträge: 3643
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 58 Mal
Danksagung erhalten: 116 Mal
Kontaktdaten:

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

Beitrag von jp112sdl » 23.10.2019, 22:03

Ja, auf "Gerät anlernen" in der CCU, dann Config Taster am Display drücken.
Also dasselbe wie beim normalen Anlernen
michaelapp hat geschrieben:
23.10.2019, 21:56
Sollte ich vielleicht auch mal das neueste INO drauf schieben?
Ich weiß nicht welchen Stand du hast... seit Juli ist da nix mehr passiert bis auf eine Änderung fürs Colordisplay

VG,
Jérôme

TomMajor
Beiträge: 596
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 13 Mal
Danksagung erhalten: 49 Mal
Kontaktdaten:

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

Beitrag von TomMajor » 23.10.2019, 23:48

michaelapp hat geschrieben:
23.10.2019, 21:42

hat die LED kurz geleuchtet und im Seriellen Monitor kam folgendes:

Code: Alles auswählen

21:19:55.574 -> wait:1
21:19:55.574 -> -> 1A 52 B0 11 00FFFF F34300 80 0B 02 12 85 2C 20 32 33 2E 31 30 2E 32 30 31 39  - 43677
21:19:55.714 -> <- 0E 52 80 02 F34300 00FFFF 01 0B 00 00 48  - 43794
21:20:00.590 -> wait:0
Die Zeile 5 hat danach nichts angezeigt. Nach dem ich das Programm noch mal gestartet habe, hat er aktualisiert und dann kam im Seriellen Monitor folgendes und die Zeit 5 war beschrieben:

Code: Alles auswählen

21:38:29.262 -> wait:1
21:38:29.262 -> -> 1A 1B B0 11 00FFFF F34300 80 0B 02 0A 0A 0A 0A 12 89 20 30 0A 0A 0A 0A 0A 0A  - 71061
21:38:29.362 -> <- 0E 1B 80 02 F34300 00FFFF 01 0B 00 00 48  - 71180
21:38:29.563 -> wait:1
21:38:29.563 -> -> 0C 24 A0 11 00FFFF F34300 80 0B 03  - 71215
21:38:29.563 -> RECV: 02 0A 0A 0A 0A 12 89 20 30 0A 0A 0A 0A 0A 0A 03 
...
Beim ersten Log sieht das Telegramm falsch aus das von der Zentrale kam, es fehlt die 02/03 Kombo mit 10x 0A drin.
Im 2. Log sieht man wie es richtig aussehen muss.
Viele Grüße,
Tom

jp112sdl
Beiträge: 3643
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 58 Mal
Danksagung erhalten: 116 Mal
Kontaktdaten:

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

Beitrag von jp112sdl » 24.10.2019, 06:26

TomMajor hat geschrieben:
23.10.2019, 23:48
Beim ersten Log sieht das Telegramm falsch aus das von der Zentrale kam, es fehlt die 02/03 Kombo mit 10x 0A drin.

Für mich sieht es plausibel aus. Es wurde nach dem Frame nichts mehr empfangen.
02 - Start, anschließend kommt ein Fixtext, dann ", 23.10.20.19" und das erste (und weitere) 0x0A wäre dann in Folge-Frame(s).

VG,
Jérôme

TomMajor
Beiträge: 596
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 13 Mal
Danksagung erhalten: 49 Mal
Kontaktdaten:

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

Beitrag von TomMajor » 24.10.2019, 11:59

Stimmt, das könnte es auch sein, die weiteren Telegramme wurden einfach nicht empfangen.
Ich war davon ausgegangen das in beiden logs der gleiche Inhalt versucht wurde zu übermitteln was nicht der Fall ist.
Viele Grüße,
Tom

TomMajor
Beiträge: 596
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 13 Mal
Danksagung erhalten: 49 Mal
Kontaktdaten:

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

Beitrag von TomMajor » 24.10.2019, 20:11

michaelapp hat geschrieben:
06.10.2019, 16:25
Hallo TomMajor,

ich würde mir das Skript gerne mal anschauen :-)

Ich habe jetzt die Lösung so gebaut das ich Temperatur und Luftfeuchtigkeit in eine Variable schreibe und damit vergleiche.

Gruß
Michael
Ok, ich habe mal den entsprechenden Teil des Skripts dokumentiert und auf github abgelegt.
Vielleicht hilft es einigen Benutzern des 4,2 ePapers Projekts.

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

- in meinem zyklischen Skript für das Display-Update berechne ich
1) alle Zeileninhalte die ich aktuell haben will und danach
2) gibt es einen Teil der diese mit den aktuellen Zeileninhalt auf dem Display abgleicht und nur die Zeilen sendet die sich geändert haben.
Der aktuelle Displayinhalt wird dabei in der Systemvariablen *EPAPER.Lines* gespeichert.

- die aktuell erzeugten Strings für die einzelnen Zeilen 2..10 müssen in den Skriptvariablen line2..line10 aufgebaut werden, z.B. für Zeile 3:

Code: Alles auswählen

  ! Temp/Feuchte außen
  string tempOut = dom.GetObject('BidCos-RF.UNISENS010:1.TEMPERATURE').Value().ToString(1) # " °C";
  string humOut = dom.GetObject('BidCos-RF.UNISENS010:1.HUMIDITY').Value().ToString(0) # " %";
  string line3 = "/3 '@[email protected]@p45" # tempOut # "@p78" # humOut # "'";
- Zeile 1 wird bei mir nur um Mitternacht mit dem Datum geschrieben und ist deshalb hier in der Logik nicht enthalten.

- Danach sorgt der folgende generische Teil im Skript dafür dass nur die geänderten Zeilen gesendet werden.

- Außerdem wird darin berücksichtigt dass aufgrund von Beschränkungen beim Senden in der Zentrale nicht alles 10 Zeilen in einem Funktelegramm untergebracht werden können falls sich alle Zeilen geändert haben sollten, deswegen wird immer in zwei Funktelegramme unterteilt.

- Durch Beschränkungen im Sprachumfang von HomeMatic-Skript ist der Code etwas länger als man sonst z.B. in C++ oder Python dafür brauchen würde. :roll:

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) {
  ...
Alle weiteren Details hier:
https://github.com/TomMajor/SmartHome/t ... cle-sparen
Viele Grüße,
Tom

michaelapp
Beiträge: 189
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

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

Beitrag von michaelapp » 25.10.2019, 08:30

Hallo Tom,

hab es mir gerade mal auf Github angeschaut. Ich hab aber jetzt noch ein zwei Fragen :-)

Du hast Dir also für jede Zeile eine Systemvariable line2, line3 usw angelegt und diese befüllst Du z.b. bei Zeile 3 mit diesem Programm:

Code: Alles auswählen

! Temp/Feuchte außen
  string tempOut = dom.GetObject('BidCos-RF.UNISENS010:1.TEMPERATURE').Value().ToString(1) # " °C";
  string humOut = dom.GetObject('BidCos-RF.UNISENS010:1.HUMIDITY').Value().ToString(0) # " %";
  string line3 = "/3 '@[email protected]@p45" # tempOut # "@p78" # humOut # "'";
oder befüllst Du die Variablen im eigentlichen Programm:

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) {
In welchen Abständen lässt Du das / die Programme laufen?

Gruß
Michael

TomMajor
Beiträge: 596
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 13 Mal
Danksagung erhalten: 49 Mal
Kontaktdaten:

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

Beitrag von TomMajor » 25.10.2019, 12:01

ich lasse bei mir einen Skript aller 10min laufen der diverse Aufgaben hat.
Eine davon ist das ePaper Display update, das läuft bei mir aller 30 min:

Code: Alles auswählen

! -------------------------------------
! CCU.Update10Min.hms
!
integer hour = system.Date("%H").ToInteger();
integer minute = system.Date("%M").ToInteger();
...
...
! -------------------------------------
! update ePaper Display aller 30min
if ((minute == 0) || (minute == 30)) {
string line2 = ..
string line3 = ..
usw.
In dieser if Bed. befülle ich also zuerst alle strings line2..line10.
line2..line10 sind keine Systemvariablen sondern nur temporär im Skript.
Die einzige Systemvariable ist EPAPER.Lines.

Und direkt nach line10 kommt der gestern dargestellte generische Teil, für das Senden der Zeile nur bei Änderungen:

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) {
    ...
    ...
Viele Grüße,
Tom

TomMajor
Beiträge: 596
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 13 Mal
Danksagung erhalten: 49 Mal
Kontaktdaten:

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

Beitrag von TomMajor » 25.10.2019, 19:45

Alveran hat geschrieben:
28.09.2019, 07:08
Hallo Leute,

Ich habe auch so einen "komischen" von Reichelt geliefert bekommen. Da meine Kentisse in dem Thema begrenzt sind würde ich ihn euch zur Entwicklung zur Verfügung stellen. Ich würde ihn auf eine Platine für das Display hier verlöten. Wer von euch hätte Interesse Jerome, stan23, TomMajor oder ein anderer Experte in dem Thema?
Habe mittlerweile den U-TW ATMEGA 1284P (Reichelt) von Alveran bekommen und getestet.
Alles ist gut, Signatur, Fuses, Flashen, überhaupt keine Auffälligkeiten zu finden.
Alles bestens aus meiner Sicht :)

Code: Alles auswählen

Detected 1e9705 = ATmega1284P
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude.exe: Device signature = 0x1e9705 (probably m1284p)
avrdude.exe: reading input file "0xE2"
avrdude.exe: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude.exe: 1 bytes of lfuse written
avrdude.exe: verifying lfuse memory against 0xE2:
avrdude.exe: load data lfuse data from input file 0xE2:

avrdude.exe: input file 0xE2 contains 1 bytes
avrdude.exe: reading on-chip lfuse data:

Reading | ################################################## | 100% -0.00s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of lfuse verified
avrdude.exe: reading input file "0xD4"
avrdude.exe: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude.exe: 1 bytes of hfuse written
avrdude.exe: verifying hfuse memory against 0xD4:
avrdude.exe: load data hfuse data from input file 0xD4:
avrdude.exe: input file 0xD4 contains 1 bytes
avrdude.exe: reading on-chip hfuse data:

Reading | ################################################## | 100% -0.00s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of hfuse verified
avrdude.exe: reading input file "0xFF"
avrdude.exe: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude.exe: 1 bytes of efuse written
avrdude.exe: verifying efuse memory against 0xFF:
avrdude.exe: load data efuse data from input file 0xFF:
avrdude.exe: input file 0xFF contains 1 bytes
avrdude.exe: reading on-chip efuse data:

Reading | ################################################## | 100% 0.00s

avrdude.exe: verifying ...

avrdude.exe: 1 bytes of efuse verified

avrdude.exe done.  Thank you.

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude.exe: Device signature = 0x1e9705 (probably m1284p)
avrdude.exe: verifying flash memory against C:\Temp\optiboot_flash_atmega1284p_UART0_57600_8000000L_eeprom_support.hex:
avrdude.exe: load data flash data from input file C:\Temp\optiboot_flash_atmega1284p_UART0_57600_8000000L_eeprom_support.hex:
avrdude.exe: input file C:\Temp\optiboot_flash_atmega1284p_UART0_57600_8000000L_eeprom_support.hex auto detected as Intel Hex
avrdude.exe: input file C:\Temp\optiboot_flash_atmega1284p_UART0_57600_8000000L_eeprom_support.hex contains 131072 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 0.00s

avrdude.exe: verifying ...
avrdude.exe: 131072 bytes of flash verified

avrdude.exe done.  Thank you.
Fuse settings:
http://www.engbedded.com/fusecalc?P=ATm ... ply+values
Dateianhänge
IMG_3677.JPG
ScreenShot 13 AVRDUDESS 2.6.png
Viele Grüße,
Tom

Antworten

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