def curtain_status(did: str): ''' 获取窗帘现在的状态 @Param: did-str-设备的id @Retrun: {'r': 'a'/'c'/'e'/'m'} 全开/开一半/关/超时 ''' cmd_suf = '' cmd_suf = cmdd.curtain_status if len(did) != 1: return {'r': 'f'} else: idx = asyser.require_idx() cmd = did + chr(idx) + cmd_suf asyser.send_serial(cmd, idx) res = handle_light_control(idx) if res[2] == 'a': return {'r': 'a'} elif res[2] == 'c': return {'r': 'c'} elif res[2] == 'e': return {'r': 'e'} elif res == "miss": return {'r': 'm'} else: # TODO: 记录异常值到日志 pass
def light_control(did: str, act: str): ''' 控制灯的亮灭 @Param: did-str-设备的id @Param: act-str-on/off @Retrun: {'r': 's'/'f'/'m'} 成功/失败/超时 ''' cmd_suf = '' if act == 'on': cmd_suf = cmdd.light_control_on elif act == 'off': cmd_suf = cmdd.light_control_off else: # TODO: 记录异常值到日志 pass if len(did) != 1: return {'r': 'f'} else: idx = asyser.require_idx() cmd = did + chr(idx) + cmd_suf asyser.send_serial(cmd, idx) res = handle_light_control(idx) if res[2] == 'T': return {'r': 's'} elif res[2] == 'F': return {'r': 'f'} elif res == "miss": return {'r': 'm'} else: # TODO: 记录异常值到日志 pass
def curtain_control(did: str, due: str): ''' 控制窗帘的开关 @Param: did-str-设备的id @Param: 开合程度 a, c, e - 1, 0.5, 0 @Retrun: {'r': 's'/'f'/'m'} 成功/失败/超时 ''' cmd_suf = '' if due == 'a': cmd_suf = cmdd.curtain_control_on elif due == 'c': cmd_suf = cmdd.curtain_control_on_half elif due == 'e': cmd_suf = cmdd.curtain_control_on_zero else: # TODO: 记录异常值到日志 pass if len(did) != 1: return {'r': 'f'} else: idx = asyser.require_idx() cmd = did + chr(idx) + cmd_suf asyser.send_serial(cmd, idx) res = handle_curtain_control(idx) if res[2] == 'T': return {'r': 's'} elif res[2] == 'F': return {'r': 'f'} elif res == "miss": return {'r': 'm'} else: # TODO: 记录异常值到日志 pass
def pair(did: str, pin: str, dt: str): ''' 添加一个新设备 @Param: did-str-设备的id @Param: pin-str-设备的配对码 @Param: dt-str-设备的类型 @Retrun: {'r': 'on'/'off'/'m'} 亮 灭 超时 ''' cmd_suf = cmdd.add_new_cmd if len(did) != 1: return {'r': 'f'} else: idx = asyser.require_idx() cmd = did + chr(idx) + cmd_suf + pin + dt asyser.send_serial(cmd, idx) res = handle_light_status(idx) if res[2] == 'T': return {'r': 's'} elif res[2] == 'F': return {'r': 'f'} elif res == "miss": return {'r': 'm'} else: # TODO: 记录异常值到日志 pass
def light_status(did: str, act: str): ''' 控制指示灯光 @Param: did-str-设备的id @Param: act-str-指示灯的颜色 @Retrun: {'r': 's'/'f'/'m'} 成功 失败 超时 ''' cmd_suf = '' if act == 'a': cmd_suf = cmdd.light_ins_a elif act == 'b': cmd_suf = cmdd.light_ins_b elif act == 'c': cmd_suf = cmdd.light_ins_c else: # TODO: 记录异常值到日志 pass if len(did) != 1: return {'r': 'f'} else: idx = asyser.require_idx() cmd = did + chr(idx) + cmd_suf asyser.send_serial(cmd, idx) res = handle_light_ins(idx) if res == 'T': return {'r', 's'} elif res == 'F': return {'r', 'f'} elif res == 'miss': return {'r': 'm'} else: #TODO: 记录异常值到日志 pass
def curtain_scn(did: str, act: str, sta: str): ''' 控制窗帘的场景 @Param: did-str-设备的id @Param: act-str-场景 @Param: due-str-状态 @Retrun: {'r': 'a'/'c'/'e'/'m'} 全开/开一半/关/超时 ''' cmd_suf = '' if act == 'z' and sta == 'c': cmd_suf = cmdd.curtain_scenes_status elif act == 'a': if sta == 'a': cmd_suf = cmdd.curtain_scenes_door_on elif sta == 'b': cmd_suf = cmdd.curtain_scenes_door_off elif act == 'b': if sta == 'a': cmd_suf = cmdd.curtain_scenes_time_on elif sta == 'b': cmd_suf = cmdd.curtain_scenes_time_off elif act == 'c': if sta == 'a': cmd_suf = cmdd.curtain_scenes_auto_on elif sta == 'b': cmd_suf = cmdd.curtain_scenes_auto_off else: pass # TODO: 处理异常值 if len(did) != 1: return {'r': 'f'} else: idx = asyser.require_idx() cmd = did + chr(idx) + cmd_suf asyser.send_serial(cmd, idx) res = handle_light_control(idx) if act == 'z' and sta == 'c': return {'r': ','.join(res[2:5])} if res[2] == 'T': return {'r': 's'} elif res[2] == 'F': return {'r': 'f'} elif res == "miss": return {'r': 'm'} else: pass
def light_status(did: str): ''' 获取灯现在的状态 @Param: did-str-设备的id @Retrun: {'r': 'on'/'off'/'m'} 亮 灭 超时 ''' cmd_suf = cmdd.light_status if len(did) != 1: return {'r': 'f'} else: idx = asyser.require_idx() cmd = did + chr(idx) + cmd_suf asyser.send_serial(cmd, idx) res = handle_light_status(idx) if res[2] == 'a': return {'r': 'on'} elif res[2] == 'b': return {'r': 'off'} elif res == "miss": return {'r': 'm'} else: # TODO: 记录异常值到日志 pass