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

TomMajor
Beiträge: 1793
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 » 23.06.2019, 00:26

jp112sdl hat geschrieben:
22.06.2019, 20:21

Also nur ePaper.isWaiting() aufrufen, ohne jegliche Aktion und beim savePower<Idle<>> bleiben.
Das funktioniert gut, ein Burst und alle Telegramme hintereinander. Also am ePaper.isWaiting() call direkt kann es dann nicht liegen.

Debugausgaben eingebaut:

Code: Alles auswählen

  void isWaiting(bool w) {
    waiting = w;
    DPRINT("s"); DDECLN(waiting);
  }

  bool isWaiting() {
    DPRINT("g"); DDECLN(waiting);
    return waiting;
  }
loop code:

Code: Alles auswählen

#ifdef BATTERY_MODE
    if (hal.battery.critical()) {
      hal.activity.sleepForever(hal);
    }
    if (ePaper.isWaiting() == false) {
      hal.activity.savePower<Sleep<>>(hal);
    }
    else {
      hal.activity.savePower<Idle<>>(hal);
    }
    //hal.activity.savePower<Idle<>>(hal);
Resultat:
Problem wie oben, viele Bursts, Display macht kein update

Code: Alles auswählen

g0
g0
s1
-> 1A 0A B0 11 67118C AAAA01 80 0B 02 12 40 70 30 33 54 65 78 74 31 61 20 30 31  - 15656
<- 0E 0A 80 02 AAAA01 67118C 01 0B 00 00 77  - 15777
g1
..
ca. 1400 mal g1
..
s0
g0
s1
-> 1A 15 B0 11 67118C AAAA01 80 0B 02 0A 0A 0A 0A 0A 12 40 70 30 33 54 65 78 74  - 16578
<- 0E 15 80 02 AAAA01 67118C 01 0B 00 00 77  - 16703
g1
..
ca. 1400 mal g1
..
s0
g0
g0
g0

Kann mir heute Nacht keinen Reim drauf machen was falsch läuft. Die Logik erscheint ja relativ simple.
Viele Grüße,
Tom

Alveran
Beiträge: 250
Registriert: 07.08.2018, 20:17
Hat sich bedankt: 74 Mal
Danksagung erhalten: 25 Mal

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

Beitrag von Alveran » 23.06.2019, 09:30

Hallo

vielleicht kann mir jemand helfen(TomMajor) :wink:
Ich bekomme es nicht hin mit der Position in Prozent zu arbeiten.

Code: Alles auswählen

string tempinnen = dom.GetObject('HmIP-RF.000E5709A11D07:1.ACTUAL_TEMPERATURE').Value().ToString(0) # "°C";
string feuchteinnen = dom.GetObject('HmIP-RF.000E5709A11D07:1.HUMIDITY').Value().ToString(0) # "%";
string tempaussen = dom.GetObject('BidCos-RF.JPTH10I005:1.TEMPERATURE').Value().ToString(0) # "°C";
string feuchteaussen = dom.GetObject('BidCos-RF.JPTH10I005:1.HUMIDITY').Value().ToString(0) # "%";


