6 Commits

Author SHA1 Message Date
topsinoty
750f1100a6 refactor: read the code and remake to match DiskoPidu 2026-01-02 02:36:11 +02:00
topsinoty
ffa77db057 use _lm.tempo and set sleep to 0 2025-12-21 16:10:41 +02:00
topsinoty
a71201d90a change to pascal case. 2025-12-21 16:01:37 +02:00
topsinoty
d811b853a1 change lib source to module 2025-12-21 15:54:53 +02:00
topsinoty
6d9c4b2f33 add generated christmas lights 2025-12-21 15:31:39 +02:00
siinus
33109455c9 Set paths absolute 2021-05-03 19:05:27 +03:00
3 changed files with 45 additions and 4 deletions

View File

@@ -1,4 +1,5 @@
from dotenv import dotenv_values from dotenv import dotenv_values
import pathlib
def populate_values(load: {}): def populate_values(load: {}):
@@ -26,9 +27,10 @@ class Config(object):
_config: {} = {} _config: {} = {}
def __init__(self): def __init__(self):
rp = str(pathlib.Path(__file__).parent.parent.absolute())
load_conf = { load_conf = {
**dotenv_values(".env.defaults"), **dotenv_values(rp + "/.env.defaults"),
**dotenv_values(".env"), **dotenv_values(rp + "/.env"),
} }
self._config = populate_values(load_conf) self._config = populate_values(load_conf)

View File

@@ -0,0 +1,38 @@
from lib.Program import Program
from rpi_ws281x import Color
import time
def name():
return 'Christmas Lights'
class ChristmasLights(Program):
def christmas_pattern(self, offset, segment_length=2):
RED = Color(255, 0, 0)
GREEN = Color(0, 255, 0)
WARM_WHITE = Color(200, 180, 60)
colors = [RED, GREEN, WARM_WHITE]
totalLength = self._lm.count_pixels()
for i in range(totalLength):
color_index = ((i + offset) // segment_length) % len(colors)
self._lm.set_pixel_color(i, colors[color_index])
self._lm.show()
return len(colors) * segment_length
def run(self, args=None):
# Fsr the application in the run file is different from
# the configuration in the Program and ProgramLoading files
loop = args.get("loop", False) if args else False
offset = 0
segment_length = 2
while self.get_loop().status():
self._lm.get_tempo().wait()
cycle_limit = self.christmas_pattern(offset, segment_length)
offset = (offset + 1) % cycle_limit
if not loop:
break

View File

@@ -1,11 +1,12 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import logging import logging
import pathlib
import sys import sys
import lib.ProgramLoading as Pl import lib.ProgramLoading as Pl
from lib.Litsimaja import Litsimaja from lib.Litsimaja import Litsimaja
from flask import Flask, request, Response, render_template, json from flask import Flask, request, Response, render_template, json
root_path = pathlib.Path(__file__).parent.absolute()
# start litsimaja # start litsimaja
lm = Litsimaja() lm = Litsimaja()
@@ -13,7 +14,7 @@ lm = Litsimaja()
logger = logging.getLogger('litsimaja') logger = logging.getLogger('litsimaja')
logger.setLevel(logging.DEBUG if lm.conf('IS_DEV') else logging.WARN) logger.setLevel(logging.DEBUG if lm.conf('IS_DEV') else logging.WARN)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler = logging.FileHandler('litsimaja.log') file_handler = logging.FileHandler(str(root_path) + '/litsimaja.log')
file_handler.setFormatter(formatter) file_handler.setFormatter(formatter)
logger.addHandler(file_handler) logger.addHandler(file_handler)
stdout_handler = logging.StreamHandler(sys.stdout) stdout_handler = logging.StreamHandler(sys.stdout)