verschiedene modien
This commit is contained in:
@@ -29,7 +29,6 @@ CONFIG = load_config()
|
||||
LED_COUNT = 60 # Number of LED pixels.
|
||||
LED_PIN = board.D18 # GPIO pin connected to the pixels (must support PWM!).
|
||||
LED_PIXEL_ORDER = neopixel.GRB # Strip type and colour ordering
|
||||
LED_BRIGHTNESS = 0.05
|
||||
|
||||
# Zahl stellt den Wert in Minuten dar, wie lange kein Gerät erreichbar sein darf dass die Uhr "abgeschalten" wird
|
||||
ABSCHALTWERT = 4
|
||||
@@ -51,13 +50,20 @@ stdliste = [std0, std1, std2, std3, std4, std5, std6, std7, std8, std9, std10, s
|
||||
|
||||
|
||||
class Uhr:
|
||||
def __init__(self, pixels):
|
||||
def __init__(self, pixels, mode):
|
||||
self.helligkeit = pixels.brightness
|
||||
self.pixels = pixels
|
||||
self.helligkeit_geaendert = None
|
||||
self.mode = mode
|
||||
self._rgb_leer = None
|
||||
self._rgb_sekunde = None
|
||||
self._rgb_minute = None
|
||||
self._rgb_stunde = None
|
||||
|
||||
def set_helligkeit(self, helligkeit):
|
||||
self.helligkeit = helligkeit
|
||||
self.pixels.brightness = self.helligkeit
|
||||
self.helligkeit_geaendert = datetime.datetime.now()
|
||||
|
||||
def helligkeit_erhoehen(self):
|
||||
self.helligkeit += 0.05
|
||||
@@ -71,6 +77,18 @@ class Uhr:
|
||||
self.helligkeit = 1
|
||||
self.set_helligkeit(self.helligkeit)
|
||||
|
||||
def rgb_farben_lesen(self):
|
||||
self._rgb_leer = CONFIG["mode"][self.mode]["leer"]
|
||||
self._rgb_sekunde = CONFIG["mode"][self.mode]["sekunde"]
|
||||
self._rgb_minute = CONFIG["mode"][self.mode]["minute"]
|
||||
self._rgb_stunde = CONFIG["mode"][self.mode]["stunde"]
|
||||
|
||||
rgbconf = {"rgb_leer": self._rgb_leer, "rgb_s": self._rgb_sekunde, "rgb_min": self._rgb_minute,
|
||||
"rgb_std": self._rgb_stunde}
|
||||
print("In der Klasse:")
|
||||
print(rgbconf)
|
||||
return rgbconf
|
||||
|
||||
|
||||
# GPIO
|
||||
I_MODE_TASTER = gpiozero.Button(3)
|
||||
@@ -78,17 +96,10 @@ I_PLUS_TASTER = gpiozero.Button(4)
|
||||
I_MINUS_TASTER = gpiozero.Button(17)
|
||||
|
||||
|
||||
# # # # # # # # # #
|
||||
# Funktionen
|
||||
# # # # # # # # # #
|
||||
# Farbkonfiguration
|
||||
def rgb_standard():
|
||||
rgb_leer = [0, 0, 0]
|
||||
rgb_s = [0, 180, 0]
|
||||
rgb_min = [32, 178, 170]
|
||||
rgb_std = [255, 0, 255]
|
||||
rgbconf = {"rgb_leer": rgb_leer, "rgb_s": rgb_s, "rgb_min": rgb_min, "rgb_std": rgb_std}
|
||||
return rgbconf
|
||||
def config_schreiben(pfad=SKRIPTPFAD):
|
||||
configfile = os.path.join(pfad, "uhr_cfg.toml")
|
||||
with open(configfile, "w") as conffile:
|
||||
conffile.write(toml.dumps(CONFIG))
|
||||
|
||||
|
||||
def alle_led(r, g, b, pixels):
|
||||
@@ -153,7 +164,7 @@ def shutdown():
|
||||
|
||||
|
||||
# Threads
|
||||
def check_anwesenheit(uhr):
|
||||
def check_anwesenheit(uhr, pixels):
|
||||
"""Funktion, welche als eigener Thread laeuft, um selbststaendig in einem gewissenen Intervall
|
||||
alle Geraete in der Toml Liste zu pingen
|
||||
arg: Objekt des neopixel LED Ringes
|
||||
@@ -178,7 +189,7 @@ def check_anwesenheit(uhr):
|
||||
"""pingt die IP 3x an
|
||||
return (0 | !0) 0 wenn erreichbar
|
||||
"""
|
||||
befehl = "/usr/bin/arping -c 3 -w 10 -b -f -I {interface} {ip}".format(interface=interface, ip=ip)
|
||||
befehl = "/usr/bin/arping -q -c 3 -w 10 -b -f -I {interface} {ip}".format(interface=interface, ip=ip)
|
||||
cmd = shlex.split(befehl)
|
||||
return subprocess.call(cmd)
|
||||
|
||||
@@ -219,10 +230,10 @@ def check_anwesenheit(uhr):
|
||||
if len(status_anwesend_liste) > ABSCHALTWERT:
|
||||
helligkeit = 0
|
||||
if status["dimmen"]:
|
||||
helligkeit = uhr.helligkeit * 0.5
|
||||
helligkeit = 0.03
|
||||
if now.hour < 5 and not status["dimmen"]:
|
||||
helligkeit = 0
|
||||
uhr.set_helligkeit(helligkeit)
|
||||
pixels.brightness = helligkeit
|
||||
last = datetime.datetime.now()
|
||||
delta = now - last
|
||||
time.sleep(30)
|
||||
@@ -231,12 +242,15 @@ def check_anwesenheit(uhr):
|
||||
def main():
|
||||
lastsecond = None
|
||||
led_gesetzt = 0
|
||||
rgbconf = rgb_standard()
|
||||
pixels = neopixel.NeoPixel(LED_PIN, LED_COUNT, brightness=LED_BRIGHTNESS,
|
||||
|
||||
pixels = neopixel.NeoPixel(LED_PIN, LED_COUNT, brightness=CONFIG["led_helligkeit"],
|
||||
auto_write=False, pixel_order=LED_PIXEL_ORDER)
|
||||
uhr = Uhr(pixels)
|
||||
thread_check_wlan = threading.Thread(target=check_anwesenheit, args=(uhr,))
|
||||
uhr = Uhr(pixels, CONFIG["mode_nummer"])
|
||||
thread_check_wlan = threading.Thread(target=check_anwesenheit, args=(uhr, pixels))
|
||||
thread_check_wlan.start()
|
||||
|
||||
rgbconf = uhr.rgb_farben_lesen()
|
||||
print(rgbconf)
|
||||
alle_led(rgbconf["rgb_leer"][0], rgbconf["rgb_leer"][1], rgbconf["rgb_leer"][2], pixels)
|
||||
|
||||
I_PLUS_TASTER.when_pressed = uhr.helligkeit_erhoehen
|
||||
@@ -244,10 +258,16 @@ def main():
|
||||
|
||||
try:
|
||||
while True:
|
||||
rgbconf = rgb_standard()
|
||||
rgbconf = uhr.rgb_farben_lesen()
|
||||
print(rgbconf)
|
||||
now = datetime.datetime.now()
|
||||
if lastsecond != now.second:
|
||||
lastsecond, led_gesetzt = led_calc(now, stdliste, rgbconf, led_gesetzt, pixels)
|
||||
if uhr.helligkeit_geaendert is not None:
|
||||
if (datetime.datetime.now() - uhr.helligkeit_geaendert) > datetime.timedelta(seconds=30):
|
||||
CONFIG["led_helligkeit"] = uhr.helligkeit
|
||||
config_schreiben()
|
||||
uhr.helligkeit_geaendert = None
|
||||
time.sleep(0.2)
|
||||
finally:
|
||||
pixels.brightness = 0
|
||||
|
||||
Reference in New Issue
Block a user