Netwerkmonitor met Blinkt!

      Geen reacties op Netwerkmonitor met Blinkt!

Met veel computers en Raspberry Pi’s in huis weet je vaak niet meer welke computer aanstaat en welke niet. Is de fileserver nog online? Of de printer in de andere kamer?

Heb ik de Pi 4 met RetroPie wel afgesloten? Of mijn energieverslindende game-pc? Met een Pi Zero W en de 8 neoleds van de Pimoroni Blinkt!, kun je op elk moment in één oogopslag zien wat er online is (en dus aanstaat) en wat niet.

lanmonitor

De Pi Zero LAN-monitor zit met een magneet in een hoekje van het whiteboard.

Kleine aanpassing

Om de Blinkt! netjes op de Pi te monteren hoef je alleen de originele behuizing van de Pi Zero te gebruiken met het meegeleverde dekseltje met de lange gleuf. Knip met een zijkniptang en witte randje aan de buitenkant van het dekseltje af en het dekseltje past naadloos rond de leds (zie foto).

Analoog en digitaal gecombineerd

De ruimte op het witte dekseltje naast de leds leent zich uitstekend voor het plakken van labels die aangeven welke led bij welke computer hoort. Met handgeschreven plakkertjes kun je de aanduidingen ook heel snel en gemakkelijk aanpassen.

Altijd in je ooghoek

Zorg dat de Pi-LAN-monitor in een hoek je van je gezichtsveld zit, maar niet hinderlijk dichtbij. De mijne paste daarom het beste in een hoekje van mijn whiteboard. Een paar gerecyclede neodymium-magneetjes aan de achterkant van de behuizing zorgden voor een stevige bevestiging.

De code

De code is gemaakt door Darren Hill en is erg eenvoudig. Hij pingt elke minuut één keer de gewenste apparaten in het netwerk en update de leds. Daarvoor maken we een lijst aan van de 8 ip-nummers en een lijst van de bijbehorende hostnamen.

lanmonitor.py

#!/usr/bin/python
# pingt elke minuut 8 apparaten in het lokale netwerk
# en gebruikt Pimoroni Blinkt-leds voor netwerkstatus:
# groen > bereikbaar; rood > niet bereikbaar

import os,signal
from blinkt import clear,set_brightness, set_pixel, show,set_all
from time import sleep

hostlist = ["192.168.2.22", "192.168.2.8", "192.168.2.17", "192.168.2.19", "192.168.2.36", "192.168.2.57", "192.168.2.63", "192.168.2.29"]
pihostid = ["PicShow", "Fileserver", "P4DSK4G", "Printer", "RetroPie", "P4DSK8G", "PiZeroMeteo", "SmartiPi"]

clear()
set_brightness(0.1)
set_all(0,0,100)
show()
sleep(10)

def handler(signum, frame):
    clear()
    show()
    exit(0)

signal.signal(signal.SIGTERM, handler)

while True:
    for hostnum, hostname in enumerate(hostlist):
        response = os.system("ping -c 1 -w2 " + hostname + " > /dev/null 2>&1")
        if response == 0:
#           print hostnum, ' - ', hostid[hostnum], 'is up!'
            set_pixel(hostnum, 0, 50, 0)
        else:
#           print hostnum, ' - ', hostid[hostnum], 'is down!'
            set_pixel(hostnum, 255, 0, 0)
    show()
    sleep(60)