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
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
HA-Edge-Connector - HA Edge Connector For Python

HA-Edge-Connector 1. Required a. Smartthings Hub & Homeassistant must be in same

chals 21 Dec 29, 2022
Blender Camera Switcher

Blender Camera Switcher A simple camera switcher addon for blender. Useful when use reference image for camera. This addon will automatically fix the

Corgice 1 Jan 31, 2022
A blender 2.9x addon for managing camera settings

TMG-Camera-Tools A blender 2.9x addon for managing camera settings Tutorial showcasing current features

Mainman002 12 Apr 16, 2022
BoneIO is a compact IO controller for home automation.

Project description BoneIO is a compact IO controller for home automation. Main features of this controller are Compact size (27x11x6)cm - 15 DIN modu

Maciej Krasuski 120 Nov 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
A LiteX project which builds a SoC with DRAM / HDIM output via the GPDI SYZYGY addon.

ButterStick GPDI LiteX demo A LiteX project which builds a SoC with DRAM / HDIM output via the GPDI SYZYGY addon. Getting started Connect GPDI board t

4 Nov 21, 2021
a library for using WS2812b leds (aka neopixels) with Raspberry Pi Pico

pico_ws2812b a library for using WS2812b leds (aka neopixels) with Raspberry Pi Pico You'll first need to save the ws2812b.py file to your device (for

76 Nov 25, 2022
Repo for the esp32s2 version of the Wi-Fi Nugget

Repo for the esp32s2 version of the Wi-Fi Nugget

HakCat 30 Nov 05, 2022
OPNsense integration with Home Assistant

hass-opnsense Join OPNsense with home-assistant! hass-opnsense uses the built-in xmlrpc service of OPNsense for all interactions. This project is curr

Travis Glenn Hansen 54 Jan 03, 2023
Huawei Solar sensors for Home Assistant

Huawei Solar Sensors This integration splits out the various values that are fetched from your Huawei Solar inverter into separate HomeAssistant senso

Thijs Walcarius 151 Dec 31, 2022
Custom component for MPC-HC for home-assistant

mpc_hc The current mpchc integration in homeassistant violates ADR0004, so it will be deleted from core. This is just the existing integration copied

3 Dec 15, 2022
Add filters (background blur, etc) to your webcam on Linux.

webcam-filters Add filters (background blur, etc) to your webcam on Linux. Video conferencing applications tend to either lack video effects altogethe

Jashandeep Sohi 480 Dec 14, 2022
Tools and documentation to aid in modifying the ADI ADALM Pluto firmware

Pluto firmware modifications This repository contains tools and documentation to aid in modifying the ADI ADALM Pluto firmware. Extraction of the Plut

Daniel Estévez 28 Dec 21, 2022
MicroPython driver for 74HC595 shift registers

MicroPython 74HC595 A MicroPython library for 74HC595 8-bit shift registers. There's both an SPI version and a bit-bang version, each with a slightly

Mike Causer 17 Nov 29, 2022
For use with an 8-bit parallel TFT touchscreen using micropython

ILI9341-parallel-TFT-driver-for-micropython For use with an 8-bit parallel TFT touchscreen using micropython. Many thanks to prenticedavid and his MCU

3 Aug 02, 2022
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
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
Micro Displays for Raspberry Pi

micro-displays Micro Displays for Raspberry Pi Why? I'm super bored in lockdown. Add a Raspberry Pi 400 and a few tiny displays... The top half of the

ig 291 Jul 06, 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