Minimal and clean dashboard to visualize some stats of Pi-Hole with an E-Ink display attached to your Raspberry Pi

Overview

Clean Dashboard for Pi-Hole

Minimal and clean dashboard to visualize some stats of Pi-Hole with an E-Ink display attached to your Raspberry Pi.

This is very useful if you keep a Pi Zero with Pi-Hole connected to your router and you want a clean dashboard to monitor its status. Additionally, I do not use static IP so if this ever change, I have an easy way to get the real time IP of the Raspberry.

PyPI Updated Powered-By
Raspberry Pi Zero

My Setup

Configuration

The tool should run out of the box with standard installation of Pi-Hole. If you have a different setup probably the scripts should be adapted too. If your instance of Pi-Hole is running on a different port than 80, you should change it inside pihole_dashboard/__init__.py.

WaveShare e-Paper dependency

Making the E-Ink display work is not fully covered here, as it depends mostly on the display you use. As said before, I have the WaveShare's 2.13 inch E-Ink display, that has a nice detailed Wiki here: https://www.waveshare.com/wiki/2.13inch_e-Paper_HAT.

You can find there the list of required dependencies for Python and how to run and test the provided examples. Just for reference, this is the list of dependencies that should be installed on a Raspberry Pi Zero to configure the display I have:

sudo apt-get install python3-pip python3-pil python3-numpy
sudo pip3 install RPi.GPIO
sudo pip3 install spidev 

In order to use the 2.13 inch E-Ink display with Python, you also need to get and build their waveshare-epd library:

git clone https://github.com/waveshare/e-Paper.git
cd e-Paper/RaspberryPi_JetsonNano/python/
sudo python3 setup.py install

You can check if the display is working by running the test example:

cd e-Paper/RaspberryPi_JetsonNano/python/
sudo python3 examples/epd_2in13_V2_test.py

Remember that you need root access to control the display, so be sure to run the python example as root.

The example will print several geometric objects on the screen if everything is working as expected, followed by a simple clock program that updates every second. If the example does not work, do not proceed further with the installation as this probably will not work either.

Installation

The installation requires to have already a Raspberry with Pi-Hole installed and correctly running, if you have problem installing Pi-Hole check their README.

Dependencies

Ensure that you have already this Pillow dependency installed:

sudo apt install libopenjp2-7

From PyPI

sudo pip3 install pihole-dashboard

From Source

git clone https://github.com/santoru/pihole-dashboard
cd pihole-dashboard
sudo pip3 install .

Once installed, reboot the Raspberry Pi. The dashboard should appear few minutes after the reboot.

Uninstall

You can remove the tool anytime by running

sudo pip uninstall pihole-dashboard

You can also manually remove the cronjob by running

sudo rm /etc/cron.d/pihole-dashboard-cron

How it works

The tool will install a Cron Job on the Raspberry Pi that will check the status of Pi-Hole every minute. If there's an update to display, the screen will refresh and update its content.

Troubleshooting

If the dashboard is not displaying, you can check if the script return an error by running

sudo pihole-dashboard-draw

If everything is working as expected, nothing will be printed out. If you still have errors, please open an issue.

