Autor Thema: Neues Modul: ESPEInk für e-Paper Displays (Name geändert, war ESP8266EInk)  (Gelesen 34323 mal)

Offline hajo23

  • New Member
  • *
  • Beiträge: 22
Ich lese schon länger mit und habe mir nun auch ein 7,5" HD und ein EPS8266 eingerichtet. Ich verwende den Sketch aus dem git (https://github.com/Yattien). Mit dem aktuellen ESP8266er Boardpackage lässt sich der Sketch nicht kompilieren. Ich habe deshalb die Version 2.7.4 installiert. Ohne mqtt und ohne sleep läuft mein ESP zusammen mit FHEM.

Wenn ich sleep einstelle, dann wacht der ESP nicht mehr auf. Die rote LED leuchtet.
14:41:17.746 ->  Using configuration:
14:41:17.746 ->   MQTT Server: :1883, Client: ESPEInk_8caab56cee2d
14:41:17.746 ->   MQTT UpdateStatusTopic: stat/display/needUpdate
14:41:17.746 ->   MQTT CommandTopic: cmd/display/upload
14:41:17.746 ->   sleep time: 120
14:41:17.746 ->   firmware base URL:
14:41:17.746 -> Setup complete.
14:41:17.746 -> Webserver started, waiting 10s for data
14:41:27.766 ->
14:41:27.766 -> Going to sleep for 120 seconds.
14:41:27.766 ->
14:43:24.322 -> rl
Der ESP wird mit 3,3V direkt versorgt, deshalb schließe ich die Stromversorgung aus.

Wenn ich mqtt einstelle, verbindet sich der ESP mit Mosquitto und wirft sofort eine Exception. Laut Logfile ist keine Verbindung erkannt worden.
17:03:12.518 ->
17:03:12.518 ->  ets Jan  8 2013,rst cause:2, boot mode:(3,6)
17:03:12.518 ->
17:03:12.518 -> load 0x4010f000, len 3584, room 16
17:03:12.518 -> tail 0
17:03:12.518 -> chksum 0xb0
17:03:12.518 -> csum 0xb0
17:03:12.518 -> v2843a5ac
17:03:12.518 -> ~ld
17:03:12.585 ->
17:03:12.585 -> ESPEInk_ESP8266 v18, reset reason='Software/System restart'...
17:03:12.585 -> Entering setup...
17:03:12.651 ->  Reading config file...
17:03:12.651 ->  Config file read.
17:03:12.651 ->  Connecting to WiFi...
17:03:14.641 ->  Connected to WiFi.
17:03:14.641 ->  Using configuration:
17:03:14.641 ->   MQTT Server: 192.168.2.7:1883, Client: ESPEInk_8caab56cee2d
17:03:14.641 ->   MQTT UpdateStatusTopic: stat/display/needUpdate
17:03:14.641 ->   MQTT CommandTopic: cmd/display/upload
17:03:14.641 ->   sleep time: 0
17:03:14.641 ->   firmware base URL:
17:03:14.641 -> Setup complete.
17:03:14.641 -> Connecting to MQTT...
17:03:14.641 ->
17:03:14.641 -> User exception (panic/abort/assert)
17:03:14.641 -> --------------- CUT HERE FOR EXCEPTION DECODER ---------------
17:03:14.641 ->
17:03:14.641 -> Abort called
17:03:14.641 ->
17:03:14.641 -> >>>stack>>>
17:03:14.641 ->
17:03:14.641 -> ctx: cont
17:03:14.641 -> sp: 3ffffe00 end: 3fffffc0 offset: 0000
17:03:14.675 -> 3ffffe00:  3fff4688 00000000 00000000 3fff4688 
17:03:14.675 -> 3ffffe10:  000000fe 00000000 00000000 00000000 
17:03:14.675 -> 3ffffe20:  00000000 00000000 00000000 3fff47a0 
17:03:14.675 -> 3ffffe30:  00000000 00000000 401002be 00000000 
17:03:14.675 -> 3ffffe40:  3fff39d0 3fff81dc 00004145 402199c2 
17:03:14.675 -> 3ffffe50:  3fff39d0 3fff81dc 00000020 402199d4 
17:03:14.675 -> 3ffffe60:  007a1200 865bb1d3 00004145 4022be6d 
17:03:14.675 -> 3ffffe70:  00000000 00000000 3fff3dcc 4022be08 
17:03:14.675 -> 3ffffe80:  3fff33d0 3fff3dcc 3fff3dcc 40211922 
17:03:14.708 -> 3ffffe90:  0000000e 3fff4218 00000001 40219458 
17:03:14.708 -> 3ffffea0:  00000000 00000000 00000000 40219aba 
17:03:14.708 -> 3ffffeb0:  00000000 3fff3dcc 3fff7bdc 402105a8 
17:03:14.708 -> 3ffffec0:  3fff3fc8 00000d50 3fffff00 3fff3b84 
17:03:14.708 -> 3ffffed0:  0000075b 3fff3dcc 3fff39d0 3fff3b84 
17:03:14.708 -> 3ffffee0:  0000075b 3fff3dcc 3fff39d0 40211b85 
17:03:14.708 -> 3ffffef0:  40223880 0702a8c0 40223880 0702a8c0 
17:03:14.741 -> 3fffff00:  3fff3a04 3fff3d80 00000000 40215950 
17:03:14.741 -> 3fffff10:  40216b68 3fff4078 3ffece76 40216b74 
17:03:14.741 -> 3fffff20:  3fff3a84 00000000 00000000 00000000 
17:03:14.741 -> 3fffff30:  3fff4078 3fff3d80 3fff3dcc 40210d12 
17:03:14.741 -> 3fffff40:  3fff4078 00000000 3fff3d80 3fff3d65 
17:03:14.741 -> 3fffff50:  3fff4078 3fff3d80 00000000 40203b88 
17:03:14.741 -> 3fffff60:  00000000 00000000 00000000 40222dac 
17:03:14.741 -> 3fffff70:  3fff3d80 00000000 3fff3d64 40207ead 
17:03:14.774 -> 3fffff80:  feefeffe 80efeffe 3fff6d00 0017001f 
17:03:14.774 -> 3fffff90:  80efeffe feefeffe feefeffe 3fff41b8 
17:03:14.774 -> 3fffffa0:  3fffdad0 00000000 3fff4178 40219570 
17:03:14.774 -> 3fffffb0:  feefeffe feefeffe 3ffe8b2c 40100d39 
17:03:14.774 -> <<<stack<<<
17:03:14.774 ->
17:03:14.774 -> --------------- CUT HERE FOR EXCEPTION DECODER ---------------
Die mqtt-Kommunikation funktioniert, wenn ich den ESP-Part manuell übernehme. Soll heißen, ich bekomme "stat/display/needUpdate true" und antworte mit cmd/display/upload. Dann startet der Upload.

