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))
Esempio n. 2
0
 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')
Esempio n. 3
0
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))
Esempio n. 4
0
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()
Esempio n. 5
0
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)
Esempio n. 8
0
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)
Esempio n. 9
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)
Esempio n. 10
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)
Esempio n. 11
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)
Esempio n. 12
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)
Esempio n. 13
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)
Esempio n. 14
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)
Esempio n. 15
0
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)
Esempio n. 16
0
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
Esempio n. 17
0
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')
Esempio n. 18
0
    def relay_on(self, stack, relay):

        set_relay(stack, relay, RELAY_ON)
Esempio n. 19
0
    def relay_off(self, stack, relay):

        set_relay(stack, relay, RELAY_OFF)
Esempio n. 20
0
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)
Esempio n. 21
0
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')
Esempio n. 22
0
def unlock_door():
    m.set_relay(0,6,1)
    lock_log('unlock')
Esempio n. 23
0
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