def set_light_position(tunnel, x, y, color): addresses = [] print(range(x + constants.RADIUS, x - constants.RADIUS)) for j in range(0, len(constants.LED_POSITION)): if constants.LED_POSITION[j][0] <= x + constants.RADIUS and ( constants.LED_POSITION[j][0] >= x - constants.RADIUS): if y + constants.RADIUS >= constants.LED_POSITION[j][ 1] >= y - constants.RADIUS: print(constants.LED_POSITION[j][2]) for i in range(0, len(constants.LIGHT_LOOKUP_TABLE)): if constants.LIGHT_LOOKUP_TABLE[i][ 0] == constants.LED_POSITION[j][2]: print(constants.LIGHT_LOOKUP_TABLE[i][1]) if constants.LIGHT_LOOKUP_TABLE[i][2] == 1: if set_led( tunnel, toknx(constants.LIGHT_LOOKUP_TABLE[i][1]), color[3]): return 1 elif constants.LIGHT_LOOKUP_TABLE[i][2] == 4: if set_rgb( tunnel, toknx(constants.LIGHT_LOOKUP_TABLE[i][1]), color): return 1 return 0
def flic_test(): light_info_deveui = file_WR.RW_light_info_read() sensor_id = 'A81758FFFE030461' status = light_info_deveui[sensor_id]["flic_status"] if status == 1: addresses = [['14/2/41', 1, 0], ['14/2/46', 1, 0], ['14/3/81', 4, 0], ['14/3/101', 4, 0], ['14/3/121', 4, 190], ['14/3/141', 4, 190], ['14/3/161', 4, 230], ['14/3/181', 4, 230], ['14/3/201', 4, 230], ['14/3/221', 4, 230]] for add in addresses: if add[1] == 1: if sdl_knx.set_led(tunnel, toknx(add[0]), add[2]): print('1') return 1 else: if sdl_knx.set_rgb(tunnel, toknx(add[0]), [0, 0, 0, add[2]]): print('1') return 1 file_WR.RW_light_info_update('presentation', 'flic_status', 0) return "All lights" else: zone_name = "presentation" color = [0, 0, 0, 253] file_WR.RW_light_info_update('presentation', 'flic_status', 1) if sdl_knx.set_light_zone(tunnel, zone_name, color): restart() return "Unable to write to the KNX bus" else: return "All lights were set successfully"
def set_light_zone(tunnel, zone_name, color): addresses = [] if len(zone_name.split('_')) == 3: name0 = zone_name.split('_')[0].upper() name1 = zone_name.split('_')[1].upper() name2 = zone_name.split('_')[2].upper() i = 0 for x in range(0, len(constants.LIGHT_LOOKUP_TABLE)): if constants.LIGHT_LOOKUP_TABLE[x][0].split('_')[0] == name0: if constants.LIGHT_LOOKUP_TABLE[x][0].split('_')[1] == name1: if constants.LIGHT_LOOKUP_TABLE[x][0].split( '_')[2] == name2: addresses.append([ constants.LIGHT_LOOKUP_TABLE[x][1], constants.LIGHT_LOOKUP_TABLE[x][2] ]) i = i + 1 elif len(zone_name.split('_')) == 2: name0 = zone_name.split('_')[0].upper() name1 = zone_name.split('_')[1].upper() i = 0 for x in range(0, len(constants.LIGHT_LOOKUP_TABLE)): if constants.LIGHT_LOOKUP_TABLE[x][0].split('_')[0] == name0: if constants.LIGHT_LOOKUP_TABLE[x][0].split('_')[1] == name1: addresses.append([ constants.LIGHT_LOOKUP_TABLE[x][1], constants.LIGHT_LOOKUP_TABLE[x][2] ]) i = i + 1 elif len(zone_name.split('_')) == 1: name0 = zone_name.split('_')[0].upper() i = 0 for x in range(0, len(constants.LIGHT_LOOKUP_TABLE)): if constants.LIGHT_LOOKUP_TABLE[x][0].split('_')[0] == name0: addresses.append([ constants.LIGHT_LOOKUP_TABLE[x][1], constants.LIGHT_LOOKUP_TABLE[x][2] ]) i = i + 1 for x in range(0, len(addresses)): print(addresses[x][0]) if addresses[x][1] == 1: if set_led(tunnel, toknx(addresses[x][0]), color[3]): print('1') return 1 elif addresses[x][1] == 4: if set_rgb(tunnel, toknx(addresses[x][0]), color): print('1') return 1 file_WR.RW_light_info_update(zone_name, "brightness_level", color[3]) return 0
def on_message(client, userdata, msg): #print(msg.topic+" "+str(msg.payload)) rcv_euid = str(msg.topic).split('/')[4] if rcv_euid in [row[0] for row in constants.DSL_MOTION_SENSORS]: rcv_euid_index = [row[0] for row in constants.DSL_MOTION_SENSORS ].index(rcv_euid) print("SDL sensor motion detected." + " Location: " + constants.DSL_MOTION_SENSORS[rcv_euid_index][1]) if constants.DSL_MOTION_SENSORS[rcv_euid_index][1] is 'Wiki_1': print("Switching on lights Wiki 1") sdl_knx.setled(tunnel, toknx(constants.WIKIHOUSE_1), 255) if constants.DSL_MOTION_SENSORS[rcv_euid_index][1] is 'Wiki_2': print("Switching on lights Wiki 2") sdl_knx.setled(tunnel, toknx(constants.WIKIHOUSE_2), 255)
from flask import Flask from knxip.ip import KNXIPTunnel from random import randint from knxip.core import parse_group_address as toknx import time import threading import src.constants as constants import src.file_WR as file_WR # All SDL constants rgb_first = toknx(constants.RGB_FIRST_KNX) led_first = toknx(constants.LED_FIRST_KNX) save_var_rgb = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] class Animation(threading.Thread): def __init__(self, tunnel): threading.Thread.__init__(self) self.tunnel = tunnel self.method_name = 'stop' self.exit_method = 'all_on' print('anim init') def run(self): """Code that execute during the thread Change the "method_name" to a valid animation name before starting the thread, if not the thread will stop immediately.