Example #1
0
 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)
Example #2
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)
Example #3
0
 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")
Example #4
0
 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")
Example #5
0
 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")