# \[Homeyduino\] E-paper for Homey

**URL:** <https://community.homey.app/t/homeyduino-e-paper-for-homey/74640>\
**Category:** Devices\
**Created:** [January 5, 2023, 3:37pm UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640 "2023-01-05T15:37:04Z")\
**Posts on this page:** 20\
**Page:** 22

<div class="post-metadata">

**Author:** ![sebyldino](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sebyldino/32/20067_2.png) [@sebyldino](https://community.homey.app/u/sebyldino)\
**Post date:** [January 17, 2024, 6:00am UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/430 "2024-01-17T06:00:54Z")

</div>

Hello, I have already used this screen for another project. It’s not an e-ink screen so it would need another dedicated code.

---

<div class="post-metadata">

**Author:** ![Kaspar](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/kaspar/32/9533_2.png) [@Kaspar](https://community.homey.app/u/Kaspar)\
**Post date:** [March 8, 2024, 10:19am UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/431 "2024-03-08T10:19:09Z")

</div>

Hello all, I’m considering this solution as well, but want to do a quick check with you if this still is a solution which you advise, since we are already in 2024 now. Thanks

---

<div class="post-metadata">

**Author:** ![Bence\_Molnar](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/bence_molnar/32/78988_2.png) [@Bence\_Molnar](https://community.homey.app/u/Bence_Molnar)\
**Post date:** [May 6, 2024, 8:00pm UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/432 "2024-05-06T20:00:22Z")

</div>

has anybody tried with M5?

---

<div class="post-metadata">

**Author:** ![viix](https://avatars.discourse-cdn.com/v4/letter/v/4af34b/32.png) [@viix](https://community.homey.app/u/viix)\
**Post date:** [May 29, 2024, 5:13am UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/433 "2024-05-29T05:13:04Z")

</div>

Saw a few post up there’s an untested firmware for the m5.  
The lilygon screens has also been updated with a newer hardware version (v2.4) with what looks like a nicer touch screen cover but not sure if they work the same.

More inclined towards the m5 since it’s off the shelf and easier to implement.

---

<div class="post-metadata">

**Author:** ![Signal](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/signal/32/70650_2.png) [@Signal](https://community.homey.app/u/Signal)\
**Post date:** [June 18, 2024, 7:57pm UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/434 "2024-06-18T19:57:59Z")

</div>

Thank you for the work put into this 😃

I’m using the Lilygo T5-4.7 Inch S3 E-paper v2.4 (2024-01-15) board with capacitive touch screen.

I’m using Arduino IDE to compile the code and upload.

After some debugging I have _finally_ gotten the it to run the application. In the end I had to disable the buttons (lines 15+):

```auto
/*
  pinMode(BUTTON_1, INPUT); //S4 on board, 0 = button pressed, 1 = button released.
  pinMode(BUTTON_2, INPUT); //S2 on board, 0 = button pressed, 1 = button released
  pinMode(BUTTON_3, INPUT); //S3 on board, 0 = button pressed, 1 = button released
*/

```

and stop listening for button presses (line 101):

```auto
// listenButton();

```

if not the device would simply reset whenever the framebuffer is created.

Now I have a _new_ problem. The touch screen does not work for me. I get an error:

```auto
Start touchscreen failed! Please check wiring.

```

But it works with the Lilygo-EPD47 demo. The demo uses `TouchDrvGT911` for touch and scans for the pin to use, either 0x14 or 0x5D (this is from the demo code):

```auto
uint8_t touchAddress = 0x14;

    Wire.beginTransmission(0x14);
    if (Wire.endTransmission() == 0) {
        touchAddress = 0x14;
    }
    Wire.beginTransmission(0x5D);
    if (Wire.endTransmission() == 0) {
        touchAddress = 0x5D;
    }

```

and debug using the demo code now shows it’s 0x5d (93)

I’m guessing the `_settings.h` file should be updated with a new set addresses for the pins to make this work, but how do I find the correct ones?

---

<div class="post-metadata">

**Author:** ![sebyldino](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sebyldino/32/20067_2.png) [@sebyldino](https://community.homey.app/u/sebyldino)\
**Post date:** [June 19, 2024, 5:15am UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/435 "2024-06-19T05:15:05Z")

</div>

Hi,

Pins have been changed on this version of screen.  
[Here](https://cdn.shopify.com/s/files/1/0617/7190/7253/files/T5-S3V4.7_1.jpg?v=1711592882) you can see the differents IO used.

You need to update them in `_settings.h` on line 396.

```auto
//----- Lilygo T5
#elif defined(LILYGO)  

#define BUTTON_1 (39)  
#define BUTTON_2 (34)  
#define BUTTON_3 (35) 
#define BATT_PIN (36)   
#define SD_MISO (12)   
#define SD_MOSI (13)   
#define SD_SCLK (14)   
#define SD_CS (15)     
#define TOUCH_SCL (14)  
#define TOUCH_SDA (15)  
#define TOUCH_INT (13)  
#define GPIO_MISO (12)  
#define GPIO_MOSI (13)  
#define GPIO_SCLK (14) 
#define GPIO_CS (15)    
#endif

```

---

<div class="post-metadata">

**Author:** ![Signal](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/signal/32/70650_2.png) [@Signal](https://community.homey.app/u/Signal)\
**Post date:** [June 19, 2024, 8:55am UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/436 "2024-06-19T08:55:24Z")

</div>

Thank you.

I seem to have found a code example for the newer board [here](https://github.com/Xinyuan-LilyGO/LilyGo-EPD47/blob/master/examples/touchtest/pins.h).

It only has pin for BUTTON\_1 defined, so I’ll update the code and see if I can get this to work.

Would you want me to contribute back to the git repository if I find a solution?

---

<div class="post-metadata">

**Author:** ![TKnaap](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/tknaap/32/79069_2.png) [@TKnaap](https://community.homey.app/u/TKnaap)\
**Post date:** [July 8, 2024, 2:25pm UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/437 "2024-07-08T14:25:37Z")

</div>

Hi,  
I have a version 2.4 board too. I am waiting for a T5-4.7 plus to be implemented. Pins are as Signal mentioned.  
Thanks Sebyldino for all you have done for this project!

 ![T5-S3V4.7_1](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/c/a/ca0967f59f79a60e724a630838f73de4284aa9b9.webp)

---

<div class="post-metadata">

**Author:** ![Bence\_Molnar](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/bence_molnar/32/78988_2.png) [@Bence\_Molnar](https://community.homey.app/u/Bence_Molnar)\
**Post date:** [September 4, 2024, 8:02pm UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/438 "2024-09-04T20:02:17Z")

</div>

hello!  
I ordered 3 pcs because I think this is a very good project - thanks for it sebyldino 🙂 - but I got a v2.4 version, and can’t done this without any error or problem.

Anybody use this version of lilygo?

I only can do this method by “flash download tool” and I has to use the 3pcs 2.1.1. bin-s?  
I dont understand the “put the board in boot mode with button”, can you describe this method a little more detailed? 🙂

I have done in the flash end, but nothing works, all dead, no srceeen, no blue led 😕

Thanks!

---

<div class="post-metadata">

**Author:** ![sebyldino](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sebyldino/32/20067_2.png) [@sebyldino](https://community.homey.app/u/sebyldino)\
**Post date:** [September 5, 2024, 6:09am UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/439 "2024-09-05T06:09:44Z")

</div>

Hello,

I know there is a new version of esp32 package, actually in 3.x, and when i did this project it was 2.x. Try to downgrad your version to it (in Tools → Board → Boards manager, search ESP32 and choose a 2.x version by Espressif).  
May be, it is the problem.

> [@Bence\_Molnar](#):
>
> I only can do this method by “flash download tool” and I has to use the 3pcs 2.1.1. bin-s?

Yes. Select the 3 .bin files and set their adresses like describe in the guide.

> [@Bence\_Molnar](#):
>
> I dont understand the “put the board in boot mode with button”, can you describe this method a little more detailed?

When you want to upload code on the board, you need to put it in boot mode. So press the boot button (IO0 on the v2.4) until the upload start when you click Start on Flash Download tool.

To debug, you can plug your Lilygo to your computer and open the serial monitor of Arduino IDE.

---

<div class="post-metadata">

**Author:** ![Bence\_Molnar](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/bence_molnar/32/78988_2.png) [@Bence\_Molnar](https://community.homey.app/u/Bence_Molnar)\
**Post date:** [September 6, 2024, 9:01pm UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/440 "2024-09-06T21:01:08Z")

</div>

hi sebyldino,  
thanks for your fast answer!

I tried that to downgrade, and half that worked: I got the Elegant OTA update, but got a failed with that.  
You have 3 “.bin” of 2.1.1, whitch I have to use by Elegant OTA (Homey\_epaper\_v2.1.1.ino.bin, and a partition and a bootloader)

 ![Screenshot 2024-09-06 at 22.52.12](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/f/8/f8dccdaea92424729fefb79964c20d7cd7c125bb.png)

These other setting are good?

 ![Screenshot 2024-09-06 at 22.52.49](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/9/4/94ce3656a41c1bc782c8f56af8fd54e1d6cacf93.jpeg)  
 ![Screenshot 2024-09-06 at 22.53.09](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/e/f/ef7bceb1e7e94009ebd72ab97fa3177b4ff20b72.png)

(Next week I can try the tool mode, at home I have only mac)

---

<div class="post-metadata">

**Author:** ![Bence\_Molnar](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/bence_molnar/32/78988_2.png) [@Bence\_Molnar](https://community.homey.app/u/Bence_Molnar)\
**Post date:** [September 18, 2024, 5:50pm UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/441 "2024-09-18T17:50:50Z")

</div>

Hello Seby!

I got it, my friend helped to install it, and I have the QR code right now to connect to it.  
I can connetc to this openes wifi to configure my wifi settings, but there is nothing happens, there is no captive portal ask where I can write my wifi settings.

Is there anywhere else in code where I can get my wifi settings?

Thanks, Bence

---

<div class="post-metadata">

**Author:** ![sebyldino](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sebyldino/32/20067_2.png) [@sebyldino](https://community.homey.app/u/sebyldino)\
**Post date:** [September 19, 2024, 4:16am UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/442 "2024-09-19T04:16:16Z")

</div>

Hello,

You can add default wifi param in “Wifi\_Server\_Data.ino” file before upload it, by adding this in the readData() function:

```auto
void readData() {
  SSID = prefs.getString("SSID", "");
  PASSWORD = prefs.getString("PASSWORD", "");

  if(SSID == "") SSID = "YOUR_SSID"; // Add this line and change to your ssid
  if(PASSWORD == "") PASSWORD = "YOUR_PASSWORD"; // Add this line and change to your password

 ...
} //END readData()

```

---

<div class="post-metadata">

**Author:** ![Bence\_Molnar](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/bence_molnar/32/78988_2.png) [@Bence\_Molnar](https://community.homey.app/u/Bence_Molnar)\
**Post date:** [September 25, 2024, 9:48pm UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/443 "2024-09-25T21:48:52Z")

</div>

thanks Sebyldino!

works perfect now! 🙂

i have some other questions:

- can I use 2 of these at same time in one households?

 ![C3BEBE22-8B1D-4825-9DEF-CC43296353D1](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/6/1/6162e983368f8ded3ab1174a2afb35be0775797f.jpeg)  
because the homeyduino crashes if I turn on the second T5 and if sometimes not, both T5 get the same updates however these other fixed ip-s and mac addresses

- the other: I saw somewhere a picture that there are flows to triggers from screen by touch. That was real or just some ideas? I can not find anymore that picture 🙂

- is there any other weather app what works with your changable weather icon? because in hungary the openweather not get any data 😕

Thanks, Bence

---

<div class="post-metadata">

**Author:** ![sebyldino](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sebyldino/32/20067_2.png) [@sebyldino](https://community.homey.app/u/sebyldino)\
**Post date:** [September 27, 2024, 4:42am UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/444 "2024-09-27T04:42:05Z")

</div>

Hello,

Yes you can use 2, but i think the problem is that these 2 have the same name.

Try to give another name for 1 of these in “homey.ino” file here:

```auto
void setupHomey() {
  //----- Start with a device name
  Homey.begin("Homey e-paper"); //Get name for your device
...
}

```

> [@Bence\_Molnar](#):
>
> the other: I saw somewhere a picture that there are flows to triggers from screen by touch. That was real or just some ideas? I can not find anymore that picture 🙂

Yes it works. You need to enable touch screen and click mark, in guide, see “Settings cards” section → “Display\_With\_Touch\_Screen” and “Click\_Mark\_Enable” in array.  
Then, for each card, you can add a “Clickable” param that will show a mark on top right of the device. When you will click on it, it will send a trigger to Homey to do what you want.  
You need to adjust deepsleep params as you want because you can not do anything when Homey e-paper is in deepsleep.

There is an example flow in the guide.

> [@Bence\_Molnar](#):
>
> is there any other weather app what works with your changable weather icon? because in hungary the openweather not get any data 😕

In “Wifi\_Server\_Data.ino” file, you can add a language by adding an “if” section, like this:

```auto
void defineLanguage() {
  //French
  if (lang == "FR") {
  ...
  }

  //English
  if (lang == "EN") {
  ...
  }

  //Hungarian
  if (lang == "HU"){
  /*Copy and modify here the same language than other sections:
    String ON = "BE"; // type = onoff
    OFF = "KI";
    OPEN = "Nyitva"; // type = door
    CLOSE = "Zárva";
    ...

  and same thing for weather:
    CLEAR = "derült ég";
    CLEAR2 = ""; // Lehet üres a kontextustól függően
    CLEAR_NIGHT = "derült éjszaka";
    CLOUD = "felhős";
  */
  }

```

Then, define your language with setting card “Language”.  
With this, you can use any weather app.  
For example, if you have a weather app that send “felhős” to Homey e-paper, it will show the corresponding “CLOUD” icon.

---

<div class="post-metadata">

**Author:** ![Hans\_Gr](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/hans_gr/32/48091_2.png) [@Hans\_Gr](https://community.homey.app/u/Hans_Gr)\
**Post date:** [October 17, 2024, 8:54pm UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/445 "2024-10-17T20:54:24Z")

</div>

Compiling Homey\_E-paper-1.3.0 (and also v1.2.2) gives a lot of errors:

error: invalid conversion from ‘int\*’ to ‘int32\_t\*’ {aka ‘long int\*’} [-fpermissive]

I am using Arduino IDE 2.3.3 on a Mac and have followed the installation manual (twice). Did 2 clean installations.

Probably a library is missing but which could that be. Or is there something else not right?

---

<div class="post-metadata">

**Author:** ![O\_Bjerk](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/o_bjerk/32/13073_2.png) [@O\_Bjerk](https://community.homey.app/u/O_Bjerk)\
**Post date:** [November 16, 2024, 11:46am UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/446 "2024-11-16T11:46:24Z")

</div>

Hi Signal  
Did you manage to get the Lillygo T5 4.7 v2.4 up and running?

i have tried everything, i can compile and install the code but then it stalls, in a boot loop  
i can compile and install the demo without any problems.

i solved this by help from chatgbt

---

<div class="post-metadata">

**Author:** ![O\_Bjerk](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/o_bjerk/32/13073_2.png) [@O\_Bjerk](https://community.homey.app/u/O_Bjerk)\
**Post date:** [November 25, 2024, 10:13pm UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/447 "2024-11-25T22:13:58Z")

</div>

With this board Lillygo T5 4.7 v2.4 i have problems with activating the touch function.  
when i sendt this to the board from Homey “Display\_With\_Touch\_Screen=True”

Start touchscreen failed! please check wiring  
Rebooting ======

i have triede to implement the correct pins

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/5/4/548de0cf4228d81b631638d6945bf1d74005f40b.png)  
this in \_settings.h  
 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/7/d71264a14f9ade777c9aec6cdbbc33046acf858a.png)

any help would be great

---

<div class="post-metadata">

**Author:** ![Signal](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/signal/32/70650_2.png) [@Signal](https://community.homey.app/u/Signal)\
**Post date:** [March 3, 2025, 8:40am UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/448 "2025-03-03T08:40:41Z")

</div>

After putting this aside for some time I have now gotten the LilyGo T5 4.7 inch plus/S3 version up and running.  
It’s not working perfectly yet, but I have managed to get both the screen and touch working. I have made a clone of [sebyldino](https://community.homey.app/u/sebyldino)’s code on GitHub, but I’m keeping the repository private for now. I have some changes I need to make to get everything working properly. The screen, touch and homey connection is working fine, but I have some challenges.

The major challenge right now is if I refresh the whole screen with `epd_clear()` followed by `epd_draw_grayscale_image(epd_full_screen(), framebuffer)` the whole screen flashes. This is not useable when I want to update e.g. current time and temperature regularly. I have tested without `epd_clear()`, then the screen no longer flashes, but then the previous black pixels do not turn to white making the text draw on top of previous text. I’m going to see if I can update parts of the screen by clearing and writing to an area directly. This would mean updating the screen directly and the framebuffer, or clearing the area of the screen and then writing the whole framebuffer to the screen. I’m going to test my way through it. The first test will be for the header area before I try to tackle the zones.

---

<div class="post-metadata">

**Author:** ![Chen1](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/chen1/32/120866_2.png) [@Chen1](https://community.homey.app/u/Chen1)\
**Post date:** [September 12, 2025, 2:02am UTC](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640/449 "2025-09-12T02:02:32Z")

</div>

I just ordered a [reTerminal E1001](https://www.seeedstudio.com/reTerminal-E1001-p-6534.html), a screen that doesn’t require any programming on my part (as a beginner, I really need something that’s ready to use right out of the box). Seeed claims they have a fantastic UI design webpage that allows me to deploy the display content I want without needing to write any code. I haven’t received the screen yet, but I’ll update my experience once it arrives.

[Previous page](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640.md?page=21)

[Next page](https://community.homey.app/t/homeyduino-e-paper-for-homey/74640.md?page=23)
