Revision 8fe88817
Added by David Sorber about 7 years ago
| software/water/pump_off.py | ||
|---|---|---|
|
#!/usr/bin/python3
|
||
|
import sys
|
||
|
|
||
|
import RPi.GPIO as GPIO
|
||
|
|
||
|
def main():
|
||
|
# Configure GPIO
|
||
|
GPIO.setmode(GPIO.BCM)
|
||
|
GPIO.setup(17, GPIO.OUT)
|
||
|
|
||
|
# Turn on pump
|
||
|
GPIO.output(17, False)
|
||
|
|
||
|
print(' pump is OFF\n')
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
sys.exit(main())
|
||
| software/water/pump_on.py | ||
|---|---|---|
|
#!/usr/bin/python3
|
||
|
import sys
|
||
|
|
||
|
import RPi.GPIO as GPIO
|
||
|
|
||
|
def main():
|
||
|
# Configure GPIO
|
||
|
GPIO.setmode(GPIO.BCM)
|
||
|
GPIO.setup(17, GPIO.OUT)
|
||
|
|
||
|
# Turn on pump
|
||
|
GPIO.output(17, True)
|
||
|
|
||
|
print(' pump is ON\n')
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
sys.exit(main())
|
||
| software/water/water_system.py | ||
|---|---|---|
|
#!/usr/bin/python3
|
||
|
from email.mime.text import MIMEText
|
||
|
import logging
|
||
|
from smtplib import SMTP_SSL
|
||
|
import sys
|
||
|
import time
|
||
|
|
||
|
import RPi.GPIO as GPIO
|
||
|
|
||
|
# These should probably be protected...
|
||
|
RELAY_EMAIL = 'dsorber.phalanx@gmail.com'
|
||
|
RELAY_PASSWD = "You'reNotMySupervisor"
|
||
|
TO_EMAIL = 'baranovich@gmail.com'
|
||
|
|
||
|
LOG_FORMAT_STR = '%(asctime)s|%(levelname)s|%(filename)s:%(lineno)s|%(message)s'
|
||
|
LOG_DATE_FORMAT_STR = '%a %b %d %H:%M:%S %Y'
|
||
|
DEFAULT_LOG_LEVEL = logging.DEBUG
|
||
|
|
||
|
#
|
||
|
# Automated Watering System Daemon
|
||
|
#
|
||
|
|
||
|
def send_email(subject, msg_text):
|
||
|
""" Simple helper function to send an email
|
||
|
"""
|
||
|
msg = MIMEText(msg_text, 'plain')
|
||
|
msg['Subject'] = subject
|
||
|
msg['To'] = TO_EMAIL
|
||
|
try:
|
||
|
conn = SMTP_SSL('smtp.gmail.com')
|
||
|
conn.set_debuglevel(True)
|
||
|
conn.login(RELAY_EMAIL, RELAY_PASSWD)
|
||
|
try:
|
||
|
conn.sendmail(RELAY_EMAIL, TO_EMAIL, msg.as_string())
|
||
|
finally:
|
||
|
conn.close()
|
||
|
except Exception as exp:
|
||
|
error = '{:s}: {!r}'.format(type(exp).__name__, exp.args)
|
||
|
logging.error(error)
|
||
|
|
||
|
def main():
|
||
|
# Configure logging before attempting anything serious
|
||
|
logging.basicConfig(format=LOG_FORMAT_STR,
|
||
|
datefmt=LOG_DATE_FORMAT_STR,
|
||
|
level=DEFAULT_LOG_LEVEL)
|
||
|
|
||
|
logging.info('automated water system deamon started')
|
||
|
|
||
|
# Configure GPIO
|
||
|
GPIO.setmode(GPIO.BCM)
|
||
|
GPIO.setup(17, GPIO.OUT)
|
||
|
|
||
|
try:
|
||
|
# Turn on pump
|
||
|
GPIO.output(17, True)
|
||
|
logging.debug('pump on')
|
||
|
|
||
|
# Wait for a while -- 1.5 hours
|
||
|
time.sleep(5400)
|
||
|
|
||
|
finally:
|
||
|
# Turn off pump
|
||
|
GPIO.output(17, False)
|
||
|
logging.debug('pump off')
|
||
|
|
||
|
send_email('Automated Watering System Report', 'watering completed')
|
||
|
logging.info('notification sent')
|
||
|
|
||
|
logging.info('automated water system deamon stopping')
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
sys.exit(main())
|
||
Adding automated watering system scripts.