Python information display framework aimed at e-ink devices

Related tags

Hardwareinfodisplay
Overview

My display, using a Raspberry Pi Zero W and Waveshare 6" e-paper hat

infodisplay

Modular information display framework aimed at e-ink devices.

Built using Python 3.7 and pillow. Works out of the box with IT8951-powered e-paper displays.

Setting up

  • When using an e-paper display with IT8951 controller, install GregDMeyer's IT8951 library following the instructions there.
  • Clone this repository and cd to its folder
  • Install the basic required packages using pip:
pip3 install -r requirements.txt
  • (If you plan to use the google calendar integration) install the optional packages:
pip3 install -r optional-requirements.txt
  • Copy the example config file:
cp config.ini.example config.ini
  • Make your changes to config.ini using your favourite editor.

You should now be able to run the info display using something like python3 run.py.

FontAwesome icons

The class in fontawesome.py lets you use FontAwesome icons. These are used in the Calendar widget by default.

To see the icons, download a set of FontAwesome svg's (e.g. from here) and unzip the regular, solid, and brands folders into the fa/ folder:

wget https://use.fontawesome.com/releases/v5.15.4/fontawesome-free-5.15.4-desktop.zip
unzip fontawesome-free-5.15.4-desktop.zip
mv fontawesome-free-5.15.4-desktop/svgs/* fa/

Running as a service

A sample systemd unit file is provided in infodisplay.service. This is set up so the service only starts after an NTP time sync is established. Raspberry Pi's don't have a hardware RTC, so system time can be wildly inaccurate until they get the network time.

  • Edit infodisplay.service to reflect where you cloned the repository to, and what user it should run as. (default: /home/pi/infodisplay and pi)
  • Enable the systemd time-sync.target:
sudo systemctl enable systemd-time-wait-sync
  • Copy your unit file:
sudo cp infodisplay.service /etc/systemd/system/
  • Reload systemd:
sudo systemctl daemon-reload
  • Enable autostart of the service:
sudo systemctl enable infodisplay.service
  • Finally, start the service:
sudo systemctl start infodisplay.service

Google Calendar integration

To get events from your Google Calendar you need a Google Cloud Platform project, OAuth credentials and finally a token. Follow the 'Prerequisites' section of this tutorial and you should have a credentials.json file at the end.

The following needs to be done on your desktop computer, as a dialog will pop up for authorization:

  • Clone this repo.
  • Install the optional requirements using pip3 install -r optional-requirements.txt.
  • Copy your credentials.json to the util folder.
  • cd to the util folder.
  • Run python3 get-google-calendars.py.

This script should give you the ID's of the calendars synced to your account. Pick the ones you want and add them to the config.ini. There should now also be a token.json file in the directory, copy this to your main infodisplay folder.

Structure

Have a look through the example config file. This has one main section with global configuration parameters, all other sections are specific to widgets.

The display is divided into a grid, where each widget is given a canvas spanning one or more grid cells. The scheduler calls each widget to update their canvas, pastes updated widgets onto the global canvas, and triggers a display update at the right time.

The most basic example of a widget is given in Dummy.py. Widgets are automatically loaded if their name exists as a section in your config.ini. These sections should have names matching files in the widgets/ folder with corresponding widget classes that go by the same name (e.g. there is a 'Dummy' section in config.ini and widgets/Dummy.py has a class named Dummy).

Looking to add support for your own type of (e-ink) display? You should only have to modify display.py. Keep in mind that the default canvas is of image mode L, or 8-bit greyscale. You will have to modify this to suit your display.

Notes

In due time this information should be moved to the wiki section and expanded.

Owner
Niek Blankers
Niek Blankers
Custom component for Home Assistant that integrates Candy/Haier Wi-Fi washing machines (also known as Simply-Fi).

Candy Home Assistant component Custom component for Home Assistant that integrates Candy/Haier Wi-Fi washing machines (also known as Simply-Fi). This

Olivér Falvai 61 Dec 29, 2022
Example for Calculating Robot Dynamics Using Pinocchio Library

A Example for Calculating Robot Dynamics Using Pinocchio Library Developed by: Xinyang Tian. Platform: Linux + Pinocchio. In this work, i use Pinocchi

Rot_Tianers 33 Dec 28, 2022
Easyeda2kicad.py - Convert any LCSC components (including EasyEDA) to KiCad library

easyeda2kicad.py A Python script that convert any electronic components from LCSC or EasyEDA to a Kicad library Installation git clone https://github.

uPesy Electronics 150 Jan 06, 2023
Doughskript interpreter for converting simple command sequences into executable Arduino C++ code.

Doughskript interpreter for converting simple command sequences into executable Arduino C++ code.

Svjatoslav 2 Jan 11, 2022
Imbalaced Classification and Robust Semantic Segmentation

Imbalaced Classification and Robust Semantic Segmentation This repo implements two algoritms. The imbalance clibration (IC) algorithm for image classi

24 Jul 23, 2022
An arduino/ESP project that can play back G-Force data previously recorded

An arduino/ESP project that can play back G-Force data previously recorded

7 Apr 12, 2022
Windhager myComfort custom component for Home Assistant

Windhager myComfort custom component for Home Assistant

5 Apr 27, 2022
Python implementation of ZMP Preview Control approach for biped robot control.

ZMP Preview Control This is the Python implementation of ZMP Preview Control app

Chaobin 24 Dec 19, 2022
Pinion — Nice-looking interactive diagrams for KiCAD PCBs

Pinion — Nice-looking interactive diagrams for KiCAD PCBs Pinion is a simple tool that allows you to make a nice-looking pinout diagrams for your PCBs

Jan Mrázek 297 Jan 06, 2023
The project is an open-source and low-cost kit to get started with underactuated robotics.

Torque Limited Simple Pendulum Introduction The project is an open-source and low-cost kit to get started with underactuated robotics. The kit targets

34 Dec 14, 2022
This Home Assistant custom component adding support for controlling Midea dehumidifiers on local network.

This custom component for Home Assistant adds support for Midea air conditioner and dehumidifier appliances via the local area network. homeassistant-

Nenad Bogojevic 92 Dec 31, 2022
Technical Answers to Real-World Problems. Evolution of Watering Manually to Watering Automatically.

Automatic Watering System using Soil Moisture Sensor and RTC Timer with Arduino Technical Answers to Real-World Problems Know the plant, Grow the plan

NelakurthiSudheer 3 Jan 03, 2022
🏡 My Home Assistant Configs. Be sure to 🌟 my repo to follow the updates!

Home Assistant Configuration Here's my Home Assistant configuration. I have installed HA on a Lenovo ThinkCentre M93P Tiny with an Intel Dual-Core i5-

iLyas Bakouch 25 Dec 30, 2022
Using a raspberry pi, we listen to the coffee machine and count the number of coffee consumption

A typical datarootsian consumes high-quality fresh coffee in their office environment. The board of dataroots had a very critical decision by the end of 2021-Q2 regarding coffee consumption.

dataroots 51 Nov 21, 2022
A 3rd party Moonraker component to create timelapse of 3D prints.

A 3rd party Moonraker component to create timelapse of 3D prints.

Mainsail-Crew 166 Dec 26, 2022
SALUS THERMOSTAT Custom component for Home-Assistant

Home-Assistant Custom Components Custom Components for Home-Assistant (http://www.home-assistant.io) Salus Thermostat Climate Component My device is R

21 Dec 18, 2022
Alternative firmware for ESP8266 with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at

Alternative firmware for ESP8266/ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability

Theo Arends 59 Dec 26, 2022
Simple Microservice to control 433Mhz wireless sockets over HTTP, e.g. on a RaspberryPi

REST-light is a simple microservice to control 433Mhz wireless sockets over HTTP, e.g. on a RaspberryPi. The main usage is an easy integration of 433M

Pascal Höhnel 1 Jan 09, 2022
Philippe 1 Jan 09, 2022
Robo Arm :: Rigging is a rigging addon for Blender that helps animating industrial robotic arms.

Robo Arm :: Rigging Robo Arm :: Rigging is a rigging addon for Blender that helps animating industrial robotic arms. It construct serial links(a kind

2 Nov 18, 2021