Ejemplo n.º 1
0
def deflate():
    import piplates.RELAYplate as rel
    rel.relayOFF(0, 1)
    time.sleep(0.1)
    rel.relayON(0, 2)
    time.sleep(DEFLATION_TIME)
    all_off()
Ejemplo n.º 2
0
def all_off():
    #GPIO.setmode(GPIO.BCM)
    import piplates.RELAYplate as rel
    rel.relayOFF(0, 1)
    rel.relayOFF(0, 2)
    logging.info('RELAY 1 OFF')
    logging.info('RELAY 2 OFF')
def main_close():
    RELAY.relayOFF(0, 5)
    time.sleep(0.5)
    RELAY.relayOFF(0, 6)
    print("MPV CLOSED")
    client.publish(TOPIC_2, b'MAINCLOSE')
    return
Ejemplo n.º 4
0
def pin_update(pin_number, value):
    if pin_number in VALID_PIPLATES_PIN_NUMBERS:

        if pin_number < 8:  #card 1
            if value:
                RELAY.relayON(0, pin_number)
            else:
                RELAY.relayOFF(0, pin_number)
        else:  #card 2 valid pin numbers 1..7
            if value:
                RELAY.relayON(1, pin_number - 7)
            else:
                RELAY.relayOFF(1, pin_number - 7)

        new_value = _get_relaystate(pin_number)

        data = {
            'status': 'SUCCESS',
            'error': None,
            'pin_number': pin_number,
            'pin_name': PIN_NAMES[str(pin_number)],
            'new_value': int(new_value)
        }
    else:
        data = {'status': 'ERROR', 'error': 'Invalid pin number or value.'}

    return data
Ejemplo n.º 5
0
def shower_shutdown(shower_id):
    db_session.query(Shower).filter_by(id=shower_id).update(dict(assigned=False,started_at=None,paused_at=None,seconds_allocated=None))
    db_session.commit()
    #GPIO.output(shower_pin(int(shower_id)), 1)
    RELAY.relayOFF(3,int(shower_id))
    redis.set(f"shower{shower_id}", 0)
    redis.set(f"shower_time_sum:{shower_id}", 0)
    text = f"Shutting down shower {shower_id}"
    print(text)
    say.delay(text)
Ejemplo n.º 6
0
def relay():
    global button_pressed

    if button_pressed == 1:
        RELAY.getID(1)
        'Pi-Plate RELAY'
        RELAY.relayON(1, 1)
        sleep(0.02)
        RELAY.relayOFF(1, 1)
        return ()
Ejemplo n.º 7
0
    def door_cmnd(self, override):
        now = datetime.datetime.now()
        ret_json = str(now) + str(requests.get(self.url).text)

        if str(ret_json).find('true') > -1 or override == True:
            RELAY.relayON(self.pid, 5)
            time.sleep(0.5)
            RELAY.relayOFF(self.pid, 5)
        else:
            RELAY.relayOFF(self.pid, 5)
        return ret_json
Ejemplo n.º 8
0
def shower_off(shower_id):
    try:
        #j = request.get_json()
        #shower_id = j['shower']
        #GPIO.output(shower_pin(int(shower_id)), 1)
        RELAY.relayOFF(3,int(shower_id))
        redis.set(f"shower{shower_id}", 0)
        return "off"
    except Exception as e:
        result = error_handler(e)
        return result, status.HTTP_500_INTERNAL_SERVER_ERROR
Ejemplo n.º 9
0
def relay():
    relay = 1
    j = input("Enter Insert Number: ")
    if relay== 1:
        button_pressed = 1
        print ("button pressed")
        RELAY.getID(1)
        'Pi-Plate RELAY'
        RELAY.relayON(1,1)
        sleep(0.02)
        RELAY.relayOFF(1,1)
        return()
