| | Require: monitor office conditions and check the status of appliances and sensors remotely and locally. |
| | Input: Real-time monitoring of current sensors in (AC, Coffee Machine, CCTV, TV, Light, Printer), Temperature & Humidity Sensor, Motion Sensor, Air Quality Sensor, Fire Sensor, On/Off Switches For Particular Appliances, Static IP address, WiFi Access Point Username/Password, Arduino kit and its pins, Arduino IoT Cloud Server. |
| | Initialization: |
| (1) | A: AC value//fetched from the ACS712 sensor where the threshold value is between 9 A to 11 A |
| (2) | C: Coffee Machine value//fetched from the ACS712 sensor where the threshold value is between 5 A to 7 A |
| (3) | CC: CCTV value//fetched from the ACS712 sensor where the threshold value is between 1 A to 3 A |
| (4) | TV: TV value//fetched from the ACS712 sensor where the threshold value is between 2 A and 4 A |
| (5) | L: Light value//fetched from the ACS712 sensor where the threshold value is between 0.5 A to 1.5 A |
| (6) | P: Printer value//fetched from the ACS712 sensor where the threshold value is between 1 A to 3 A |
| (7) | AQ: Air quality value//from MQ135 sensor (either 0 or 1) |
| (8) | U: Ultrasonic value//from HC-SR04 sensor (either 0 or 1) |
| (9) | TH: Temperature & humidity value//from DHT11 sensor (either 0 or 1) |
| (10) | F: Fire value//from IR sensor (either 0 or 1) |
| (11) | D: Door value//from motion sensor (either 0 or 1) |
| (12) | S1: 0/1 value//AC state is ON/OFF |
| (13) | S2: 0/1 value//coffee machine state is ON/OFF |
| (14) | S3: 0/1 value//CCTV state is ON/OFF |
| (15) | S4: 0/1 value//TV state is ON/OFF |
| (16) | S5: 0/1 value//light state is ON/OFF |
| (17) | S6: 0/1 value//printer state is ON/OFF |
| (18) | Sensors and all appliances are connected to Arduino which sends the data to the cloud server through a WiFi Access Point, which sends the data to the Arduino IoT cloud server. |
| | Steps: |
| (1) | for each round do |
| (2) | Fetch values of A, C, CC, TV, L, P, AQ, U, TH, F, D, S1, S2, S3, S4, S5, and S6. |
| (3) | Upload data from Arduino to Arduino IoT cloud server through WiFi and update the status of sensors and appliances on the cloud server. |
| (4) | Data went through the machine learning model, i.e., k-nearest neighbors and naive Bayes for fault prediction and synced to the mobile application from the cloud server. |
| (a) | Read data and load all libraries and dependencies required. |
| (b) | Preprocess data to make it useful for analysis. |
| (c) | Visualize various sensor values over time and in comparison to others. |
| (d) | Split the data into two sets: training and testing with 70% and 30% data, respectively, and visualize class distribution in training and testing datasets in the same. |
| (e) | A list of classifiers and their respective functions from Scikit-learn is made to pass to the pipeline function. |
| (f) | The purpose of the pipeline is to ensemble several steps like a list of transforms and a final estimator. |
| (g) | The training dataset fits the pipeline to train data for various classifiers and calculate accuracy scores and other evaluation metrics. |
| (h) | Tested the model on testing data and saw how well it performed by comparing using evaluation metrics such as accuracy, F1-score, precision, AUC, specificity, sensitivity, and recall. |
| (i) | Get the predicted values for the next values of the sensors. |
| (5) | The predicted data is divided into the following cases to recommend solutions |
| | Case 1 (ACS712) |
| (a) | If (FA)//fault in AC |
| | Notify user via notification “repair or replace AC.” |
| | break; |
| (b) | If (FC)//fault in coffee |
| | Notify user via notification “repair or replace coffee machine.” |
| | break; |
| (c) | If (FCC)//fault in CCTV |
| | Notify user via notification “repair or replace CCTV.” |
| | break; |
| (d) | If (FT)//fault in TV |
| | Notify user via notification “repair or replace TV.” |
| | break; |
| (e) | If (FL)//fault in Light |
| | Notify user via notification “repair or replace light.” |
| | break; |
| (f) | If (FP)//fault in printer |
| | Notify user via notification “repair or replace printer.” |
| | break; |
| (6) | User checks data of sensors and appliances in real-time remotely via a smartphone app that recommends solutions to user. |
| (7) | end for |
| | Output: Working status of each and every device and sensor. |