Comments
  • Can't install pihole-dashboard on DietPi

    Can't install pihole-dashboard on DietPi

    Hello,

    i found your project when I was looking for another use for my Waveshare 2.13" display. My hardware requirements are the same as you listed. I use an RPi Zero WH, pihole in version V5.14.1 and the 2.13inch E -Ink display HAT for Raspberry Pi.

    When I run the command sudo python3 examples/epd_2in13_V2_test.py, the demo plays correctly on the display.

    I've followed your guide closely, but I get errors with both ways to install pihole-dashboard.

    Here the error messages:

    [email protected]:~# sudo pip3 install pihole-dashboard Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple/ Collecting pihole-dashboard Using cached pihole_dashboard-1.0.2-py3-none-any.whl (140 kB) Collecting Pillow>=8.2.0 Using cached https://www.piwheels.org/simple/pillow/Pillow-9.3.0-cp39-cp39-linux_armv6l.whl (1.1 MB) Requirement already satisfied: netifaces>=0.10.9 in /usr/local/lib/python3.9/dist-packages (from pihole-dashboard) (0.11.0) Collecting pihole-dashboard Using cached pihole_dashboard-1.0.1-py3-none-any.whl (137 kB) Using cached https://www.piwheels.org/simple/pihole-dashboard/pihole_dashboard-1.0.0-py3-none-any.whl (124 kB) ERROR: Cannot install pihole-dashboard==1.0.0, pihole-dashboard==1.0.1 and pihole-dashboard==1.0.2 because these package versions have conflicting dependencies.

    The conflict is caused by: pihole-dashboard 1.0.2 depends on waveshare-epd pihole-dashboard 1.0.1 depends on waveshare-epd pihole-dashboard 1.0.0 depends on waveshare-epd

    To fix this you could try to:

    1. loosen the range of package versions you've specified
    2. remove package versions to allow pip attempt to solve the dependency conflict

    ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts

    The 2nd method shows these messages:

    [email protected]:~/pihole-dashboard# sudo pip3 install . Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple/ Processing /root/pihole-dashboard Preparing metadata (setup.py) ... done ERROR: Could not find a version that satisfies the requirement waveshare-epd (from pihole-dashboard) (from versions: none) ERROR: No matching distribution found for waveshare-epd

    I can't find a solution to these problems, do you have any ideas or tips?

    Best regards, Carsten

    opened by Falconcrest 17
  • No auto refresh

    No auto refresh

    Hi,

    I like the concept so have tried installing it as you describe, however I have an issue.

    The display only works when I do ‘sudo pihole-dashboard-draw’ manually. The cron is not refreshing the display automatically. Any thoughts?

    bug 
    opened by fourdotone12 4
  • Random issue while trying to test the screen?

    Random issue while trying to test the screen?

    Hello I followed your instructions but then I got stuck when i tried to test the screen itself when i went to put in sudo python epd_2in13_V2_test.py it gave me this in return Traceback (most recent call last): File "epd_2in13_V2_test.py", line 11, in from waveshare_epd import epd2in13_V2 File "/home/pi/newdisplaything/e-Paper/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in13_V2.py" , line 32, in from . import epdconfig File "/home/pi/newdisplaything/e-Paper/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epdconfig.py", line 152, in implementation = RaspberryPi() File "/home/pi/newdisplaything/e-Paper/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epdconfig.py", line 47, in init import RPi.GPIO ImportError: No module named RPi.GPIO

    whats weird is ive tried installing the RPI.GPIO a couple different ways but i feel like i must of missed something but if you could possibly point me in the right direction i would really appreciate any help thanks in advanced

    opened by madryboy 1
  • readme clarification

    readme clarification

    would mention that SPI interface needs to be turned on in raspi-config in order for e-ink screen to function.

    would mention that init.py needs to be modified if using ethernet instead of wi-fi (change Interface = "wlan0" to "eth0")

    documentation 
    opened by peepdoc 0
  • No display on the e-paper since the Pi-hole update

    No display on the e-paper since the Pi-hole update

    After the last update of Pihole/adminLTE, the display on the e-paper no longer works. The same problem existed with a PiTFT and PiOLED display. The solution was communicated to me at https://github.com/pi-hole/AdminLTE/issues/2467 and consisted in the adaptation of api_url = 'http://localhost/admin/api.php?summary&auth=abcdef123456789'.

    Unfortunately this doesn't work if I enter it in the init.py among
    def update(): url = "http://127.0.0.1:{}/admin/api.php".format(PIHOLE_PORT) r = json.load(urllib.request.urlopen(url))

    How should the adjustment be correct?

    opened by Falconcrest 0
  • Waveshare 2.13 not drawing

    Waveshare 2.13 not drawing

    hi,

    i followed your instructions to install everything (Incl. Waveshare etc.). The display is working so far. But after installation of Pihole-Dashboard and rebooting, the display is not drawing. I tried with sudo pihole-dashboard-draw but it didn't work:

    Traceback (most recent call last):
      File "/usr/local/bin/pihole-dashboard-draw", line 23, in <module>
        pihole_dashboard.update()
      File "/usr/local/lib/python3.9/dist-packages/pihole_dashboard/__init__.py", line 91, in update
        unique_clients = r['unique_clients']
    KeyError: 'unique_clients'
    

    Anything i could try?

    opened by mrtritop 3
Releases(v1.0.2)
Owner
Alessio Santoru
Alessio Santoru
A battery pack simulation tool that uses the PyBaMM framework

Overview of liionpack liionpack takes a 1D PyBaMM model and makes it into a pack. You can either specify the configuration e.g. 16 cells in parallel a

PyBaMM Team 40 Jan 05, 2023
Mycodo is open source software for the Raspberry Pi that couples inputs and outputs in interesting ways to sense and manipulate the environment.

Mycodo Environmental Regulation System Latest version: 8.12.9 Mycodo is open source software for the Raspberry Pi that couples inputs and outputs in i

Kyle Gabriel 2.3k Dec 29, 2022
♟️ QR Code display for P4wnP1 (SSH, VNC, any text / URL)

