def output_toggle_on_input_timeout(self, conn): while True: alreadyon = [] GPIO.wait_for_edge(int(self.trigger), GPIO.BOTH) conn.send("inputchange:"+str(self.trigger)+":on") gui.change_input_state(int(self.trigger), 1, "reg") for i in self.who: if outputs[i].input() == 0: alreadyon.append(i) gui.console("Pin already on") else: outputs[i].output(1) gui.change_output_state(int(i), 1) conn.send("pinchange:"+i+":on") targettime = int(time.time()) + int(self.timeout) changed = False while not targettime == int(time.time()): if GPIO.input(int(self.trigger)): if changed: conn.send("inputchange:"+str(self.trigger)+":on") gui.change_input_state(int(self.trigger), 1, "reg") changed = False targettime = int(time.time()) + self.timeout - 3 else: changed = True conn.send("inputchange:"+str(self.trigger)+":off") gui.change_input_state(int(self.trigger), 0, "reg") time.sleep(0.2) for i in self.who: if not i in alreadyon: outputs[i].output(1) conn.send("pinchange:"+i+":off") gui.change_output_state(int(i), 0)
def output_off_at_time(self, conn): while True: nowtime = time.strftime("%I:%M %p", time.localtime()) if self.trigger == nowtime: for i in self.who: outputs[i].output(1) gui.change_output_state(i, 0) time.sleep(60)
def output_off_on_input(self, conn): while True: GPIO.wait_for_edge(int(self.trigger), GPIO.RISING) conn.send("inputchange:"+self.trigger+":on") gui.change_input_state(self.trigger, 1, "reg") for i in self.who: outputs[i].output(1) gui.change_output_state(i, 0) GPIO.wait_for_edge(int(self.trigger), GPIO.FALLING) conn.send("inputchange:"+self.trigger+":off") gui.change_input_state(self.trigger, 0, "reg")
def output(self, value): if self.mcp: gui.change_output_state("mcp"+str(self.pin), not int(value)) mcp.output(self.pin, int(value)) for i in clients: i.write_message("pinchange:mcp"+str(self.pin)+":off") else: gui.change_output_state(self.pin, not value) GPIO.output(self.pin, int(value)) if int(value) == 1: for i in clients: i.write_message("pinchange:"+str(self.pin)+":on") elif int(value) == 0: for i in clients: i.write_message("pinchange:"+str(self.pin)+":off")
def output_toggle_on_input(self, conn): state = 0 while True: alreadyon = [] GPIO.wait_for_edge(self.trigger, GPIO.RISING) conn.send("inputchange:"+str(self.trigger)+":on") gui.change_input_state(self.trigger, 1, "reg") for i in self.who: outputs[i].output(state) gui.change_output_state(i, not state) if state == 0: state = 1 else: state = 0 GPIO.wait_for_edge(int(self.trigger), GPIO.FALLING) gui.change_input_state(self.trigger, 0, "reg")