diff --git a/README.md b/README.md index 3f67f3d..a00eef9 100644 --- a/README.md +++ b/README.md @@ -30,10 +30,10 @@ The following are key objectives to enhance this project into a fully interactiv ### In Progress - [ ] Create IPython notebook tutorials showcasing AHU FDD examples, incorporating BRICK metadata integration. - - [ ] Develop a comprehensive guide on a github.io website (or other?) for defining fault parameters, including error thresholds and other critical settings. + - [ ] Extend the project to include `central_plant` fault conditions, IPython reports, and example applications for boiler and chiller systems. + ### Upcoming - - [ ] Extend the project to include `central_plant` fault conditions, IPython reports, and example applications. - [ ] Design `energy_efficiency` fault detection modules, including IPython reports and examples focused on optimizing energy consumption. - [ ] Develop `metering` fault conditions, along with IPython reports and examples, potentially modeling utility metering data. - [ ] Implement SQL integration examples for reading data from a time series database, writing back to SQL, and visualizing faults in Grafana. @@ -41,6 +41,7 @@ The following are key objectives to enhance this project into a fully interactiv ### Future Considerations Explore additional features and enhancements as the project evolves. - [ ] Explore additional features and enhancements as the project evolves. + - [ ] Develop a comprehensive guide on a github.io website (or other?) for defining fault parameters, including error thresholds and other critical settings. ## Contribute diff --git a/examples/brick_model_and_sqlite/1_make_db.py b/examples/brick_model_and_sqlite/1_make_db.py index f3793d4..fb2faf7 100644 --- a/examples/brick_model_and_sqlite/1_make_db.py +++ b/examples/brick_model_and_sqlite/1_make_db.py @@ -1,5 +1,6 @@ import sqlite3 import pandas as pd +import re # Step 1: Connect to SQLite database (or create it) conn = sqlite3.connect("brick_timeseries.db") @@ -48,9 +49,9 @@ ) # Step 4: Load the CSV data -csv_file = r"C:\Users\bbartling\Documents\WPCRC_July.csv" +csv_file = r"C:\Users\bbartling\Documents\brick_data_July_2024.csv" df = pd.read_csv(csv_file) -print("df.columns", df.columns) +print("Original df.columns", df.columns) # Ensure that the 'timestamp' column is properly parsed as a datetime object if "timestamp" in df.columns: @@ -58,20 +59,39 @@ else: raise ValueError("The CSV file does not contain a 'timestamp' column.") -print("Starting step 5") +# Step 4.1: Remove specific strings from the tail of the sensor names using regex +pattern = ( + r"(\/|inwc|\(\)|galmin|\(%\)|\(°F\)|\(A\)|\(Δpsi\)|\(cfm\)|\(in\/wc\)|\(gal\/min\))" +) +df.columns = df.columns.str.replace(pattern, "", regex=True) + +# Print columns after modification to verify changes +print("Modified df.columns", df.columns) # Step 5: Insert CSV data into the TimeseriesData table for column in df.columns: if column != "timestamp": # Skip the timestamp column itself - for index, row in df.iterrows(): - cursor.execute( - """ - INSERT INTO TimeseriesData (sensor_name, timestamp, value) - VALUES (?, ?, ?) - """, - (column, row["timestamp"].strftime("%Y-%m-%d %H:%M:%S"), row[column]), - ) - print(f"Doing {column} in step 5") + # Only process columns related to AHU fan VFD speed, static pressure sensor, and setpoint + if "StaticSPt" in column or "SaStatic" in column or "SaFanSpeedAO" in column: + for index, row in df.iterrows(): + cursor.execute( + """ + INSERT INTO TimeseriesData (sensor_name, timestamp, value) + VALUES (?, ?, ?) + """, + ( + column, + row["timestamp"].strftime("%Y-%m-%d %H:%M:%S"), + row[column], + ), + ) + if index < 5: # Print the first 5 rows only + print( + f"Inserted sensor name {column} with value {row[column]} at {row['timestamp']}" + ) + print(f"Processed {column} in step 5") + else: + pass conn.commit() @@ -80,15 +100,18 @@ # Step 6: Insert timeseries references based on sensor names for column in df.columns: if column != "timestamp": # Skip the timestamp column itself - cursor.execute( - """ - INSERT INTO TimeseriesReference (timeseries_id, stored_at) - VALUES (?, ?) - """, - (column, "SQLite Timeseries Storage"), - ) - - print(f"Doing {column} in step 6") + # Only process columns related to AHU fan VFD speed, static pressure sensor, and setpoint + if "StaticSPt" in column or "SaStatic" in column or "SaFanSpeedAO" in column: + cursor.execute( + """ + INSERT INTO TimeseriesReference (timeseries_id, stored_at) + VALUES (?, ?) + """, + (column, "SQLite Timeseries Storage"), + ) + print(f"Inserted reference for {column} in step 6") + else: + pass conn.commit() diff --git a/examples/brick_model_and_sqlite/2_testout_step_1.py b/examples/brick_model_and_sqlite/2_testout_step_1.py deleted file mode 100644 index b945e63..0000000 --- a/examples/brick_model_and_sqlite/2_testout_step_1.py +++ /dev/null @@ -1,39 +0,0 @@ -import sqlite3 -import pandas as pd - -# Connect to the SQLite database -conn = sqlite3.connect("brick_timeseries.db") - -# Query the data -query = """ -SELECT sensor_name, timestamp, value -FROM TimeseriesData -WHERE sensor_name = 'HWR_value' -ORDER BY timestamp ASC -""" -df = pd.read_sql_query(query, conn) - -# Convert the timestamp column to datetime if needed -df["timestamp"] = pd.to_datetime(df["timestamp"]) - -# Set the 'timestamp' column as the index -df.set_index("timestamp", inplace=True) - -# Pivot the DataFrame to make sensor_name the columns and value the data -df_pivot = df.pivot(columns="sensor_name", values="value") - -# Display the DataFrame -print(df_pivot.head()) -print() - -# Display the DataFrame -print("SQL: ", df_pivot.describe()) -print() - -# Close the connection -conn.close() - -# Just for fun see if the CSV file looks any different -csv_file = r"C:\Users\bbartling\Documents\WPCRC_July.csv" -df = pd.read_csv(csv_file) -print("CSV: ", df["HWR_value"].describe()) diff --git a/examples/brick_model_and_sqlite/3_make_rdf.py b/examples/brick_model_and_sqlite/3_make_rdf.py deleted file mode 100644 index 8461bf2..0000000 --- a/examples/brick_model_and_sqlite/3_make_rdf.py +++ /dev/null @@ -1,80 +0,0 @@ -import sqlite3 -from rdflib import Graph, Literal, Namespace, RDF, URIRef -from rdflib.namespace import RDFS, XSD - -# Step 1: Set up RDF graph -g = Graph() -brick = Namespace("https://brickschema.org/schema/Brick#") -unit = Namespace("http://qudt.org/vocab/unit/") -ref = Namespace("https://brickschema.org/schema/Reference#") -g.bind("brick", brick) -g.bind("unit", unit) -g.bind("ref", ref) - -# Step 2: Connect to SQLite database -conn = sqlite3.connect("brick_timeseries.db") -cursor = conn.cursor() - -# Step 3: Retrieve timeseries metadata from SQLite database -cursor.execute("SELECT timeseries_id, stored_at FROM TimeseriesReference") -timeseries_refs = cursor.fetchall() - -# Define the database URI -database_uri = URIRef("http://example.org/database") -g.add((database_uri, RDF.type, ref.Database)) -g.add( - ( - database_uri, - RDFS.label, - Literal("SQLite Timeseries Storage", datatype=XSD.string), - ) -) -g.add( - ( - database_uri, - URIRef("http://example.org/connstring"), - Literal("sqlite:///brick_timeseries.db", datatype=XSD.string), - ) -) - -# Step 4: Build RDF model based on the timeseries references -for timeseries_id, stored_at in timeseries_refs: - sensor_uri = URIRef(f"http://example.org/{timeseries_id.replace(' ', '_')}") - - # Adjust sensor type and unit based on sensor name - if "SaStaticSPt" in timeseries_id: - g.add((sensor_uri, RDF.type, brick.Supply_Air_Static_Pressure_Setpoint)) - g.add((sensor_uri, brick.hasUnit, unit.Inch_Water_Column)) - elif "SaStatic" in timeseries_id: - g.add((sensor_uri, RDF.type, brick.Supply_Air_Static_Pressure_Sensor)) - g.add((sensor_uri, brick.hasUnit, unit.Inch_Water_Column)) - elif "Sa_FanSpeed" in timeseries_id: - g.add((sensor_uri, RDF.type, brick.Supply_Fan_VFD_Speed_Sensor)) - g.add((sensor_uri, brick.hasUnit, unit.Percent)) - else: - # Default case (adjust as needed) - g.add((sensor_uri, RDF.type, brick.Temperature_Sensor)) - g.add( - (sensor_uri, brick.hasUnit, unit.DEG_F) - ) # Assuming degrees Fahrenheit, adjust if needed - timeseries_ref_uri = URIRef( - f"http://example.org/timeseries_{timeseries_id.replace(' ', '_')}" - ) - g.add((timeseries_ref_uri, RDF.type, ref.TimeseriesReference)) - g.add( - ( - timeseries_ref_uri, - ref.hasTimeseriesId, - Literal(timeseries_id, datatype=XSD.string), - ) - ) - g.add((timeseries_ref_uri, ref.storedAt, database_uri)) - g.add((sensor_uri, ref.hasExternalReference, timeseries_ref_uri)) - -# Step 5: Serialize the graph to Turtle format -g.serialize("brick_model_with_timeseries.ttl", format="turtle") - -# Close the connection -conn.close() - -print("RDF model created and saved to 'brick_model_with_timeseries.ttl'.") diff --git a/examples/brick_model_and_sqlite/5_run_query_fc1_brick.py b/examples/brick_model_and_sqlite/5_run_query_fc1_brick.py deleted file mode 100644 index 3701071..0000000 --- a/examples/brick_model_and_sqlite/5_run_query_fc1_brick.py +++ /dev/null @@ -1,195 +0,0 @@ -import sqlite3 -import pandas as pd -from rdflib import Graph, Namespace -import time -from open_fdd.air_handling_unit.faults.fault_condition_one import FaultConditionOne - -PERCENTAGE_COLS_TO_CONVERT = [ - "Supply_Fan_VFD_Speed_Sensor", # BRICK formatted column name -] - -# Minimal config dict just for fc1 -config_dict = { - "INDEX_COL_NAME": "timestamp", - "DUCT_STATIC_COL": "Supply_Air_Static_Pressure_Sensor", - "DUCT_STATIC_SETPOINT_COL": "Supply_Air_Static_Pressure_Setpoint", - "SUPPLY_VFD_SPEED_COL": "Supply_Fan_VFD_Speed_Sensor", - "VFD_SPEED_PERCENT_ERR_THRES": 0.05, - "VFD_SPEED_PERCENT_MAX": 0.99, - "DUCT_STATIC_INCHES_ERR_THRES": 0.1, - "TROUBLESHOOT_MODE": False, - "ROLLING_WINDOW_SIZE": 10, -} - - -def load_rdf_graph(file_path): - print("Loading RDF graph...") - g = Graph() - g.parse(file_path, format="turtle") - return g - - -def run_sparql_query(graph): - print("Running SPARQL query...") - query = """ - PREFIX brick: - PREFIX ref: - - SELECT ?sensor ?sensorType WHERE { - ?sensor a ?sensorType . - FILTER (?sensorType IN (brick:Supply_Air_Static_Pressure_Sensor, brick:Supply_Air_Static_Pressure_Setpoint, brick:Supply_Fan_VFD_Speed_Sensor)) - } - """ - return graph.query(query) - - -def extract_sensor_data(query_result): - print("SPARQL query completed. Checking results...") - sensor_data = {} - for row in query_result: - sensor_type = str(row.sensorType).split("#")[-1] - sensor_data[sensor_type] = row.sensor - print(f"Found sensor: {sensor_type} -> {row.sensor}") - return sensor_data - - -def retrieve_timeseries_data(sensor_data, conn): - dfs = [] - for sensor_type, sensor_uri in sensor_data.items(): - sensor_id = sensor_uri.split("/")[-1] - print(f"Querying SQLite for sensor: {sensor_id} of type: {sensor_type}") - sql_query = """ - SELECT timestamp, value - FROM TimeseriesData - WHERE sensor_name = ? - """ - df_sensor = pd.read_sql_query(sql_query, conn, params=(sensor_id,)) - - if df_sensor.empty: - print( - f"No data found for sensor: {sensor_type} with sensor_id: {sensor_id}" - ) - else: - print( - f"Data found for sensor: {sensor_type}, number of records: {len(df_sensor)}" - ) - df_sensor = df_sensor.rename(columns={"value": sensor_type}) - dfs.append(df_sensor) - - return dfs - - -def combine_dataframes(dfs): - if not dfs: - print("No data found for any sensors.") - return None - - print("Combining DataFrames...") - df_combined = dfs[0].set_index("timestamp") - for df in dfs[1:]: - df_combined = pd.merge( - df_combined, df.set_index("timestamp"), left_index=True, right_index=True - ) - - print("The df is combined successfully.") - return df_combined - - -def convert_floats(df, columns): - # This data has floats between 0.0 and 100.0 - # so we need to convert to 0.0 and 1.0 ranges - for column in columns: - df[column] = df[column] / 100.0 - - print(df.head()) - return df - - -def run_fault_one(config_dict, df): - fc1 = FaultConditionOne(config_dict) - df = fc1.apply(df) - print(f"Total faults detected: {df['fc1_flag'].sum()}") - return df - - -def update_fault_flags_in_db(df, conn, batch_size=1000): - cursor = conn.cursor() - - update_data = [(int(row["fc1_flag"]), index) for index, row in df.iterrows()] - - start_time = time.time() - print("Starting batch update...") - - for i in range(0, len(update_data), batch_size): - print(f"Doing batch {i}") - batch = update_data[i : i + batch_size] - cursor.executemany( - """ - UPDATE TimeseriesData - SET fc1_flag = ? - WHERE timestamp = ? - """, - batch, - ) - conn.commit() - - # Calculate and print the elapsed time and records updated - elapsed_time = time.time() - start_time - minutes, seconds = divmod(elapsed_time, 60) - print( - f"Batch {i//batch_size + 1} completed: {len(batch)} records updated in {int(minutes)} minutes and {int(seconds)} seconds" - ) - - print("Batch update completed.") - - # Calculate and print total records updated per minute - total_records = len(update_data) - total_time = time.time() - start_time - records_per_minute = total_records / (total_time / 60) - print(f"Total records updated: {total_records}") - print( - f"Total time taken: {int(total_time // 60)} minutes and {int(total_time % 60)} seconds" - ) - print(f"Records per minute: {records_per_minute:.2f}") - - -def main(): - # Step 1: Load the RDF graph from the Turtle file - g = load_rdf_graph("brick_model_with_timeseries.ttl") - - # Step 2: Run SPARQL query to find sensors - rdf_result = run_sparql_query(g) - - # Step 3: Extract sensor data from SPARQL query result - sensor_data = extract_sensor_data(rdf_result) - - # Step 4: Connect to SQLite database - print("Connecting to SQLite database...") - conn = sqlite3.connect("brick_timeseries.db") - - # Step 5: Retrieve timeseries data from the database - dfs = retrieve_timeseries_data(sensor_data, conn) - - # Step 6: Combine the retrieved dataframes - df_combined = combine_dataframes(dfs) - - print(df_combined.columns) - - if df_combined is not None: - # Step 7: Convert analog outputs to floats - df_combined = convert_floats(df_combined, PERCENTAGE_COLS_TO_CONVERT) - - # Step 8: Run fault condition one - df_combined = run_fault_one(config_dict, df_combined) - - # Step 9: Write the fault flags back to the database - update_fault_flags_in_db(df_combined, conn) - - print("columns: \n", df_combined.columns) - - # Close the database connection - conn.close() - - -if __name__ == "__main__": - main() diff --git a/examples/brick_model_and_sqlite/brick_model_with_timeseries.ttl b/examples/brick_model_and_sqlite/brick_model_with_timeseries.ttl deleted file mode 100644 index 5374aa1..0000000 --- a/examples/brick_model_and_sqlite/brick_model_with_timeseries.ttl +++ /dev/null @@ -1,355 +0,0 @@ -@prefix brick: . -@prefix ns1: . -@prefix rdfs: . -@prefix ref: . -@prefix unit: . -@prefix xsd: . - -ns1:CWR_Temp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_CWR_Temp . - -ns1:CWS_Freeze_SPt a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_CWS_Freeze_SPt . - -ns1:CWS_Temp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_CWS_Temp . - -ns1:CW_Valve a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_CW_Valve . - -ns1:CoolValve a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_CoolValve . - -ns1:CurrentKW a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_CurrentKW . - -ns1:CurrentKWHrs a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_CurrentKWHrs . - -ns1:DischargeTemp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_DischargeTemp . - -ns1:EaDamper a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_EaDamper . - -ns1:EffSetpoint a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_EffSetpoint . - -ns1:Eff_DaSP a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_Eff_DaSP . - -ns1:Eff_DaSPt a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_Eff_DaSPt . - -ns1:HWR_value a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_HWR_value . - -ns1:HWS_value a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_HWS_value . - -ns1:HW_Valve a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_HW_Valve . - -ns1:Heat_Calls a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_Heat_Calls . - -ns1:MA_Temp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_MA_Temp . - -ns1:MaDampers a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_MaDampers . - -ns1:MaLowSPt a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_MaLowSPt . - -ns1:Ma_Dampers a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_Ma_Dampers . - -ns1:Ma_Temp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_Ma_Temp . - -ns1:OA_Damper a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_OA_Damper . - -ns1:OaTemp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_OaTemp . - -ns1:OaTemp_Enable a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_OaTemp_Enable . - -ns1:Oa_Temp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_Oa_Temp . - -ns1:RA_CO2 a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_RA_CO2 . - -ns1:RA_Temp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_RA_Temp . - -ns1:RaCO2 a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_RaCO2 . - -ns1:RaHumidity a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_RaHumidity . - -ns1:RaTemp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_RaTemp . - -ns1:Ra_FanSpeed a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_Ra_FanSpeed . - -ns1:Ra_Temp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_Ra_Temp . - -ns1:SaStatic a brick:Supply_Air_Static_Pressure_Sensor ; - brick:hasUnit unit:Inch_Water_Column ; - ref:hasExternalReference ns1:timeseries_SaStatic . - -ns1:SaStaticSPt a brick:Supply_Air_Static_Pressure_Setpoint ; - brick:hasUnit unit:Inch_Water_Column ; - ref:hasExternalReference ns1:timeseries_SaStaticSPt . - -ns1:SaStatic_SPt a brick:Supply_Air_Static_Pressure_Sensor ; - brick:hasUnit unit:Inch_Water_Column ; - ref:hasExternalReference ns1:timeseries_SaStatic_SPt . - -ns1:SaTempSP a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_SaTempSP . - -ns1:SaTempSPt a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_SaTempSPt . - -ns1:Sa_FanSpeed a brick:Supply_Fan_VFD_Speed_Sensor ; - brick:hasUnit unit:Percent ; - ref:hasExternalReference ns1:timeseries_Sa_FanSpeed . - -ns1:SpaceTemp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_SpaceTemp . - -ns1:VAV2_6_SpaceTemp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_VAV2_6_SpaceTemp . - -ns1:VAV2_7_SpaceTemp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_VAV2_7_SpaceTemp . - -ns1:VAV3_2_SpaceTemp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_VAV3_2_SpaceTemp . - -ns1:VAV3_5_SpaceTemp a brick:Temperature_Sensor ; - brick:hasUnit unit:DEG_F ; - ref:hasExternalReference ns1:timeseries_VAV3_5_SpaceTemp . - -ns1:timeseries_CWR_Temp a ref:TimeseriesReference ; - ref:hasTimeseriesId "CWR_Temp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_CWS_Freeze_SPt a ref:TimeseriesReference ; - ref:hasTimeseriesId "CWS_Freeze_SPt"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_CWS_Temp a ref:TimeseriesReference ; - ref:hasTimeseriesId "CWS_Temp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_CW_Valve a ref:TimeseriesReference ; - ref:hasTimeseriesId "CW_Valve"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_CoolValve a ref:TimeseriesReference ; - ref:hasTimeseriesId "CoolValve"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_CurrentKW a ref:TimeseriesReference ; - ref:hasTimeseriesId "CurrentKW"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_CurrentKWHrs a ref:TimeseriesReference ; - ref:hasTimeseriesId "CurrentKWHrs"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_DischargeTemp a ref:TimeseriesReference ; - ref:hasTimeseriesId "DischargeTemp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_EaDamper a ref:TimeseriesReference ; - ref:hasTimeseriesId "EaDamper"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_EffSetpoint a ref:TimeseriesReference ; - ref:hasTimeseriesId "EffSetpoint"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_Eff_DaSP a ref:TimeseriesReference ; - ref:hasTimeseriesId "Eff_DaSP"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_Eff_DaSPt a ref:TimeseriesReference ; - ref:hasTimeseriesId "Eff_DaSPt"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_HWR_value a ref:TimeseriesReference ; - ref:hasTimeseriesId "HWR_value"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_HWS_value a ref:TimeseriesReference ; - ref:hasTimeseriesId "HWS_value"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_HW_Valve a ref:TimeseriesReference ; - ref:hasTimeseriesId "HW_Valve"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_Heat_Calls a ref:TimeseriesReference ; - ref:hasTimeseriesId "Heat_Calls"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_MA_Temp a ref:TimeseriesReference ; - ref:hasTimeseriesId "MA_Temp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_MaDampers a ref:TimeseriesReference ; - ref:hasTimeseriesId "MaDampers"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_MaLowSPt a ref:TimeseriesReference ; - ref:hasTimeseriesId "MaLowSPt"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_Ma_Dampers a ref:TimeseriesReference ; - ref:hasTimeseriesId "Ma_Dampers"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_Ma_Temp a ref:TimeseriesReference ; - ref:hasTimeseriesId "Ma_Temp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_OA_Damper a ref:TimeseriesReference ; - ref:hasTimeseriesId "OA_Damper"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_OaTemp a ref:TimeseriesReference ; - ref:hasTimeseriesId "OaTemp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_OaTemp_Enable a ref:TimeseriesReference ; - ref:hasTimeseriesId "OaTemp_Enable"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_Oa_Temp a ref:TimeseriesReference ; - ref:hasTimeseriesId "Oa_Temp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_RA_CO2 a ref:TimeseriesReference ; - ref:hasTimeseriesId "RA_CO2"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_RA_Temp a ref:TimeseriesReference ; - ref:hasTimeseriesId "RA_Temp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_RaCO2 a ref:TimeseriesReference ; - ref:hasTimeseriesId "RaCO2"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_RaHumidity a ref:TimeseriesReference ; - ref:hasTimeseriesId "RaHumidity"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_RaTemp a ref:TimeseriesReference ; - ref:hasTimeseriesId "RaTemp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_Ra_FanSpeed a ref:TimeseriesReference ; - ref:hasTimeseriesId "Ra_FanSpeed"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_Ra_Temp a ref:TimeseriesReference ; - ref:hasTimeseriesId "Ra_Temp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_SaStatic a ref:TimeseriesReference ; - ref:hasTimeseriesId "SaStatic"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_SaStaticSPt a ref:TimeseriesReference ; - ref:hasTimeseriesId "SaStaticSPt"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_SaStatic_SPt a ref:TimeseriesReference ; - ref:hasTimeseriesId "SaStatic_SPt"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_SaTempSP a ref:TimeseriesReference ; - ref:hasTimeseriesId "SaTempSP"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_SaTempSPt a ref:TimeseriesReference ; - ref:hasTimeseriesId "SaTempSPt"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_Sa_FanSpeed a ref:TimeseriesReference ; - ref:hasTimeseriesId "Sa_FanSpeed"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_SpaceTemp a ref:TimeseriesReference ; - ref:hasTimeseriesId "SpaceTemp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_VAV2_6_SpaceTemp a ref:TimeseriesReference ; - ref:hasTimeseriesId "VAV2_6_SpaceTemp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_VAV2_7_SpaceTemp a ref:TimeseriesReference ; - ref:hasTimeseriesId "VAV2_7_SpaceTemp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_VAV3_2_SpaceTemp a ref:TimeseriesReference ; - ref:hasTimeseriesId "VAV3_2_SpaceTemp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:timeseries_VAV3_5_SpaceTemp a ref:TimeseriesReference ; - ref:hasTimeseriesId "VAV3_5_SpaceTemp"^^xsd:string ; - ref:storedAt ns1:database . - -ns1:database a ref:Database ; - rdfs:label "SQLite Timeseries Storage"^^xsd:string ; - ns1:connstring "sqlite:///brick_timeseries.db"^^xsd:string . - diff --git a/examples/brick_model_and_sqlite/mimic_grafana_plot.png b/examples/brick_model_and_sqlite/mimic_grafana_plot.png deleted file mode 100644 index faf1f64..0000000 Binary files a/examples/brick_model_and_sqlite/mimic_grafana_plot.png and /dev/null differ diff --git a/setup.py b/setup.py index 94d3cb8..e3b3367 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ def read_long_description(file_path): setup( name="open_fdd", - version="0.1.4", + version="0.1.5", author="Ben Bartling", author_email="ben.bartling@gmail.com", description="A package for fault detection and diagnosis in HVAC systems",