Adafruit_Learning_System_Gu.../FONA_SMS_Sensor/code.py
2022-02-22 15:18:15 -05:00

82 lines
2.5 KiB
Python
Executable file

# SPDX-FileCopyrightText: 2020 Brent Rubell for Adafruit Industries
#
# SPDX-License-Identifier: MIT
# pylint: disable=unused-import
import time
import board
import busio
import digitalio
from adafruit_fona.adafruit_fona import FONA
from adafruit_fona.fona_3g import FONA3G
import adafruit_bme280
print("FONA SMS Sensor")
# Create a serial connection for the FONA connection
uart = busio.UART(board.TX, board.RX)
rst = digitalio.DigitalInOut(board.D4)
# Use this for FONA800 and FONA808
fona = FONA(uart, rst)
# Use this for FONA3G
# fona = FONA3G(uart, rst)
# Initialize BME280 Sensor
i2c = busio.I2C(board.SCL, board.SDA)
bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)
# Initialize Network
while fona.network_status != 1:
print("Connecting to network...")
time.sleep(1)
print("Connected to network!")
print("RSSI: %ddB" % fona.rssi)
# Enable FONA SMS notification
fona.enable_sms_notification = True
print("Listening for messages...")
while True:
sender, message = fona.receive_sms()
if message:
print("New Message!")
print("FROM: ", sender)
print("MSG: ", message)
# Read BME280 sensor values
temp = bme280.temperature
humid = bme280.humidity
pres = bme280.pressure
# Sanitize message
message = message.lower()
message = message.strip()
if message in ["temp", "temperature", "t"]:
response = "Temperature: %0.1f C" % temp
elif message in ["humid", "humidity", "h"]:
response = "Humidity: %0.1f %%" % humid
elif message in ["pres", "pressure", "p"]:
response = "Pressure: %0.1f hPa" % pres
elif message in ["status", "s"]:
response = "Temperature: {0:.2f}C\nHumidity: {1:.1f}%Pressure: {2:.1f}hPa".format(
temp, humid, pres
)
elif message in ["help"]:
response = "I'm a SMS Sensor - txt me with a command:\
TEMP - Read temperature\
HUMID - Read humidity\
PRES - Read pressure\
STATUS - Read all sensors.\
HELP - List commands"
else:
response = "Incorrect message format received. \
Text HELP to this number for a list of commands."
# Send a response back to the sender
print("Sending response...")
if not fona.send_sms(int(sender), response):
print("SMS Send Failed")
print("SMS Sent!")