Skip to content

Commit 375b8ab

Browse files
committed
fixes
1 parent 996803a commit 375b8ab

File tree

5 files changed

+31
-22
lines changed

5 files changed

+31
-22
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
class DeviatingParametersError(Exception):
1+
class DeviatedParametersError(Exception):
22
def __init__(self, parameters):
33
self.parameters = parameters
44
super().__init__(f"Out of range parameters: {self.parameters}")

app/resources/parser.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import pandas as pd
22
from datetime import datetime
33

4-
file_path = 'app/resources/cleaned_plants_dataset.csv'
4+
file_path = 'resources/plants_dataset.csv'
55
df = pd.read_csv(file_path)
66
DELTA = 5
77

@@ -33,7 +33,7 @@ def check_t_rule(register, day_value, night_value):
3333
1: (is_in_range, (200, 350)),
3434
2: (is_in_range, (200, 350)),
3535
3: (is_in_range, (75, 200)),
36-
4: (is_in_range, (25, 30)),
36+
4: (is_in_range, (25, 75)),
3737
}
3838

3939

@@ -43,33 +43,42 @@ def parse_values(string):
4343

4444

4545
# asumimos register: nombre_planta, humedad, luz, temperatura
46-
def rules(register):
47-
plant_data = df[df['Botanical_Name'] == register["plant_name"]]
46+
def apply_rules(register, plant_name):
47+
plant_data = df[df['Botanical_Name'] == plant_name]
4848
h_value = plant_data['H'].values[0]
4949
l_value = plant_data['L'].values[0]
5050
t_value = plant_data['T'].values[0]
51+
print("h_value", h_value)
52+
print("l_value", l_value)
53+
print("t_value", t_value)
5154

5255
parameters = []
5356

5457
t_values = parse_values(t_value)
5558
h_values = parse_values(h_value)
5659
l_values = parse_values(l_value)
5760

61+
print("h_values", h_values)
62+
print("l_values", l_values)
63+
print("t_values", t_values)
64+
5865
for t_value in t_values:
59-
if apply_temperature_rule(t_value, register["temperature"]):
66+
if apply_temperature_rule(t_value, register.temperature):
6067
parameters.append('temperature')
6168
break
6269

6370
for l_value in l_values:
64-
if apply_light_rule(l_value, register["light"]):
71+
if apply_light_rule(l_value, register.light):
6572
parameters.append('light')
6673
break
6774

6875
for h_value in h_values:
69-
if apply_humidity_rule(l_value, register["humidity"]):
76+
if apply_humidity_rule(h_value, register.humidity):
7077
parameters.append('humidity')
7178
break
7279

80+
return parameters
81+
7382

7483
def apply_temperature_rule(rule, register):
7584
rule_function, rule_values = TEMP_RULES_MAP.get(rule, None)
@@ -78,13 +87,13 @@ def apply_temperature_rule(rule, register):
7887

7988

8089
def apply_light_rule(rule, register):
81-
rule_function, rule_values = HUMIDITY_RULES_MAP.get(rule, None)
90+
rule_function, rule_values = LIGHT_RULES_MAP.get(rule, None)
8291
if rule_function:
8392
return not rule_function(register, *rule_values)
8493

8594

8695
def apply_humidity_rule(rule, register):
87-
rule_function, rule_values = LIGHT_RULES_MAP.get(rule, None)
96+
rule_function, rule_values = HUMIDITY_RULES_MAP.get(rule, None)
8897
if rule_function:
8998
return not rule_function(register, *rule_values)
9099

app/service/rabbitmq/consumer.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import pydantic
55
import logging
66
from exceptions.invalid_insertion import InvalidInsertionError
7-
from exceptions.deviating_parameters import DeviatingParametersError
7+
from exceptions.deviating_parameters import DeviatedParametersError
88
from exceptions.empty_package import EmptyPackageError
99
from exceptions.row_not_found import RowNotFoundError
1010
from pydantic import ValidationError
@@ -16,18 +16,17 @@
1616
from ..common.middleware import Middleware
1717
from database.models.measurement import Measurement
1818
from database.database import SQLAlchemyClient
19+
from resources.parser import apply_rules
1920

2021
Base = declarative_base(metadata=MetaData(schema='dev'))
2122

2223
logger = logging.getLogger("rabbitmq_consumer")
23-
24+
logging.getLogger("pika").setLevel(logging.WARNING)
2425

2526
dbUrl = os.environ.get("DATABASE_URL")
2627
engine = create_engine(dbUrl, echo=True, future=True)
2728
session = Session(engine)
2829

29-
# logger_messages.py
30-
3130

3231
class Consumer:
3332
def __init__(self, queue_name):
@@ -57,16 +56,16 @@ def send_notification(self, id_user, message):
5756
logger.info(f"[ ID_USER: {id_user} ]")
5857
logger.info("TO DO - For Step #2 & Step #4 from Ticket HAN-14")
5958

60-
def apply_rules(self, measurement_from_rabbit, device_plant):
61-
logger.info("TO DO - Step #3 from Ticket HAN-14")
62-
logger.info("TO DO - Step #4 from Ticket HAN-14")
59+
def apply_rules(self, measurement):
60+
# TODO: FIND PLANT TYPE NAME GIVEN PLANT TYPE
61+
deviated_parameters = apply_rules(measurement, "Acorus calamus")
62+
if len(deviated_parameters) > 0:
63+
raise DeviatedParametersError(deviated_parameters)
64+
6365

64-
# ...This is an example, the exception can be much more personalized...
65-
# raise DeviatingParametersError(["temperature", "humidity"])
6666
def save_measurement(self, measurement_from_rabbit, device_plant):
6767
logger.info("TO DO - Step #5 from Ticket HAN-14")
6868

69-
# Indentation fixed (4 spaces)
7069
measurement_from_db = Measurement(
7170
id_plant=device_plant.id_plant,
7271
plant_type=device_plant.plant_type,
@@ -98,7 +97,7 @@ def __callback(self, body):
9897

9998
device_plant = self.obtain_device_plant(measurement)
10099
self.check_package(measurement)
101-
self.apply_rules(measurement, device_plant)
100+
self.apply_rules(measurement)
102101
except (pydantic.errors.PydanticUserError,
103102
ValidationError,
104103
json.JSONDecodeError) as err:
@@ -117,7 +116,7 @@ def __callback(self, body):
117116
self.send_notification(device_plant.id_user, err)
118117

119118
measurement = None # For not saving the measurement.
120-
except DeviatingParametersError as err:
119+
except DeviatedParametersError as err:
121120
logger.warn(LoggerMessages.DEVIATING_PARAMETERS)
122121
logger.debug(LoggerMessages.ERROR_DETAILS.format(err, body))
123122

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ uvicorn==0.25.0
33
python-dotenv
44
flake8
55
psycopg2
6+
pandas
67

78
### RabbitMQ ###
89
pika

0 commit comments

Comments
 (0)