from collections import UserString # # Device TYpe definitions # DTY_SHY_SW1 = 1 """ Shelly """ DTY_TLI_Sxx = 2 """ Tradfri Light (Switching only) """ DTY_TLI_SBx = 3 """ Tradfri Light (Switching and Brightnes) """ DTY_TLI_SBT = 4 """ Tradfri Light (Switching, Brightnes and Colortemperature) """ DTY_TIN_5xx = 5 """ Tradfri Input Device (5 Buttons) """ DTY_LLI_SBT = 6 """ Livarno Light (Switching, Brightnes and Colortemperature) """ DTY_BVL_xxx = 7 """ Brennenstuhl Heatingvalve """ DTY_SPP_SW1 = 8 """ Silvercrest Powerplug """ DTY_SMS_xxx = 9 """ Silvercrest Motion Sensor """ DTY_MPP_4xx = 10 """ My Powerplug (4 plugs) """ DTY_MAS_xxx = 11 """ My Audio status (MPD) """ DTY_MRE_xxx = 12 """ My Remote control """ DTY_MAM_THP = 13 """ My Ambient Information (Temperature, Humidity, Pressure)""" # # Source Transmission Group # STG_ZGW = 1 """ Zigbee ground floor west """ STG_ZFW = 2 """ Zigbee first floor west """ STG_ZFE = 3 """ Zigbee first floor east """ STG_SHE = 4 """ Shellies """ STG_MYA = 5 """ My Applications """ # # LOCation # LOC_GFW = 1 """ Grounf floor west """ LOC_GFE = 2 """ Ground floor east """ LOC_STW = 3 """ Stairway """ LOC_FFW = 4 """ First floor west """ LOC_FFE = 5 """ First floor east """ LOC_STW = 6 """ Stairways """ LOC_GAR = 7 # # ROOms # ROO_DIN = 1 """ Diningroom """ ROO_KIT = 2 """ Kitchen """ ROO_LIV = 3 """ Livingroom """ ROO_FLO = 4 """ Floor """ ROO_SLP = 5 """ Sleep """ ROO_BAT = 6 """ Bath """ ROO_DIR = 7 """ Dirk """ ROO_MAR = 8 """ Marion """ ROO_JUL = 9 """ Julian """ ROO_STG = 10 """ ground floor """ ROO_STF = 11 """ first floor """ ROO_GAR = 12 """ garden """ # # FUNctions # FUN_MAL = 1 """ Main Light """ FUN_DEL = 2 """ Desk Light """ FUN_FLL = 3 """ Floor Light """ FUN_BLD = 4 """ Bed Light Dirk """ FUN_BLM = 5 """ Bed Light Marion """ FUN_HEA = 6 """ Heating """ FUN_MPP = 7 """ Multiple Powerplugs """ FUN_INP = 8 """ Input Device """ FUN_CIR = 9 """ Circulation Pump """ FUN_GAR = 10 """ Garland """ FUN_XTR = 11 """ X-Mas Tree """ FUN_XST = 12 """ X-Mas Star """ FUN_MSE = 13 """ Motion Sensor """ FUN_RCA = 14 """ Remote Control Amplifier """ FUN_RCC = 15 """ Remote Control CD-Player """ FUN_ASS = 16 """ Audio status spotify """ FUN_ASM = 17 """ Audio status mpd """ FUN_ASB = 18 """ Audio status bluetooth """ FUN_DCK = 19 """ Docking Station """ FUN_AMB = 20 """ Ambient information """ FUN_REP = 21 """" Repeater suppla """ FUN_WLI = 22 """ Wardrobe light """ class topic_by_props(UserString): def __init__(self, stg, loc, roo, fun): UserString.__init__(self, '/'.join([self.__stg_repr__(stg), self.__loc_repr__(loc), self.__roo_repr__(roo), self.__fun_repr__(fun)])) def __stg_repr__(self, stg): return { STG_ZGW: 'zigbee_gfw', STG_ZFW: 'zigbee_ffw', STG_ZFE: 'zigbee_ffe', STG_SHE: 'shellies', STG_MYA: 'my_apps', }.get(stg) def __loc_repr__(self, loc): return { LOC_GFW: 'gfw', LOC_GFE: 'gfe', LOC_STW: 'stw', LOC_FFW: 'ffw', LOC_FFE: 'ffe', LOC_STW: 'stw', LOC_GAR: 'gar', }.get(loc) def __roo_repr__(self, roo): return { ROO_DIN: 'diningroom', ROO_KIT: 'kitchen', ROO_LIV: 'livingroom', ROO_FLO: 'floor', ROO_SLP: 'sleep', ROO_BAT: 'bath', ROO_DIR: 'dirk', ROO_MAR: 'marion', ROO_JUL: 'julian', ROO_STG: 'groundfloor', ROO_STF: 'firstfloor', ROO_GAR: 'garden', }.get(roo) def __fun_repr__(self, fun): return { FUN_MAL: 'main_light', FUN_DEL: 'desk_light', FUN_FLL: 'floor_light', FUN_BLD: 'bed_light_di', FUN_BLM: 'bed_light_ma', FUN_HEA: 'heating_valve', FUN_MPP: 'powerplug', FUN_INP: 'input_device', FUN_DCK: 'dock', FUN_CIR: 'circulation_pump', FUN_GAR: 'garland', FUN_XTR: 'xmas-tree', FUN_XST: 'xmas-star', FUN_MSE: 'motion_sensor', FUN_RCA: 'remote_ctrl/RAS5', FUN_RCC: 'remote_ctrl/EUR642100', FUN_ASS: 'audio_status_spotify', FUN_ASM: 'audio_status_mpd', FUN_ASB: 'audio_status_bt', FUN_AMB: 'ambient', FUN_REP: 'repeater', FUN_WLI: 'wardrobe_light', }.get(fun)