def set_relay(self, Unit, val): # command="megaio "+self.board+" rwrite " + str(Unit) + " "+(val and "on" or "off") # if (self.debug): Domoticz.Log("set_relay exec "+command) if self.debug: Domoticz.Log("set_relay " + str(Unit) + " to " + str(val)) # os.system(command) megaio.set_relay(self.board, Unit, int(val))
def ending(self): water.config(state='disabled') drain.config(state='disabled') cancel.config(state='disabled') GPIO.remove_event_detect(inpt) listbox.insert(END,'exiting, Incomplete cycle') pump_control('off') solenoid_control(25,3,1,'on') listbox.insert(END,'dump tube opened') listbox.yview(END) for z in stack: for x in relay: megaio.set_relay(z,x,0) listbox.insert(END, 'stack '+ str(z) +', relay '+str(x)+ ' off') listbox.yview(END) app.update() time.sleep(0.5) listbox.insert(END,'Waiting 40 seconds') listbox.yview(END) app.update() time.sleep(40) solenoid_control(25,3,1,'off') megaio.set_relay(3,1,0) listbox.insert(END,'dump tube closed') GPIO.cleanup() listbox.insert(END,'Cycle Ended Prematurely') listbox.yview(END) water.config(state='normal') drain.config(state='normal') cancel.config(state='normal')
def set_relay_state(relay_id, new_state): # Get current ISO timestamp for JSON and unix timestamp for timeout unix_time_int = int(time.time()) now_iso_stamp = datetime.now().replace(microsecond=0).isoformat() try: # Make sure new_state is boolean new_state = bool(new_state) # XOR with the 'invert' attribute to get the new_raw_state new_raw_state = new_state ^ config['relay'][relay_id]['invert'] # Set the relay via megaio library megaio.set_relay(config['megaio']['stack_id'], relay_id, new_raw_state) # Update the relay data immediately, rather than waiting for get_relay_data() to run relay_state[relay_id]['state'] = new_state relay_state[relay_id]['raw_state'] = new_raw_state relay_state[relay_id]['last_state_change'] = now_iso_stamp relay_state[relay_id]['state_change_timestamp'] = unix_time_int relay_state[relay_id]['reminder_sent'] = False relay_state[relay_id]['auto_off_sent'] = False relay_state[relay_id]['auto_on_sent'] = False if new_state: logger.warning(config['relay'][relay_id]['name'] + ' now on') else: logger.warning(config['relay'][relay_id]['name'] + ' now off') except Exception as e: # Log an error if one has occurred logger.error("Error setting relay state: " + str(e))
def lock_unl(): if '{0:08b}'.format(m.get_relays(0))[2] == '1': m.set_relay(0, 6, 0) lock_log('lock') else: m.set_relay(0, 6, 1) lock_log("unlock") return get_status()
def switch_relay(channel, relay_num): print('Switching USB %s' % channel) relay_state[relay_num] = not relay_state[relay_num] if (relay_state[relay_num]): megaio.set_relay(0, relay_num, 1) else: megaio.set_relay(0, relay_num, 0) flip_led(channel, relay_state[relay_num])
def Pirate_Talk(): megaio.set_relay(0, 2, 1) # Pirate on Relay 2 # GPIO.output(Pirate,0) time.sleep(1) # GPIO.output(Pirate,1) megaio.set_relay(0, 2, 0) MyLog(" Pirate Talking!\n")
def Relay_step(): for x in range(1, 9): megaio.set_relay(0, x, 1) print("Relay", x) time.sleep(1) for x in range(1, 9): megaio.set_relay(0, x, 0) time.sleep(1)
def solenoid_19(a): global rate_count feeding = int(constant) * int(a) megaio.set_relay(2,3,1) pulsecount(a) if rate_count == feeding: solenoid_control(19,2,3,'off') megaio.set_relay(2,3,0) rate_count = 0 v19.set(0)
def solenoid_16(a): global rate_count feeding = int(constant) * int(a) megaio.set_relay(1,8,1) pulsecount(a) if rate_count == feeding: solenoid_control(16,1,8,'off') megaio.set_relay(1,8,0) rate_count = 0 v16.set(0)
def solenoid_9(a): global rate_count feeding = int(constant) * int(a) megaio.set_relay(1,1,1) pulsecount(a) if rate_count == feeding: solenoid_control(9,1,1,'off') megaio.set_relay(1,1,0) rate_count = 0 v9.set(0)
def solenoid_7(a): global rate_count feeding = int(constant) * int(a) megaio.set_relay(0,7,1) pulsecount(a) if rate_count == feeding: solenoid_control(7,0,7,'off') megaio.set_relay(0,7,0) rate_count = 0 v7.set(0)
def solenoid_5(a): global rate_count feeding = int(constant) * int(a) megaio.set_relay(0,5,1) pulsecount(a) if rate_count == feeding: solenoid_control(5,0,5,'off') megaio.set_relay(0,4,0) rate_count = 0 v5.set(0)
def solenoid_24(a): global rate_count feeding = int(constant) * int(a) megaio.set_relay(2,8,1) pulsecount(a) if rate_count == feeding: solenoid_control(24,2,8,'off') megaio.set_relay(2,8,0) rate_count = 0 v24.set(0)
def solenoid_control(number,stack,relay,power): if power == 'on': power = 1 listbox.insert(END,'relay '+ str(number)+' on') listbox.yview(END) megaio.set_relay(stack,relay,power) elif power == 'off': power = 0 listbox.insert(END,'relay '+str(number)+' off') listbox.yview(END) megaio.set_relay(stack,relay,power)
def Relay(mode): if mode == 0: megaio.set_relay(0, 2, mode) print("setting mode =", mode) if mode == 1: megaio.set_relay(0, 2, mode) print("setting mode =", mode) print("In Relay module", mode) # megaio.set_relays(0,0xFF) time.sleep(2)
def purge_solenoid(): global rate_count megaio.set_relay(3,1,1) purge() if rate_count == purged: solenoid_control(25,3,1,'off') megaio.set_relay(3,1,0) megaio.set_relay(3,1,0) listbox.insert(END,'purge solenoid closed') listbox.yview(END) global purging rate_count = 0 purging = False
def lock_unl(usr): pi.write(17, 0) time.sleep(0.5) pi.write(17, 1) if '{0:08b}'.format(m.get_relays(0))[2] == '1': m.set_relay(0, 6, 0) lock_log(usr, 'lock') else: m.set_relay(0, 6, 1) lock_log(usr, "unlock") with open('config.json') as f: cnf = json.load(f) if cnf['relock'] == 'false': return time.sleep(int(cnf['relock_delay'])) if keep_unlocked == 'true': lock_log(usr, 'no-relock') set_keep_unlocked('false') return else: m.set_relay(0, 6, 0) lock_log(usr, 'relock')
def relay_on(self, stack, relay): set_relay(stack, relay, RELAY_ON)
def relay_off(self, stack, relay): set_relay(stack, relay, RELAY_OFF)
P = str("MegaIO ") if P not in valid_software: print("Need MegaIO software installing") exit() P = str("MegaIO Hardware version") if P not in valid_board: print("Need MegaIO Board installing") exit() # If MegaIO correctly installed continue... while True: if (GPIO.input(PIR) == True): print("Triggered") megaio.set_relay(0, 8, 1) time.sleep(10) megaio.set_relay(0, 1, 1) time.sleep(10) megaio.set_relay(0, 8, 0) megaio.set_relay(0, 1, 0) time.sleep(2) megaio.set_relays(0, 0xFF) time.sleep(2) megaio.set_relays(0, 0x00) print("Exiting trigger") time.sleep(5) Relay(1) print("Looping") Relay(0) time.sleep(2)
def runall(object): sol1 = v1.get() sol2 = v2.get() sol3 = v3.get() sol4 = v4.get() sol5 = v5.get() sol6 = v6.get() sol7 = v7.get() sol8 = v8.get() sol9 = v9.get() sol10 = v10.get() sol11 = v11.get() sol12 = v12.get() sol13 = v13.get() sol14 = v14.get() sol15 = v15.get() sol16 = v16.get() sol17 = v17.get() sol18 = v18.get() sol19 = v19.get() sol20 = v20.get() sol21 = v21.get() sol22 = v22.get() sol23 = v23.get() sol24 = v24.get() if purging == True: purge_solenoid() elif sol1 == 1: feed_conversion(ta1) solenoid_1(int(total_amount)) elif sol2 == 1: feed_conversion(ta2) solenoid_2(int(total_amount)) elif sol3 == 1: feed_conversion(ta3) solenoid_3(int(total_amount)) elif sol4 == 1: feed_conversion(ta4) solenoid_4(int(total_amount)) elif sol5 == 1: feed_conversion(ta5) solenoid_5(int(total_amount)) elif sol6 == 1: feed_conversion(ta6) solenoid_6(int(total_amount)) elif sol7 == 1: feed_conversion(ta7) solenoid_7(int(total_amount)) elif sol8 == 1: feed_conversion(ta8) solenoid_8(int(total_amount)) elif sol9 == 1: feed_conversion(ta9) solenoid_9(int(total_amount)) elif sol10 == 1: feed_conversion(ta10) solenoid_10(int(total_amount)) elif sol11 == 1: feed_conversion(ta11) solenoid_11(int(total_amount)) elif sol12 == 1: feed_conversion(ta12) solenoid_12(int(total_amount)) elif sol13 == 1: feed_conversion(ta13) solenoid_13(int(total_amount)) elif sol14 == 1: feed_conversion(ta14) solenoid_14(int(total_amount)) elif sol15 == 1: feed_conversion(ta15) solenoid_15(int(total_amount)) elif sol16 == 1: feed_conversion(ta16) solenoid_16(int(total_amount)) elif sol17 == 1: feed_conversion(ta17) solenoid_17(int(total_amount)) elif sol18 == 1: feed_conversion(ta18) solenoid_18(int(total_amount)) elif sol19 == 1: feed_conversion(ta19) solenoid_19(int(total_amount)) elif sol20 == 1: feed_conversion(ta20) solenoid_20(int(total_amount)) elif sol21 == 1: feed_conversion(ta21) solenoid_21(int(total_amount)) elif sol22 == 1: feed_conversion(ta22) solenoid_22(int(total_amount)) elif sol23 == 1: feed_conversion(ta23) solenoid_23(int(total_amount)) elif sol24 == 1: feed_conversion(ta24) solenoid_24(int(total_amount)) else: GPIO.remove_event_detect(inpt) pump_control('off') GPIO.cleanup() solenoid_control(25,3,1,'on') listbox.insert(END,'Opened dump tube') listbox.insert(END,'Waiting 40 seconds') listbox.yview(END) app.update() time.sleep(40) solenoid_control(25,3,1,'off') megaio.set_relay(3,1,0) megaio.set_relay(3,1,0) listbox.insert(END,'Closed dump tube') listbox.insert(END,'Watering cycle complete') listbox.yview(END) water.config(state='normal') drain.config(state='normal')
def unlock_door(): m.set_relay(0,6,1) lock_log('unlock')
def lock_door(): m.set_relay(0,6,0) lock_log('lock')
# GPIO.output(Pirate,0) time.sleep(1) # GPIO.output(Pirate,1) megaio.set_relay(0, 2, 0) MyLog(" Pirate Talking!\n") #End of Pirate def Fog(sw_mode, Dur): # Fog function turns on fog machine for passed in "Dur" # Turns off fog machine after "Dur" seconds. # Switching modes due to megaio board. InFog=True # GPIO.output(Pirate,0) # time.sleep(1) # GPIO.output(Pirate,1) # GPIO.output(POWER,sw_mode) megaio.set_relay(0,8,sw_mode) time.sleep(Dur) if sw_mode == 0: FogText = " Fog Machine on for " + str(Dur) + " seconds.\n" MyLog(FogText) if sw_mode == 1: MyLog(" Fog machine off.\n") megaio.set_relay(0,8,0) # GPIO.output(POWER,1) InFog=False #End of Fog function os.system("clear") # Clear Screen os.system("setterm -cursor off") # Hide Cursor log = open("song.log", "a+") # Open a file for logging. #Loop_count = 0