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

Begonnen von eki, 02 Oktober 2019, 10:24:53

Vorheriges Thema - Nächstes Thema

eki

Ich habe es mir noch mal angeschaut. Das basiert ja auf einem pi pico, wie machst Du denn da die Verbindung zu FHEM (hat ja kein WLAN oder so was).
Ich habe den Typ mal in das Modul eingebaut (Testversion angehängt), damit kann man aber erst mal nur Bilder (mit set convert) genrieren, die die entsprechenden Farben haben und eventuell per dithering Darstellung möglichst nah an die gewünschten Farben kommen (siehe Beispiel). Das mit der Übertragung zum Device ist mir, wie gesagt, unklar.

Dankbarer_User

eki du bist wunderbar! Vielen Dank, ich werde die Anapssung soweit prüfen!

Ich Hammel habe Dir gestern den falschen Link gepostet. Hier ist der richtige. Das Display kommt genauso, wie die anderen. Entweder RAW oder mit dem Treiber gleich dabei. Dann, wie immer, eine SPI Schnittstelle. Ich lasse das Display mit einem Wemos testweise laufen. Im neuesten Loader von Waveshare ist dieser Displaytyp bereits enthalten.

Display mit Treiber: https://www.waveshare.com/product/displays/e-paper/epaper-1/5.65inch-e-paper-module-f.htm
Display RAW: https://www.waveshare.com/product/displays/e-paper/epaper-1/5.65inch-e-paper-f.htm

Aktuelle Loader Version für den ESP8266: https://www.waveshare.com/w/upload/d/d5/E-Paper_ESP8266_Driver_Board_Code.7z

Dankbarer_User

Übringens bzgl. DEEP SLEEP ESP8266:

Ich habe das bei meinem ersten E-Ink Display folgendermaßen gelöst:

Grundsätzlich benutze ich den Timer: https://www.ti.com/lit/ds/symlink/tpl5110.pdf?ts=1628458116847

Einer der Vorteile ist, dass der Timer von 1.8 bis 5.5V läuft und in Ruhe nur <40nA braucht.

Mit diesem Timer schalte ich über einen Mosfest die Stromversorgung für den LDO von einem ESP-12F. Wenn der ESP mit was auch immer fertig ist, gibt er ein Low über den GPIO4 auf den DONE Eingang des Timers. (GPIO 4 benötigt einen Pull-Up). Der Timer geht wieder schlafen und der komplette Rest der Schaltung ist ohne Energie. Hilft gegen Ghosting beim Display und auch gegen nicht immer saubere Deep-Sleep Zyklen beim ESP.

Der Zeitbereich des Timers ist von ca. 100ms bis 7200s einstellbar. Wenn der LDO einen geringen voltage drop hat (<150mV) kann man das ganze mit einer Li-Ion Batterie bis zu einer Entladeschlussspannung von ca. 3.3V betreiben. Manche ESP laufen bis ca. 2,5V, dann könnte man noch weiter runter gehen.

Wichtig ist, dass das DONE Signal von dem GIPO 4 oder GPIO 5 kommt. Die anderen Ausgänge flackern zu sehr beim Start und lösen den DONE Eingang des Timers schon beim booten aus.

Ganz puristisch läßt sich noch eine evtl. vorhandene LED auslöten.


Dankbarer_User

hallo eki!

Wenn ich in deinem Testmodul das 5.65" Display als devicetype auswähle, bekomme ich folgende Fehlermeldung, wenn ich den colormode auf color setzen möchte: Invalid argument color to colormode. Device does not support color mode.

eki

Das kann eigentlich nur daran liegen, dass irgendetwas bei der Initialisierung nicht geklappt hat. Kannst Du einfach das device noch mal löschen und neu anlegen. Ansonsten poste mal ein Listing des Devices.

Dankbarer_User

Gute Idee! Nach dem erneutem Anlegen funktioniert die Konvertierung und sieht gut aus! Hoffentlich macht Dir die Anpassung mit dem Upload nicht all zu große Schwierigkeiten.

eki

Ist fast fertig, werde hoffentlich morgen eine Testversion haben, dann kannst Du testen (ich kann meine Ausgaben mit denen der Webapp vergleichen, aber sicher ist man erst, wenn man wirklich mit den echten Displays testet).

Borkk

Zitat von: Jendaw am 08 August 2021, 15:01:32
Kannst du bitte überprüfen, ob du mehrere Bilder mit der "Price-Tag"-Webseite der Original-Firmware hochladen kannst? Dazu rufst du den ESP einfach per Browser auf und konfigurierst dort dein Display.

Grundsätzlich sollte aber erst einmal der Upload mit der Original-Firmware laufen, auch mehrmals hintereinander.

Hallo Jendaw,

