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
CO2Ampel - This RaspberryPi project uses weather data to estimate the share of renewable energy in the power grid

CO2Ampel This RaspberryPi project uses weather data to estimate the share of ren

Felix 4 Jan 19, 2022
Raspberry Pi Pico as a Rubber Ducky

Raspberry-Pi-Pico-as-a-Rubber-Ducky Kurulum Raspberry Pi Pico cihazınız için CircuitPython'u indirin. Boot düğmesine basılı tutarken cihazı bir USB ba

Furkan Enes POLATOĞLU 6 Dec 13, 2022
A python module for interacting with rolimon's, a roblox value site.

rpi - rolimon's python interaction rpi is an open source python-based rolimon's api wrapper. It provides an end-to-end pipeline in which each componen

Acier 11 Nov 08, 2022
Andreas Frisch 1 Jan 10, 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
BMP180 sensor driver for Home Assistant used in Raspberry Pi

BMP180 sensor driver for Home Assistant used in Raspberry Pi Custom component BMP180 sensor for Home Assistant. Copy the content of this directory to

747Developments 1 Dec 17, 2021
An alternative to Demise-Assistant-Batch made entirely in Python for more capabilities.

Demise-Assistant-Python An alternative to Demise-Assistant-Batch made entirely in Python for more capabilities. IMPORTANT NOTE Demise-Assistant-Batch

SkelOrganisation 1 Nov 24, 2021
Workshop for student hackathons focused on IoT dev

Scenario: The Mutt Matcher (IoT version) According to the World Health Organization there are more than 200 million stray dogs worldwide. The American

Microsoft 15 Aug 10, 2022
FHEM Connector for FHT Heating devices

home-assistant-fht from: https://github.com/Rsclub22 FHEM Connector for FHT Heating devices (connected via FHEM) Requires FHEM to work You can find FH

5 Dec 01, 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
Automate gate/garage door opening via 433.92MHz emitter with Raspberry Pi, Home Assistant and Homekit.

Automate opening your garage door / gate Summary This project sums up how I automated opening my garage door using a Raspberry PI, a 433Mhz emitter, H

Julien Fouilhé 29 Nov 30, 2022
This OctoPrint plugin will make the initial connection to 3D Hub a breeze

3D Hub Connector This OctoPrint plugin will make the initial connection to 3D Hub a breeze. In future it will help in setting up a tunnel connection a

3D Hub 2 Aug 03, 2022
OctoPrint is the snappy web interface for your 3D printer!

OctoPrint OctoPrint provides a snappy web interface for controlling consumer 3D printers. It is Free Software and released under the GNU Affero Genera

OctoPrint 7.1k Jan 03, 2023
Provide Unifi device info via api to Home Assistant that will give ap sensors

Unifi AP Device info Provide Unifi device info via api to Home Assistant that will give ap sensors

12 Jan 07, 2023
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
2D waypoints will be predefined in ROS based robots to navigate to the destination avoiding obstacles.

A number of 2D waypoints will be predefined in ROS based robots to navigate to the destination avoiding obstacles.

Arghya Chatterjee 5 Nov 05, 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
circuitpython version of PyBasic for microcontrollers

cPyBasic Circuitpython version of PyBasic for microcontrollers Current version work only for Adafruit titano & CardKB for now. The origninal PyBasic w

BeBoXoS 3 Nov 14, 2021
a fork of the OnionShare software better optimized for lower spec lightweight machines and ARM processors

OnionShare-Optimized A fork of the OnionShare software better optimized for lower spec lightweight machines and ARM processors such as Raspberry Pi or

ALTPORT 4 Aug 05, 2021
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