Create a low powered, renewable generation forecast display with a Raspberry Pi Zero & Inky wHAT.

Overview

GB Renewable Forecast Display

Screenshot Screenshot Screenshot Screenshot

This Raspberry Pi powered eInk display aims to give you a quick way to time your home energy usage to help balance the grid, reduce carbon emissions, and if you're an agile tariff user, save money.

The project takes the same approach as shouldibake.com and the Baking Forecast GB to give you quick visual aid when making that decision, showing you when renewable generation is above or below 33%.

Data is provided by the National Grid's carbon intensity api and Octopus Energy's Agile tariff pricing API.

Install and setup

Following the steps in this repository requires minimal input - all the required Inky libraries & code to display the screens is downloaded and setup on your pi when you run the install commands. You will need an SSH client in order to connect to the pi, but all of the SSH commands you need are listed on this page.

  • time required: ~30mins
  • cost of the components: ~£70

Components

  1. Raspberry Pi Zero soldered (~£14) (piehut | pimoroni)
  2. Micro SD card (~£7) (piehut | pimoroni)
  3. Inky wHAT (ePaper/eInk/EPD) - Black/White (£45) (piehut | pimoroni)
  4. Power supply - micro USB connection (piehut | pimoroni - or use an existing cable)
  5. Case (see notes below)

Raspberry Pi Setup

I use a "headless" Raspberry Pi setup to install all the dependencies; we configure the wifi settings prior to powering on the Pi & enable SSH by default, this mean we avoid having to connect a display or a keyboard.

1. Flash SD card with Raspberry Pi OS lite (no desktop)

  • Use Raspberry Pi Imager
  • Select SD card
  • Choose "Raspberry Pi OS (other)" > "Raspberry Pi OS Lite (32-bit)" (we dont require a GUI desktop)
  • Select write & wait for the OS to be written to the SD card.

2. Configure Wifi & Enable SSH

  • Once the Rapsberry Pi OS image has been saved to the SD card, open a file window so that you can view the contents of the SD card's 'boot' folder
  • Create a new file wpa_supplicant.conf in the root of the boot folder & add the following, replacing the relevant sections with the SSID and password of your wifi network
  ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
  network={
    ssid="YOUR_SSID"
    psk="YOUR_WIFI_PASSWORD"
    key_mgmt=WPA-PSK
  }

Example file: conf/wpa_supplicant.conf

  • Finally create an empty file called 'ssh' (without a file extension) in the boot directory, this will enable SSH by default when you first power on the pi

3. Insert the SD into the Pi, install the Pi into the Inky display & boot

  • Insert the SD card into the Raspberry Pi
  • Install the Raspberry Pi into the back of the Inky display - align the Pi, with the 40 GPIO pins pointing down, to the top right hand corner of the back of the Inky display and gently push the the GPIO pins into the black connector. See an image of the reverse of display.
  • Power on the Pi & wait for ~2 minutes whilst the operating system boots up.
  • At this point you'll need to create an SSH connection to the Pi from your laptop/desktop. You can read more about SSH (Secure Shell) & find a client for your machine here
  • If this is the only Raspberry Pi on your network you'll be able to access the Pi using the device's hostname with following SSH command
ssh [email protected]
# password is 'raspberry'

otherwise, you will need to find the IP of your Pi via your local network router then start a SSH session using

ssh pi@[IP ADDRESS]
# password is 'raspberry'
  • Once your ssh connetion has been established the first thing you should do is update the password - the Pi OS ships with a default password, and it's always best to change this before going any further. To change your password run:
passwd

Then enter and confirm your new password

4. Run the install script

  • In your SSH terminal, ensure you're first in the pi user's home directory by running cd ~/
  • Install the dependencies for both the Inky display & the api/drawing libraries by running the following command

curl https://raw.githubusercontent.com/openbook/shouldi-eink-display/main/setup/install.sh | bash Note this command runs the install file found within this repository, so you can check exactly what's being installed if you need to.

  • When prompted enter Y to install the required inky libraries
  • When prompted 'Do you wish to perform a full install?' enter N
  • Once the install script has finished, the Pi will be rebooted to ensure all the libraries are correctly loaded now that the inky display is connected.
  • Once the pi has rebooted, if everything has been installed correctly, the Inky screen should update to display the default 'combined' screen.