Also das funktioniert. Ich kann über die PriceTag Seite das vom FHEM Modul generierte PNG problemlos hochladen und es wird sauber angezeigt. Lasse ich jetzt aber das Modul direkt auf die IP des ESP8266 los, bekomme ich nur endlose Fehlermeldungen im Serial Monitor vom Arduino IDE und das Display macht nichts.

22:43:50.948 -> Unknown URI: /ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppaibappppapaaaaaaaapappppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppiodaLOAD_
22:43:50.948 -> Unknown URI: /ppppppppppppppppppppppppppppppppppppppppppppppppppppppppplnpppppapaaaaaaaahappppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppplnpppppapaaaaaaaahappppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppplnpppppapaaaaaaaahappppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppplnpppppapaaaaaaaahappppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppplnppppphpppopphpphoppppppppppppppppppppppppppppppppppppppppppppiodaLOAD_
22:43:50.981 -> Unknown URI: /ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppplnppppphpppopphpphoppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppplnppppphpppopphpphoppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppmpaapnppppppppppppammbpmppppppppppppplnppppphpppopphpphoppoppddapmbpppppdadodphppppppdpmhpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppmpaapnppppppppppppammbpmppppppppppppplnppppphpppopphpphoppipobdahpamphopdabinohppppppdpmhoppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppiodaLOAD_
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Borkk

Zitat von: Borkk am 10 August 2021, 22:52:13
Hallo Jendaw,

Also das funktioniert. Ich kann über die PriceTag Seite das vom FHEM Modul generierte PNG problemlos hochladen und es wird sauber angezeigt. Lasse ich jetzt aber das Modul direkt auf die IP des ESP8266 los, bekomme ich nur endlose Fehlermeldungen im Serial Monitor vom Arduino IDE und das Display macht nichts.

Ich habe jetzt mal den ESP32 zur Seite gelegt und alles mit dem ESP8266 probiert und bin jetzt schon etwas weiter. Mit der Original Firmware von Waveshare aktualisiert das ESPEink Modul jetzt regelmässig das Display. Allerdings wird das PNG in unregelmäßigen Intervalen verschoben dargestellt. Dafür habe ich noch keine Erklärung.

Mich würde jetzt natürlich interessieren, was hier "Best Practise" ist.

- Nimmt das Display in dieser Konfiguration dauerhaft Schaden (Stichwort: Dauerstrom)
- was bringt der "Umweg" über MQTT mit dem DOIF (Git von Yattien)
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

eki

Ich habe jetzt mal eine Testversion für das neue 5.65 Farbdisplay fertig und angehängt. Bitte mal testen. Müsste eigentlich sowohl mit ESP32 als auch mit ESP8266 gehen.

Jendaw

Zitat von: Borkk am 10 August 2021, 22:52:13
Lasse ich jetzt aber das Modul direkt auf die IP des ESP8266 los, bekomme ich nur endlose Fehlermeldungen im Serial Monitor vom Arduino IDE und das Display macht nichts.
Was hast du für ein Display? Klingt danach, als würde eine Einstellung im FHEM-Modul fehlen oder inkorrekt sein.


Zitat von: Borkk am 11 August 2021, 00:17:23
Allerdings wird das PNG in unregelmäßigen Intervalen verschoben dargestellt. Dafür habe ich noch keine Erklärung.
Erfolgt hier das Update evtl. zu schnell? (Bild ist zwar schon hochgeladen, das Display aber noch nicht fertig mit darstellen, ehe das nächste kommt)

Zitat
Mich würde jetzt natürlich interessieren, was hier "Best Practise" ist.
- Nimmt das Display in dieser Konfiguration dauerhaft Schaden (Stichwort: Dauerstrom)

Das Display selbst sollte nach dem SHOW in den DeepSleep gehen. Beim 7,5" tut es das leider mit der aktuellen Firmware nicht, hier muss noch eine Funktion in Loader/epd7in5.h angepasst werden, sonst nimmt es Schaden.

static void EPD_7IN5_V2_Show(void)
{
  EPD_SendCommand(0x12); //DISPLAY REFRESH
  delay(100);            //!!!The delay here is necessary, 200uS at least!!!
  // EPD_7in5_V2_Readbusy();

  //Enter sleep mode
  EPD_SendCommand(0X02); //power off
  EPD_7in5_V2_Readbusy();
  EPD_SendCommand(0X07); //deep sleep
  EPD_SendData(0xA5);
}


