Skip to content
Snippets Groups Projects
Verified Commit febe50b4 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Add reactions for LED cheese to blink and turn off

parent b93a2335
No related branches found
No related tags found
No related merge requests found
...@@ -20,6 +20,7 @@ from machine import Pin, PWM ...@@ -20,6 +20,7 @@ from machine import Pin, PWM
from credentials import * from credentials import *
from wifi import Wifi from wifi import Wifi
from mytrix import Matrix from mytrix import Matrix
from random import getrandbits
def set_colour(matches, event): def set_colour(matches, event):
...@@ -49,11 +50,9 @@ def set_colour(matches, event): ...@@ -49,11 +50,9 @@ def set_colour(matches, event):
) )
return return
# Map to red, blue and green values, and set PWM duty (scaled from 256 to 1024) # Map to red, blue and green values
r, g, b = colour_map[colour] r, g, b = colour_map[colour]
led_red.duty(r * 4) set_leds(r, g, b)
led_green.duty(g * 4)
led_blue.duty(b * 4)
matrix.send_room_message(ROOM_ID, "Ich leuchte jetzt %s, %s!" % (colour, sender)) matrix.send_room_message(ROOM_ID, "Ich leuchte jetzt %s, %s!" % (colour, sender))
...@@ -69,7 +68,6 @@ def is_allowed(sender): ...@@ -69,7 +68,6 @@ def is_allowed(sender):
matrix.send_room_message(ROOM_ID, "Du hast mir gar nichts zu sagen, %s!" % (sender,)) matrix.send_room_message(ROOM_ID, "Du hast mir gar nichts zu sagen, %s!" % (sender,))
return False return False
def allow_user(matches, event): def allow_user(matches, event):
"""Add a user to the allow list.""" """Add a user to the allow list."""
user = matches.group(1) user = matches.group(1)
...@@ -80,11 +78,50 @@ def allow_user(matches, event): ...@@ -80,11 +78,50 @@ def allow_user(matches, event):
f.write(user + "\n") f.write(user + "\n")
matrix.send_room_message(ROOM_ID, "%s darf mich jetzt leuchten lassen!" % (user,)) matrix.send_room_message(ROOM_ID, "%s darf mich jetzt leuchten lassen!" % (user,))
def not_stupid(matches, event):
"""Say that the cheese is not stupid."""
sender = event["sender"]
matrix.send_room_message(ROOM_ID, "Ich bin nicht bloed, %s!" % (sender,))
blink((255, 0, 0), 5, 0.3)
def party(matches, event):
"""Blink wildly."""
sender = event["sender"]
if is_allowed(sender):
matrix.send_room_message(ROOM_ID, "Cheesy party, dingelingeling! Chessy-cheesy-cheeeeese, yay!")
for _ in range(10):
r = getrandbits(8)
g = getrandbits(8)
b = getrandbits(8)
blink((r, g, b), 2, 0.3)
def off(matches, event):
"""Turn LEDs off."""
sender = event["sender"]
if is_allowed(sender):
matrix.send_room_message(ROOM_ID, "Nerv ich? Na gut...")
set_leds(0, 0, 0)
def fallback(matches, event): def fallback(matches, event):
"""Fallback fo unknown messages.""" """Fallback fo unknown messages."""
sender = event["sender"] sender = event["sender"]
matrix.send_room_message(ROOM_ID, "Was willst du, %s?" % (sender,)) matrix.send_room_message(ROOM_ID, "Was willst du, %s?" % (sender,))
def set_leds(r, g, b):
"""Set PWM duty (scaled from 256 to 1024)."""
led_red.duty(r * 4)
led_green.duty(g * 4)
led_blue.duty(b * 4)
def blink(rgb, times, pause):
"""Blink in rgb color, times times, with pause ms delay."""
r, g, b = rgb
for _ in range(times):
set_leds(r, g, b)
time.sleep(pause)
set_leds(0, 0, 0)
time.sleep(pause)
# Define LED colour pins and PWM objects # Define LED colour pins and PWM objects
pin_red = Pin(13, Pin.OUT) pin_red = Pin(13, Pin.OUT)
pin_green = Pin(12, Pin.OUT) pin_green = Pin(12, Pin.OUT)
...@@ -102,9 +139,12 @@ matrix = Matrix(HOMESERVER, MATRIX_ID, ACCESS_TOKEN) ...@@ -102,9 +139,12 @@ matrix = Matrix(HOMESERVER, MATRIX_ID, ACCESS_TOKEN)
# On which texts to react and which LEDs to turn on # On which texts to react and which LEDs to turn on
cases = OrderedDict() cases = OrderedDict()
cases["%s, leuchte (.*)" % (NICK,)] = set_colour cases["^%s, leuchte (.*)" % (NICK,)] = set_colour
cases["%s, hoer auf (.*)" % (NICK,)] = allow_user cases["^%s, hoer auf (.*)" % (NICK,)] = allow_user
cases["%s.*" % (NICK,)] = fallback cases["^%s, aus" % (NICK,)] = off
cases["bloeder kaese"] = not_stupid
cases["kaeseparty"] = party
cases["^%s.*" % (NICK,)] = fallback
if network.is_connected(): if network.is_connected():
# Set my nickname and avatar # Set my nickname and avatar
...@@ -121,4 +161,4 @@ if network.is_connected(): ...@@ -121,4 +161,4 @@ if network.is_connected():
# Wait for a message # Wait for a message
while True: while True:
matrix.react_room_messages(ROOM_ID, cases, regex=True) matrix.react_room_messages(ROOM_ID, cases, regex=True)
time.sleep(10) time.sleep(3)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment