From b33410b72061cf371963c9cc08694733567b6a6b Mon Sep 17 00:00:00 2001 From: Folakemi Juliet Date: Mon, 16 Jun 2025 19:17:27 -0700 Subject: [PATCH 1/2] Completed Project 3 water quality monitoring --- WATER_QUALITY_MONITORING | 1 + 1 file changed, 1 insertion(+) create mode 160000 WATER_QUALITY_MONITORING diff --git a/WATER_QUALITY_MONITORING b/WATER_QUALITY_MONITORING new file mode 160000 index 000000000..d8e01fac7 --- /dev/null +++ b/WATER_QUALITY_MONITORING @@ -0,0 +1 @@ +Subproject commit d8e01fac730cad564e68aef22682011e0fb721ed From ceaaed6e881e560ac17b7115a7ca196e9537379b Mon Sep 17 00:00:00 2001 From: Folakemi Juliet Date: Mon, 16 Jun 2025 19:23:14 -0700 Subject: [PATCH 2/2] Completed Project 3* water quality monitoring --- WATER_QUALITY_MONITORING | 1 - requirements.txt | 3 +- src/__pycache__/evaluate.cpython-313.pyc | Bin 0 -> 1928 bytes src/__pycache__/load_data.cpython-313.pyc | Bin 0 -> 2136 bytes src/__pycache__/sensor.cpython-313.pyc | Bin 0 -> 1058 bytes src/clean_data.py | 22 + src/evaluate.py | 32 +- src/load_data.py | 42 +- src/main.py | 53 ++ src/results.csv | 1001 +++++++++++++++++++++ src/sensor.py | 17 + 11 files changed, 1153 insertions(+), 18 deletions(-) delete mode 160000 WATER_QUALITY_MONITORING create mode 100644 src/__pycache__/evaluate.cpython-313.pyc create mode 100644 src/__pycache__/load_data.cpython-313.pyc create mode 100644 src/__pycache__/sensor.cpython-313.pyc create mode 100644 src/results.csv create mode 100644 src/sensor.py diff --git a/WATER_QUALITY_MONITORING b/WATER_QUALITY_MONITORING deleted file mode 160000 index d8e01fac7..000000000 --- a/WATER_QUALITY_MONITORING +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d8e01fac730cad564e68aef22682011e0fb721ed diff --git a/requirements.txt b/requirements.txt index 1411a4a0b..5bf40bddc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ -pandas \ No newline at end of file +pandas +import pandas \ No newline at end of file diff --git a/src/__pycache__/evaluate.cpython-313.pyc b/src/__pycache__/evaluate.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..13b6c28f7d9362d3c61fefc3da7e9e6ad4008db4 GIT binary patch literal 1928 zcma)7U1-}@6uy$>e>-iQ#oW;Ux+02AuE4C6@^6r(J z)K7aFDGbVBVclC+3bCKE$BsR0k9`_3NwCpg27^N1!o0E9ohw-m^&IHII`{8<=kMNg z+>S;=21c{z$){($$ff2ZubdkzA zTMh?}Hnpc<*g{!AiwLtKgFPafCtByZ$g=c#?_CdIVJfo-9C zr!^QIy2oowcRrD`d?y%5T57 zI$h9Q`s{VI^2 z=9365GW-eF`)fWy+qYl~vLUjI3=~5rLeR{lBd^+}tJln3AEc}KHFC$fvXHxp{(e9# z1ONAKmc}x8;+=Sp^=8cyyNPcmw&OeJemHj+o2lh@*XnC9=?K+6*u7o9{fzr1 z{8M=U>W%N`pC=9?pMdsec(g%(7oXyt^(X7K`_1G+Be~GLe7$k`dI!8WI(ZmLwxUDL z=vX50d!xyN$kdA)A8ntlUD_4u!jB*BUzytz=ASL?y}7XII|w9Nr-nD9 zM;^4q++~h8FnxfKLc6cp9hTO3N(j*YrpqM-`ddhX2AQvDbRLoHrr9|;B}pqPCZ?w9 zif+KMcSSQ~6VuAUqrj|T$-X8vC&{LX)#Zw*5J{>d+pc{zn6@sP(F-HzfqjLJSdVw& zapefXP*d#T*PDOS)jy#DZ`?sspx}Xj9a+!I1P{4-@I^YKfpzYF&T;>J3_TOk-e9-m VBM-wczoVglxid`sF9giS{0E-$jvfF2 literal 0 HcmV?d00001 diff --git a/src/__pycache__/load_data.cpython-313.pyc b/src/__pycache__/load_data.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a2e2dfb73be9cbdd6a6f9356634da1a076905a0f GIT binary patch literal 2136 zcmb7EO>7%Q6rTO@Ul!Z3oeGlBbep6kZk4oZ2yNUHQHNAeN~pXwQWdM#vO7*(oZaor zZkwh(M2Ld}hqOSIa3Vb*+7mr;Z7y7GB_d()p%N!<76FN$3p4B3PECr$Nc-l^`}^L! z+4pvW!8Smbv3_ZG$p^sC>`-6gF0)gh%zdB$g?k4ePT@1WB4oIfw{F*<-{;=W&4$SLB_yev# z%B^zq%s3i5)Dm0#Uol^JHr{h$dRk&q%-W*(FVUCh_uS2!=0jkF-|L}Ji*x)8eSNm) zxEweu90ED|MpFx&=jrpv1yj|bE@Ma2AjUbTP`EX`5Sc{CL<#xwER@+J$^#4S1M*E3 z%Z6#oIny!p;f2mtqdb=3oMlu0gZrp76Cua4A@%GzXUL8L=PjtwvkV!SY-*Z=5Y!WL z+)sE*Cw>G~J*(jx#ABhnVUq|;c*?ZTGkh0;cwJviLX!;mP1ROwa_N$aFhsROU~*oA zmYp|^xPaI%M?{@k5)NW^l4Y4>GZ`J?4{g&LI(=<)#+cPIY3h$N4yBo!str;0x}z5I z_O0xkY2%T;++IDs5$-RF z6@Rc4if{UlZiiz<>5q!^@($ps5f!%|UK?ENDjhph3XO02&;A&WRixnZ*wWaR)K`}J z8g{PxUaee~;oyk$* z2^eJbD5L8g0Y(pok|%`q6CTPFUe7(#-0Zq;bARDBcN(O2TbIfkYjl@0XltjKb<282 zUms_CY+~Sj4)ezW=40Tk69AZz6vJ&<^(d)8i-H~-I_cj!g^tS6-9dDTfA=H+5*;O& zH@Gw?GzOF+(A@XQ?Fo&32P*Vgp%M?0t$LMfU1XlL_>!k?CImJ81 zx%G-PqtrRYr}&w6I@XW`n!_Ls`f2vH8{|N|ZHjO*;j(ToK;qR*h%^}I5Sw*zj(D;2 z0fzQv%8EKNt%WYuU9whys?jlA3`=OB>~q`=v{p~HE^rg5A{?6yRpp)jkwETeWNXmhi1 zdkpnb!2$Z=N0cmr?SQo0xzzb-_hOQ=TY>I!pnD^5ke((czfY_uHX>8&iSH&>;`id8 zAKQxdm7{$d(IZ>Yp>lNSq4s#>hv=y%iE?CWG5PU@r@r9b=t|eUt_@#z<-m(8S3kSD zmR!5>;KJki@_{#seDSrVw(Vee`O4Cj)f=m`#Ve)YK#_k+Gw50BS-o8BDFu2LlNB*g zYI|i<9N3nEi*Nt=YXn5!<1l;sZ%<8l#JHDuE!EIfTq}t{%S8gL=I4<*2Wta_UGfpw zp%m0A;2)neb*BJdM}t(xdJHEhsR|s&{RCoFv7PIrWctLUpcU*7qRvDJQw3*9}r XGJbEo3Mjjl{O00=i@!4#vET0>uJpus literal 0 HcmV?d00001 diff --git a/src/__pycache__/sensor.cpython-313.pyc b/src/__pycache__/sensor.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d01d3005f5e9c98af98a46eb65c707bbd7a786b GIT binary patch literal 1058 zcmZ`%&rj4)5T171{RM>$5wg2+$wG+OgP;cp2Q~f$#L%qa(B!4GWw%mVeDAFUPn-+~ zE*>_96KDPtk9sg{dNT3k4cQp4&a_<=5+~{R=6!Ew-n?%*GK?yqZG3v!Yp4LGj(HVdZT(N+wmck2`+61my1w`G_c(JRS z#l*1uNW^^0cf26#{-DCHp4Xs-hys42R|o^xu7$W})={4+4|CtcxHfjyfpFXbY(Eb3 zJ^{90gj6Lp3ovT@Ht2$>ZoaE^qP-|SjM`!BIx>i(3q7fbv^5rZNqI~s>On85$Uff* zyg(i$hH!R$dBlWtWM7ziq6t6ToTKM>rtvtCyYj*>EC0p>84%-zy%B5Q^R`uvcCR#Y5hbyHHI_yPD>fxS~$_ZmYXAt1ouW&+!XOkXYv-E0jjx$>s>?k zM*Y8M$lfS_i=~=(3}Z>cJ7y^>`V!5IQ%VY^!Y9!e)MJ|)h)GGt%nMwZ%-+@@r_+Hv z!N6nq)@Ys2pUn^J_s@+peE!_W pd.DataFrame: """ Clean sensor data by handling missing or invalid values. @@ -5,3 +7,23 @@ def clean_sensor_data(df: pd.DataFrame) -> pd.DataFrame: Returns: pd.DataFrame: Cleaned data. """ + # drop rows with missing values + df = df.dropna() + + # drop duplicate rows + df = df.drop_duplicates() + + # standardize column names + df.columns = [col.strip().lower().replace(' ', '_') for col in df.columns] + + # convert date column to datetime type + if 'date' in df.columns: + df['date'] = pd.to_datetime(df['date'], errors='coerce') + df = df.dropna(subset=['date']) # remove rows where date conversion failed + + # reset index + df = df.reset_index(drop=True) + + print("Data cleaned successfully.") + return df + diff --git a/src/evaluate.py b/src/evaluate.py index 006256224..1844988b2 100644 --- a/src/evaluate.py +++ b/src/evaluate.py @@ -1,9 +1,25 @@ +import pandas as pd +# evaluate.py class WaterQualityEvaluator: - def __init__(self, ph_range=(6.5, 8.5), turbidity_threshold=1.0): - self.ph_range = ph_range - self.turbidity_threshold = turbidity_threshold - - def is_safe(self, row: pd.Series) -> bool: - """ - Determine if a row of water data is safe. - """ + def __init__(self, ph_min: float, ph_max: float, turbidity_max: float): + self.ph_min = ph_min + self.ph_max = ph_max + self.turbidity_max = turbidity_max + + def evaluate(self, sensor): + reasons = [] + + if sensor.ph is None or pd.isna(sensor.ph): + reasons.append("missing pH") + elif not (self.ph_min <= sensor.ph <= self.ph_max): + reasons.append("pH too high" if sensor.ph > self.ph_max else "pH too low") + + if sensor.turbidity is None or pd.isna(sensor.turbidity): + reasons.append("missing turbidity") + elif sensor.turbidity > self.turbidity_max: + reasons.append("turbidity too high") + + sensor.safety_status = f"Unsafe ({', '.join(reasons)})" if reasons else "Safe" + return sensor + + diff --git a/src/load_data.py b/src/load_data.py index c0126703a..d4da43d89 100644 --- a/src/load_data.py +++ b/src/load_data.py @@ -1,10 +1,36 @@ -def load_csv(filepath: str) -> pd.DataFrame: - """ - Load sensor data from a CSV file. +import pandas as pd + +def read_csv(filepath: str) -> pd.DataFrame: + try: + data = pd.read_csv(filepath) + print("File loaded successfully.") + return data + except FileNotFoundError: + print(f"Error: The file '{filepath}' was not found.") + return None + except pd.errors.EmptyDataError: + print("Error: The file is empty.") + return None + except pd.errors.ParserError: + print("Error: The file is corrupted.") + return None + except Exception as e: + print(f"An unexpected error occurred: {e}") + return None + +def clean_data(df: pd.DataFrame) -> pd.DataFrame: + df = df.dropna() + df = df.drop_duplicates() + df.columns = [col.strip().lower().replace(' ', '_') for col in df.columns] + + if 'date' in df.columns: + df['date'] = pd.to_datetime(df['date'], errors='coerce') + df = df.dropna(subset=['date']) + + df = df.reset_index(drop=True) + print("Data cleaned successfully.") + return df + + - Args: - filepath (str): Path to the CSV file. - Returns: - pd.DataFrame: Loaded data as a pandas DataFrame. - """ diff --git a/src/main.py b/src/main.py index e69de29bb..d09bc43ec 100644 --- a/src/main.py +++ b/src/main.py @@ -0,0 +1,53 @@ +# main.py +import pandas as pd +from load_data import read_csv, clean_data +from evaluate import WaterQualityEvaluator +from sensor import SensorReading +import csv + +def run_pipeline(filepath: str): + location_input = input("Enter the lake or location name to analyze: ").strip() + + df = read_csv(filepath) + if df is None: + print("Failed to load data.") + return + + df = clean_data(df) + + evaluator = WaterQualityEvaluator(ph_min=6.5, ph_max=8.5, turbidity_max=5.0) + results = [] + + for _, row in df.iterrows(): + sensor = SensorReading( + sensor_id=row.get('sensor_id', 'Unknown'), + location=row.get('location', 'Unknown location'), + ph=row.get('ph'), + turbidity=row.get('turbidity') + ) + + evaluated = evaluator.evaluate(sensor) + + # Filter by location name if provided + if location_input.lower() in evaluated.location.lower(): + print(f"{evaluated.sensor_id} at {evaluated.location}: {evaluated.safety_status}") + + results.append(evaluated) + + # Save results to CSV + with open("results.csv", mode='w', newline='') as file: + writer = csv.DictWriter(file, fieldnames=["sensor_id", "location", "ph", "turbidity", "safety_status"]) + writer.writeheader() + for sensor in results: + writer.writerow(sensor.to_dict()) + + # Count safe/unsafe by location + safe = sum(1 for s in results if s.safety_status == "Safe") + unsafe = len(results) - safe + print(f"\nSummary: {safe} safe readings, {unsafe} unsafe readings.") + +if __name__ == "__main__": + run_pipeline(r"C:\Users\user\water_quality_monitoring\water_quality_monitoring\data\sensor_data.csv") + + + diff --git a/src/results.csv b/src/results.csv new file mode 100644 index 000000000..f953779e9 --- /dev/null +++ b/src/results.csv @@ -0,0 +1,1001 @@ +sensor_id,location,ph,turbidity,safety_status +SENSOR_005,Unknown location,6.48,2.43,Unsafe (pH too low) +SENSOR_017,Unknown location,7.04,4.39,Safe +SENSOR_010,Unknown location,6.69,3.78,Safe +SENSOR_009,Unknown location,6.5,2.42,Safe +SENSOR_001,Unknown location,7.75,2.72,Safe +SENSOR_013,Unknown location,7.52,1.04,Safe +SENSOR_018,Unknown location,7.51,1.44,Safe +SENSOR_019,Unknown location,7.11,3.68,Safe +SENSOR_003,Unknown location,7.58,2.62,Safe +SENSOR_016,Unknown location,7.43,3.43,Safe +SENSOR_005,Unknown location,7.08,3.91,Safe +SENSOR_008,Unknown location,7.36,4.98,Safe +SENSOR_007,Unknown location,7.39,3.91,Safe +SENSOR_018,Unknown location,7.31,3.81,Safe +SENSOR_017,Unknown location,6.68,2.91,Safe +SENSOR_006,Unknown location,7.16,4.11,Safe +SENSOR_003,Unknown location,7.12,2.13,Safe +SENSOR_013,Unknown location,6.95,2.23,Safe +SENSOR_002,Unknown location,6.62,4.31,Safe +SENSOR_019,Unknown location,7.2,4.2,Safe +SENSOR_010,Unknown location,6.55,3.52,Safe +SENSOR_004,Unknown location,7.68,2.87,Safe +SENSOR_005,Unknown location,6.65,3.0,Safe +SENSOR_002,Unknown location,7.71,3.55,Safe +SENSOR_002,Unknown location,7.14,1.81,Safe +SENSOR_007,Unknown location,6.99,2.5,Safe +SENSOR_006,Unknown location,7.04,1.63,Safe +SENSOR_010,Unknown location,7.2,4.35,Safe +SENSOR_016,Unknown location,6.97,2.35,Safe +SENSOR_005,Unknown location,6.61,2.95,Safe +SENSOR_016,Unknown location,7.48,3.86,Safe +SENSOR_012,Unknown location,6.28,3.04,Unsafe (pH too low) +SENSOR_005,Unknown location,7.91,4.17,Safe +SENSOR_008,Unknown location,6.74,1.67,Safe +SENSOR_019,Unknown location,6.25,4.71,Unsafe (pH too low) +SENSOR_002,Unknown location,6.98,2.38,Safe +SENSOR_012,Unknown location,7.55,2.04,Safe +SENSOR_012,Unknown location,7.26,3.99,Safe +SENSOR_011,Unknown location,7.08,2.73,Safe +SENSOR_008,Unknown location,7.61,3.46,Safe +SENSOR_016,Unknown location,7.35,2.19,Safe +SENSOR_011,Unknown location,7.61,3.2,Safe +SENSOR_009,Unknown location,6.66,4.72,Safe +SENSOR_013,Unknown location,7.1,3.8,Safe +SENSOR_010,Unknown location,6.78,4.01,Safe +SENSOR_014,Unknown location,6.27,4.23,Unsafe (pH too low) +SENSOR_012,Unknown location,7.31,0.93,Safe +SENSOR_020,Unknown location,6.86,0.79,Safe +SENSOR_020,Unknown location,6.11,2.57,Unsafe (pH too low) +SENSOR_003,Unknown location,7.3,1.53,Safe +SENSOR_017,Unknown location,7.25,3.37,Safe +SENSOR_006,Unknown location,7.48,2.24,Safe +SENSOR_013,Unknown location,7.78,2.57,Safe +SENSOR_002,Unknown location,8.11,5.25,Unsafe (turbidity too high) +SENSOR_008,Unknown location,7.2,2.8,Safe +SENSOR_017,Unknown location,6.12,3.62,Unsafe (pH too low) +SENSOR_002,Unknown location,6.07,2.18,Unsafe (pH too low) +SENSOR_012,Unknown location,7.07,2.16,Safe +SENSOR_011,Unknown location,7.69,2.18,Safe +SENSOR_012,Unknown location,7.63,2.45,Safe +SENSOR_011,Unknown location,6.48,3.7,Unsafe (pH too low) +SENSOR_019,Unknown location,7.0,3.96,Safe +SENSOR_003,Unknown location,7.33,2.32,Safe +SENSOR_005,Unknown location,7.84,4.16,Safe +SENSOR_011,Unknown location,7.08,2.65,Safe +SENSOR_001,Unknown location,6.29,2.29,Unsafe (pH too low) +SENSOR_007,Unknown location,7.11,1.03,Safe +SENSOR_013,Unknown location,6.75,3.56,Safe +SENSOR_009,Unknown location,6.94,3.68,Safe +SENSOR_018,Unknown location,6.41,3.0,Unsafe (pH too low) +SENSOR_014,Unknown location,7.24,2.81,Safe +SENSOR_012,Unknown location,6.72,2.77,Safe +SENSOR_002,Unknown location,6.98,2.64,Safe +SENSOR_013,Unknown location,7.45,4.05,Safe +SENSOR_002,Unknown location,6.57,1.68,Safe +SENSOR_013,Unknown location,6.23,3.57,Unsafe (pH too low) +SENSOR_015,Unknown location,7.22,2.04,Safe +SENSOR_005,Unknown location,7.09,2.8,Safe +SENSOR_013,Unknown location,8.11,4.5,Safe +SENSOR_008,Unknown location,6.26,2.04,Unsafe (pH too low) +SENSOR_016,Unknown location,6.05,3.66,Unsafe (pH too low) +SENSOR_003,Unknown location,7.44,5.18,Unsafe (turbidity too high) +SENSOR_001,Unknown location,7.19,1.76,Safe +SENSOR_001,Unknown location,7.37,3.42,Safe +SENSOR_006,Unknown location,6.26,1.28,Unsafe (pH too low) +SENSOR_015,Unknown location,7.46,4.1,Safe +SENSOR_015,Unknown location,6.7,3.92,Safe +SENSOR_012,Unknown location,7.17,2.58,Safe +SENSOR_002,Unknown location,7.06,2.69,Safe +SENSOR_005,Unknown location,7.52,1.92,Safe +SENSOR_001,Unknown location,7.32,2.72,Safe +SENSOR_016,Unknown location,6.17,3.77,Unsafe (pH too low) +SENSOR_011,Unknown location,7.01,0.07,Safe +SENSOR_019,Unknown location,6.89,1.99,Safe +SENSOR_006,Unknown location,6.99,4.11,Safe +SENSOR_012,Unknown location,6.73,2.85,Safe +SENSOR_018,Unknown location,7.91,3.32,Safe +SENSOR_008,Unknown location,6.63,1.71,Safe +SENSOR_011,Unknown location,7.61,3.88,Safe +SENSOR_009,Unknown location,6.81,2.65,Safe +SENSOR_017,Unknown location,7.17,2.64,Safe +SENSOR_016,Unknown location,7.48,4.81,Safe +SENSOR_017,Unknown location,7.29,2.62,Safe +SENSOR_010,Unknown location,6.17,3.92,Unsafe (pH too low) +SENSOR_012,Unknown location,7.91,3.56,Safe +SENSOR_012,Unknown location,6.4,3.49,Unsafe (pH too low) +SENSOR_017,Unknown location,6.9,1.34,Safe +SENSOR_010,Unknown location,7.01,2.08,Safe +SENSOR_005,Unknown location,6.45,3.29,Unsafe (pH too low) +SENSOR_011,Unknown location,6.96,3.14,Safe +SENSOR_014,Unknown location,6.54,2.76,Safe +SENSOR_017,Unknown location,6.99,3.07,Safe +SENSOR_017,Unknown location,6.35,3.1,Unsafe (pH too low) +SENSOR_007,Unknown location,7.53,2.5,Safe +SENSOR_015,Unknown location,7.03,0.93,Safe +SENSOR_019,Unknown location,8.24,2.79,Safe +SENSOR_005,Unknown location,6.83,3.62,Safe +SENSOR_006,Unknown location,7.2,2.06,Safe +SENSOR_005,Unknown location,7.93,2.67,Safe +SENSOR_013,Unknown location,7.58,2.67,Safe +SENSOR_011,Unknown location,7.73,2.72,Safe +SENSOR_018,Unknown location,6.32,3.96,Unsafe (pH too low) +SENSOR_018,Unknown location,6.39,4.48,Unsafe (pH too low) +SENSOR_004,Unknown location,7.39,4.1,Safe +SENSOR_014,Unknown location,5.89,2.31,Unsafe (pH too low) +SENSOR_018,Unknown location,6.5,3.51,Safe +SENSOR_011,Unknown location,7.5,3.16,Safe +SENSOR_008,Unknown location,7.15,2.55,Safe +SENSOR_010,Unknown location,7.13,2.22,Safe +SENSOR_005,Unknown location,6.9,3.87,Safe +SENSOR_007,Unknown location,6.18,3.24,Unsafe (pH too low) +SENSOR_011,Unknown location,6.53,4.01,Safe +SENSOR_016,Unknown location,7.39,1.7,Safe +SENSOR_004,Unknown location,6.61,3.7,Safe +SENSOR_001,Unknown location,7.14,2.78,Safe +SENSOR_016,Unknown location,7.15,1.97,Safe +SENSOR_020,Unknown location,7.77,1.92,Safe +SENSOR_017,Unknown location,7.13,1.2,Safe +SENSOR_017,Unknown location,7.26,1.85,Safe +SENSOR_010,Unknown location,6.57,3.9,Safe +SENSOR_004,Unknown location,8.26,3.72,Safe +SENSOR_011,Unknown location,6.71,2.05,Safe +SENSOR_003,Unknown location,6.63,4.52,Safe +SENSOR_013,Unknown location,7.23,4.95,Safe +SENSOR_019,Unknown location,6.85,5.36,Unsafe (turbidity too high) +SENSOR_013,Unknown location,7.54,2.37,Safe +SENSOR_001,Unknown location,6.93,3.82,Safe +SENSOR_017,Unknown location,7.0,3.39,Safe +SENSOR_013,Unknown location,6.54,2.74,Safe +SENSOR_020,Unknown location,5.76,3.82,Unsafe (pH too low) +SENSOR_012,Unknown location,6.91,5.35,Unsafe (turbidity too high) +SENSOR_016,Unknown location,7.01,3.68,Safe +SENSOR_012,Unknown location,6.84,3.47,Safe +SENSOR_019,Unknown location,6.73,2.76,Safe +SENSOR_008,Unknown location,6.65,5.31,Unsafe (turbidity too high) +SENSOR_016,Unknown location,7.97,4.33,Safe +SENSOR_011,Unknown location,7.29,2.63,Safe +SENSOR_020,Unknown location,7.4,2.24,Safe +SENSOR_016,Unknown location,6.61,3.96,Safe +SENSOR_008,Unknown location,6.8,4.27,Safe +SENSOR_014,Unknown location,6.68,3.16,Safe +SENSOR_009,Unknown location,7.0,2.56,Safe +SENSOR_012,Unknown location,6.9,2.71,Safe +SENSOR_008,Unknown location,7.24,3.02,Safe +SENSOR_001,Unknown location,6.61,3.33,Safe +SENSOR_006,Unknown location,7.4,1.34,Safe +SENSOR_019,Unknown location,6.46,3.36,Unsafe (pH too low) +SENSOR_012,Unknown location,7.07,2.11,Safe +SENSOR_018,Unknown location,6.84,2.94,Safe +SENSOR_009,Unknown location,7.36,4.09,Safe +SENSOR_018,Unknown location,7.0,5.15,Unsafe (turbidity too high) +SENSOR_004,Unknown location,7.08,2.91,Safe +SENSOR_004,Unknown location,6.63,4.65,Safe +SENSOR_018,Unknown location,6.55,4.31,Safe +SENSOR_016,Unknown location,6.37,1.8,Unsafe (pH too low) +SENSOR_017,Unknown location,7.4,1.4,Safe +SENSOR_006,Unknown location,7.32,2.4,Safe +SENSOR_002,Unknown location,7.61,2.04,Safe +SENSOR_002,Unknown location,6.98,2.52,Safe +SENSOR_020,Unknown location,7.19,2.93,Safe +SENSOR_010,Unknown location,6.48,2.31,Unsafe (pH too low) +SENSOR_015,Unknown location,7.01,3.92,Safe +SENSOR_017,Unknown location,7.83,3.36,Safe +SENSOR_011,Unknown location,6.53,2.93,Safe +SENSOR_006,Unknown location,7.46,2.99,Safe +SENSOR_002,Unknown location,7.11,2.07,Safe +SENSOR_001,Unknown location,7.57,2.97,Safe +SENSOR_004,Unknown location,6.34,2.58,Unsafe (pH too low) +SENSOR_008,Unknown location,7.25,3.01,Safe +SENSOR_003,Unknown location,8.0,3.74,Safe +SENSOR_007,Unknown location,6.84,3.03,Safe +SENSOR_014,Unknown location,6.65,3.54,Safe +SENSOR_010,Unknown location,6.81,2.89,Safe +SENSOR_014,Unknown location,6.23,3.06,Unsafe (pH too low) +SENSOR_005,Unknown location,7.18,4.83,Safe +SENSOR_008,Unknown location,6.96,2.89,Safe +SENSOR_013,Unknown location,6.92,3.63,Safe +SENSOR_001,Unknown location,6.41,3.22,Unsafe (pH too low) +SENSOR_016,Unknown location,6.18,2.48,Unsafe (pH too low) +SENSOR_004,Unknown location,7.35,3.18,Safe +SENSOR_006,Unknown location,6.45,3.53,Unsafe (pH too low) +SENSOR_020,Unknown location,7.19,2.82,Safe +SENSOR_007,Unknown location,6.17,1.98,Unsafe (pH too low) +SENSOR_010,Unknown location,6.75,3.3,Safe +SENSOR_013,Unknown location,7.23,2.15,Safe +SENSOR_004,Unknown location,6.81,3.76,Safe +SENSOR_012,Unknown location,6.85,2.45,Safe +SENSOR_005,Unknown location,6.95,3.5,Safe +SENSOR_005,Unknown location,7.04,3.73,Safe +SENSOR_020,Unknown location,6.26,2.88,Unsafe (pH too low) +SENSOR_016,Unknown location,7.32,3.48,Safe +SENSOR_011,Unknown location,6.8,3.52,Safe +SENSOR_018,Unknown location,6.14,2.96,Unsafe (pH too low) +SENSOR_007,Unknown location,7.54,3.04,Safe +SENSOR_005,Unknown location,7.68,3.34,Safe +SENSOR_003,Unknown location,7.79,2.61,Safe +SENSOR_014,Unknown location,7.16,2.26,Safe +SENSOR_014,Unknown location,7.02,2.38,Safe +SENSOR_003,Unknown location,6.81,4.27,Safe +SENSOR_010,Unknown location,6.85,3.82,Safe +SENSOR_017,Unknown location,7.21,3.25,Safe +SENSOR_009,Unknown location,5.86,3.24,Unsafe (pH too low) +SENSOR_018,Unknown location,7.7,2.81,Safe +SENSOR_011,Unknown location,7.6,3.68,Safe +SENSOR_007,Unknown location,7.03,4.2,Safe +SENSOR_012,Unknown location,6.47,2.88,Unsafe (pH too low) +SENSOR_007,Unknown location,7.24,3.18,Safe +SENSOR_014,Unknown location,6.69,3.53,Safe +SENSOR_018,Unknown location,6.99,3.83,Safe +SENSOR_013,Unknown location,7.1,3.15,Safe +SENSOR_008,Unknown location,7.33,4.39,Safe +SENSOR_004,Unknown location,7.72,4.39,Safe +SENSOR_006,Unknown location,6.9,4.57,Safe +SENSOR_015,Unknown location,6.4,1.95,Unsafe (pH too low) +SENSOR_009,Unknown location,7.8,3.34,Safe +SENSOR_016,Unknown location,6.34,3.68,Unsafe (pH too low) +SENSOR_020,Unknown location,6.8,3.93,Safe +SENSOR_001,Unknown location,7.32,2.67,Safe +SENSOR_003,Unknown location,7.34,2.37,Safe +SENSOR_015,Unknown location,6.96,3.57,Safe +SENSOR_009,Unknown location,7.38,0.97,Safe +SENSOR_005,Unknown location,7.37,3.19,Safe +SENSOR_013,Unknown location,7.27,2.92,Safe +SENSOR_007,Unknown location,6.33,4.16,Unsafe (pH too low) +SENSOR_016,Unknown location,6.99,1.99,Safe +SENSOR_007,Unknown location,6.55,2.04,Safe +SENSOR_010,Unknown location,7.64,2.59,Safe +SENSOR_008,Unknown location,7.18,2.28,Safe +SENSOR_020,Unknown location,7.86,3.38,Safe +SENSOR_015,Unknown location,6.83,4.1,Safe +SENSOR_003,Unknown location,6.65,2.54,Safe +SENSOR_012,Unknown location,7.5,2.74,Safe +SENSOR_001,Unknown location,6.79,2.21,Safe +SENSOR_006,Unknown location,6.61,2.88,Safe +SENSOR_014,Unknown location,5.91,2.71,Unsafe (pH too low) +SENSOR_002,Unknown location,6.6,4.72,Safe +SENSOR_012,Unknown location,7.4,3.69,Safe +SENSOR_015,Unknown location,7.08,2.23,Safe +SENSOR_005,Unknown location,6.78,5.04,Unsafe (turbidity too high) +SENSOR_014,Unknown location,7.21,2.1,Safe +SENSOR_011,Unknown location,7.15,1.99,Safe +SENSOR_001,Unknown location,7.44,1.81,Safe +SENSOR_014,Unknown location,7.22,4.3,Safe +SENSOR_001,Unknown location,6.88,2.06,Safe +SENSOR_008,Unknown location,6.55,2.87,Safe +SENSOR_012,Unknown location,7.46,2.18,Safe +SENSOR_019,Unknown location,7.6,1.43,Safe +SENSOR_019,Unknown location,7.23,2.1,Safe +SENSOR_020,Unknown location,6.71,2.7,Safe +SENSOR_001,Unknown location,7.01,2.66,Safe +SENSOR_002,Unknown location,6.66,1.64,Safe +SENSOR_007,Unknown location,6.16,3.04,Unsafe (pH too low) +SENSOR_018,Unknown location,6.95,3.59,Safe +SENSOR_010,Unknown location,7.73,3.04,Safe +SENSOR_005,Unknown location,6.92,2.94,Safe +SENSOR_010,Unknown location,7.45,1.88,Safe +SENSOR_006,Unknown location,7.29,4.36,Safe +SENSOR_018,Unknown location,7.34,2.39,Safe +SENSOR_003,Unknown location,6.64,2.8,Safe +SENSOR_017,Unknown location,7.36,2.77,Safe +SENSOR_006,Unknown location,7.44,3.51,Safe +SENSOR_006,Unknown location,6.99,2.53,Safe +SENSOR_004,Unknown location,7.32,1.71,Safe +SENSOR_003,Unknown location,6.57,2.83,Safe +SENSOR_018,Unknown location,6.63,2.35,Safe +SENSOR_001,Unknown location,6.79,4.88,Safe +SENSOR_019,Unknown location,6.91,0.98,Safe +SENSOR_016,Unknown location,7.01,3.59,Safe +SENSOR_007,Unknown location,7.7,3.15,Safe +SENSOR_014,Unknown location,8.09,1.86,Safe +SENSOR_003,Unknown location,7.39,2.38,Safe +SENSOR_004,Unknown location,6.9,2.99,Safe +SENSOR_020,Unknown location,6.8,3.64,Safe +SENSOR_014,Unknown location,6.59,2.73,Safe +SENSOR_002,Unknown location,7.85,2.61,Safe +SENSOR_008,Unknown location,7.84,4.24,Safe +SENSOR_013,Unknown location,6.72,3.09,Safe +SENSOR_013,Unknown location,5.97,2.39,Unsafe (pH too low) +SENSOR_001,Unknown location,6.98,3.1,Safe +SENSOR_010,Unknown location,6.39,2.54,Unsafe (pH too low) +SENSOR_020,Unknown location,6.7,4.11,Safe +SENSOR_019,Unknown location,7.46,3.93,Safe +SENSOR_016,Unknown location,7.06,2.45,Safe +SENSOR_006,Unknown location,6.45,1.55,Unsafe (pH too low) +SENSOR_010,Unknown location,6.73,4.17,Safe +SENSOR_015,Unknown location,6.68,3.39,Safe +SENSOR_005,Unknown location,7.4,2.16,Safe +SENSOR_003,Unknown location,6.85,3.3,Safe +SENSOR_003,Unknown location,5.97,3.61,Unsafe (pH too low) +SENSOR_008,Unknown location,7.3,3.58,Safe +SENSOR_004,Unknown location,7.71,3.48,Safe +SENSOR_009,Unknown location,7.05,2.75,Safe +SENSOR_007,Unknown location,6.67,4.8,Safe +SENSOR_010,Unknown location,6.95,3.62,Safe +SENSOR_010,Unknown location,8.11,2.57,Safe +SENSOR_004,Unknown location,6.96,1.11,Safe +SENSOR_002,Unknown location,7.25,3.0,Safe +SENSOR_004,Unknown location,6.12,1.03,Unsafe (pH too low) +SENSOR_011,Unknown location,6.53,1.86,Safe +SENSOR_009,Unknown location,7.12,3.88,Safe +SENSOR_015,Unknown location,7.21,1.85,Safe +SENSOR_016,Unknown location,6.11,3.82,Unsafe (pH too low) +SENSOR_005,Unknown location,7.41,3.03,Safe +SENSOR_010,Unknown location,7.87,3.44,Safe +SENSOR_004,Unknown location,7.26,3.01,Safe +SENSOR_004,Unknown location,5.99,3.29,Unsafe (pH too low) +SENSOR_020,Unknown location,7.72,4.62,Safe +SENSOR_001,Unknown location,6.42,1.45,Unsafe (pH too low) +SENSOR_010,Unknown location,7.48,3.79,Safe +SENSOR_018,Unknown location,6.36,4.99,Unsafe (pH too low) +SENSOR_002,Unknown location,7.31,2.98,Safe +SENSOR_020,Unknown location,6.41,1.17,Unsafe (pH too low) +SENSOR_016,Unknown location,6.93,3.15,Safe +SENSOR_007,Unknown location,5.97,3.15,Unsafe (pH too low) +SENSOR_004,Unknown location,7.36,4.16,Safe +SENSOR_008,Unknown location,6.99,3.68,Safe +SENSOR_009,Unknown location,6.57,3.05,Safe +SENSOR_006,Unknown location,7.16,4.1,Safe +SENSOR_002,Unknown location,6.78,1.74,Safe +SENSOR_013,Unknown location,6.95,2.36,Safe +SENSOR_007,Unknown location,7.35,4.6,Safe +SENSOR_004,Unknown location,7.5,3.16,Safe +SENSOR_009,Unknown location,6.94,2.66,Safe +SENSOR_011,Unknown location,6.82,2.64,Safe +SENSOR_019,Unknown location,8.1,3.64,Safe +SENSOR_009,Unknown location,6.3,3.11,Unsafe (pH too low) +SENSOR_002,Unknown location,7.44,2.97,Safe +SENSOR_009,Unknown location,8.06,4.08,Safe +SENSOR_020,Unknown location,7.51,3.53,Safe +SENSOR_004,Unknown location,7.8,5.32,Unsafe (turbidity too high) +SENSOR_010,Unknown location,6.67,3.02,Safe +SENSOR_016,Unknown location,6.93,3.4,Safe +SENSOR_012,Unknown location,7.32,2.55,Safe +SENSOR_005,Unknown location,7.01,1.85,Safe +SENSOR_015,Unknown location,7.35,3.01,Safe +SENSOR_003,Unknown location,6.38,3.61,Unsafe (pH too low) +SENSOR_020,Unknown location,6.31,2.27,Unsafe (pH too low) +SENSOR_004,Unknown location,7.21,4.75,Safe +SENSOR_011,Unknown location,7.02,4.05,Safe +SENSOR_019,Unknown location,7.32,3.23,Safe +SENSOR_020,Unknown location,5.94,2.68,Unsafe (pH too low) +SENSOR_001,Unknown location,6.78,2.52,Safe +SENSOR_019,Unknown location,6.53,1.44,Safe +SENSOR_016,Unknown location,6.77,2.0,Safe +SENSOR_019,Unknown location,5.99,4.38,Unsafe (pH too low) +SENSOR_020,Unknown location,7.48,3.03,Safe +SENSOR_007,Unknown location,5.28,1.46,Unsafe (pH too low) +SENSOR_005,Unknown location,7.39,3.41,Safe +SENSOR_007,Unknown location,7.28,3.76,Safe +SENSOR_003,Unknown location,7.08,3.24,Safe +SENSOR_001,Unknown location,6.82,2.98,Safe +SENSOR_020,Unknown location,7.4,3.52,Safe +SENSOR_017,Unknown location,6.82,4.19,Safe +SENSOR_007,Unknown location,6.82,2.6,Safe +SENSOR_002,Unknown location,6.35,4.04,Unsafe (pH too low) +SENSOR_006,Unknown location,7.31,3.92,Safe +SENSOR_013,Unknown location,6.25,3.69,Unsafe (pH too low) +SENSOR_011,Unknown location,6.19,2.93,Unsafe (pH too low) +SENSOR_010,Unknown location,6.43,4.72,Unsafe (pH too low) +SENSOR_018,Unknown location,6.65,2.37,Safe +SENSOR_018,Unknown location,7.79,3.35,Safe +SENSOR_003,Unknown location,6.8,2.93,Safe +SENSOR_017,Unknown location,7.74,2.09,Safe +SENSOR_011,Unknown location,6.66,3.18,Safe +SENSOR_020,Unknown location,6.81,3.58,Safe +SENSOR_004,Unknown location,7.48,4.15,Safe +SENSOR_013,Unknown location,7.43,1.78,Safe +SENSOR_019,Unknown location,7.55,2.53,Safe +SENSOR_010,Unknown location,7.03,3.42,Safe +SENSOR_007,Unknown location,7.63,3.76,Safe +SENSOR_020,Unknown location,7.02,3.79,Safe +SENSOR_010,Unknown location,6.85,3.19,Safe +SENSOR_004,Unknown location,7.23,2.88,Safe +SENSOR_006,Unknown location,7.1,3.47,Safe +SENSOR_009,Unknown location,6.79,2.35,Safe +SENSOR_005,Unknown location,6.42,2.46,Unsafe (pH too low) +SENSOR_010,Unknown location,6.41,4.25,Unsafe (pH too low) +SENSOR_019,Unknown location,5.51,3.69,Unsafe (pH too low) +SENSOR_008,Unknown location,7.38,3.67,Safe +SENSOR_012,Unknown location,6.77,2.42,Safe +SENSOR_017,Unknown location,7.45,2.85,Safe +SENSOR_018,Unknown location,6.69,1.97,Safe +SENSOR_015,Unknown location,6.34,4.01,Unsafe (pH too low) +SENSOR_016,Unknown location,7.21,2.93,Safe +SENSOR_014,Unknown location,6.37,1.36,Unsafe (pH too low) +SENSOR_015,Unknown location,6.49,2.25,Unsafe (pH too low) +SENSOR_008,Unknown location,6.93,4.06,Safe +SENSOR_004,Unknown location,7.56,3.42,Safe +SENSOR_008,Unknown location,7.21,4.66,Safe +SENSOR_015,Unknown location,7.02,3.92,Safe +SENSOR_010,Unknown location,6.73,1.96,Safe +SENSOR_011,Unknown location,7.05,1.56,Safe +SENSOR_009,Unknown location,6.84,4.18,Safe +SENSOR_002,Unknown location,7.02,3.13,Safe +SENSOR_008,Unknown location,5.97,3.28,Unsafe (pH too low) +SENSOR_014,Unknown location,7.02,0.78,Safe +SENSOR_012,Unknown location,6.42,1.82,Unsafe (pH too low) +SENSOR_016,Unknown location,6.95,2.5,Safe +SENSOR_002,Unknown location,6.81,3.84,Safe +SENSOR_015,Unknown location,7.14,4.96,Safe +SENSOR_001,Unknown location,7.12,2.01,Safe +SENSOR_017,Unknown location,7.08,0.33,Safe +SENSOR_015,Unknown location,7.12,2.09,Safe +SENSOR_011,Unknown location,7.03,4.6,Safe +SENSOR_004,Unknown location,6.84,3.69,Safe +SENSOR_003,Unknown location,6.44,0.8,Unsafe (pH too low) +SENSOR_006,Unknown location,7.7,2.63,Safe +SENSOR_008,Unknown location,6.56,4.43,Safe +SENSOR_005,Unknown location,7.78,2.06,Safe +SENSOR_009,Unknown location,7.14,3.5,Safe +SENSOR_016,Unknown location,6.9,2.1,Safe +SENSOR_016,Unknown location,6.53,2.16,Safe +SENSOR_013,Unknown location,7.86,3.55,Safe +SENSOR_020,Unknown location,7.7,2.47,Safe +SENSOR_019,Unknown location,6.03,3.5,Unsafe (pH too low) +SENSOR_005,Unknown location,7.52,4.21,Safe +SENSOR_009,Unknown location,6.84,1.48,Safe +SENSOR_008,Unknown location,7.16,2.15,Safe +SENSOR_014,Unknown location,7.37,4.08,Safe +SENSOR_012,Unknown location,6.97,3.74,Safe +SENSOR_017,Unknown location,7.62,1.24,Safe +SENSOR_014,Unknown location,6.94,4.34,Safe +SENSOR_007,Unknown location,6.95,2.58,Safe +SENSOR_012,Unknown location,7.01,0.41,Safe +SENSOR_003,Unknown location,6.85,4.51,Safe +SENSOR_016,Unknown location,7.15,3.42,Safe +SENSOR_018,Unknown location,7.32,5.08,Unsafe (turbidity too high) +SENSOR_002,Unknown location,7.05,2.63,Safe +SENSOR_009,Unknown location,7.53,2.35,Safe +SENSOR_020,Unknown location,7.31,1.46,Safe +SENSOR_007,Unknown location,7.89,3.52,Safe +SENSOR_012,Unknown location,7.09,2.62,Safe +SENSOR_008,Unknown location,7.56,1.36,Safe +SENSOR_004,Unknown location,7.21,4.67,Safe +SENSOR_003,Unknown location,7.44,4.09,Safe +SENSOR_018,Unknown location,6.56,2.85,Safe +SENSOR_011,Unknown location,7.5,3.83,Safe +SENSOR_012,Unknown location,7.06,3.61,Safe +SENSOR_014,Unknown location,6.71,3.21,Safe +SENSOR_019,Unknown location,7.04,3.62,Safe +SENSOR_002,Unknown location,6.76,1.9,Safe +SENSOR_015,Unknown location,7.65,3.26,Safe +SENSOR_016,Unknown location,6.91,3.22,Safe +SENSOR_002,Unknown location,7.5,2.38,Safe +SENSOR_004,Unknown location,6.25,3.4,Unsafe (pH too low) +SENSOR_015,Unknown location,7.18,2.32,Safe +SENSOR_015,Unknown location,7.84,1.73,Safe +SENSOR_014,Unknown location,6.32,3.47,Unsafe (pH too low) +SENSOR_003,Unknown location,7.0,3.32,Safe +SENSOR_009,Unknown location,6.92,4.16,Safe +SENSOR_003,Unknown location,7.25,2.48,Safe +SENSOR_003,Unknown location,6.5,2.18,Safe +SENSOR_020,Unknown location,6.88,5.23,Unsafe (turbidity too high) +SENSOR_011,Unknown location,6.05,3.26,Unsafe (pH too low) +SENSOR_009,Unknown location,7.06,3.48,Safe +SENSOR_014,Unknown location,7.27,1.29,Safe +SENSOR_004,Unknown location,6.56,3.69,Safe +SENSOR_012,Unknown location,6.63,2.61,Safe +SENSOR_001,Unknown location,6.54,3.6,Safe +SENSOR_002,Unknown location,7.23,2.95,Safe +SENSOR_019,Unknown location,6.41,2.33,Unsafe (pH too low) +SENSOR_005,Unknown location,7.01,2.55,Safe +SENSOR_018,Unknown location,6.82,1.7,Safe +SENSOR_019,Unknown location,7.38,2.4,Safe +SENSOR_006,Unknown location,7.85,1.62,Safe +SENSOR_009,Unknown location,6.48,3.24,Unsafe (pH too low) +SENSOR_011,Unknown location,7.11,3.2,Safe +SENSOR_019,Unknown location,8.05,1.42,Safe +SENSOR_013,Unknown location,7.08,2.58,Safe +SENSOR_013,Unknown location,6.71,2.43,Safe +SENSOR_017,Unknown location,7.03,3.37,Safe +SENSOR_019,Unknown location,7.02,1.15,Safe +SENSOR_009,Unknown location,8.21,3.45,Safe +SENSOR_015,Unknown location,7.35,4.19,Safe +SENSOR_007,Unknown location,6.76,2.58,Safe +SENSOR_002,Unknown location,7.24,1.44,Safe +SENSOR_002,Unknown location,7.11,3.31,Safe +SENSOR_013,Unknown location,7.09,3.12,Safe +SENSOR_013,Unknown location,6.82,3.21,Safe +SENSOR_018,Unknown location,6.91,3.26,Safe +SENSOR_018,Unknown location,7.84,2.67,Safe +SENSOR_011,Unknown location,7.39,1.25,Safe +SENSOR_016,Unknown location,6.79,3.45,Safe +SENSOR_015,Unknown location,6.48,2.71,Unsafe (pH too low) +SENSOR_020,Unknown location,6.63,3.88,Safe +SENSOR_002,Unknown location,7.1,3.57,Safe +SENSOR_009,Unknown location,7.43,-0.1,Safe +SENSOR_009,Unknown location,7.06,3.53,Safe +SENSOR_002,Unknown location,6.17,2.48,Unsafe (pH too low) +SENSOR_015,Unknown location,7.37,3.86,Safe +SENSOR_020,Unknown location,7.04,2.53,Safe +SENSOR_014,Unknown location,6.95,3.75,Safe +SENSOR_016,Unknown location,8.01,1.79,Safe +SENSOR_020,Unknown location,6.32,3.33,Unsafe (pH too low) +SENSOR_009,Unknown location,6.42,2.85,Unsafe (pH too low) +SENSOR_013,Unknown location,6.7,4.59,Safe +SENSOR_003,Unknown location,6.18,3.3,Unsafe (pH too low) +SENSOR_006,Unknown location,7.73,2.75,Safe +SENSOR_002,Unknown location,5.68,2.54,Unsafe (pH too low) +SENSOR_011,Unknown location,6.51,2.48,Safe +SENSOR_010,Unknown location,7.32,2.25,Safe +SENSOR_013,Unknown location,7.6,3.33,Safe +SENSOR_020,Unknown location,6.9,4.09,Safe +SENSOR_010,Unknown location,7.21,3.67,Safe +SENSOR_020,Unknown location,7.17,1.66,Safe +SENSOR_018,Unknown location,7.26,3.6,Safe +SENSOR_005,Unknown location,7.64,2.67,Safe +SENSOR_017,Unknown location,7.14,2.72,Safe +SENSOR_003,Unknown location,6.75,1.98,Safe +SENSOR_015,Unknown location,6.91,1.39,Safe +SENSOR_016,Unknown location,6.21,2.72,Unsafe (pH too low) +SENSOR_015,Unknown location,7.02,3.09,Safe +SENSOR_006,Unknown location,6.91,3.07,Safe +SENSOR_002,Unknown location,7.24,2.9,Safe +SENSOR_016,Unknown location,7.56,3.32,Safe +SENSOR_013,Unknown location,7.48,2.76,Safe +SENSOR_002,Unknown location,7.23,2.27,Safe +SENSOR_007,Unknown location,6.64,3.69,Safe +SENSOR_008,Unknown location,6.58,4.47,Safe +SENSOR_006,Unknown location,6.61,3.06,Safe +SENSOR_016,Unknown location,7.2,2.52,Safe +SENSOR_001,Unknown location,7.46,1.91,Safe +SENSOR_008,Unknown location,7.36,2.36,Safe +SENSOR_008,Unknown location,7.03,4.46,Safe +SENSOR_001,Unknown location,6.99,3.41,Safe +SENSOR_014,Unknown location,7.36,3.38,Safe +SENSOR_014,Unknown location,7.74,3.85,Safe +SENSOR_014,Unknown location,7.19,4.15,Safe +SENSOR_003,Unknown location,6.44,2.96,Unsafe (pH too low) +SENSOR_018,Unknown location,7.06,4.36,Safe +SENSOR_005,Unknown location,6.45,4.1,Unsafe (pH too low) +SENSOR_009,Unknown location,6.54,2.02,Safe +SENSOR_006,Unknown location,7.22,2.71,Safe +SENSOR_010,Unknown location,6.97,2.98,Safe +SENSOR_009,Unknown location,7.73,4.43,Safe +SENSOR_001,Unknown location,7.87,2.84,Safe +SENSOR_015,Unknown location,5.28,3.28,Unsafe (pH too low) +SENSOR_003,Unknown location,6.21,4.02,Unsafe (pH too low) +SENSOR_006,Unknown location,7.56,5.12,Unsafe (turbidity too high) +SENSOR_014,Unknown location,6.12,2.58,Unsafe (pH too low) +SENSOR_015,Unknown location,6.82,3.7,Safe +SENSOR_014,Unknown location,7.23,2.44,Safe +SENSOR_007,Unknown location,6.94,2.08,Safe +SENSOR_006,Unknown location,5.72,2.3,Unsafe (pH too low) +SENSOR_006,Unknown location,6.85,3.51,Safe +SENSOR_006,Unknown location,7.53,2.18,Safe +SENSOR_008,Unknown location,7.18,4.42,Safe +SENSOR_015,Unknown location,6.65,4.1,Safe +SENSOR_016,Unknown location,7.36,3.42,Safe +SENSOR_006,Unknown location,7.08,1.28,Safe +SENSOR_011,Unknown location,6.28,3.03,Unsafe (pH too low) +SENSOR_014,Unknown location,6.94,2.92,Safe +SENSOR_007,Unknown location,6.02,3.69,Unsafe (pH too low) +SENSOR_010,Unknown location,7.37,3.77,Safe +SENSOR_004,Unknown location,7.25,3.76,Safe +SENSOR_020,Unknown location,6.74,3.06,Safe +SENSOR_007,Unknown location,7.26,3.68,Safe +SENSOR_007,Unknown location,6.8,3.0,Safe +SENSOR_015,Unknown location,7.31,4.27,Safe +SENSOR_007,Unknown location,7.94,4.52,Safe +SENSOR_001,Unknown location,6.61,4.49,Safe +SENSOR_018,Unknown location,6.82,4.11,Safe +SENSOR_003,Unknown location,6.65,3.51,Safe +SENSOR_018,Unknown location,6.45,0.34,Unsafe (pH too low) +SENSOR_005,Unknown location,6.84,3.34,Safe +SENSOR_012,Unknown location,7.05,3.63,Safe +SENSOR_013,Unknown location,7.35,4.19,Safe +SENSOR_002,Unknown location,6.35,0.43,Unsafe (pH too low) +SENSOR_003,Unknown location,6.69,5.91,Unsafe (turbidity too high) +SENSOR_011,Unknown location,8.46,3.41,Safe +SENSOR_017,Unknown location,6.64,2.16,Safe +SENSOR_018,Unknown location,6.48,3.16,Unsafe (pH too low) +SENSOR_011,Unknown location,7.67,2.81,Safe +SENSOR_002,Unknown location,6.95,3.0,Safe +SENSOR_015,Unknown location,7.65,3.8,Safe +SENSOR_013,Unknown location,6.93,2.57,Safe +SENSOR_013,Unknown location,7.2,4.72,Safe +SENSOR_007,Unknown location,7.16,2.09,Safe +SENSOR_020,Unknown location,6.15,3.44,Unsafe (pH too low) +SENSOR_013,Unknown location,6.17,2.98,Unsafe (pH too low) +SENSOR_020,Unknown location,6.97,2.41,Safe +SENSOR_013,Unknown location,7.39,2.17,Safe +SENSOR_015,Unknown location,6.44,1.02,Unsafe (pH too low) +SENSOR_001,Unknown location,6.3,1.5,Unsafe (pH too low) +SENSOR_015,Unknown location,6.86,2.67,Safe +SENSOR_014,Unknown location,5.84,3.28,Unsafe (pH too low) +SENSOR_009,Unknown location,6.5,3.11,Safe +SENSOR_009,Unknown location,7.65,3.18,Safe +SENSOR_015,Unknown location,6.9,3.07,Safe +SENSOR_013,Unknown location,7.54,2.8,Safe +SENSOR_011,Unknown location,6.53,4.04,Safe +SENSOR_016,Unknown location,7.2,2.17,Safe +SENSOR_017,Unknown location,7.5,3.8,Safe +SENSOR_012,Unknown location,7.71,2.55,Safe +SENSOR_003,Unknown location,6.74,1.58,Safe +SENSOR_001,Unknown location,6.12,3.21,Unsafe (pH too low) +SENSOR_001,Unknown location,6.38,4.01,Unsafe (pH too low) +SENSOR_012,Unknown location,7.1,3.44,Safe +SENSOR_019,Unknown location,6.83,3.63,Safe +SENSOR_010,Unknown location,6.9,3.18,Safe +SENSOR_003,Unknown location,6.71,3.64,Safe +SENSOR_011,Unknown location,6.41,2.64,Unsafe (pH too low) +SENSOR_005,Unknown location,7.3,3.83,Safe +SENSOR_004,Unknown location,6.73,3.99,Safe +SENSOR_001,Unknown location,7.6,1.45,Safe +SENSOR_004,Unknown location,7.1,2.88,Safe +SENSOR_001,Unknown location,7.8,4.0,Safe +SENSOR_005,Unknown location,7.68,3.83,Safe +SENSOR_015,Unknown location,6.98,4.09,Safe +SENSOR_001,Unknown location,6.81,4.14,Safe +SENSOR_013,Unknown location,7.19,2.18,Safe +SENSOR_019,Unknown location,6.99,3.91,Safe +SENSOR_017,Unknown location,6.88,3.76,Safe +SENSOR_020,Unknown location,7.65,2.7,Safe +SENSOR_013,Unknown location,6.09,3.88,Unsafe (pH too low) +SENSOR_007,Unknown location,6.83,3.64,Safe +SENSOR_009,Unknown location,6.28,4.87,Unsafe (pH too low) +SENSOR_006,Unknown location,6.7,3.35,Safe +SENSOR_018,Unknown location,6.41,2.65,Unsafe (pH too low) +SENSOR_002,Unknown location,7.43,2.15,Safe +SENSOR_014,Unknown location,7.17,1.71,Safe +SENSOR_002,Unknown location,7.2,2.57,Safe +SENSOR_002,Unknown location,7.29,0.94,Safe +SENSOR_020,Unknown location,6.85,4.31,Safe +SENSOR_017,Unknown location,6.81,3.79,Safe +SENSOR_020,Unknown location,7.03,3.55,Safe +SENSOR_003,Unknown location,6.09,1.88,Unsafe (pH too low) +SENSOR_013,Unknown location,6.82,1.16,Safe +SENSOR_015,Unknown location,7.67,1.87,Safe +SENSOR_004,Unknown location,6.64,3.98,Safe +SENSOR_007,Unknown location,6.78,1.65,Safe +SENSOR_016,Unknown location,6.96,2.45,Safe +SENSOR_007,Unknown location,6.9,3.08,Safe +SENSOR_010,Unknown location,7.91,3.92,Safe +SENSOR_018,Unknown location,7.23,0.09,Safe +SENSOR_007,Unknown location,7.02,2.3,Safe +SENSOR_019,Unknown location,6.87,3.45,Safe +SENSOR_008,Unknown location,7.18,1.26,Safe +SENSOR_014,Unknown location,6.56,2.8,Safe +SENSOR_013,Unknown location,7.13,3.61,Safe +SENSOR_020,Unknown location,6.7,3.42,Safe +SENSOR_009,Unknown location,6.94,3.75,Safe +SENSOR_012,Unknown location,7.45,2.75,Safe +SENSOR_007,Unknown location,6.51,3.21,Safe +SENSOR_017,Unknown location,7.51,2.98,Safe +SENSOR_006,Unknown location,7.49,2.86,Safe +SENSOR_020,Unknown location,7.02,2.28,Safe +SENSOR_012,Unknown location,7.27,3.88,Safe +SENSOR_007,Unknown location,6.37,1.68,Unsafe (pH too low) +SENSOR_007,Unknown location,7.04,2.07,Safe +SENSOR_017,Unknown location,6.77,2.11,Safe +SENSOR_002,Unknown location,7.52,2.57,Safe +SENSOR_018,Unknown location,7.15,3.07,Safe +SENSOR_007,Unknown location,7.02,4.5,Safe +SENSOR_006,Unknown location,6.42,2.64,Unsafe (pH too low) +SENSOR_001,Unknown location,7.13,4.72,Safe +SENSOR_003,Unknown location,6.61,3.51,Safe +SENSOR_018,Unknown location,6.99,3.77,Safe +SENSOR_006,Unknown location,6.69,1.85,Safe +SENSOR_004,Unknown location,7.24,2.82,Safe +SENSOR_002,Unknown location,6.5,2.51,Safe +SENSOR_015,Unknown location,7.55,2.46,Safe +SENSOR_009,Unknown location,6.94,3.83,Safe +SENSOR_016,Unknown location,6.96,2.52,Safe +SENSOR_011,Unknown location,7.69,4.47,Safe +SENSOR_005,Unknown location,7.47,0.65,Safe +SENSOR_011,Unknown location,7.14,3.18,Safe +SENSOR_015,Unknown location,6.77,3.66,Safe +SENSOR_020,Unknown location,6.94,3.33,Safe +SENSOR_016,Unknown location,7.01,2.93,Safe +SENSOR_011,Unknown location,6.63,3.02,Safe +SENSOR_017,Unknown location,6.96,3.49,Safe +SENSOR_011,Unknown location,6.79,3.49,Safe +SENSOR_018,Unknown location,7.74,3.68,Safe +SENSOR_008,Unknown location,6.8,2.72,Safe +SENSOR_016,Unknown location,7.04,4.81,Safe +SENSOR_005,Unknown location,6.75,2.79,Safe +SENSOR_017,Unknown location,6.66,1.34,Safe +SENSOR_016,Unknown location,5.5,4.23,Unsafe (pH too low) +SENSOR_004,Unknown location,7.39,3.0,Safe +SENSOR_008,Unknown location,6.89,2.98,Safe +SENSOR_008,Unknown location,7.51,0.78,Safe +SENSOR_011,Unknown location,6.96,3.8,Safe +SENSOR_020,Unknown location,6.52,2.17,Safe +SENSOR_020,Unknown location,7.06,1.75,Safe +SENSOR_011,Unknown location,7.33,2.12,Safe +SENSOR_017,Unknown location,7.57,3.26,Safe +SENSOR_014,Unknown location,7.2,2.89,Safe +SENSOR_006,Unknown location,7.03,1.18,Safe +SENSOR_004,Unknown location,7.33,4.52,Safe +SENSOR_001,Unknown location,6.14,3.57,Unsafe (pH too low) +SENSOR_012,Unknown location,6.53,2.48,Safe +SENSOR_001,Unknown location,8.04,2.99,Safe +SENSOR_018,Unknown location,6.41,2.99,Unsafe (pH too low) +SENSOR_008,Unknown location,6.59,2.66,Safe +SENSOR_020,Unknown location,6.13,4.55,Unsafe (pH too low) +SENSOR_013,Unknown location,7.74,2.43,Safe +SENSOR_003,Unknown location,6.68,2.26,Safe +SENSOR_005,Unknown location,7.7,4.55,Safe +SENSOR_012,Unknown location,6.92,3.5,Safe +SENSOR_005,Unknown location,6.83,1.68,Safe +SENSOR_009,Unknown location,6.59,4.5,Safe +SENSOR_008,Unknown location,7.82,2.54,Safe +SENSOR_014,Unknown location,7.07,3.11,Safe +SENSOR_006,Unknown location,6.65,3.4,Safe +SENSOR_001,Unknown location,6.7,3.63,Safe +SENSOR_012,Unknown location,7.03,4.1,Safe +SENSOR_001,Unknown location,6.59,3.7,Safe +SENSOR_010,Unknown location,7.17,3.12,Safe +SENSOR_008,Unknown location,7.23,1.18,Safe +SENSOR_007,Unknown location,5.99,2.57,Unsafe (pH too low) +SENSOR_012,Unknown location,7.0,2.8,Safe +SENSOR_011,Unknown location,7.36,2.99,Safe +SENSOR_006,Unknown location,7.4,1.98,Safe +SENSOR_019,Unknown location,7.81,4.16,Safe +SENSOR_009,Unknown location,7.17,2.6,Safe +SENSOR_020,Unknown location,7.0,2.36,Safe +SENSOR_016,Unknown location,7.48,2.83,Safe +SENSOR_009,Unknown location,7.02,4.16,Safe +SENSOR_003,Unknown location,5.77,3.7,Unsafe (pH too low) +SENSOR_001,Unknown location,7.06,4.48,Safe +SENSOR_011,Unknown location,7.26,4.27,Safe +SENSOR_019,Unknown location,7.41,3.73,Safe +SENSOR_020,Unknown location,6.98,3.37,Safe +SENSOR_007,Unknown location,7.83,2.43,Safe +SENSOR_015,Unknown location,7.97,2.94,Safe +SENSOR_002,Unknown location,5.86,4.02,Unsafe (pH too low) +SENSOR_010,Unknown location,7.02,3.55,Safe +SENSOR_016,Unknown location,7.39,3.19,Safe +SENSOR_015,Unknown location,7.55,4.02,Safe +SENSOR_004,Unknown location,6.19,2.25,Unsafe (pH too low) +SENSOR_002,Unknown location,7.78,2.26,Safe +SENSOR_012,Unknown location,6.63,4.32,Safe +SENSOR_010,Unknown location,6.09,2.83,Unsafe (pH too low) +SENSOR_005,Unknown location,7.51,3.88,Safe +SENSOR_004,Unknown location,7.03,1.73,Safe +SENSOR_020,Unknown location,7.1,3.87,Safe +SENSOR_005,Unknown location,7.2,3.13,Safe +SENSOR_016,Unknown location,7.49,3.58,Safe +SENSOR_004,Unknown location,7.3,2.11,Safe +SENSOR_010,Unknown location,7.38,3.66,Safe +SENSOR_003,Unknown location,7.21,3.41,Safe +SENSOR_020,Unknown location,7.28,3.1,Safe +SENSOR_007,Unknown location,6.53,4.01,Safe +SENSOR_015,Unknown location,7.07,2.45,Safe +SENSOR_011,Unknown location,6.38,2.88,Unsafe (pH too low) +SENSOR_003,Unknown location,6.46,4.58,Unsafe (pH too low) +SENSOR_007,Unknown location,7.32,5.02,Unsafe (turbidity too high) +SENSOR_007,Unknown location,7.22,3.06,Safe +SENSOR_004,Unknown location,7.21,4.12,Safe +SENSOR_015,Unknown location,6.97,4.62,Safe +SENSOR_017,Unknown location,7.33,2.82,Safe +SENSOR_003,Unknown location,7.18,4.02,Safe +SENSOR_011,Unknown location,7.42,3.04,Safe +SENSOR_016,Unknown location,6.58,2.06,Safe +SENSOR_001,Unknown location,6.53,1.62,Safe +SENSOR_003,Unknown location,6.5,2.42,Safe +SENSOR_001,Unknown location,7.84,1.67,Safe +SENSOR_009,Unknown location,7.16,1.69,Safe +SENSOR_009,Unknown location,6.64,5.77,Unsafe (turbidity too high) +SENSOR_003,Unknown location,7.46,2.81,Safe +SENSOR_019,Unknown location,7.59,3.22,Safe +SENSOR_009,Unknown location,7.04,1.8,Safe +SENSOR_003,Unknown location,6.15,4.26,Unsafe (pH too low) +SENSOR_015,Unknown location,6.17,3.82,Unsafe (pH too low) +SENSOR_006,Unknown location,6.6,3.07,Safe +SENSOR_013,Unknown location,6.28,1.96,Unsafe (pH too low) +SENSOR_003,Unknown location,7.61,2.21,Safe +SENSOR_002,Unknown location,5.58,0.61,Unsafe (pH too low) +SENSOR_014,Unknown location,6.57,2.79,Safe +SENSOR_011,Unknown location,7.45,1.63,Safe +SENSOR_012,Unknown location,6.75,2.93,Safe +SENSOR_012,Unknown location,7.65,2.67,Safe +SENSOR_018,Unknown location,7.37,0.79,Safe +SENSOR_009,Unknown location,7.16,1.87,Safe +SENSOR_005,Unknown location,6.78,3.36,Safe +SENSOR_008,Unknown location,6.63,3.79,Safe +SENSOR_005,Unknown location,7.91,3.23,Safe +SENSOR_006,Unknown location,7.09,4.04,Safe +SENSOR_016,Unknown location,6.94,2.95,Safe +SENSOR_013,Unknown location,7.56,2.92,Safe +SENSOR_009,Unknown location,6.07,1.75,Unsafe (pH too low) +SENSOR_019,Unknown location,6.7,3.84,Safe +SENSOR_002,Unknown location,7.09,3.62,Safe +SENSOR_005,Unknown location,7.0,0.94,Safe +SENSOR_005,Unknown location,6.63,2.89,Safe +SENSOR_019,Unknown location,7.07,6.81,Unsafe (turbidity too high) +SENSOR_013,Unknown location,6.79,0.7,Safe +SENSOR_018,Unknown location,7.18,2.52,Safe +SENSOR_017,Unknown location,7.15,0.85,Safe +SENSOR_014,Unknown location,7.59,2.95,Safe +SENSOR_012,Unknown location,7.04,2.92,Safe +SENSOR_020,Unknown location,7.67,2.99,Safe +SENSOR_018,Unknown location,5.77,3.81,Unsafe (pH too low) +SENSOR_004,Unknown location,6.37,4.84,Unsafe (pH too low) +SENSOR_004,Unknown location,7.56,2.74,Safe +SENSOR_013,Unknown location,7.36,4.64,Safe +SENSOR_010,Unknown location,7.53,2.31,Safe +SENSOR_018,Unknown location,6.96,1.75,Safe +SENSOR_016,Unknown location,6.44,3.15,Unsafe (pH too low) +SENSOR_018,Unknown location,7.44,4.46,Safe +SENSOR_011,Unknown location,6.64,3.65,Safe +SENSOR_013,Unknown location,6.75,3.31,Safe +SENSOR_013,Unknown location,7.25,1.76,Safe +SENSOR_008,Unknown location,6.82,2.66,Safe +SENSOR_005,Unknown location,7.4,3.72,Safe +SENSOR_018,Unknown location,7.27,2.41,Safe +SENSOR_018,Unknown location,7.6,4.26,Safe +SENSOR_009,Unknown location,8.27,3.14,Safe +SENSOR_008,Unknown location,6.79,0.98,Safe +SENSOR_003,Unknown location,6.82,4.01,Safe +SENSOR_009,Unknown location,7.15,4.09,Safe +SENSOR_011,Unknown location,7.49,2.69,Safe +SENSOR_011,Unknown location,7.09,1.54,Safe +SENSOR_019,Unknown location,6.64,2.01,Safe +SENSOR_016,Unknown location,7.44,1.19,Safe +SENSOR_013,Unknown location,6.8,3.79,Safe +SENSOR_003,Unknown location,8.03,3.97,Safe +SENSOR_014,Unknown location,7.65,2.73,Safe +SENSOR_002,Unknown location,6.73,2.23,Safe +SENSOR_011,Unknown location,6.89,4.58,Safe +SENSOR_013,Unknown location,6.9,3.03,Safe +SENSOR_001,Unknown location,7.02,3.87,Safe +SENSOR_016,Unknown location,7.78,3.36,Safe +SENSOR_004,Unknown location,7.4,3.75,Safe +SENSOR_011,Unknown location,7.46,3.21,Safe +SENSOR_012,Unknown location,6.92,4.35,Safe +SENSOR_009,Unknown location,7.66,3.09,Safe +SENSOR_010,Unknown location,6.75,1.19,Safe +SENSOR_004,Unknown location,6.85,1.85,Safe +SENSOR_006,Unknown location,7.49,2.08,Safe +SENSOR_006,Unknown location,7.35,3.45,Safe +SENSOR_002,Unknown location,7.7,2.62,Safe +SENSOR_013,Unknown location,7.43,2.69,Safe +SENSOR_017,Unknown location,7.79,3.09,Safe +SENSOR_011,Unknown location,6.81,3.39,Safe +SENSOR_011,Unknown location,7.21,4.09,Safe +SENSOR_007,Unknown location,5.87,3.54,Unsafe (pH too low) +SENSOR_016,Unknown location,7.48,0.38,Safe +SENSOR_003,Unknown location,6.12,4.4,Unsafe (pH too low) +SENSOR_019,Unknown location,7.65,3.17,Safe +SENSOR_008,Unknown location,7.15,2.96,Safe +SENSOR_016,Unknown location,6.93,1.84,Safe +SENSOR_004,Unknown location,7.06,3.72,Safe +SENSOR_005,Unknown location,6.77,2.18,Safe +SENSOR_014,Unknown location,7.11,2.97,Safe +SENSOR_016,Unknown location,7.08,2.84,Safe +SENSOR_016,Unknown location,7.24,4.75,Safe +SENSOR_011,Unknown location,6.49,3.37,Unsafe (pH too low) +SENSOR_008,Unknown location,7.71,3.22,Safe +SENSOR_004,Unknown location,5.98,1.42,Unsafe (pH too low) +SENSOR_003,Unknown location,7.68,2.24,Safe +SENSOR_019,Unknown location,7.58,2.94,Safe +SENSOR_003,Unknown location,6.99,2.52,Safe +SENSOR_008,Unknown location,7.23,2.83,Safe +SENSOR_014,Unknown location,6.68,0.79,Safe +SENSOR_012,Unknown location,6.63,1.81,Safe +SENSOR_016,Unknown location,7.76,2.34,Safe +SENSOR_004,Unknown location,6.9,3.84,Safe +SENSOR_010,Unknown location,8.12,4.26,Safe +SENSOR_009,Unknown location,7.04,3.15,Safe +SENSOR_009,Unknown location,7.27,4.22,Safe +SENSOR_012,Unknown location,7.14,3.32,Safe +SENSOR_001,Unknown location,7.7,2.53,Safe +SENSOR_001,Unknown location,7.13,1.94,Safe +SENSOR_019,Unknown location,7.88,4.31,Safe +SENSOR_020,Unknown location,6.65,4.24,Safe +SENSOR_002,Unknown location,7.48,3.43,Safe +SENSOR_019,Unknown location,7.27,2.54,Safe +SENSOR_007,Unknown location,6.68,2.08,Safe +SENSOR_004,Unknown location,7.13,4.49,Safe +SENSOR_014,Unknown location,6.68,3.62,Safe +SENSOR_005,Unknown location,6.06,2.89,Unsafe (pH too low) +SENSOR_002,Unknown location,6.81,2.18,Safe +SENSOR_002,Unknown location,6.96,2.01,Safe +SENSOR_017,Unknown location,6.9,6.34,Unsafe (turbidity too high) +SENSOR_018,Unknown location,7.34,2.44,Safe +SENSOR_007,Unknown location,7.41,2.75,Safe +SENSOR_008,Unknown location,7.1,3.97,Safe +SENSOR_009,Unknown location,7.22,1.92,Safe +SENSOR_008,Unknown location,6.46,2.14,Unsafe (pH too low) +SENSOR_019,Unknown location,7.19,0.98,Safe +SENSOR_007,Unknown location,7.6,3.47,Safe +SENSOR_009,Unknown location,6.68,1.35,Safe +SENSOR_016,Unknown location,7.06,2.3,Safe +SENSOR_018,Unknown location,7.12,1.97,Safe +SENSOR_006,Unknown location,6.92,1.96,Safe +SENSOR_018,Unknown location,7.15,2.56,Safe +SENSOR_001,Unknown location,7.9,2.47,Safe +SENSOR_002,Unknown location,7.94,3.76,Safe +SENSOR_017,Unknown location,6.65,3.56,Safe +SENSOR_002,Unknown location,7.59,3.38,Safe +SENSOR_006,Unknown location,7.11,2.65,Safe +SENSOR_020,Unknown location,7.68,2.51,Safe +SENSOR_016,Unknown location,7.1,2.42,Safe +SENSOR_020,Unknown location,7.06,2.6,Safe +SENSOR_006,Unknown location,6.23,4.33,Unsafe (pH too low) +SENSOR_014,Unknown location,7.12,2.25,Safe +SENSOR_015,Unknown location,6.46,2.98,Unsafe (pH too low) +SENSOR_003,Unknown location,7.26,3.36,Safe +SENSOR_014,Unknown location,6.71,3.18,Safe +SENSOR_013,Unknown location,7.36,1.16,Safe +SENSOR_002,Unknown location,6.43,2.17,Unsafe (pH too low) +SENSOR_008,Unknown location,7.02,1.61,Safe +SENSOR_004,Unknown location,6.28,1.93,Unsafe (pH too low) +SENSOR_015,Unknown location,6.89,4.09,Safe +SENSOR_003,Unknown location,6.89,2.81,Safe +SENSOR_011,Unknown location,6.84,3.27,Safe +SENSOR_013,Unknown location,7.26,4.01,Safe +SENSOR_016,Unknown location,7.33,4.0,Safe +SENSOR_002,Unknown location,7.16,1.67,Safe +SENSOR_012,Unknown location,6.55,4.07,Safe +SENSOR_016,Unknown location,8.03,3.18,Safe +SENSOR_001,Unknown location,6.8,2.61,Safe +SENSOR_017,Unknown location,8.38,3.18,Safe +SENSOR_020,Unknown location,7.0,3.6,Safe +SENSOR_017,Unknown location,7.34,2.42,Safe +SENSOR_020,Unknown location,7.05,3.06,Safe +SENSOR_015,Unknown location,7.44,2.99,Safe +SENSOR_014,Unknown location,6.49,4.41,Unsafe (pH too low) +SENSOR_016,Unknown location,6.74,1.65,Safe +SENSOR_014,Unknown location,7.79,2.48,Safe +SENSOR_012,Unknown location,6.1,4.57,Unsafe (pH too low) +SENSOR_008,Unknown location,8.24,2.61,Safe +SENSOR_014,Unknown location,7.3,5.63,Unsafe (turbidity too high) +SENSOR_012,Unknown location,7.7,2.07,Safe +SENSOR_019,Unknown location,7.33,2.91,Safe +SENSOR_004,Unknown location,7.42,0.27,Safe +SENSOR_010,Unknown location,7.57,1.39,Safe +SENSOR_001,Unknown location,7.11,1.31,Safe +SENSOR_010,Unknown location,7.45,1.62,Safe +SENSOR_020,Unknown location,6.6,3.89,Safe +SENSOR_001,Unknown location,6.77,2.73,Safe +SENSOR_008,Unknown location,6.81,1.75,Safe +SENSOR_015,Unknown location,7.22,2.55,Safe +SENSOR_001,Unknown location,7.1,2.06,Safe +SENSOR_003,Unknown location,7.53,2.44,Safe +SENSOR_018,Unknown location,6.54,3.0,Safe +SENSOR_010,Unknown location,7.01,3.22,Safe +SENSOR_017,Unknown location,6.28,3.4,Unsafe (pH too low) +SENSOR_020,Unknown location,6.2,2.15,Unsafe (pH too low) +SENSOR_006,Unknown location,6.03,3.9,Unsafe (pH too low) +SENSOR_010,Unknown location,7.35,4.12,Safe +SENSOR_017,Unknown location,6.65,3.69,Safe +SENSOR_011,Unknown location,6.72,1.98,Safe +SENSOR_013,Unknown location,6.75,3.05,Safe +SENSOR_014,Unknown location,6.34,2.71,Unsafe (pH too low) +SENSOR_019,Unknown location,7.04,2.01,Safe +SENSOR_005,Unknown location,6.77,3.79,Safe +SENSOR_007,Unknown location,6.84,4.03,Safe +SENSOR_012,Unknown location,6.8,2.56,Safe +SENSOR_019,Unknown location,6.55,4.38,Safe +SENSOR_014,Unknown location,6.82,2.43,Safe +SENSOR_004,Unknown location,7.05,2.08,Safe +SENSOR_001,Unknown location,7.04,2.26,Safe +SENSOR_013,Unknown location,7.24,3.91,Safe +SENSOR_019,Unknown location,6.22,4.07,Unsafe (pH too low) +SENSOR_012,Unknown location,6.71,3.33,Safe +SENSOR_005,Unknown location,7.16,2.51,Safe +SENSOR_007,Unknown location,6.97,1.7,Safe +SENSOR_012,Unknown location,7.46,3.65,Safe +SENSOR_007,Unknown location,6.91,2.98,Safe +SENSOR_009,Unknown location,7.21,1.72,Safe +SENSOR_020,Unknown location,7.13,4.7,Safe +SENSOR_019,Unknown location,6.87,2.43,Safe +SENSOR_010,Unknown location,7.31,1.76,Safe +SENSOR_003,Unknown location,7.25,2.03,Safe +SENSOR_010,Unknown location,6.77,2.47,Safe +SENSOR_002,Unknown location,6.65,3.87,Safe +SENSOR_010,Unknown location,6.49,1.78,Unsafe (pH too low) +SENSOR_014,Unknown location,7.07,3.37,Safe +SENSOR_002,Unknown location,6.44,3.23,Unsafe (pH too low) +SENSOR_012,Unknown location,7.03,3.51,Safe +SENSOR_001,Unknown location,7.47,2.61,Safe +SENSOR_019,Unknown location,6.82,3.65,Safe +SENSOR_007,Unknown location,6.61,3.12,Safe +SENSOR_019,Unknown location,6.89,2.62,Safe +SENSOR_002,Unknown location,6.73,3.36,Safe +SENSOR_007,Unknown location,6.68,1.55,Safe +SENSOR_020,Unknown location,6.86,2.95,Safe diff --git a/src/sensor.py b/src/sensor.py new file mode 100644 index 000000000..c35f87d06 --- /dev/null +++ b/src/sensor.py @@ -0,0 +1,17 @@ +# sensor.py +class SensorReading: + def __init__(self, sensor_id, location, ph, turbidity): + self.sensor_id = sensor_id + self.location = location or "Unknown location" + self.ph = ph + self.turbidity = turbidity + self.safety_status = None + + def to_dict(self): + return { + "sensor_id": self.sensor_id, + "location": self.location, + "ph": self.ph, + "turbidity": self.turbidity, + "safety_status": self.safety_status + }