class str_with_attr(str): def __new__(cls, val): obj = str.__new__(cls, val) return obj def get_floor_redis_keys(floor_num): keys = dict() swa = str_with_attr keys['vis_status'] = swa( 'nugget_house_lighting_'+str(floor_num)+'_vis_status' ) keys['vis_status'].default = 'off' keys['vis_status'].dtype = str keys['ir_status'] = swa( 'nugget_house_lighting_'+str(floor_num)+'_ir_status' ) keys['ir_status'].default = 'on' keys['ir_status'].dtype = str keys['vis_intensity'] = swa( 'nugget_house_lighting_'+str(floor_num)+'_vis_intensity' ) keys['vis_intensity'].default = 0 keys['vis_intensity'].dtype = int keys['ir_intensity'] = swa( 'nugget_house_lighting_'+str(floor_num)+'_ir_intensity') keys['ir_intensity'].default = 100 keys['ir_intensity'].dtype = int keys['has_changed'] = swa('nugget_house_lighting_'+str(floor_num)+'_has_changed') keys['has_changed'].default = True keys['has_changed'].dtype = bool return keys def get_redis_values(r, keys): out = dict() for k,v in keys.items(): redis_val = r.get(v) if redis_val is None: redis_val = 'None' else: redis_val = v.dtype(redis_val.decode('UTF-8')) out[k] = redis_val return out