Ejemplo n.º 10
0
    def close_valve(self):
        # closes the valve and returns True on success or False on failure to close valve
        # if the valve is already closed, True is returned

        RELAY.relayOFF(0, self.relayID)

        vs = self.valve_status()
        valvelog.info("Close valve / relay : %d", self.relayID)

        if (vs == "CLOSED"):
            valvelog.info("Close Success")
            return True
        else:
            valvelog.error("Close Failed on relay: %d ", self.relayID)
            return False
Ejemplo n.º 11
0
def main():
    global wakeup
    ppADDR = 1
    rain_threshold = 1.0
    spr_state = 0.0

    observer = Observer()
    observer.schedule(Handler(), ".", recursive=False)
    observer.start()
    RELAY.RESET(ppADDR)

    while True:
        print('Iterating')
        if wakeup:
            try:
                pf = open('rain.data', 'r')
                print('Opened file rain.data')
                line = pf.readline()
                pf.close()
                sline = line.split(',')
                rv = float(sline[0])
                rtime = datetime.datetime.now()
                print('File rain.data timestamp: ', sline[1])
                print('Weighted rain amount -3/+3: ', sline[0])
                print('Rain threshold to enable sprinkler: ', rain_threshold)
                if rv > rain_threshold:
                    print('Sprinkler Disabled: Relay OFF at ', rtime)
                    RELAY.relayOFF(ppADDR, 1)
                    spr_state = 0.0
                else:
                    print('Sprinkler Enabled: Relay ON at ', rtime)
                    RELAY.relayON(ppADDR, 1)
                    spr_state = 1.0

            except (ValueError, EOFError):
                ierr = ierr + 1
            wakeup = False
        statsdb.statsdb('SprinklerEN', spr_state)
        time.sleep(100.0)
Ejemplo n.º 12
0
def inflate():
    d = get_distance()
    #no measurement, something wrong, turn off the valves
    if d < 0:
        all_off()
        log_alarm('inflate: failed to get distance')
    if d < MAX_DIST_CM:
        return
    inflate_start = timer()
    import piplates.RELAYplate as rel
    rel.relayON(0, 1)
    rel.relayOFF(0, 2)
    while True:
        time.sleep(0.1)
        if timer() - inflate_start > MAX_INFLATION_TIME:
            all_off()
            log_alarm('inflate: max inflation time reached')
            break
        d = get_distance()
        if d < MAX_DIST_CM:
            break

    #we're done inflating, lock the valves
    all_off()
Ejemplo n.º 13
0
def getDoorCmnd(line, url, override):

    try:
        stdscr = curses.initscr()
        curses.noecho()
        stdscr.nodelay(1)

        localLine = 1

        localLine += 1
        stdscr.addstr(line + localLine, 0, "BEGIN: getDoorCmnd")
        localLine += 1

        h = {'content-type': 'application/json'}
        fullUrl = url + 'door'
        stdscr.addstr(line + localLine, 0, "fullurl: " + fullUrl)
        localLine += 1
        ret = requests.get(url + 'door')

        stdscr.addstr(line + localLine, 0, str(ret.text))
        localLine += 1

        # ret.text should be json or convertible to json, then we can get cmnd and the read config
        # variable
        if str(ret.text).find('true') < -1 or override == True:
            RELAY.relayON(0, 5)
            time.sleep(0.5)
            RELAY.relayOFF(0, 5)
        else:
            RELAY.relayOFF(0, 5)

    except Exception, ex:
        # print the exception and keep going
        stdscr.addstr(line + localLine, 0,
                      "getDoorCmnd() outter exception: " + ex.message)
        localLine += 3
def relay7_off():
    RELAY.relayOFF(0, 7)
    print("Relay 7 OFF")
    client.publish(TOPIC_2, b'R7OFF')
    return
def dump_close():
    RELAY.relayOFF(0, 7)
    print("DUMP CLOSED")
    client.publish(TOPIC_2, b'DUMPCLOSE')
    return