5. SSH back in to the Pi & set the display configuration

  • First SSH back into the pi
  • By default the 'combined' forecast and current generation mix is displayed. Full info on each of the screens is available here. You can update the display by changing the values found within the 'config.ini' that was downloaded as part of the setup:
  • Using a text editor update the contents of the file found at /home/pi/shouldi-eink-display/config.ini
  • Update the display = combined line choosing one of the following options:
    • combined - renewable forecast plus current generation mix
    • forecast - the full "should i bake" forecast
    • agile - agile tariff hourly prices for the current day
    • generation - current renable generation mix for a local area
  • If selecting "agile" then the postcode and placename should be changed from the current values in the same file. Note postcodes should be added using the first half only (e.g. for SW1A 0AA use SW1A)
  • see '#displays' for notes on each display screen

6. Setup the web interface

Screenshot

You can also setup and run a simple web form which will allow you to switch the current screen display using a browser.

  • still using the SSH session, make sure you are in the project root folder cd ~/shouldi-eink-display
  • run ./setup/install-web.sh this will setup an nginx webserver and serve a simple flask based webapp that will allow you to update the config.ini file.
  • Once the install script has finished, it should confirm the IP address of your Pi - you can then open that IP address in a browser to access the web interface shown above

7. 🎉 Done

Hopefully everything should be setup and working ok.

Your display is set to update automatically at 5 & 35 minutes past each hour.

Screens

Screen Config.ini name Description
Screenshot combined Combined current generation mix + renewable forecast

Now
how much of the current electricity supply, coming from the National Grid, is being generated from renewable sources (wind, hydro & solar)

Forecast
for the next (up to) 4 days, which slots (morning, afternoon, evening or night) are forecasted to have renewable generation higher than 33%
- where there's a tick, generation is forecasted to be greater than 33%
- where there's a cross, generation is forecasted to be lower than 33%, avoid doing any activities at home which consume a lot of electricity during these times if you can
- where the tick or cross is underlined - this shows the period during the day which is forecasted to have the highest renewable generation. Try to plan your high demand activities for these time.
Screenshot agile (Octopus) Agile Tariff pricing

Displays the cost p/kWh (pence per kilowatt hour) for each hour over the current day.
See the full documentation here for more information

Note: the data retrieved from the Octopus API is for the London 'C' region by default. To change region, first find the alphabetical region (GSP Group) Id then update the region value in the config.ini file (excluding any underscores)
Screenshot forecast Baking forecast shouldibake.com @baking4cast

Right now, Bake!/Can baking wait?
tells you whether the current renewable generation level is higher than 33%

Forecast
for the next (up to) 4 days, which slots (morning, afternoon, evening or night) are forecasted to have renewable generation higher than 33%
- where there's a tick, generation is forecasted to be greater than 33%
- where there's a cross, generation is forecasted to be lower than 33%, avoid doing any activities at home which consume a lot of electricity during these times if you can
- where the tick or cross is underlined - this shows the period during the day which is forecasted to have the highest renewable generation. Try to plan your high demand activities for these time.
Screenshot generation Local generation for your region

Using a postcode supplied in the config.ini file, this display shows the current generation mix specific to your region.

Case

Make your own

Screenshot Screenshot

I created a simple frame using some pine stripwood (6x25mm), which was then treated with danish oil. This works well and with a small cut out for the USB power cable sits flush against a wall when fixed with a nail.

Modeled and 3d printed LargeCover enclosure by Printminion

This is a great professional looking case that's ready to buy and simple to install.

Note, unless you are going to solder the pi to the inky manually then you'll need the 'enclosure' + 'large cover'.

To do

  • Add a physical button to switch between displays
  • Add error handling for all outgoing requests
  • Image uploader for custom screen of when generation is high and low
  • Move carbonintensitylib to pandas for consistency and to improve code qualityŒ
  • Add more in depth view for agile pricing - show current, min and max prices
  • Add a battery pack & power management
Owner
Andy Brace
Andy Brace
智能无人机路径规划仿真系统是一个具有操作控制精细、平台整合性强、全方向模型建立与应用自动化特点的软件

Drone智能无人机路径规划仿真系统是一个具有操作控制精细、平台整合性强、全方向模型建立与应用自动化特点的软件。它以A、B两国在C区开展无人机战争为背景,该系统的核心功能是通过仿真平台规划无人机航线,并进行验证输出,数据可导入真实无人机,使其按照规定路线精准抵达战场任一位置,支持多人多设备编队联合行动。

wwy 349 Jan 03, 2023
A Python program that makes it easy to manage modules on a CircuitPython device!

CircuitPython-Bundle-Manager-v2 A Python program that makes it easy to manage modules on a CircuitPython device! The CircuitPython Bundle Manager v2 i

Ckyiu 1 Dec 18, 2021
A Python class for controlling the Pimoroni RGB Keypad for Raspberry Pi Pico

