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, ) print(rtu_anomalizer1.kmeans_models) # 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()