Skip to content
Snippets Groups Projects
Commit 05f11e68 authored by Philipp Jonas Krieg's avatar Philipp Jonas Krieg
Browse files

changed way of communication with esp

parent bbc181d3
No related branches found
No related tags found
1 merge request!22Changed communication scheme
No preview for this file type
No preview for this file type
File added
No preview for this file type
No preview for this file type
import datetime, time, threading import datetime, time, threading
from communication import get, pumpe1, pumpe2, lichton, lichtoff
from ph import start_handle_ph from ph import start_handle_ph
def is_time_between(begin_time, end_time, check_time): def is_time_between(begin_time, end_time, check_time):
if begin_time <= end_time: if begin_time <= end_time:
return begin_time < check_time < end_time return begin_time < check_time < end_time
...@@ -17,12 +19,18 @@ def analyze_service(p): ...@@ -17,12 +19,18 @@ def analyze_service(p):
now = datetime.datetime.now() now = datetime.datetime.now()
now = datetime.time(now.hour, now.minute, now.second) now = datetime.time(now.hour, now.minute, now.second)
# get values from arduino and update plant values of plant object
get(p)
# lighting # lighting
if is_time_between(p.light_time_on, p.light_time_off, now) and p.light_status == 0: if is_time_between(p.light_time_on, p.light_time_off, now) and p.light_status == 0:
print("turn on light") print("turn on light")
p.cmds_out.append("LIGHT_ON") p.cmds_out.append("LIGHT_ON")
lichton()
elif p.light_status == 1: elif p.light_status == 1:
p.cmds_out.append("LIGHT_OFF") p.cmds_out.append("LIGHT_OFF")
lichtoff()
# ph-Value # ph-Value
if not(p.ph_target[0] <= p.ph_status <= p.ph_target[1]) and not p.ph_routine_started: if not(p.ph_target[0] <= p.ph_status <= p.ph_target[1]) and not p.ph_routine_started:
...@@ -30,11 +38,14 @@ def analyze_service(p): ...@@ -30,11 +38,14 @@ def analyze_service(p):
print("handling started") print("handling started")
start_handle_ph(p) start_handle_ph(p)
# handling of camera was moved to seperate script
# check other sensors here # check other sensors here
if datetime.datetime.now() - p.picture_last > datetime.timedelta(minutes=10): # if datetime.datetime.now() - p.picture_last > datetime.timedelta(minutes=10):
# take and analyze new photo # # take and analyze new photo
print("made a new photo") # print("made a new photo")
p.picture_last = datetime.datetime.now() # p.picture_last = datetime.datetime.now()
# starts analyze service in new thread # starts analyze service in new thread
......
import requests
def get(p):
# IP-Adresse und Port des ESP8266-Servers
server_ip = "192.168.4.1"
server_port = 80
# URL zum Aufrufen des Servers
url = f"http://{server_ip}:{server_port}/"
try:
# HTTP-Anfrage an den ESP8266-Server senden
response = requests.get(url)
# Überprüfen, ob die Anfrage erfolgreich war (Statuscode 200)
if response.status_code == 200:
# JSON-Daten aus der Antwort extrahieren
json_data = response.json()
# JSON-Daten verarbeiten
ph_Wert = json_data["ph-Wert"]
ec_Wert = json_data["ec-Wert"]
par_Wert = json_data["par-Wert"]
# Set new values in plant object
p.ph_status = ph_Wert
p.ec_status = ec_Wert
p.par_status = par_Wert
# Ausgabe der empfangenen Daten
print(f"ph_Wert: {ph_Wert}")
print(f"ec_Wert: {ec_Wert}")
print(f"ec_Wert: {par_Wert}")
except:
#Diesen Fall gibt es bei dem esp nicht aber hab das trozdem rein genommen falls man das ergänzen möchte für die die nächstes Jahr machen
print("Fehler beim Abrufen der Daten vom ESP8266")
def pumpe1():
# IP-Adresse und Port des ESP8266-Servers
server_ip = "192.168.4.1"
server_port = 80
# URL zum Aufrufen des Servers
url = f"http://{server_ip}:{server_port}/pump1"
# HTTP-Anfrage an den ESP8266-Server senden
response = requests.get(url)
if response.status_code == 200:
print("Die Pumpe war an")
return "success"
else:
print("Die Pumpe konnte nicht gestartet werden")
return "error"
def pumpe2():
# IP-Adresse und Port des ESP8266-Servers
server_ip = "192.168.4.1"
server_port = 80
# URL zum Aufrufen des Servers
url = f"http://{server_ip}:{server_port}/pump2"
# HTTP-Anfrage an den ESP8266-Server senden
response = requests.get(url)
if response.status_code == 200:
print("Die Pumpe war an")
return "success"
else:
print("Die Pumpe konnte nicht gestartet werden")
return "error"
def lichton():
# IP-Adresse und Port des ESP8266-Servers
server_ip = "192.168.4.1"
server_port = 80
# URL zum Aufrufen des Servers
url = f"http://{server_ip}:{server_port}/lighton"
# HTTP-Anfrage an den ESP8266-Server senden
response = requests.get(url)
if response.status_code == 200:
print("LED wurde eingeschaltet")
else:
print("LED konnte nicht eingeschaltet werden")
def lichtoff():
# IP-Adresse und Port des ESP8266-Servers
server_ip = "192.168.4.1"
server_port = 80
# URL zum Aufrufen des Servers
url = f"http://{server_ip}:{server_port}/lightoff"
# HTTP-Anfrage an den ESP8266-Server senden
response = requests.get(url)
if response.status_code == 200:
print("LED wurde ausgeschaltet")
else:
print("LED konnte nicht ausgeschaltet werden")
\ No newline at end of file
No preview for this file type
import time, threading import time, threading
from communication import get, pumpe1, pumpe2
# dummy ph handling routine # dummy ph handling routine
def handle_ph(p): def handle_ph(p):
while True:
if not "RUN_PUMP(5)" in p.cmds_out:
p.cmds_out.append("RUN_PUMP(5)") # while True:
print("run pump") # if not "RUN_PUMP(5)" in p.cmds_out:
time.sleep(30) # p.cmds_out.append("RUN_PUMP(5)")
# imitate new sensor values, delete before deployment # print("run pump")
#p.ph_status = 7 # time.sleep(30)
# # imitate new sensor values, delete before deployment
# #p.ph_status = 7
if p.ph_target[0] <= p.ph_status <= p.ph_target[1]: # if p.ph_target[0] <= p.ph_status <= p.ph_target[1]:
# print("ph value was handled")
# break
while True:
if p.ph_status < p.ph_target[0]: # ph too low
if pumpe1() == "success":
time.sleep(30)
else:
time.sleep(60) # try again after 60 secs
elif p.ph_status > p.ph_target[1]: # ph too high
if pumpe2() == "success":
time.sleep(30)
else:
time.sleep(60) # try again after 60 secs
else:
print("ph value was handled") print("ph value was handled")
break break
p.ph_routine_started = 0 p.ph_routine_started = 0
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment