jerin
Merge branch 'lstm_pipeline' of hf.co:spaces/smartbuildings/smart-buildings into lstm_pipeline
6fbf053
raw
history blame
3.15 kB
import json
from rtu.RTUAnomalizer1 import RTUAnomalizer1
from rtu.RTUAnomalizer2 import RTUAnomalizer2
from rtu.RTUPipeline import RTUPipeline
from vav.VAVPipeline import VAVPipeline
from vav.VAVAnomalizer import VAVAnomalizer
from energy_prediction.EnergyPredictionNorth import EnergyPredictionNorth
import paho.mqtt.client as mqtt
def main():
rtu_data_pipeline = RTUPipeline(scaler1_path="src/rtu/models/scaler_rtu_1_2.pkl",scaler2_path="src/rtu/models/scaler_rtu_3_4.pkl")
#RTU - 1, 2
rtu_anomalizer1 = RTUAnomalizer1(
prediction_model_path="src/rtu/models/lstm_2rtu_smooth_04.keras",
clustering_model_paths=[
"src/rtu/models/kmeans_rtu_1.pkl",
"src/rtu/models/kmeans_rtu_2.pkl",
],
pca_model_paths=[
"src/rtu/models/pca_rtu_1.pkl",
"src/rtu/models/pca_rtu_2.pkl",
],
num_inputs=rtu_data_pipeline.num_inputs,
num_outputs=rtu_data_pipeline.num_outputs,
)
#RTU - 3,4
rtu_anomalizer2 = RTUAnomalizer2(
prediction_model_path="src/rtu/models/lstm_2rtu_smooth_03.keras",
clustering_model_paths=[
"src/rtu/models/kmeans_rtu_3.pkl",
"src/rtu/models/kmeans_rtu_4.pkl",
],
pca_model_paths=[
"src/rtu/models/pca_rtu_3.pkl",
"src/rtu/models/pca_rtu_4.pkl",
],
num_inputs=rtu_data_pipeline.num_inputs,
num_outputs=rtu_data_pipeline.num_outputs,
)
vav_pipeline = VAVPipeline(rtu_id=1, scaler_path="src/vav/models/scaler_vav_1.pkl")
vav_anomalizer = VAVAnomalizer(
rtu_id=1,
prediction_model_path="src/vav/models/lstm_vav_01.keras",
clustering_model_path="src/vav/models/kmeans_vav_1.pkl",
num_inputs=vav_pipeline.num_inputs,
num_outputs=vav_pipeline.num_outputs,
)
# print(vav_pipeline.input_col_names)
# print(len(vav_pipeline.output_col_names))
def on_message(client, userdata, message):
df_new_vav, df_trans_vav = vav_pipeline.fit(message)
vav_anomalizer.num_inputs = vav_pipeline.num_inputs
vav_anomalizer.num_outputs = vav_pipeline.num_outputs
if not df_new_vav is None and not df_trans_vav is None:
out_vav = vav_anomalizer.pipeline(
df_new_vav, df_trans_vav, vav_pipeline.scaler
)
df_new1, df_trans1, df_new2, df_trans2 = rtu_data_pipeline.fit(message)
if not df_new1 is None and not df_trans1 is None and not df_new2 is None and not df_trans2 is None:
out1,out2,out3,out4 = rtu_anomalizer1.pipeline(df_new1, df_trans1, rtu_data_pipeline.scaler1)
out5,out6,out7,out8 = rtu_anomalizer2.pipeline(df_new2, df_trans2, rtu_data_pipeline.scaler2)
#print(out2)
broker_address = "localhost"
broker_port = 1883
topic = "sensor_data"
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1)
print("Connecting to broker")
client.on_message = on_message
client.connect(broker_address, broker_port)
client.subscribe(topic)
client.loop_forever()
if __name__ == "__main__":
main()