string dc = dom.GetObject('Duty Cycle').Value().ToString(0) # "%";
string displayCmd = "JPDISEP002 /2 '@t01      "# tempinnen # "  @p78 " # feuchteinnen # "' /3 '@t02  "# tempaussen #"  @p78 "# feuchteaussen #"' /9  '"# dc #"'";
system.Exec("tclsh /usr/local/addons/epaper42.tcl " # displayCmd);
Er springt nicht auf P78 sondern schreibt es als Text auf das Display!!!

JP-HB-Devices-addon V2.7
Script Helper neueste Version
Neueste Version von Display Sketch https://github.com/jp112sdl/HB-Dis-EP-4 ... P-42BW.ino

Benutzeravatar
stan23
Beiträge: 2039
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 585 Mal
Danksagung erhalten: 336 Mal
Kontaktdaten:

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

Beitrag von stan23 » 23.06.2019, 10:49

TomMajor hat geschrieben:
23.06.2019, 00:26
Das funktioniert gut, ein Burst und alle Telegramme hintereinander. Also am ePaper.isWaiting() call direkt kann es dann nicht liegen.
Das wäre auch etwas merkwürdig, die Funktion gibt ja nur den Wert der Variable zurück.
TomMajor hat geschrieben:
23.06.2019, 00:26
Problem wie oben, viele Bursts, Display macht kein update

Code: Alles auswählen

g0
g0
s1
-> 1A 0A B0 11 67118C AAAA01 80 0B 02 12 40 70 30 33 54 65 78 74 31 61 20 30 31  - 15656
<- 0E 0A 80 02 AAAA01 67118C 01 0B 00 00 77  - 15777
g1
..
ca. 1400 mal g1
..
s0
g0
s1
-> 1A 15 B0 11 67118C AAAA01 80 0B 02 0A 0A 0A 0A 0A 12 40 70 30 33 54 65 78 74  - 16578
<- 0E 15 80 02 AAAA01 67118C 01 0B 00 00 77  - 16703
g1
..
ca. 1400 mal g1
..
s0
g0
g0
g0

Mich irritieren da die 1400 Schleifendurchläufe. Warum fällt er da immer aus dem savePower<Idle<>> raus? Ist das der Timer-Interrupt?

Könnte es sein dass die Funktion trigger nochmal in den Hintergrund geht (weil sie einen Timer startet)?
Das s0 kann ja eigentlich nur aus Zeile 251 kommen, aber im weiteren Verlauf sollte doch drawPaged ausgegeben werden.

Entweder du machst in trigger noch mehr Ausgaben, um zu sehen wie weit du dort kommst, oder du schiebst Zeile 251 ans Ende der Funktion.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

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

Beitrag von papa » 23.06.2019, 11:38

stan23 hat geschrieben:
23.06.2019, 10:49
TomMajor hat geschrieben:
23.06.2019, 00:26
Das funktioniert gut, ein Burst und alle Telegramme hintereinander. Also am ePaper.isWaiting() call direkt kann es dann nicht liegen.
Das wäre auch etwas merkwürdig, die Funktion gibt ja nur den Wert der Variable zurück.
TomMajor hat geschrieben:
23.06.2019, 00:26
Problem wie oben, viele Bursts, Display macht kein update

Code: Alles auswählen

g0
g0
s1
-> 1A 0A B0 11 67118C AAAA01 80 0B 02 12 40 70 30 33 54 65 78 74 31 61 20 30 31  - 15656
<- 0E 0A 80 02 AAAA01 67118C 01 0B 00 00 77  - 15777
g1
..
ca. 1400 mal g1
..
s0
g0
s1
-> 1A 15 B0 11 67118C AAAA01 80 0B 02 0A 0A 0A 0A 0A 12 40 70 30 33 54 65 78 74  - 16578
<- 0E 15 80 02 AAAA01 67118C 01 0B 00 00 77  - 16703
g1
..
ca. 1400 mal g1
..
s0
g0
g0
g0

Mich irritieren da die 1400 Schleifendurchläufe. Warum fällt er da immer aus dem savePower<Idle<>> raus? Ist das der Timer-Interrupt?
Nein - das sieht ganz normal aus. Nach jeder Nachricht bleibt die CPU für 500ms alive. Das sollte reichen, um bis 1400 zu zählen.
stan23 hat geschrieben:
23.06.2019, 10:49
Könnte es sein dass die Funktion trigger nochmal in den Hintergrund geht (weil sie einen Timer startet)?
Das s0 kann ja eigentlich nur aus Zeile 251 kommen, aber im weiteren Verlauf sollte doch drawPaged ausgegeben werden.

Entweder du machst in trigger noch mehr Ausgaben, um zu sehen wie weit du dort kommst, oder du schiebst Zeile 251 ans Ende der Funktion.
So wie ich das sehe, ist der Timeout, der zum Refresh des Displays gesetzt wird zu niedrig. Dadurch geht die CPU kurz vor dem Empfang der nächsten Nachricht in den Sleep.

Code: Alles auswählen

uint16_t rtime = this->getList0().displayRefreshWaitTime() * 100;
ePaper.setRefreshAlarm(rtime);
Einfach mal den DisplayRefreshWaitTime ordentlich erhöhen.
In Zeile 586 und Zeile 601 wird der Refresh übrigens fest auf 20ms gesetzt.
Anfragen zur AskSin++ werden nur im Forum beantwortet

TomMajor
Beiträge: 1793
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 » 23.06.2019, 11:47

stan23 hat geschrieben:
23.06.2019, 10:49

Könnte es sein dass die Funktion trigger nochmal in den Hintergrund geht (weil sie einen Timer startet)?
Das s0 kann ja eigentlich nur aus Zeile 251 kommen, aber im weiteren Verlauf sollte doch drawPaged ausgegeben werden.

Entweder du machst in trigger noch mehr Ausgaben, um zu sehen wie weit du dort kommst, oder du schiebst Zeile 251 ans Ende der Funktion.
Hi Marco,

isWaiting(false); ans Ende der Funktion trigger() zu verschieben hatte ich mir gestern nacht auch noch überlegt und getestet, leider kein Unterschied.
Dann noch isWaiting spaßeshalber als globale Variable, auch kein Unterschied.
Viele Grüße,
Tom

TomMajor
Beiträge: 1793
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 » 23.06.2019, 11:53

papa hat geschrieben:
23.06.2019, 11:38

So wie ich das sehe, ist der Timeout, der zum Refresh des Displays gesetzt wird zu niedrig. Dadurch geht die CPU kurz vor dem Empfang der nächsten Nachricht in den Sleep.

Code: Alles auswählen

uint16_t rtime = this->getList0().displayRefreshWaitTime() * 100;
ePaper.setRefreshAlarm(rtime);
Einfach mal den DisplayRefreshWaitTime ordentlich erhöhen.
In Zeile 586 und Zeile 601 wird der Refresh übrigens fest auf 20ms gesetzt.
Hi papa,

der DisplayRefreshWaitTime ist auf 5sec eingestellt, daran kann es m.E. nicht liegen.
Schau dir noch mal das Bild
viewtopic.php?f=76&t=48153&start=450#p514407
an.
Die Burstserie kommt da relativ schnell, Zeitraum viel kleiner als 5sec, d.h. das Display antwortet lange Zeit nicht mehr, und nur weil im loop() code die Unterscheidung in Sleep/Idle drin ist.

Die Zeilen mit den 20ms sind m.E. in diesem Fall nicht relevant (Config Änderung und irgendein init glaub ich).
Viele Grüße,
Tom

TomMajor
Beiträge: 1793
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 » 23.06.2019, 11:56

Alveran hat geschrieben:
23.06.2019, 09:30
Hallo

vielleicht kann mir jemand helfen(TomMajor) :wink:
Ich bekomme es nicht hin mit der Position in Prozent zu arbeiten.
https://github.com/TomMajor/SmartHome/b ... 42.tcl#L22

Code: Alles auswählen

# * Ab Version 0.50 kann man für Texte die x-Position angeben um z.B. eine Darstellung in Spalten zu erreichen.
#     Dies geht mit @pxx, xx gibt hier die Anfangsposition des Textes in % der Displaybreite an.
#     Das Feature x-Position ist an 2 Bedingungen geknüpft:
#     1) Die Textzeile muss in den Geräteeinstellungen auf 'linksbündig' eingestellt sein.
#     2) Der Text muss mit einem solchen x-Positionscode @pxx anfangen um den Textanfang eindeutig zu bestimmen.
#     Falls der Text x-Positionscodes enthält wird kein Icon angezeigt.
Viele Grüße,
Tom

jp112sdl
Beiträge: 12115
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

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

Beitrag von jp112sdl » 23.06.2019, 12:20

Die fixen 20ms sind nur als kleines Delay bei
a) manuellem Refresh durch Tastendruck (Configbutton longpress),
b) beim Booten oder
c) nach dem Ablernen (wenn kein Master mehr vorhanden ist)
Zuletzt geändert von jp112sdl am 23.06.2019, 14:10, insgesamt 1-mal geändert.

