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()
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
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
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)
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 ()
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
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
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()
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
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)
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()
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
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"]
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
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
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
# 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
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