rgbkeypad A Python class for controlling the Pimoroni RGB Keypad for the Raspberry Pi Pico. Compatible with MicroPython and CircuitPython. keypad = RG

Martin O'Hanlon 43 Nov 11, 2022
Water quality integration for Home Assistant with data provided by Budapest FVM

Water Quality FVM (Budapest, HU) custom integration for Home Assistant This custom component integrates water quality information provided by Budapest

Atticus Maximus 3 Dec 23, 2021
Used python functional programming to make this Ai assistant

Python-based-AI-Assistant I have used python functional programming to make this Ai assistant. Inspiration of project : we have seen in our daily life

Durgesh Kumar 2 Dec 26, 2021
Samples for robotics, node, python, and bash

RaspberryPi Robot Project Technologies: Render: intent Currently designed to act as programmable sentry.

Martin George 1 May 31, 2022
Better support for Nuki devices to the Home Assistant

Another attempt to add a better support for Nuki devices to the Home Assistant Features: Lock interface implementation Uses local webhook from bridge

Konstantin 105 Jan 07, 2023
This Home Assistant custom component adds support for controlling Midea dehumidiferes on local network.

This is a custom component for Home assistant that adds support for Midea dehumidifier appliances via the local area network. midea-dehumidifier-lan H

Nenad Bogojevic 97 Jan 08, 2023
The ABR Control library is a python package for the control and path planning of robotic arms in real or simulated environments.

The ABR Control library is a python package for the control and path planning of robotic arms in real or simulated environments. ABR Control provides API's for the Mujoco, CoppeliaSim (formerly known

Applied Brain Research 277 Jan 05, 2023
ModbusTCP2MQTT - Sungrow & SMA Solar Inverter addon for Home Assistant

ModbusTCP2MQTT Sungrow & SMA Solar Inverter addon for Home Assistant This addon will connect directly to your Inverter using Modbus TCP. Support model

Teny Smart 40 Dec 21, 2022
Implemented robot inverse kinematics.

robot_inverse_kinematics Project setup # put the package in the workspace $ cd ~/catkin_ws/ $ catkin_make $ source devel/setup.bash Description In thi

Jianming Han 2 Dec 08, 2022
An embedded application for toy-car controlling based on Raspberry Pi 3 Model B and AlphaBot2-Pi.

An embedded application for toy-car controlling based on Raspberry Pi 3 Model B and AlphaBot2-Pi. This is the source codes of my programming assignmen

StardustDL 4 Oct 19, 2022
A iot Bike sytem based on RaspberryPi, Ardiuino

Cyclic 's Kernel ---- A iot Bike sytem based on RaspberryPi, Ardiuino, etc 0x1 What is This? Cyclic 's Kernel is an independent System With self-produ

Retr0mous 2 Oct 09, 2022
E-Ink Magic Calendar that automatically syncs to Google Calendar and runs off a battery powered Raspberry Pi Zero

E-Ink Magic Calendar that automatically syncs to Google Calendar and runs off a battery powered Raspberry Pi Zero

2.8k Dec 30, 2022
Terkin is a flexible data logger application for MicroPython and CPython environments.

Terkin Data logging for humans, written in MicroPython. Documentation: https://terkin.org/ Source Code: https://github.com/hiveeyes/terkin-datalogger

hiveeyes 45 Dec 15, 2022
An open source two key macro-pad modeled to look like a cartoony melting popsicle

macropopsicle An open source two key macro-pad modeled to look like a cartoony melting popsicle. Build instructions Parts List -1x Top case half (3D p

17 Aug 18, 2022
DNP3 Stalker is a project to analyze and interact with DNP3 devices

DNP3 Stalker Purpose DNP3 Stalker is a project to analyze and interact with DNP3

Cutaway Security, LLC. 2 Feb 10, 2022
Raspberry Pi Power Button - Wake/Power Off/Restart(Double Press)

Control Raspberry pi with physically attached button. Wake, Power Off, and Restart (Double Press) . Python3 script runs as a service with easy installation.

Stas Yakobov 16 Oct 22, 2022
Create (templateable) cameras that display qr codes in homeassistant

QRCam This custom component creates cameras displaying qrcodes. The QRCodes can be static or generated from templates. If you use a template as conten

Jannes Müller 5 Oct 06, 2022
Connect a TeslaMate instance to Home Assistant, using MQTT

TeslaBuddy Connect a TeslaMate instance to Home Assistant, using MQTT. It allows basic control of your Tesla vehicle via Home Assistant (currently, ju

4 May 23, 2022