Python Forum

Full Version: Smoke detector + send email
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
At my work I am trying to make a smoke detector with a raspberry pi that will send a email to whom ever I nominate if there is a fire. I already have the 2 scrips made for each of the tasks I want it to do, but im having trouble with putting them together.

Here are the 2 scripts.

Smoke detector:
import time
import board
import busio
from adafruit_ads1x15.single_ended import ADS1115
 
# Create the I2C bus
i2c = busio.I2C(board.SCL, board.SDA)
 
# Create the ADC object using the I2C bus
adc = ADS1115(i2c)
 
# Print header
print("    CHAN 0          CHAN 1          CHAN 2          CHAN 3")
print("{:>5}\t{:>5}\t{:>5}\t{:>5}\t{:>5}\t{:>5}\t{:>5}\t{:>5}"
      .format('raw', 'v', 'raw', 'v', 'raw', 'v', 'raw', 'v'))
 
while True:
    # Get raw readings for each channel
    r0 = adc[0].value
    r1 = adc[1].value
    r2 = adc[2].value
    r3 = adc[3].value
 
    # Get voltage readings for each channel
    v0 = adc[0].volts
    v1 = adc[1].volts
    v2 = adc[2].volts
    v3 = adc[3].volts
 
    # Print results
    print("{:>5}\t{:>5.3f}\t{:>5}\t{:>5.3f}\t{:>5}\t{:>5.3f}\t{:>5}\t{:>5.3f}"
          .format(r0, v0, r1, v1, r2, v2, r3, v3))
 
    # Sleep for a bit
    time.sleep(0.5)  
Email :
import smtplib
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
#Next, log in to the server
server.login("[email protected]", "password")

#Send the mail
msg = "Message" # The /n separates the message from the headers
server.sendmail("[email protected]", "[email protected]", msg)
What do you mean having trouble putting the two scripts together? The simplest approach would be to put the email code inside the smoke detector code and just run a function when whatever is defined as a fire trigger, send the email. If you have to keep them separate, you could just import the email module whenever the trigger is confirmed. The more pythonic approach of the latter would be to make a function in the email module to actually send the mail, and then just execute that modules function when the fire is trigger (whatever those values might be). You could do it lots of ways.
(Sep-11-2018, 12:06 AM)metulburr Wrote: [ -> ]What do you mean having trouble putting the two scripts together? The simplest approach would be to put the email code inside the smoke detector code and just run a function when whatever is defined as a fire trigger, send the email. If you have to keep them separate, you could just import the email module whenever the trigger is confirmed. The more pythonic approach of the latter would be to make a function in the email module to actually send the mail, and then just execute that modules function when the fire is trigger (whatever those values might be). You could do it lots of ways.

Thanks for the reply.

Im only very new to using python so im not sure how to do something like this. I was talking with a work college about using if and else statements and he said that could work but again im not really sure on how to put that in.
trigger = 'whatever triggers a fire code'
if trigger:
    server.sendmail(...)
(Sep-12-2018, 01:28 AM)metulburr Wrote: [ -> ]
 trigger = 'whatever triggers a fire code' if trigger: server.sendmail(...) 
Thanks I will give it a try.