HomePlate: E-Ink dashboard with Inkplate 10

Thanks @lanrat for the help earlier. Not being familure with Docker, there was some “here be dragons” unclear dependencies to out work on my end to finally get this up and running! Primarily – I was completely unfamiliar with Docker.

For others who land on this thread in a similar position of ignorance as me:

(Assuming you’ve got the Inkplate flashed already)

  1. Configuring this setup requires Docker. Docker is a container based platform that’s essentially a smarter alternative to using a traditional virtual machine, and oriented towards sharing projects in a reliable way. However, if you’re not a developer (like I’m not) – it’s probably alien territory.

  2. The important nuance here is, if you have a Home Assistant OS Supervised instance installed on a Pi (common install scenario) – you’re going to run into a roadblock with getting Sibbl’s hass lovelace screensaver working. Docker can’t run on the same machine as Home Assistant OS. And just one dudes opinion, but I don’t recommend going Home Assistant container mode route if you’re here reading this comment. There are some really hardcore tradeoffs vs the Supervisor route. Well shit, that means you need another dedicated machine to run docker then.

  3. So now what? For me – I have the luxury of having a spare Pi. After much research and digging, I determined that the ideal setup was keeping my existing Home Assistant OS setup on Pi#1, and adding a second Pi which would be my Docker setup. I have the benefit of also being able to use this second instance dedicated to other things in a smarter way … so it’s not a purely excessive adhoc solution (MQTT server, influxDB destination, home for dedicated scripts such as Sibbl’s screensaver tool)

  4. Okay – wtf is a docker and how do I do that? While tutorial level detail is out of scope for this comment, let me point you to a few key steps & resources that REALLY helped me along this journey.

I. Install a headless OS on a PI

II. Get Putty to SSH talk to the Pi remotely, and FileZilla to transfer files into the Pi
III. Install Docker & install Portainer (optional, recommended) on the Pi

IV. Update docker-compose.yaml from the github resource with your specific details, move that whole directory to your Pi via SFTP (filezilla), and then via Putty navigate to this new folder and run
docker compose up -d within the file’s directory. Using Portainer to confirm the status of things, you can now navigate to http://yourlocalhostname:5000/ and viola! You’ve finally got that dang .png URL to render on your InkPlate!

// Not intended to be exhaustive or prescriptive tutorial – I’m sure the smart folks here are rolling their eyes to my naive guidance here – but hopefully this helps for folks like me who are not natively familiar with Docker or the dependencies you need to get this thing running (uhh… I need a headless what now? Oh shit, I need to use command line?). It took a lot of independent research + trial & error to get this bad boi working.

There’s definitely a learning curve required to ultimately get sibbl’s screenshot script working on your network if this is relatively new territory. Took me a couple dedicated evenings across a few weeks to figure this out (coming from virtually zero experience with linux, docker, ssh & sftp etc… but I learned a lot! There’s hope!)

2 Likes

Haven’t forgotten about this, life has just been in the way! I do plan to clean up the changes a bit, and I need to learn a bit more about platform.io to make the right changes to the build targets.

One question - I’m worried a fair amount of my battery life is going to keeping the blue power LED running all the time - are you aware of a way to suppress or disable the power LED?

I made a few more changes to the repo that should make some of you rchanges easier to merge, especially the layout of the platformio.ini file.

On the Inkplate 10 (I’m not sure about the 6) there is a switch on the back to turn the blue power LED off. However, I suspect that its pwoer draw is so low it will make very little differnce.

2 Likes

Turns out the blue power light was eating quite a bit! Consumption slowed down nicely.

I’ve made a few more changes and integrated your helpful updates, I suspect it would build now on either platform. The 6PLUS touchscreen doesn’t do much, but it does now trigger a wakeup which is handy. I also made some changes to the battery percentage calculations and info displays. I’ll review in more detail after sleeping on it and submit a pull request.

Thank you @lanrat for your hard work publishing this. I was able to unbox and configure a basic dashboard on my Inkplate 10 in under 45 minutes - far less time than I anticipated it taking.

1 Like

It would be truly awesome if the Inkplate could talk to the browser running in the container via touchscreen events, so that live reactive HA dashboards could be displayed.

It’s possible to make something like this, but anything like this would need AC power and it would be incredibly slow.

I would be okay with AC power. What would be the source of the slowness tho? The refresh of the panel?

@lanrat , do you have a published docker image of hass-screenshot? I got most things working following this thread but was trying to pull your code using docker compose and I couldn’t figure out what to point to.

Its your lucky day! I just settup an automated build lanrat/hass-screenshot.
https://hub.docker.com/repository/docker/lanrat/hass-screenshot/

1 Like

I just saw. Thanks so much! Almost there getting this thing working and it’s a Christmas present for my son to continually show is YouTube subscriber count on his wall so he’ll love it when I get this thing fully working.

One more question, now that I have the docker container setup right, I still can’t get the image to show up on the Inkplate. I’m realizing that mine is the Inkplate 6 and not the 10. I had figured that if I just change the resolution I should be OK since everything else is working but this may be the issue. @lanrat, any suggestions on getting things to work with the inkplate6?

@harryohalloran someone started a port to the Inkplate6+, but it was never finished. (Inkplate 6PLUS features and fixes by phidauex · Pull Request #12 · lanrat/homeplate · GitHub)

You can try using their fork, or see if you can re-implement their changes for the Inkplate6. If you get it working, please share!

II have successfully set everything up on my Inkplate 10 (appreciation for the great project). However, it is so that the screen is updates every minute (it loads a new image every minute).

This I have set:

#define TIME_TO_SLEEP_MIN 20

The Inkplate 10 runs off a powerbank to USB-C. But that will not be the cause, right? What could be the reason for that?

@lanrat I was able to get everything up and running, but the grayscale is pretty light on the inkplate. What do you do to get it darker?

@airmax can you look at the serial console to see what is causing the early wakes?

Every time the homeplate wakes from sleep, it should print the reason. On some hardware the touchpads are overly sensitive and can cause unwanted wake events. (If this is the case for you then you can disable them in the config as well).

@wraith1385 What waveform are you using?

Some inkplates have different waveforms on them that can make everything seem too light/dark. You can try loading an alternate waveform to see if it helps: Inkplate-Arduino-library/examples/Inkplate10/Others/Inkplate_Wavefrom_EEPROM_Programming at master · SolderedElectronics/Inkplate-Arduino-library · GitHub (I use waveform #3)

Hadn’t messed with that at all. I’ll look into it and see.

I managed to get my homeplate not to loads a new image every minute. The blue LED is on all the time - this is correct?

Now I wanted to update via OTA. Yet, my homeplate can not be found as homeplate.local

13:38:50 [DEBUG]: Options: {'esp_ip': 'homeplate.local', 'host_ip': '0.0.0.0', 'esp_port': 3232, 'host_port': 8266, 'auth': '', 'image': '.pio/build/ota/firmware.bin', 'spiffs': False, 'debug': True, 'progress': True, 'timeout': 10}

If I ping:

> ping homeplate
> PING homeplate.fritz.box (192.168.178.139) 56(84) bytes of data.
> From tresor.fritz.box (192.168.178.120) icmp_seq=1 Destination Host Unreachable

Am I doing something wrong?

The blue LED will always stay on, even in sleep mode. The Inkplate10 has a switch on the back to disable it if you want.

The homeplate will only respond to mDNS lookups (homeplate.local) and pings while awake and not in sleep mode.

1 Like