def purge_close():
    RELAY.relayOFF(1, 1)
    print("PURGE CLOSED")
    client.publish(TOPIC_2, b'PURGECLOSE')
    return
Ejemplo n.º 17
0
from decimal import Decimal

try:
    stdscr = curses.initscr()
    curses.noecho()
    stdscr.nodelay(1)

    stdscr.addstr(0, 0, "Press \"p\" to show count, \"q\" to exit...")

    continue1 = True
    line = 1
    tempFanCounter = 0

    stdscr.addstr(line, 0, str(RELAY.getID(0)))
    line += 1
    RELAY.relayOFF(0, 3)
    RELAY.relayOFF(0, 5)

    configFile = open("config.txt", "r")

    configData = configFile.read()
    stdscr.addstr(line, 0, configData)
    line += 10

    configJson = json.loads(configData)

    url = configJson["url"]
    fanChangeTemp = configJson["fanChangeTemp"]
    fanDelta = configJson["fanDelta"]
    voltageTrigger = configJson["voltageTrigger"]
    alpha = configJson["alpha"]
Ejemplo n.º 18
0
cooler_rly = 7
ADCchan = 6
temp_slope = 108.43
temp_inter = -135
temp_setpoint = 67.0
temp_hyster = 4.0

try:
    while True:

        adcread = DAQC.getADC(adADDR, ADCchan)
        print('Temp voltage: ', adcread)

        temp_val = adcread * temp_slope + temp_inter
        print('Temp: ', temp_val)

        if temp_val > temp_setpoint + temp_hyster:
            RELAY.relayON(ppADDR, cooler_rly)
            print('Cooling')

        if temp_val <= temp_setpoint:
            RELAY.relayOFF(ppADDR, cooler_rly)
            print('Optimal Temperature Achieved')

        time.sleep(10)
except KeyboardInterrupt:
    print('Caught ^C')
    RELAY.relayOFF(ppADDR, cooler_rly)
    exit()
def lox_vent_open():
    RELAY.relayOFF(0, 4)
    print("LOX VENT OPENED")
    client.publish(TOPIC_2, b'LOXVENTOPEN')
    return
def abort():
    #HI need to close, mpvs need to close, vents need to open, and ignitor off
    RELAY.relayOFF(0, 1)
    RELAY.relayOFF(0, 3)
    RELAY.relayOFF(0, 2)
    RELAY.relayOFF(0, 4)
    RELAY.relayOFF(0, 6)
    time.sleep(0.5)
    RELAY.relayOFF(0, 5)
    print("ABORT")
    client.publish(TOPIC_2, b'ABORT')
    return
def meth_vent_open():
    RELAY.relayOFF(0, 2)
    print("METH VENT OPENED")
    client.publish(TOPIC_2, b'METHVENTOPEN')
    return
def vents_open():
    RELAY.relayOFF(0, 2)
    RELAY.relayOFF(0, 4)
    print("VENTS OPENED")
    client.publish(TOPIC_2, b'VENTSOPEN')
    return
Ejemplo n.º 23
0
import argparse
import time
import piplates.RELAYplate as plate

parser = argparse.ArgumentParser(description='Automatically turn on sprinkler zones for specified intervals.')
parser.add_argument('-g', '--garden', action='store_false', help='disable garden zone')
args = parser.parse_args()

# The amount of time for each zone
times = [15, 12, 12, 10, 5]

# Turn on the relay that powers the pump
plate.relayON(0,7)

# Turn on all zones 1 by 1
for i in range(1,5):
    plate.relayON(0,i)
    time.sleep(times[i-1]*60)
    plate.relayOFF(0,i)

# If specified by the user, don't turn
# on zone 5 (garden)
if args.garden == True:
    plate.relayON(0,5)
    time.sleep(times[4]*60)
    plate.relayOFF(0,5)

