Spaces:
Sleeping
Sleeping
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() | |