Skip to content

tsbarnes/epdtext

Repository files navigation

epdtext

A simple display manager app for the WaveShare 2.7in e-Paper HAT

Picture

Screens

The app provides a number of screens that can be displayed on the e-paper HAT, and allows switching between them with the builtin buttons.

The included screens are:

  • dashboard - a dashboard widget showing the current weather, next calendar event, and next task

Screenshot

  • uptime - a system info viewer

Screenshot

  • affirmations - display positive affirmations (or whatever kind you want, really)

Screenshot

  • fortune - shows a random fortune from the fortune database (requires the fortune-mod package)
    • Install fortune-mod with this command: sudo apt install fortune-mod

Screenshot

  • calendar and tasks - shows a list of upcoming events or todos from your calendars (see local_settings.py.example)

Screenshot Screenshot

  • weather - shows the current weather

Making your own

The framework is extensible, so you can write your own screens as well, each screen is a Python module providing a Screen class that inherits from AbstractScreen.

For more information on how to create your own screens, check the wiki.

Message queue

There's also a message queue interface to control the screen from other apps. (example command line client available in cli.py)

Setup on Raspberry Pi OS

  • First, enable the SPI inferface on the Pi if you haven't already.
  • Then, install the Python requirements
sudo apt install python3-pip python3-pil python3-numpy python3-gpiozero
  • Then install the drivers for Python
git clone https://github.com/waveshare/e-Paper ~/e-Paper
cd ~/e-Paper/RaspberryPi_JetsonNano/python
python3 setup.py install
  • Check out the code if you haven't already:
git clone https://github.com/tsbarnes/epdtext.git ~/epdtext
  • Install the remaining Python dependencies
cd ~/epdtext
sudo pip3 install -r requirements.txt
  • Then (optionally) create local_settings.py and add your settings overrides there.

    • You can copy local_settings.py.example to local_settings.py and edit it to configure epdtext
    • NOTE: if you're using a different Waveshare screen, you can use the DRIVER setting to configure it
    • See the wiki for more configuration help
  • Also optional is installing the systemd unit.

cp ~/epdtext/epdtext.service /etc/systemd/system
sudo systemctl enable epdtext

Setup on Arch Linux ARM

  • First, enable the SPI inferface on the Pi if you haven't already.
  • Then, install the Python requirements
sudo pacman -S python-pip python-pillow python-numpy python-gpiozero
  • Then install the drivers for Python
git clone https://github.com/waveshare/e-Paper ~/e-Paper
cd ~/e-Paper/RaspberryPi_JetsonNano/python
python3 setup.py install
  • Check out the code if you haven't already:
git clone https://github.com/tsbarnes/epdtext.git ~/epdtext
  • Install the remaining Python dependencies
cd ~/epdtext
sudo pip install -r requirements.txt
  • Then (optionally) create local_settings.py and add your settings overrides there.

    • You can copy local_settings.py.example to local_settings.py and edit it to configure epdtext
    • NOTE: if you're using a different Waveshare screen, you can use the DRIVER setting to configure it
    • If you don't set the LOGO setting, it defaults to the Arch logo on Arch Linux ARM
    • See the wiki for more configuration help
  • Also optional is installing the systemd unit.

cp ~/epdtext/epdtext.service /etc/systemd/system

You'll need to edit the /etc/systemd/system/epdtext.service file and change /home/pi to /home/alarm (or the home directory of the user you checked it out as) and change the User line to root.

Also of note, on Arch Linux ARM, epdtext must be run as root.

Usage

To start up the app without systemd, run this command:

cd ~/epdtext
python3 app.py

To start the app with ´systemd´, run this:

sudo systemctl start epdtext

To reload using the CLI client:

cd ~/epdtext
./cli.py reload

To switch to the uptime screen with the CLI:

cd ~/epdtext
./cli.py screen uptime

epdtext-web

There's now a web frontend to epdtext! Check out epdtext-web