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
DongshanPI Seven for STM32MP157DAC.

STM32MP1 Buildroot External Tree

DongshanPI 14 May 06, 2022
A low power 1U Raspberry Pi cluster server for inexpensive colocation.

Raspberry Pi 1U Server There are server colocation providers that allow hosting a 1U server for as low as $30/month, but there's a catch: There are re

Paul Brown 627 Dec 31, 2022
Small Robot, with LIDAR and DepthCamera. Using ROS for Maping and Navigation

🤖 RoboCop 🤖 Small Robot, with LIDAR and DepthCamera. Using ROS for Maping and Navigation Made by Clemente Donoso, 📍 Chile 🇨🇱 RoboCop Lateral Fron

Clemente Donoso Krauss 2 Jan 04, 2022
Port of Uxn to digital hardware in the Logisim simulator

Uxn-Logisim Implements the Uxn instruction set in digital hardware. Very WIP. Contents cpu.circ - The Logisim file microcode.mc - Microcode source fil

DeltaF1 11 Mar 27, 2022
The main aim of this project is to avoid the accidents in shredding ( Waste Recycling Industry )

shredder-Machine-Hand-Safety The main aim of this project is to avoid the accidents in shredding ( Waste Recycling Industry ) . The Basic function of

Shubham Chaudhari 1 Nov 15, 2021
Python Keylogger for Linux

A keylogger is a program that records your keystrokes, this program saves them in a .txt file on your local computer and, after 30 seconds (or as long as you want), it will close the .txt file and se

Darío Mazzitelli 4 Jul 31, 2021
uOTA - OTA updater for MicroPython

Update your device firmware written in MicroPython over the air. Suitable for private and/or larger projects with many files.

Martin Komon 25 Dec 19, 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
Homeautomation system created with Raspberry Pi 3 and Firebase.

Homeautomation System - Raspberry Pi 3 Desenvolvido com Python, Flask com AJAX e Firebase permite o controle local e remoto Itens necessários Raspberr

Joselino Santos 0 Mar 09, 2022
Yet another automation project because a smart light is more than just on or off.

Automate home Yet another home automation project because a smart light is more than just on or off. Overview When talking about home automation there

Maja Massarini 62 Oct 10, 2022
Adafruit IO connected smart thermostat based on CircuitPython.

Adafruit IO Thermostat Adafruit IO connected smart thermostat based on CircuitPython. Background and Motivation I have a 24 V Heat-only system with a

Shubham Chaudhary 1 Jan 18, 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
A python script to poll RPi GPIO pins and subscribe and publish their state via MQTT

MQTT-GPIO A python script to poll RPi GPIO pins and subscribe and publish their state via MQTT using TLS. This script is short and meant to be edited

23 Oct 12, 2021
[unmaintained] WiFi tools for linux

Note: This project is unmaintained. While I would love to keep up the development on this project, it is difficult for me for several reasons: I don't

Rocky Meza 288 Dec 13, 2022
Bucatini: a soft PIPE PHY for FPGA SerDes

Bucatini: a soft PIPE PHY for FPGA SerDes Bucatini is a noodly gateware layer capable of transforming an FPGA SerDes into a PIPE PHY, allowing you to

Great Scott Gadgets 28 Dec 02, 2022
It is a serial communicator(controller, receiver...), communicate with sensor LP20 which is a laser ranger.

Intro It is a serial communicator(controller, receiver...), communicate with sensor LP20 which is a laser ranger. Its datasheet is contained in this r

3 Sep 19, 2022
Playing diabolo with two robot arms in ROS + Gazebo

Playing diabolo with robots This repository holds the ROS packages for playing diabolo with two UR5e robot arms on ROS Melodic (Ubuntu 18.04). Read ou

23 Dec 18, 2022
Python Client for ESPHome native API. Used by Home Assistant.

aioesphomeapi aioesphomeapi allows you to interact with devices flashed with ESPHome. Installation The module is available from the Python Package Ind

ESPHome 76 Jan 04, 2023
Control DJI Tello with Raspberry Pi and PS4 Controller

Control-DJI-Tello-with-Raspberry-Pi-and-PS4-Controller Demo of this project see

MohammadReza Sharifi 24 Aug 11, 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