Zitat
- was bringt der "Umweg" über MQTT mit dem DOIF (Git von Yattien)
Ich kann nur für mich sprechen, ist also keineswegs BestPractise ;)

  • In Zusammenhang mit einem Sleep des ESP muss FHEM mit dem Upload nicht warten (und ggf. fehlschlagen), bis das Display wieder wach ist. Der ESP fordert die Daten an, wenn es wieder da ist. Kommt immer darauf an, was du darstellen möchtest und wie lang deine Sleeptime damit ist.
  • Ab v17 der Yattien-Firmware wird das 7in5v2 mit dem neuen Display-HAT v2 unterstützt. In der offiziellen Firmware ist das noch nicht enthalten.
  • Obiger Bug in der 7in5-Datei ist hier auch bereits behoben (ab v18).

HTH
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)

Borkk

Hallo Jendaw,

erst mal Danke für deinen Support, ich bin ja wie gesagt in der "ESP Szene" :-) noch recht neu aber so langsam verstehe ich auch wie Arduino IDE arbeitet.

Mein Display ist ein "7.5 inch HD e-Paper (B)" wenn ich richtig verstanden habe müsste der Code im "Waveshare Original Loader" im Reiter esp7in5_HD.h sein. Allerdings fehlt mir da noch das "(B)" 

Der Code dort lautet:

static void EPD_7IN5_HD_Show(void)
{   
unsigned int i;
EPD_SendCommand(0x26);
    for(i=0; i<880*528/8; i++) {
        EPD_SendData(0xff);
    }
    EPD_SendCommand(0x22);
    EPD_SendData(0xF7);
    EPD_SendCommand(0x20);
    delay(200);
    EPD_7IN5_HD_Readbusy();
    Serial.print("EPD_7IN5_HD_Show END\r\n");
}


Wie müsste ich den Umbauen das mein Display keinen Schaden nimmt? Und ist das überhaupt der richtige Code (ohne (B))

Ich hätte da noch eine kleine Verständnisfrage zum Arduino IDE. Im ersten Reiter steht ja immer der "Hauptcode" in den über #include Bibliothek eingebunden werden. Ich habe verstanden das die Bibliotheken in "" im gleichen Verzeichnis liegen wie der Sketch und die in <> an verschiedenen anderen Stellen in der Arduino Installation. Haben die Farben eine Bedeutung? Manche Bibliotheken werden im Code orange und manche grün angezeigt. Beim Hochladen auf dem ESP werden aber scheinbar alle Bibliotheken gefunden und der upload läuft fehlerfrei.   
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Jendaw

Zitat von: Borkk am 11 August 2021, 11:06:16
Mein Display ist ein "7.5 inch HD e-Paper (B)" wenn ich richtig verstanden habe müsste der Code im "Waveshare Original Loader" im Reiter esp7in5_HD.h sein. Allerdings fehlt mir da noch das "(B)" 

[...]
Wie müsste ich den Umbauen das mein Display keinen Schaden nimmt? Und ist das überhaupt der richtige Code (ohne (B))
Für das 7in5-HD ist nichts am Code anzupassen. Gilt nur für das 7in5 (ohne HD).

Zitat
Ich hätte da noch eine kleine Verständnisfrage zum Arduino IDE. Im ersten Reiter steht ja immer der "Hauptcode" in den über #include Bibliothek eingebunden werden. Ich habe verstanden das die Bibliotheken in "" im gleichen Verzeichnis liegen wie der Sketch und die in <> an verschiedenen anderen Stellen in der Arduino Installation. Haben die Farben eine Bedeutung? Manche Bibliotheken werden im Code orange und manche grün angezeigt. Beim Hochladen auf dem ESP werden aber scheinbar alle Bibliotheken gefunden und der upload läuft fehlerfrei.
Die orangenen sollten die sein, die du zusätzlich hinzugefügt hast (Verzeichnis Arduino/libraries).
Die Grünen kommen vom Boardverwalter.
Die schwarzen sollten die sein, die aus der IDE selbst kommen.

Ist allerdings nur meine Vermutung, wenn ich mir die anschaue.
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)

Borkk

Hallo Jendaw,

Ok, danke für die Info. Mein Display läuft jetzt einwandfrei am ESP8288 mit der Original Waveshare Firmware. Die Verschieber in der Darstellung scheinen tatsächlich von einem zu frühen Upload zu kommen. Dazu muss ich in FHEM noch etwas anpassen, einige Werte kamen zu oft.

Aber so gefällt mir das erst mal sehr gut. Ich sehr für mich jetzt keinen Grund die Yattien Lösung einzusetzen?

Oder habe ich was übersehen?
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Jendaw

Zitat von: Borkk am 11 August 2021, 12:28:58
Aber so gefällt mir das erst mal sehr gut. Ich sehr für mich jetzt keinen Grund die Yattien Lösung einzusetzen?
Oder habe ich was übersehen?
Prima! Wenn alles bei dir wie gewünscht läuft, gibt es keinen Grund. Die alternative Yattien-Firmware baut ja auch nur auf den waveshare-Sourcen auf.
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)