You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.6 KiB
50 lines
1.6 KiB
#!/usr/bin/python3 |
|
|
|
import RPi.GPIO as GPIO |
|
import time |
|
import requests |
|
|
|
relay_pin = 11 |
|
#GPIO.setmode(GPIO.BCM) # GPIO numbers instead of board numbers. |
|
GPIO.setmode(GPIO.BOARD) |
|
GPIO.setup(relay_pin, GPIO.OUT) |
|
|
|
def get_api_url(): |
|
# Yes, I know I could do this better. Stop moaning. |
|
if (device_id == "factory1"): |
|
return "http://ritherdon.abbether.net/api/readings/add/1" |
|
elif (device_id == "factory2"): |
|
return "http://ritherdon.abbether.net/api/readings/add/2" |
|
|
|
# Make sure this is valid. |
|
# api_url = "http://ritherdon.abbether.net/api/readings/add/1" |
|
api_url = get_api_url() # Saves having to do the if-check every call. |
|
|
|
def main(): |
|
try: |
|
while True: |
|
# Make sure the U.R.L. is valid. |
|
r = requests.get(api_url) |
|
# print(r.status_code) # For testing. |
|
data = r.json() |
|
# print(data) # For testing. |
|
the_reading = data.get("reading") |
|
# print(the_reading) # For testing. |
|
if the_reading > 33: |
|
# Print for testing. |
|
# print(f"[INFO] Light is on -- {the_reading}.") |
|
GPIO.output(relay_pin, GPIO.HIGH) |
|
else: |
|
# Print for testing. |
|
# print(f"[INFO] Light is off -- {the_reading}.") |
|
GPIO.output(relay_pin, GPIO.LOW) |
|
except KeyboardInterrupt: |
|
print("Keyboard Interrupt: quitting program.") |
|
except: |
|
print("Error updating light reading...") |
|
finally: |
|
print("Cleaning up GPIO before closing...") |
|
GPIO.cleanup() |
|
|
|
if __name__ == "__main__" : |
|
main()
|
|
|