VG,
Jérôme ☕️

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

Alveran
Beiträge: 250
Registriert: 07.08.2018, 20:17
Hat sich bedankt: 74 Mal
Danksagung erhalten: 25 Mal

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

Beitrag von Alveran » 23.06.2019, 14:08

TomMajor hat geschrieben:
23.06.2019, 11:56
Alveran hat geschrieben:
23.06.2019, 09:30
Hallo

vielleicht kann mir jemand helfen(TomMajor) :wink:
Ich bekomme es nicht hin mit der Position in Prozent zu arbeiten.
https://github.com/TomMajor/SmartHome/b ... 42.tcl#L22

Code: Alles auswählen

# * Ab Version 0.50 kann man für Texte die x-Position angeben um z.B. eine Darstellung in Spalten zu erreichen.
#     Dies geht mit @pxx, xx gibt hier die Anfangsposition des Textes in % der Displaybreite an.
#     Das Feature x-Position ist an 2 Bedingungen geknüpft:
#     1) Die Textzeile muss in den Geräteeinstellungen auf 'linksbündig' eingestellt sein.
#     2) Der Text muss mit einem solchen x-Positionscode @pxx anfangen um den Textanfang eindeutig zu bestimmen.
#     Falls der Text x-Positionscodes enthält wird kein Icon angezeigt.
Linksbündig bitte FETT makieren.

Danke :D

TomMajor
Beiträge: 1793
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 » 23.06.2019, 17:37

Alveran hat geschrieben:
23.06.2019, 14:08

Linksbündig bitte FETT makieren.

Danke :D
ja, kann ich noch auf github fett markieren, im Skript selber gibt's keine Formatierung :wink:
Viele Grüße,
Tom

Antworten

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