Beim Kompilieren des Sketches sehe ich keine Fehler. Hat jemand eine Idee, was da schief gelaufen sein könnte?


Beim FHEM-Modul bin ich auch auf einen Fehler gestoßen. Ich nutze AddSymbol um ein rotes Rechteck zu erzeugen. Der Code erwartet offenbar Parameter für solide oder gestrichelte Linien usw. in $s1 und $s2. Die beiden Variablen sind aber nicht initialisiert. Das führt zu
2021.06.08 14:13:46 1: PERL WARNING: Use of uninitialized value $s2 in string eq at ./FHEM/89_ESPEInk.pm line 1402.
2021.06.08 14:13:46 1: PERL WARNING: Use of uninitialized value $s1 in string eq at ./FHEM/89_ESPEInk.pm line 1403.
2021.06.08 14:13:46 1: PERL WARNING: Use of uninitialized value $s2 in string eq at ./FHEM/89_ESPEInk.pm line 1403.
2021.06.08 14:13:46 1: PERL WARNING: Use of uninitialized value $s1 in string eq at ./FHEM/89_ESPEInk.pm line 1404.
Das Rechteck wird aber trotzdem erzeugt.

Für das Modul möchte ich noch vorschlagen timeout für ESPEInk_Convert nit einem Attribut festzulegen.

Offline m.zielinski

  • Jr. Member
  • **
  • Beiträge: 74
Zum Problem mit dem deepsleep und der roten LED - hast du die kabelbrücke wie im Sourcecode beschrieben gesetzt?

Offline Jendaw

  • Jr. Member
  • **
  • Beiträge: 98
    • Alternative ESPEInk-Firmware