# Turn off the relay that powers the pump
plate.relayOFF(0,7)
def lox_hi_close():
    RELAY.relayOFF(0, 1)
    print("LOX HI CLOSED")
    client.publish(TOPIC_2, b'LOXHICLOSE')
    return
Ejemplo n.º 25
0
     elif (cmd == "getID"):
         resp['ID'] = RP.getID(addr)
     elif (cmd == "getHWrev"):
         resp['HWrev'] = RP.getHWrev(addr)
     elif (cmd == "getFWrev"):
         resp['FWrev'] = RP.getFWrev(addr)
     elif (cmd == "getPMrev"):
         resp['PMrev'] = RP.getPMrev()
     elif (cmd == "getADDR"):
         resp['ADDR'] = RP.getADDR(addr)
     elif ("relay" in cmd):
         relay = args['relay']
         if (cmd == "relayON"):
             RP.relayON(addr, relay)
         elif (cmd == "relayOFF"):
             RP.relayOFF(addr, relay)
         elif (cmd == "relayTOGGLE"):
             RP.relayTOGGLE(addr, relay)
         state = RP.relaySTATE(addr)
         this_state = (state >> (relay - 1)) & 1
         resp['relay'] = relay
         resp['state'] = this_state
     elif (cmd == "RESET"):
         RP.RESET(addr)
         resp['RESET'] = "OK"
     else:
         sys.stderr.write("unknown relay cmd: " + cmd)
         break
     print(json.dumps(resp))
 elif (plate_type == "DAQC" or plate_type == "DAQC2"):
     # switch between DAQC and DAQC2 for their common API
def meth_hi_close():
    RELAY.relayOFF(0, 3)
    print("METH HI CLOSED")
    client.publish(TOPIC_2, b'METHHICLOSE')
    return
Ejemplo n.º 27
0
# https://www.raspberrypi.org/documentation/linux/software/python.md
# https://pi-plates.com/relayplate-users-guide/
# https://pi-plates.com/examples/#Controlling_aRELAYplate_Remotely_with_Your_Web_Browser
# https://www.dexterindustries.com/howto/run-a-program-on-your-raspberry-pi-at-startup/#systemd
#
#

import piplates.RELAYplate as RELAY
import time

## The address of the relay plate
ppADDR = 0

RELAY.RESET(ppADDR)

while True:
    RELAY.relayON(ppADDR, 1)
    time.sleep(0.5)
    RELAY.relayOFF(ppADDR, 1)
    RELAY.relayON(ppADDR, 2)
    time.sleep(0.5)
    RELAY.relayOFF(ppADDR, 2)
    RELAY.relayON(ppADDR, 3)
    time.sleep(1)
    RELAY.relayOFF(ppADDR, 3)
    RELAY.relayON(ppADDR, 2)
    time.sleep(0.5)
    RELAY.relayOFF(ppADDR, 2)
    RELAY.relayON(ppADDR, 1)
    time.sleep(0.5)
def meth_mpv_close():
    RELAY.relayOFF(0, 6)
    print("METH MPV CLOSED")
    client.publish(TOPIC_2, b'METHMPVCLOSE')
    return
Ejemplo n.º 29
0
from __future__ import print_function

import piplates.RELAYplate as RELAY
import time

ppADDR = 0
RELAY.RESET(ppADDR)

rly = 6
RELAY.relayON(ppADDR, rly)
print('relay 6 is on')
time.sleep(1)

print('starting spray loop')
while True:
    rly = 7
    RELAY.relayON(ppADDR, rly)
    print('Spray on, sleeping 1 sec')
    time.sleep(1)
    RELAY.relayOFF(ppADDR, rly)
    print('Spray off, sleeping  10 secs')
    time.sleep(10)
def lox_mpv_close():
    RELAY.relayOFF(0, 5)
    print("LOX MPV CLOSED")
    client.publish(TOPIC_2, b'LOXMPVCLOSE')
    return