♟️ Display QR Codes on P4wnP1 (p4wnsolo-qr) 🟢 QR Code display for P4wnP1 w/OLED (SSH, VNC, P4wnP1 WebGUI, any text / URL / exfiltrated data) Note: Th

PawnSolo 4 Dec 19, 2022
A simple portable USB MIDI controller based on Raspberry-PI Pico and a 16-button keypad, written in Circuit Python

RPI-Pico-16-BTn-MIDI-Controller-using-CircuitPython A simple portable USB MIDI controller based on Raspberry-PI Pico, written in Circuit Python. Link

Rounak Dutta 3 Dec 04, 2022
LifeSaver automatically, periodically saves USB flash drive data into the PC

LifeSaver automatically, periodically saves USB flash drive data into the PC. Theoriticaly it will work with any any connected drive ex - Hard Disk ,SSD ... But, can't handle Backing up multipatition

siddharth dhaka 4 Sep 26, 2021
Sleep Functionality for Adafruit MacroPad RP2040

Adafruit-MacroPad-RP2040 Sleep Functionality for Adafruit MacroPad RP2040 Details This is a modification of AdaFruit project bundle found here specifi

9 Dec 18, 2022
Robot Framework keyword library wrapper for atlassian-python-api

Robot Framework keyword library wrapper for atlassian-python-api

Marcin Koperski 3 Jul 29, 2022
3d printable macropad

Pico Mpad A 3D printable macropad for automating frequently repeated actions. Hardware To build this project you need access to a 3d printer. The mode

Dmytro Panin 94 Jan 07, 2023
gdsfactory is an EDA (electronics design automation) tool to Layout Integrated Circuits.

gdsfactory 3.5.5 gdsfactory is an EDA (electronics design automation) tool to Layout Integrated Circuits. It is build on top of phidl gdspy and klayou

147 Jan 04, 2023
Scripts for measuring and displaying thermal behavior on Voron 3D printers

Thermal Profiling Measuring gantry deflection and frame expansion This script runs a series of defined homing and probing routines designed to charact

Jon Sanders 30 Nov 27, 2022
ROS2 nodes for Waveshare Alphabot2-Pi mobile robot.

ROS2 for Waveshare Alphabot2-Pi This repo contains ROS2 packages for the Waveshare Alphabot2-Pi mobile robot: alphabot2: it contains the nodes used to

Michele Rizzo 2 Oct 11, 2022
Estimation of whether or not the persons given information will have diabetes.

Diabetes Business Problem : It is desired to develop a machine learning model that can predict whether people have diabetes when their characteristics

Barış TOKATLIOĞLU 0 Jan 20, 2022
A custom mechanical keyboard inspired by the CFTKB Mysterium

Env-KB A custom mechanical keyboard inspired by the CFTKB Mysterium Build Guide and Parts List What is to do? Right now for the first 5 PCBs I have, i

EnviousData 203 Jan 04, 2023
NYCT-GTFS - Real-time NYC subway data parsing for humans

NYCT-GTFS - Real-time NYC subway data parsing for humans This python library provides a human-friendly, native python interface for dealing with the N

Andrew Dickinson 37 Dec 27, 2022
Hardware-accelerated ROS2 packages for camera image processing.

Isaac ROS Image Pipeline Overview This metapackage offers similar functionality as the standard, CPU-based image_pipeline metapackage, but does so by

NVIDIA Isaac ROS 52 Dec 15, 2022
Intel Realsense t265 into Unreal Engine

t265_UE Intel Realsense t265 into Unreal Engine. Windows only, and Livelink plugin is 4.26.2 only at the moment. Might recompile it for different vers

Bjarke Aagaard 30 Jan 02, 2023
Lenovo Legion 5 Pro 2021 Linux RGB Keyboard Light Controller

Lenovo Legion 5 Pro 2021 Linux RGB Keyboard Light Controller This util allows to drive RGB keyboard light on Lenovo Legion 5 Pro 2021 Laptop Requireme

36 Dec 16, 2022
Self Driving Car Prototype

Package Delivery Rover 🚀 This project is a prototype of Self Driving Car. It's based on embedded systems, to meet the current requirement of delivery

Abhishek Pawar 1 Oct 31, 2021
An open source operating system designed primarily for the Raspberry Pi Pico, written entirely in MicroPython

PycOS An open source operating system designed primarily for the Raspberry Pi Pico, written entirely in MicroPython. "PycOS" is an combination of the

8 Oct 06, 2022
Python module for controlling Broadlink RM2/3 (Pro) remote controls, A1 sensor platforms and SP2/3 smartplugs

Python module for controlling Broadlink RM2/3 (Pro) remote controls, A1 sensor platforms and SP2/3 smartplugs

Matthew Garrett 1.2k Jan 04, 2023