pondelok 1. júla 2019

Pi-hole + blinkt

(publishing date: April 2nd, 2020)

0. blinks RED when a query is blocked
1. blinks GREEN when a query is provided from cache
2. blinks BLUE when a query is forwarded
3. not used
4.5.6. shows load1, load5 and load15 as scale blue->green->yellow->red
7. blinks WHITE when DHCP is assigned


My apologies for maybe non-pythonic code... This is my first python script compiled from several sources.

Running from cmd line:
/usr/bin/tail -f /var/log/pihole.log | stdbuf -oL /home/pi/python/piblikac.py

piblikac.py:
#!/usr/bin/python3 -u

import sys
import re
import os
import blinkt
import time
import threading
import random

FPS = 30
brightness = 0.2
delay = 1
loadbrightness = 0.05

random.seed(1)

def blikaj():
    while True:
        line = sys.stdin.readline()
        if re.search("0.0.0.0", line):
            blinkt.set_pixel(0,255,0,0,brightness)
            #print(line + " r")
        if re.search("cached", line):
            blinkt.set_pixel(1,0,255,0,brightness)
            #print(line + " g")
        if re.search("forwarded", line):
            blinkt.set_pixel(2,0,0,255,brightness)
        if re.search("DHCP", line):
            blinkt.set_pixel(7,255,255,255,brightness)
            #print(line + " b")
        load1, load5, load15 = os.getloadavg()
        if load1 < 0.1:
            blinkt.set_pixel(4,0,0,255,loadbrightness)
        elif load1 < 0.2:
            blinkt.set_pixel(4,0,128,255,loadbrightness)
        elif load1 < 0.3:
            blinkt.set_pixel(4,0,255,255,loadbrightness)
        elif load1 < 0.4:
            blinkt.set_pixel(4,0,255,128,loadbrightness)
        elif load1 < 0.5:
            blinkt.set_pixel(4,0,255,0,loadbrightness)
        elif load1 < 0.6:
            blinkt.set_pixel(4,128,255,0,loadbrightness)
        elif load1 < 0.7:
            blinkt.set_pixel(4,255,255,0,loadbrightness)
        elif load1 < 0.8:
            blinkt.set_pixel(4,255,128,0,loadbrightness)
        elif load1 < 0.9:
            blinkt.set_pixel(4,255,0,0,loadbrightness)

        if load5 < 0.1:
            blinkt.set_pixel(5,0,0,255,loadbrightness)
        elif load5 < 0.2:
            blinkt.set_pixel(5,0,128,255,loadbrightness)
        elif load5 < 0.3:
            blinkt.set_pixel(5,0,255,255,loadbrightness)
        elif load5 < 0.4:
            blinkt.set_pixel(5,0,255,128,loadbrightness)
        elif load5 < 0.5:
            blinkt.set_pixel(5,0,255,0,loadbrightness)
        elif load5 < 0.6:
            blinkt.set_pixel(5,128,255,0,loadbrightness)
        elif load5 < 0.7:
            blinkt.set_pixel(5,255,255,0,loadbrightness)
        elif load5 < 0.8:
            blinkt.set_pixel(5,255,128,0,loadbrightness)
        elif load5 < 0.9:
            blinkt.set_pixel(5,255,0,0,loadbrightness)

        if load15 < 0.1:
            blinkt.set_pixel(6,0,0,255,loadbrightness)
        elif load15 < 0.2:
            blinkt.set_pixel(6,0,128,255,loadbrightness)
        elif load15 < 0.3:
            blinkt.set_pixel(6,0,255,255,loadbrightness)
        elif load15 < 0.4:
            blinkt.set_pixel(6,0,255,128,loadbrightness)
        elif load15 < 0.5:
            blinkt.set_pixel(6,0,255,0,loadbrightness)
        elif load15 < 0.6:
            blinkt.set_pixel(6,128,255,0,loadbrightness)
        elif load15 < 0.7:
            blinkt.set_pixel(6,255,255,0,loadbrightness)
        elif load15 < 0.8:
            blinkt.set_pixel(6,255,128,0,loadbrightness)
        elif load15 < 0.9:
            blinkt.set_pixel(6,255,0,0,loadbrightness)

        #print (line)
def zhasinaj():
    while True:
        stoj = random.random()/4
        time.sleep(stoj)
        blinkt.set_pixel(0, 0, 0, 0)
        stoj = random.random()/4
        time.sleep(stoj)
        blinkt.set_pixel(1, 0, 0, 0)
        stoj = random.random()/4
        time.sleep(stoj)
        blinkt.set_pixel(2, 0, 0, 0)
        stoj = random.random()/4
        time.sleep(stoj)
        blinkt.set_pixel(7, 0, 0, 0)

        #time.sleep(delay/4*3)
        #blinkt.set_brightness(brightness/2)
        #time.sleep(delay/4)
        #blinkt.set_brightness(0)

if __name__ == '__main__':
    threading.Thread(target = blikaj).start()
    threading.Thread(target = zhasinaj).start()
    while True:
        blinkt.show()
        time.sleep(1.0/FPS)

Žiadne komentáre:

Zverejnenie komentára