Ich lese schon länger mit und habe mir nun auch ein 7,5" HD und ein EPS8266 eingerichtet. Ich verwende den Sketch aus dem git (https://github.com/Yattien). Mit dem aktuellen ESP8266er Boardpackage lässt sich der Sketch nicht kompilieren. Ich habe deshalb die Version 2.7.4 installiert. Ohne mqtt und ohne sleep läuft mein ESP zusammen mit FHEM.
Das werde ich mir die Tage noch mal ansehen. Ich habe mir auch ein zweites 7.5" besorgt und werde meine Buildumgebung aktualisieren.
Welche Version kompilierst du, den Head (neueste Version) oder einen Tag? Welches ESP8266-Board nutzt du, das Originale von waveshare?

edit: Du nutzt den Head, konnte es nachstellen. In der Version 3.0.0 des Boardpkg gibt es einige Änderungen, u.a. sind auch APIs verschwunden. Das betrifft aktuell:
* die OTA-Update-Funktion, Fix ist im git
* die Überprüfung der TLS-Verbindung zum MQTT-Server, könnte man auskommentieren, bis ich eine Lösung gefunden habe: L428-436
diff --git a/ESPEInk_ESP8266.ino b/ESPEInk_ESP8266.ino
index 647bb57..da674f7 100644
--- a/ESPEInk_ESP8266.ino
+++ b/ESPEInk_ESP8266.ino
@@ -425,16 +425,6 @@ void reconnect() {
 
 // -----------------------------------------------------------------------------------------------------
 void verifyFingerprint() {
-       if (ctx.mqttFingerprint && strlen(ctx.mqttFingerprint) > 0) {
-               if(!espClient.verify(ctx.mqttFingerprint, ctx.mqttServer)) {
-                       Serial.printf("MQTT fingerprint '%s' does not match, rebooting...\r\n", ctx.mqttFingerprint);
-                       Serial.flush();
-                       delay(200);
-                       ESP.restart();
-               } else {
-                       Serial.println("MQTT fingerprint does match");
-               }
-       }
 }
 
 // -----------------------------------------------------------------------------------------------------
Damit lässt es sich mit den aktuellen Versionen wieder übersetzen.


VG
« Letzte Änderung: 09 Juni 2021, 23:06:51 von Jendaw »
FHEM/RaspberryMatic @RaspPi + nanoCUL 433 + Signalduino 433 + JeeLink-Clone + CC2531 + Slaesh-Stick
IT Funkschalter, HE-Sensoren, TX 29 DTH-IT, HMIP, HM-Wired, zigbee2mqtt
ESPEInk + waveshare 7.5inch_e-Paper_HAT_(B) + ESP8266 (Firmware von https://github.com/Yattien)

Offline hajo23

  • New Member
  • *
  • Beiträge: 22
Zum Problem mit dem deepsleep und der roten LED - hast du die kabelbrücke wie im Sourcecode beschrieben gesetzt?

Du meinst das hier?
if the ESP does not wakeup from deepsleep a 220 resistor between SD0(MISO) and 3.3v might help
Oh je, danke für die Erinnerung. Ich war mir mit der Interpretation der Beschaltung (PIN-Belegung/Darstellung im Code) nicht ganz sicher, hatte das zurückgestellt und dann glatt vergessen.  Ich habe das originale Waveshare ESP verwendet.

Laut Plan im Code soll GPIO 16 (D0) mit RST gebrückt werden. An anderer Stelle wird auch zu einer Beschaltung von GPIO 16 und RST über R470 und ein RC-Glied (12K/100nf-1µF) geraten. Lt. Waveshare ist MISO/SD0 = PIN 10 beim ESP 12-E, ich habe aber einen 12-F bekommen. Ist das Layout beim 12-E und 12-F gleich? Ich nehme an, dass es gleich ist. Hast Du MISO über R220 an 3V3 geschaltet und hast Du D0 und Reset "nur" gebrückt?

Das werde ich mir die Tage noch mal ansehen. Ich habe mir auch ein zweites 7.5" besorgt und werde meine Buildumgebung aktualisieren.
Welche Version kompilierst du, den Head (neueste Version) oder einen Tag? Welches ESP8266-Board nutzt du, das Originale von waveshare?

edit: Du nutzt den Head, konnte es nachstellen. In der Version 3.0.0 des Boardpkg gibt es einige Änderungen, u.a. sind auch APIs verschwunden. Das betrifft aktuell:
* die OTA-Update-Funktion, Fix ist im git
* die Überprüfung der TLS-Verbindung zum MQTT-Server, könnte man auskommentieren, bis ich eine Lösung gefunden habe: L428-436
diff --git a/ESPEInk_ESP8266.ino b/ESPEInk_ESP8266.ino
index 647bb57..da674f7 100644
--- a/ESPEInk_ESP8266.ino
+++ b/ESPEInk_ESP8266.ino
@@ -425,16 +425,6 @@ void reconnect() {
 
 // -----------------------------------------------------------------------------------------------------
 void verifyFingerprint() {
-       if (ctx.mqttFingerprint && strlen(ctx.mqttFingerprint) > 0) {
-               if(!espClient.verify(ctx.mqttFingerprint, ctx.mqttServer)) {
-                       Serial.printf("MQTT fingerprint '%s' does not match, rebooting...\r\n", ctx.mqttFingerprint);
-                       Serial.flush();
-                       delay(200);
-                       ESP.restart();
-               } else {
-                       Serial.println("MQTT fingerprint does match");
-               }
-       }
 }
 
 // -----------------------------------------------------------------------------------------------------
Damit lässt es sich mit den aktuellen Versionen wieder übersetzen.


VG

Wow, das ging echt schnell. Sobald ich die Beschaltung geklärt habe, teste ich. Vielen Dank!

VG

Offline Jendaw

  • Jr. Member
  • **
  • Beiträge: 98
    • Alternative ESPEInk-Firmware
Du meinst das hier?
if the ESP does not wakeup from deepsleep a 220 resistor between SD0(MISO) and 3.3v might help
[...]

Laut Plan im Code soll GPIO 16 (D0) mit RST gebrückt werden. An anderer Stelle wird auch zu einer Beschaltung von GPIO 16 und RST über R470 und ein RC-Glied (12K/100nf-1µF) geraten. Lt. Waveshare ist MISO/SD0 = PIN 10 beim ESP 12-E, ich habe aber einen 12-F bekommen. Ist das Layout beim 12-E und 12-F gleich? Ich nehme an, dass es gleich ist. Hast Du MISO über R220 an 3V3 geschaltet und hast Du D0 und Reset "nur" gebrückt?
Gemeint ist die Brücke zwischen GPIO16/D0 und RST.
Der ESP12-F ist der Nachfolger vom 12-E und hat nur eine geänderte Antenne. Der Rest ist gleich.

VG
FHEM/RaspberryMatic @RaspPi + nanoCUL 433 + Signalduino 433 + JeeLink-Clone + CC2531 + Slaesh-Stick
IT Funkschalter, HE-Sensoren, TX 29 DTH-IT, HMIP, HM-Wired, zigbee2mqtt
ESPEInk + waveshare 7.5inch_e-Paper_HAT_(B) + ESP8266 (Firmware von https://github.com/Yattien)

Offline hajo23

  • New Member
  • *
  • Beiträge: 22
Gemeint ist die Brücke zwischen GPIO16/D0 und RST.
Der ESP12-F ist der Nachfolger vom 12-E und hat nur eine geänderte Antenne. Der Rest ist gleich.

VG

Beim Herumspielen mit dem Pullup habe ich festgestellt, dass meine Kabelbrücke einen Wackel hat. Andere Kabelbrücke und schon läuft es mit dem Deepsleep.  :)

Ich habe den Verify-Teil auskommentiert, aber der Compiler beschwert sich noch:
Arduino: 1.8.15 (Linux), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Sketch + WiFi Settings, 115200"











In function 'void getUpdate()',
    inlined from 'void getUpdate()' at /home/adm1h/Arduino/ESPEInk_ESP8266/ESPEInk_ESP8266.ino:211:6:
ESPEInk_ESP8266:224:18: error: call to 'HTTPClient::begin' declared with attribute error: obsolete API, use ::begin(WiFiClient, url)
  224 |  httpClient.begin(firmwareVersionUrl);
      |  ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
exit status 1
call to 'HTTPClient::begin' declared with attribute error: obsolete API, use ::begin(WiFiClient, url)

Offline Jendaw

  • Jr. Member
  • **
  • Beiträge: 98
    • Alternative ESPEInk-Firmware
Ich habe den Verify-Teil auskommentiert, aber der Compiler beschwert sich noch:
Arduino: 1.8.15 (Linux), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Sketch + WiFi Settings, 115200"

In function 'void getUpdate()',
    inlined from 'void getUpdate()' at /home/adm1h/Arduino/ESPEInk_ESP8266/ESPEInk_ESP8266.ino:211:6:
ESPEInk_ESP8266:224:18: error: call to 'HTTPClient::begin' declared with attribute error: obsolete API, use ::begin(WiFiClient, url)
  224 |  httpClient.begin(firmwareVersionUrl);
      |  ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
exit status 1
call to 'HTTPClient::begin' declared with attribute error: obsolete API, use ::begin(WiFiClient, url)
Sorry, hatte vergessen, die letzte Änderung auch zu pushen. Ist jetzt im Git, mach mal bitte noch mal ein "git pull" oder lade den aktuellen Stand herunter.
(Zeile 224 muss "httpClient.begin(espClient, firmwareVersionUrl);" lauten.)
FHEM/RaspberryMatic @RaspPi + nanoCUL 433 + Signalduino 433 + JeeLink-Clone + CC2531 + Slaesh-Stick
IT Funkschalter, HE-Sensoren, TX 29 DTH-IT, HMIP, HM-Wired, zigbee2mqtt
ESPEInk + waveshare 7.5inch_e-Paper_HAT_(B) + ESP8266 (Firmware von https://github.com/Yattien)

Offline hajo23

  • New Member
  • *
  • Beiträge: 22
Sorry, hatte vergessen, die letzte Änderung auch zu pushen. Ist jetzt im Git, mach mal bitte noch mal ein "git pull" oder lade den aktuellen Stand herunter.
(Zeile 224 muss "httpClient.begin(espClient, firmwareVersionUrl);" lauten.)

Das läuft.

Nun habe ich (nur) das mqtt Problem. Mit dem aktuellen Sketch steht jetzt im Log:
1623320567: New connection from 192.168.2.171 on port 1883.
1623320568: Socket error on client <unknown>, disconnecting.

Die IP-Adresse ist vom ESP. Muss ich beim mqtt-Server noch etwas konfigurieren?

Offline Jendaw

  • Jr. Member
  • **
  • Beiträge: 98
    • Alternative ESPEInk-Firmware
Das läuft.

Nun habe ich (nur) das mqtt Problem. Mit dem aktuellen Sketch steht jetzt im Log:
1623320567: New connection from 192.168.2.171 on port 1883.
1623320568: Socket error on client <unknown>, disconnecting.

Die IP-Adresse ist vom ESP. Muss ich beim mqtt-Server noch etwas konfigurieren?
Am Server muss nichts mehr konfiguriert werden. Ich schätze, dass beim connect() ein Fehler steckt, muss ich mir näher anschauen und melde mich dazu noch mal. Bis dahin könntest du die letzte stable nutzen - das v17-Binary oder das v17-Tag kompilieren (mit altem Boardpackage). Da lief, MQTT noch.
FHEM/RaspberryMatic @RaspPi + nanoCUL 433 + Signalduino 433 + JeeLink-Clone + CC2531 + Slaesh-Stick
IT Funkschalter, HE-Sensoren, TX 29 DTH-IT, HMIP, HM-Wired, zigbee2mqtt
ESPEInk + waveshare 7.5inch_e-Paper_HAT_(B) + ESP8266 (Firmware von https://github.com/Yattien)

Offline hajo23

  • New Member
  • *
  • Beiträge: 22
Besten Dank an Euch für die Unterstützung. Mit der V17 läuft es jetzt.  :)

Offline Jendaw

  • Jr. Member
  • **
  • Beiträge: 98
    • Alternative ESPEInk-Firmware
Besten Dank an Euch für die Unterstützung. Mit der V17 läuft es jetzt.  :)

Danke für die Rückmeldung und deine Geduld :D Da weiß ich jetzt, wo ich suchen muss.
FHEM/RaspberryMatic @RaspPi + nanoCUL 433 + Signalduino 433 + JeeLink-Clone + CC2531 + Slaesh-Stick
IT Funkschalter, HE-Sensoren, TX 29 DTH-IT, HMIP, HM-Wired, zigbee2mqtt
ESPEInk + waveshare 7.5inch_e-Paper_HAT_(B) + ESP8266 (Firmware von https://github.com/Yattien)