Artificial intelligence-based fault classification on photovoltaic plants using a low-cost open-source IoT system – Nature

Thank you for visiting nature.com. You are using a browser version with limited support for CSS. To obtain the best experience, we recommend you use a more up to date browser (or turn off compatibility mode in Internet Explorer). In the meantime, to ensure continued support, we are displaying the site without styles and JavaScript.
Advertisement
Scientific Reports volume 16, Article number: 1110 (2026)
1330 Accesses
Metrics details
Central inverters are widely used in large photovoltaic systems, but struggle with inefficiency and large energy losses with direct current (DC). To solve these problems, Artificial Intelligence (AI) and the Internet of Things (IoT) offer alternative solutions. In this study, a low-cost open-source IoT system is proposed for the 5 MW Thap-Sakae photovoltaic plant in Thailand, where the DC power parameters are collected in an AI-based time-series fault classification mode. The fault diagnosis data includes five entries per set for no fault, open circuit fault and shading fault. The system achieves 94% accuracy in the diagnosis of non-linear faults and time series parameters. Compared to other solutions, the long-range private wide area network provides cost-effective communication and supports data transmission of up to 180 m. In this study, conducted in a photovoltaic plant with unregulated conditions, a low-cost AI-powered IoT solution has been shown to be effective in real-time fault classification on the DC side. The proposed solution is sustainable and easy to manage over time, as it can handle non-linear problems caused by the volatility of the system or the fluctuations of the sensors without significant changes.
The growing global demand for energy and increasing environmental awareness have made photovoltaics (PV) one of the most important renewable technologies1. The widespread global development of large-scale PV power plants requires efficient and effective monitoring technologies to ensure optimal performance and avoid energy losses2. However, monitoring the operation of large-scale PV power plants, consists of a large number of PV panels, which makes effective maintenance and fault diagnosis difficult, especially for large-scale projects where on-site inspection is impossible and costly. Detection of faults therefore traditionally requires either human inspection or the use of expensive sensor networks, which is not suitable for large PV power plants3,4.
The photovoltaic systems of PV plants suffer from numerous defects under adverse outdoor conditions5. In PV power plant systems, the faults can be divided into three categories: PV panel faults, inverter and converter faults and AC component faults6. PV panel faults are further subdivided into open circuit, short circuit and partial shading faults, while inverter faults include open switches, DC link capacitors and grid-related faults. Even if the devices and systems comply with international standards, faults can occur in PV systems that have significant consequences for the PV systems. The most common faults are those in the arrays (PV panels) that cause the DC power to fall below the expected level7. Therefore, accurate and timely detection of these faults is important for the effectiveness and reliability of solar power plants. Therefore, the detection and classification of faults on the DC side of PV systems using machine learning techniques has gained much recognition in recent years8.
Recently, research has focused on the use of artificial intelligence (AI) and Internet of Things (IoT) solutions for the monitoring and detection of DC faults in PV power plants9. In these studies, the application of machine learning techniques such as support vector machines (SVM)10,11, K-nearest neighbors (KNN)12,13, and random forests (RF)14,15,16 has been investigated to detect various faults, especially open-circuit faults17,18, shading faults19,20, and regular operation21,22. In addition, the application of long-range wireless protocols, such as LoRaWAN, has been explored for reliable data communication and remote management of large PV systems where cellular connectivity is poor23. The application of machine learning algorithms in the context of AI has led to better fault detection by exploring the relationships between input and output characteristics24. By integrating numerous system parameters, AI can achieve higher reliability and accuracy in the detection of PV systems25. The combined use of AI and IoT is changing the strategy for repetitive fault classification and rapid performance monitoring of large PV systems9,26. AI used for such automatic fault detection in PV systems helps to increase their efficiency and reliability, resulting in significantly lower maintenance and operating costs27.
Classifiers such as decision trees, SVM and KNN are used in many studies18,28,29,30. These are algorithms that learn patterns from data to recognize or categorize new patterns in order to interpret data and facilitate decision making31. The application of ensemble learning, deep learning and reinforcement learning is becoming increasingly important to compensate for the shortcomings of conventional methods, especially in detecting difficult PV faults32,33,34.
Existing approaches often require significant computational resources, which limits their use in resource-constrained PV monitoring systems29,32. To address this limitation, we propose a lightweight fault classification function (FCF) that achieves high accuracy, while being practically feasible. this is because not only accuracy is evaluated, but also fault detection time and fault location must be evaluated in a real PV system. Otherwise, these FCFs are not really used. In addition, the size of the input data for FCFs is important. When a large PV plant with many arrays is operated, a lot of data is sent to the data center system. This poses a challenge for low-cost communication technology. Therefore, transmitting and analyzing input data from numerical data may be easier for large PV plants in real time. The IoT approach utilizes a wide range of sensors, measurement devices and network connections to support remote monitoring and adjustment of physical assets. In addition, many studies usually classify faults based on multiple input variables with a single value per parameter14,22,35, such as light intensity, panel temperature, ambient temperature, humidity, and power generation, etc. However, to facilitate practical use in large solar power plants with multiple arrays or strings, obtaining such data requires the installation of a large number of sensors, which is very expensive.
The aim of this research is to demonstrate the capability of a widely used baseline algorithm for fault classification using a single variable with a time series dataset. The proposed approach reduces investment in additional sensors and minimizes unnecessary data traffic, while maintaining competitive performance compared to other IoT technologies. Moreover, it eliminates the need for additional sensors and is well suited for LoRaWAN, which supports lower bandwidth than alternative IoT solutions36. The proposed system provides a flexible and easily scalable architecture that can be tailored to different PV system configurations and monitoring requirements. A 5 MW photovoltaic system provided the framework for thorough testing of the proposed AI-integrated IoT system for monitoring. The system collects real-time data from various sensors that record voltage, current and irradiance across the PV system. The data is transmitted wirelessly to a central processing unit via LoRaWAN, a network solution specifically designed for IoT use cases. With the help of AI, the system is able to analyze the data in real time, detect anomalies, categorize faults and warn of potential failures. The system is designed for use in remote areas with low connectivity and is therefore suitable for monitoring large PV systems around the world. Various operating conditions were used to test the robustness of the system and ensure its reliability. In addition, the use of open source software platforms provides an intuitive platform for the investigation and interpretation of data, providing the user with actionable information for performance and decision making.
The contributions of our study are:
We propose a novel system that utilizes low-cost IoT devices and AI algorithms for real-time fault classification and performance monitoring in large-scale PV plants.
We use open source software and hardware components that encourage customization, allowing researchers and industry practitioners to adapt the system to their specific needs and requirements.
The system can be used in remote locations with limited connectivity and is therefore suitable for monitoring large PV systems in different geographical environments.
The system was tested on a real 5 MW photovoltaic system and proved its ability to accurately detect and classify various faults.
The remaining sections are organized as follows: Section II provides information on the experimental methods, data collection and evaluation of system operation in a practical PV system. Section III presents the results and analysis of the research work. Section IV shows the discussion of the results and comparison with recent studies. The last section, V summarizes the work and discusses possible future research topics.
In this section, we first develop a low-cost, open-source, AI-integrated IoT system based on LoRaWAN technology to monitor the voltage and current on the DC side of the PV power plant. Then, we conduct a field test to evaluate the reliability and robustness of the proposed system in Thap-Sakae PV power plant. Finally, we present the workflow for fault classification on the DC side of the PV plant using AI models, using the dataset of our proposed IoT system.
The working of the proposed LoRa IoT node and LoRa gateway.
The hardware design is based on open source principles that allow customization to different PV system configurations. We use low-cost microcontrollers and sensors to minimize the overall cost of the system without compromising performance. As shown in Fig. 1, the technical details of the LoRa IoT node and LoRa gateway are as follows:
LoRa IoT node: The LoRa IoT node is responsible for collecting data from the PV panels, including voltage, current, and temperature. Each node includes:
Arduino Uno R3 Board: An open-source microcontroller board compatible with various operating systems and powered by an analog power supply. It accepts input voltages in the range of 0–5 VDC and converts them into digital signals.
Voltage Sensor: This sensor measures the DC voltage in the range of 0–1,000 VDC and generates an output voltage of 0–5 VDC, which can be coupled with the Arduino system.
Current Sensor: This current sensor works like a current transformer and measures the current in the range of 0–20 A, providing an output voltage of 2.5 + 0.625 VDC. It can be connected to an Arduino and transmits the data via a LoRa shield.
Solar Pyranometer Radiation Sensor: Designed as a radiation sensor, it measures solar energy from 0 to 2000 W/m2 and generates an output voltage of 0–5 VDC. It is suitable for measuring solar energy in photovoltaic power plants due to its linear light response in the 300–3200 nm range.
LoRa-RFM Shield: This LoRa Shield is compatible with the Arduino Uno R3 board and enables wireless data transmission via LoRaWAN at 915 MHz. It converts data from decimal numbers to hexadecimal numbers for transmission to the LoRa Raspberry Pi 4 gateway.
LoRa gateway: The LoRa gateway acts as a bridge between the LoRa IoT nodes and the cloud server.
LoRa Raspberry Pi 4 Gateway with Enclosure: This LoRa gateway consists of a Raspberry Pi 4, a RAK2245 Pi HAT, a GPS module and a heat sink. It operates in the 915 MHz frequency band and receives data from the LoRa-RFM Shield. With the help of ChirpStack, it manages data and clients effectively.
ChirpStack: a LoRa gateway control and management application that monitors the performance of each end node in the LoRaWAN network, including traffic status, transmission rates, and data packet encryption/decryption. It provides important credentials, such as device address, network session key, and app session key, for end node setup. These credentials serve as security measures for accessing the LoRaWAN. The LoRa Gateway also uses InfluxDB, a time series database, to store sensor data with timestamps for real-time monitoring and historical data retrieval.
Grafana Platform: This software application provides a seamless interface to time series database systems, including InfluxDB, to visualise data via charts and tables. The Grafana platform is particularly well suited to monitoring values, performing trend analysis and gaining insights from the information presented. It was installed on a laptop and connected to the LoRa gateway via a LAN (Local Area Network) port.
As shown in Fig. 2, the evaluation of the proposed LoRa IoT node involves the calculation of the percentage error (%Error) using Eq. 1 and Eq. 2. In Eq. 1, the measurement of the existing SCADA system represents the baseline value (xt), while the measured value (xm) was derived from the data collected from the IoT sensors. This calculation resulted in an error percentage indicating the accuracy of each sensor. The resulting percentage error values provide a valuable insight into the accuracy of the sensors and their suitability for accurate data collection and monitoring of PV power plants.
The real implementation of LoRa IoT nodes at the DC side of PV arrays at zone A, C and D in Thap-Sakae PV plant. The existing SCADA system with data logger is based on wireline. The IoT hardware is placed inside the weatherproof electrical box and named as a multi-sensor LoRa node (MLN) in Fig. 3.
Our field trial takes place in a 5 MW PV power plant in Thap-Sakae district, Prachuabkhirikhan province, Thailand. The power plant consists of five 1 MW PV zones, named from A to E. Zones A, C and D were selected to implement and test our proposed IoT system as these zones have fixed PV panels, while zone B has tracking PV panels.
The PV arrays in zones A, C and D were selected for the installation and testing of the AI and IoT-based monitoring systems, as shown in Figs. 2 and 3. For each zone, two fields were selected for the installation of multi-sensor LoRaWAN nodes. To determine the optimal MLN locations, the received signal strength indicator (RSSI) was used, with values of −68 dBm, −84 dBm and − 92 dBm for zones A, C and D respectively. The distances between the gateway and the MLN sites were 50 m, 160 m and 180 m respectively. After installation, the MLN components were connected, including the Arduino board, the voltage sensor, the current sensor, the solar pyranometer radiation sensor and the LoRa node, (see Fig. 3). Each set of MLNs can measure two PV systems with two current sensors and one voltage sensor. The radiation sensor was only installed in zone A of the MLN to compare the intensity of the solar radiation with the electrical energy. The MLN sends current, voltage and radiation intensity data from the LoRa node to the LoRa gateway via the LoRaWAN. The gateway has been configured with a spreading factor of 7, which defines the lowest energy consumption of the signal power at a bandwidth of 125 kHz. The data is then stored in InfluxDB and displayed on the Grafana platform. A Python program using the Spyder editor classifies the faults of the PV systems based on the selected AI model. Finally, the LoRaWAN was evaluated based on RSSI, signal-to-noise ratio (SNR), frequency of data reception (FRD) from Eq. 3 and percentage of data not received by the gateway (%FDL) or percentage of data loss from Eq. 4. A high RSSI, SNR and FRD as well as a low %FDL indicate a high-quality signal.
(a) The installation locations of a LoRaWAN gateway and MLN box of zone A, C and D, (b) IoT components in each MLN and (c) MLN of zone A installed with solar pyranometer radiation sensor.
The equations of the single diode model28 are used to describe the errors of the solar cell, which, as shown in Eq. 5, are of the current source type. In this work, we will only focus on the faults that affect 𝐼𝐷𝐶, i.e. the faults caused by the variation of sunlight, as these faults are difficult to detect and vary continuously with the external environment. Pdc is directly proportional to 𝐼𝐷𝐶 from Eq. 6, where 𝐼𝑝, 𝐼𝑠 and 𝐼𝑝𝑣 are the current generated by light, the saturation reverse current of the diode and the current through the solar cell, respectively. 𝑅𝑠. and 𝑅𝑠 are the series and parallel resistance of the solar cell. 𝑞, 𝑣𝑝𝑣, 𝑁𝑠, 𝑛, 𝑘 and 𝑇 are the electronic charge, the voltage across the solar cell, the number of cells connected in series, the ideality factor of the diode, the Boltzmann constant and the temperature in Kelvin. The value that directly influences the change in sunlight depends on 𝐼𝑝, 𝐼𝑠, 𝐼𝑝𝑣, 𝑣𝑝𝑣 and 𝑇. Although, 𝑅𝑠. and 𝑅𝑠 can change, they change very little within a short period of time.
Figure 4 shows the general flowchart of the data preparation, the training of the AI models and the validation of the trained AI model for the classification of PV faults on the DC side. The details of the individual phases are presented in the following subsections.
The power data set for training and validation of the AI model was collected from the Thap-Sakae PV power plant according to Eq. 7, focusing on three specific fault types on the DC side: normal mode (NM), open circuit (OC) and shading conditions (SD). Where 𝐷𝑖 is the data matrix or the data set of order i of MLN and 𝑑𝑛 is the data in the data set of n data in total. The data set covered a wide range of environmental conditions and operating scenarios and was reviewed by electrical engineers at the PV power plant. The training data consisted of five consecutive power data points from zones A, C and D of the Thap Sakae PV power plant. The duration of five consecutive data points is within 1 min to meet the requirement of fast fault detection and classification. These faults are common and are a problem in large, extensive, and difficult to access power plants. If they can be detected and corrected quickly, the efficiency of power generation can be improved.
The three fault cases were:
Normal (NM): The Pdc value increases and decreases with the change in sunlight in clear weather conditions3. When considered throughout the day, the Pdc versus time graph resembles an inverted bell, with the highest value when the sun is perpendicular to the PV panel.
Open Circuit (OC): Conditions where power cannot be produced, which can occur in many cases, such as (1) Iph = 0 or in a wavelength range of light where the PV panels cannot produce electricity, which usually occurs in the evening or at night, often occurring simultaneously throughout the plant, which is normal, or sometimes occurs in cases where there are a lot of clouds, or SD occurs, etc., after which the inverter orders the circuit to be cut off. (2) Caused by disconnection of the DC cable, such as deterioration or accidents, etc. (3) Caused by the circuit cutting of other protection systems, such as fuses and breakers, etc3,18.
Shading (SD): Light fluctuations, such as clouds, tree shadows, building shadows, etc., block sunlight from reaching the PV panels3. If the light intensity is not uniform at the same time throughout the panel or String/Array, it is called Partial Shading. This type of fault is very dangerous because if there is a large difference in light intensity across the panel or the connected String/Array, the blocked part will heat up, which will increase with a larger difference in light intensity. This heat up is caused by excess electric current from the cell or other distant panel through the shunt resistance. This problem will cause SD, which is a temporary fault, to change to a permanence fault, which means damage to the PV panel, changes in panel properties, and rapid panel degradation.
The training and test dataset consisted of 342 samples for each fault case, split 80% for training and 20% for testing. An additional dataset of 60 samples for each fault case was used to validate the selected AI model after training.
The flow chart of data preparation, training AI models, and validating trained AI models for PV fault classification at DC side.
We have selected the following AI models to integrate into our proposed low-cost and open-source AI-integrated IoT system for fault classification on the DC side: SVM, KNN and RF.
SVM is a supervised classification based on the classification of data by dividing the data into groups using a hyperplane28,37. If there is a new data point in any data group, this new data point is also classified into this data group. Therefore, determining the optimal hyperplane is the main goal of SVM, which consists of a linear or nonlinear classifier. The optimal hyperplane configuration improves the performance of the algorithm. The decision function is shown in Eq. 8. Where x, 𝛼𝑖, 𝑦𝑖. and b are the input vector, the Lagrange coefficients, the class label and the bias term, respectively. (:kleft({x}_{i},xright)) is a kernel function for classification that maps the input vector to higher dimensions.
KNN is a supervised classification that classifies data based on the distance of record positions using the Euclidean method28,37, as shown in Eq. 9, where (:dleft(x,yright)) represents the Euclidean distance between points x and y in dimension k. The algorithm assumes that new data points closest to the known data points are classified into the same group as the known data points. The performance of the algorithm depends on the determination of the appropriate k.
RF is an ensemble learning of supervised classification, in which many decision trees are randomly selected for classifying the inputs14,28. The output is then obtained from the high score voting for each tree that is randomly selected. The performance of the algorithm increases with the number of trees. The minimum number of samples for leaf nodes, the minimum number of samples for internal node splitting, the maximum number of selections, and the maximum depth of the decision tree are optimized to increase the performance of the algorithm.
These AI models were chosen because they are suitable for running on hardware with limited power, such as the Raspberry Pi, and offer fast processing capabilities. All source code for training the AI models was created using Python and the scikit-learn library on a laptop with 32 GB RAM and RTX 1650 GPU. During the training process, the default settings were used for all three AI models. Then the grid search algorithm was used to determine the optimal parameters for each model. The performance of the AI models was evaluated using the confusion matrix and the overall accuracy values.
The model with the highest accuracy from Eq. 10 was selected for our proposed system in Thap-Sakae PV power plant. Five parameters are used to evaluate the FCF algorithm. First, the overall accuracy from Eq. 10 is calculated for evaluating the overall performance of the algorithm. Accuracy is the evaluation of the algorithm’s ability to predict positive outcomes for all cases that the algorithm predicts as positive; this confirms the positive predictive performance of the algorithm shown in Eq. 11. Sensitivity is the evaluation of the algorithm’s ability to detect positive cases, as shown in Eq. 12. Specificity is the evaluation of the algorithm’s ability to detect negative cases, as shown in Eq. 13. Finally, the F1 score is the harmonic mean of precision and sensitivity, which is useful for unbalanced data sets (see Eq. 14). Here, the True Positive (TP), True Negative (TN), False Positive (FP) and False Negative (FN) parameters are derived directly from the confusion matrix32.
Based on the confusion matrix and the accuracy results from the training phase, the AI model that achieved the highest performance was selected for integration into our proposed system following the algorithm workflow. This selected AI model was then validated on a separate dataset consisting of 60 samples for each fault case to verify its effectiveness in real-time operation. In this validation phase, the performance of the selected AI model was further evaluated using the confusion matrix, accuracy, precision, sensitivity, specificity and F1 score to ensure its suitability for the proposed real-world deployment.
Algorithm Workflow for FCF on Thap-Sakae PV power plant.
Sensors A1-A9 of three IoT nodes were tested at light intensities between 100 and 600 W/m2, while sensor A0 was tested at intensities between 200 and 2,000 W/m2. The recorded values were displayed using the Grafana program and compared with the values from the existing SCADA system. The sensor values and the corresponding comparison values were recorded every 10 min and repeated ten times. The average error, which includes sensor inaccuracies and data transmission errors, was then calculated for both sets of values. For example, if the current value (A1) from the SCADA system (xt) and from the Grafana program (xm) is 2.9 A and 2.8 A respectively, Eq. 1, gives a %Error is (:left|frac{2.9:-:2.8}{2.9}right|text{x}:100) = 3.4%. According to Eq. 2, the %Accuracy is (:100-:3.4=:)96.6%.
Table 1 provides a detailed breakdown of the measurement accuracy of the three LoRa IoT nodes used in the PV power plant. The data shows that the mean error across all sensors is no more than 5%, indicating a high level of reliability and precision of the low-cost sensor technology used. In addition, the performance of the sensors at the various measurement points is consistently above 95%, further confirming the quality and robustness of the sensor hardware.
These results provide compelling evidence of the reliability and suitability of the proposed LoRa IoT system for real-world use in large-scale PV power monitoring applications. The combination of high accuracy, low error rates and stable performance under various environmental conditions demonstrates that the system is capable of providing trustworthy data with high accuracy to enable effective fault detection and performance monitoring of PV systems. This level of measurement reliability is crucial for the successful implementation of the AI-based fault classification algorithms described in this study, as it ensures the integrity of the training data and the accuracy of the resulting fault detection models. Overall, the sensor performance data presented in Table 1 serves as meaningful confirmation of the technical merits and practical feasibility of the LoRa IoT monitoring solution developed in this research.
The reliability of the LoRaWAN data transmission network was evaluated by measuring RSSI, SNR, FRD and %FDL in different zones of the PV power plant. The result is shown in Table 2. Zone A, 50 m away from the gateway and with unobstructed view, had the best performance with an average FRD of 51 recordings/minute and %FDL of 15%. Zone C, which was obscured by PV panels, had the worst performance with an average FRD of 22 recordings/minute and a %FDL of 63.3%. Zone D, which was 180 m away from the gateway, had an average performance with an average FRD of 49 recordings/minute and a %FDL of 18.3%.
(Note: The transmission setting for LoRa nodes in this study is 1 dataset per second. The maximum performance for each MLN is therefore an FRD of 60 recordings per minute and a %FDL of 0%)
The results from Table 2 give an insight into the performance of the LoRaWAN network under different conditions. The test results for zones A, C and D show the strengths and limitations of the private LoRaWAN network. Zone A represents the most favorable conditions, while zone C is the least favorable and zone D represents an intermediate case. These extensive tests are critical to the successful installation of the PV system. RSSI and SNR have minimal impact on data transmission as long as the gateway can receive the data. This highlights a key advantage of LoRaWAN for long distance communication and makes it suitable for large PV installations. However, the obstruction of the signal due to a missing line of sight significantly impairs the critical measured variables FRD and %FDL. The high loss of data when there is no line of sight (in zone C) can easily be overcome by increasing the antenna (length) or by adding more LoRaWAN repeaters.
In this section, the most suitable AI models for practical implementation in the Thap-Sakae PV power plant are identified. The selection of AI models for fault classification is based on the highest accuracy and scalability to other PV power plants. Since the PV panels in each zone use different technologies (Zone A – copper indium gallium selenide, Zone C – microcrystalline silicon, Zone D – amorphous silicon), a two-stage evaluation was performed:
Evaluating the highest accuracy of AI models for individual zone.
Evaluating the highest accuracy of AI models on combined dataset from all zones and select the best model.
The optimal setting parameters of the individual AI models after training by the grid search algorithm are listed in Table 3. These setting parameters can then be easily used to set up the AI model in our proposed system.
Table 4 shows the confusion matrix results on the testing dataset during training AI models. The key findings are:
SVM Model: In zone A, the SVM model performs well with 10/27/26 correct classifications for NM/OC/SD. Similar performance values are observed in zones C and D.
KNN Model: The KNN model shows slightly different results, with 12/26/24 correct classifications in zone A. Zones C and D show comparable performance.
RF Model: The RF model has 12/27/26 correct classifications in zone A. Here too, zones C and D have a similar performance level.
Examining the details further:
True Positives: The diagonal elements of the confusion matrices represent the true positives. For zone A, the RF model performs best for NM, the SVM model performs best for OC, and the RF and SVM models are equal for SD.
False Positives and False Negatives: The non-diagonal elements indicate misclassifications. For example, in zone A, the SVM model misclassifies 4 NM instances as SD, while the KNN model misclassifies 1 NM instance as OC and 1 as SD. The RF model misclassifies 1 NM instance as OC and 1 as SD.
Overall, all AI models have relatively high accuracy. However, the RF model seems to have a slight advantage in correctly classifying NM instances, while the SVM model appears stronger in classifying OC and SD instances.
Table 5 shows the confusion matrix for the performance of the AI models using the combined data from all zones. This confusion matrix represents the overall performance of the models in all three zones.
SVM Model: the SVM model correctly classified 61 cases of NM, 69 cases of OC, and 62 cases of SD.
KNN Model: The KNN model correctly classified 59 cases of NM, 69 cases of OC, and 62 cases of SD.
RF Model: The RF model correctly classified 60 cases of NM, 69 cases of OC, and 68 cases of SD.
In terms of detailed analysis:
True Positives: The diagonal elements represent the correct classifications. The RF model had the highest number of correct classifications for SD, while the SVM model had the highest number of correct classifications for NM. All models achieved a very high accuracy in classifying OC instances.
False Positives and False Negatives: The off-diagonal elements indicate misclassifications. For example, the SVM model misclassified 3 NM instances as OC and 2 as SD, while 8 SD instances were misclassified as NM and 1 as OC. The KNN model misclassified 7 NM instances as SD and 8 SD instances as NM and 1 as OC. The RF model misclassified 6 NM instances as SD and 3 SD instances as NM.
In the combined zones, the RF model showed a slight advantage in the classification of SD instances, while the SVM model stood out in the classification of NM instances. All models performed exceptionally well in the classification of OC instances. Overall, the RF model had the lowest number of misclassifications. Figure 5 also shows that the overall accuracy of the RF model reached the highest value of 96, even for combination zones. Based on the experimental results, the RF model is the appropriate model for implementation in the Thap-Sakae PV power plant.
Accuracy results given by Zone and AI model during training.
Table 6 shows the confusion matrix of the validation results of the chosen RF model on each zone. The summary evaluations are:
True positives: In zone A, the RF model correctly classified 20 cases of NM, 20 cases of OC, and 19 cases of SD. In zone C, the model correctly classified 18 cases of NM, 20 cases of OC and 18 cases of SD. In zone D, the model correctly classified 19 cases of NM, 20 cases of OC and 16 cases of SD.
False positives and False negatives: The non-diagonal elements represent misclassifications. In zone A, 1 SD instance was incorrectly classified as NM. In zone C, 2 NM instances were incorrectly classified as SD. In zone D, 4 NM instances were incorrectly classified as SD.
Overall, the RF model showed strong performance in accurately classifying the majority of instances in the three zones. Misclassifications were relatively low, indicating the robustness of the model in fault classification for this large PV plant. The values for accuracy, precision, sensitivity, specificity and F1- were calculated using Eqs. 1014 (see Table 7). For all evaluation parameters, the OC case is the best performer as it has no misclassifications. However, in the NM case and the SD case, the trend of the evaluation parameters decreases when the MLN distance to the LoRa gateway is increased from the A, C and D zones, respectively, (see Fig. 6 (a) to (d)). These trends in the evaluation parameters confirm the influence of transmission signal quality (RSSI and SNR) on FCF performance, as FCFs make misclassifications when RSSI and SNR values are poor. Since all data within the data set is not related to the characteristic trend of NM and SD, that have a similar characteristic trend in some case, are difficult to classify. Therefore, focusing only on good conditions (Zone A) of transmission signal quality, the value of FCF performance is over 95. Moreover, the 98 is the accuracy of FCF.
Precision, Sensitivity, Specificity and F1- score given by each zone of trained RF model during validating.
Table 8 shows the aggregate confusion matrix for the performance of the RF model over the combined data from all zones. The model correctly identified 57 cases of NM, 60 cases of OC and 53 cases of SD. When examining the true positives, the RF model showed high accuracy in classifying OC cases and correctly identified all 60 cases. However, the model misclassified 3 NM cases as SD cases and 7 SD cases as NM cases, indicating some difficulty in distinguishing between these fault states.
The combination of data from all zones allows a comprehensive evaluation of the performance of the RF model in fault classification. However, there were some misclassifications between NM and SD instances, suggesting that the discrimination between these two fault states could be improved. The model showed an excellent overall accuracy of 94, as shown in Table 7. Although, the precision (NM) is lower than 90, the high sensitivity (NM) helps to overcome this weakness. The sensitivity (NM) in the normal case is the panel normality predicted by the model relative to the total number of instances where the panel is normal. This confirms the model’s performance in detecting panel normality across all normality levels. A high value, i.e. 95, confirms the model’s performance in detecting panel normality. In contrast, specificity (NM) is the panel failure rate, predicted by the model relative to the total number of panel failures. This confirms the effectiveness of the model in detecting panel failures across all failure states. A high score, i.e. 94, confirms the effectiveness of the model in detecting panel failures. The F1-score (NM) is the harmonic means of precision and sensitivity, which confirms the balance of predictions in the case of FP and FN.
Compared to the more recent studies summarized in Table 9 and all previous research studies, most studies focus exclusively on theoretical simulations and analyzes without validation in the real world. Moreover, the accuracy of FCF was mainly presented under the already prepared validation conditions, which is the cause of the high FCF accuracy. These things hinder the practical application of FCF. Our proposed FCF algorithm and communication technology show advantages in practical implementation. The FCF algorithm was evaluated in terms of the key parameters of fault diagnosis, including classification accuracy, detection time, and localization. From Fig. 7, although the fault classification accuracy is not the highest, we evaluate the FCF algorithm in real-time implementation under unprepared validation conditions. The evaluation with this method ensures the practical applicability of FCF. Furthermore, the FCF accuracy reaches 98 when only the good signal quality is considered, which is second highest in the comparison shown in Fig. 7, i.e. high RSSI and SNR. This result shows that good transmission conditions have a positive impact on FCF accuracy. Careful selection of MLN locations with line-of-sight transmission can improve FCF accuracy. In addition, our system achieves shorter fault detection times and more precise fault localization, which have not yet been fully evaluated in other works. Furthermore, LoRaWAN has proven to be a suitable choice for wireless, low-cost communication in large-scale PV power plants.
Accuracy results showing the comparison of the proposed model and similar existing solutions in the literature review.
The implemented AI-integrated IoT system provides a comprehensive solution for real-time fault classification and performance monitoring in large photovoltaic plants, using low-cost hardware and open-source software to improve accessibility and scalability. The choice of LoRaWAN for wireless communication enables data transmission over long distances with minimal power consumption, which is an important prerequisite for use in large photovoltaic plants. The architecture of the system, consisting of distributed MLNs and a central gateway, enables efficient data collection and processing, while the integration of machine learning algorithms enables accurate fault classification and predictive maintenance. The modular design of the MLNs enables flexible deployment and adaptation to different PV system configurations and environmental conditions. In addition, the open-source nature of the software platform promotes community-driven development and facilitates the integration of advanced analytics and visualization tools. The system’s real-time monitoring capabilities allow operators to proactively identify and address potential issues to minimize downtime and optimize energy production.
The trial had two main limitations. Firstly, the deployment was limited to only three LoRa IoT nodes and one gateway node, resulting in a limited data set and a lack of diversity in NM, OC and SD fault conditions. To address this, further experiments should increase the number of deployed IoT nodes to enable more comprehensive monitoring of the system. Second, the current fault classification model only covers a few selected electrical faults on the DC side. Future studies should focus on expanding the scope of the model to detect a wider range of faults, including grid anomalies, inverter faults, and communication faults, to provide a more comprehensive fault diagnosis solution for large-scale PV systems. Despite these limitations, the proposed system shows significant potential to improve the reliability and efficiency of PV systems through real-time monitoring and fault diagnosis.
In this research work, a low-cost, open-source, wireless IoT system that integrates AI-based time series analysis for real-time fault classification and performance monitoring in large-scale photovoltaic systems was successfully developed. The proposed system was implemented and evaluated in the Thap-Sakae PV power plant to demonstrate its practical effectiveness.
The work made several important contributions. First, the setup and configuration of a dedicated LoRaWAN network that enables reliable wireless data transmission in the PV plant environment is described. The use of LoRaWAN enabled the highest transmission rate of 51 recordings per minute with a success rate of 85%, which is significantly better than previous systems at the site or in other studies. Secondly, affordable sensors and open source programs were used together to perform real-time energy monitoring and fault detection. The performance level of the sensors of more than 95% proves the high quality and suitability of the low-cost hardware. An AI model for fault detection in a running PV system is then evaluated. The model achieved a combined zone accuracy of 94% in the classification of NM, OC or SD, with a fault detection time of less than 1 min. The unique address of the IoT nodes was also used to identify specific fault locations.
This work demonstrates the feasibility and benefits of using a low-cost, open-source and AI-integrated wireless IoT system for comprehensive monitoring and fault diagnosis in large-scale PV power plants. The success of the implementation at the Thap-Sakae site confirms the practical applicability of the proposed system.
The data that support the findings of this study are available on request from the corresponding author.
Ali, A. O. et al. Advancements in photovoltaic technology: A comprehensive review of recent advances and future prospects. Energy Convers. Management: X. 26, 100952. https://doi.org/10.1016/j.ecmx.2025.100952 (2025).
Article  Google Scholar 
Hernández-Callejo, L., Gallardo-Saavedra, S. & Alonso-Gómez, V. A review of photovoltaic systems: Design, operation and maintenance. Sol. Energy. 188, 426–440. https://doi.org/10.1016/j.solener.2019.06.017 (2019).
Article  ADS  Google Scholar 
Hong, Y. Y. & Pula, R. A. Methods of photovoltaic fault detection and classification: A review. Energy Rep. 8, 5898–5929. https://doi.org/10.1016/j.egyr.2022.04.043 (2022).
Article  Google Scholar 
Gong, B., An, A., Shi, Y. & Jia, W. Fault diagnosis of photovoltaic array with multi-module fusion under hyperparameter optimization. Energy. Conv. Manag. 319, 118974. https://doi.org/10.1016/j.enconman.2024.118974 (2024).
Article  Google Scholar 
Liu, Q. et al. Asynchronous decentralized federated learning for collaborative fault diagnosis of PV stations. IEEE Trans. Netw. Sci. Eng. 9 (3), 1680–1696. https://doi.org/10.1109/TNSE.2022.3150182 (2022).
Article  MathSciNet  Google Scholar 
Jadidi, S., Badihi, H. & Zhang, Y. Fault diagnosis in microgrids with integration of solar photovoltaic systems:a review. IFAC-PapersOnLine 53 (2), 12091–12096. https://doi.org/10.1016/j.ifacol.2020.12.763 (2020).
Article  Google Scholar 
Navid, Q., Hassan, A., Fardoun, A. A., Ramzan, R. & Alraeesi, A. Fault diagnostic methodologies for Utility-Scale photovoltaic power plants: A state of the Art review. Sustainability, 13 (4), https://doi.org/10.3390/su13041629
Pillai, D. S. & Rajasekar, N. A comprehensive review on protection challenges and fault diagnosis in PV systems. Renew. Sustain. Energy Rev. 91, 18–40. https://doi.org/10.1016/j.rser.2018.03.082 (2018).
Article  Google Scholar 
Mellit, A. & Kalogirou, S. Artificial intelligence and internet of things to improve efficacy of diagnosis and remote sensing of solar photovoltaic systems: Challenges, recommendations and future directions. Renew. Sustain. Energy Rev. 143, 110889. https://doi.org/10.1016/j.rser.2021.110889 (2021).
Article  Google Scholar 
Kumar, U., Mishra, S. & Dash, K. An IoT and Semi-Supervised Learning-Based sensorless technique for panel level solar photovoltaic array fault diagnosis. IEEE Trans. Instrum. Meas. 72, 1–12. https://doi.org/10.1109/TIM.2023.3287247 (2023).
Article  Google Scholar 
Sepúlveda-Oviedo, E. H., Travé-Massuyès, L., Subias, A., Pavlov, M. & Alonso, C. An ensemble learning framework for snail trail fault detection and diagnosis in photovoltaic modules. Eng. Appl. Artif. Intell. 137, 109068. https://doi.org/10.1016/j.engappai.2024.109068 (2024).
Article  Google Scholar 
Eskandari, A., Aghaei, M., Milimonfared, J. & Nedaei, A. A weighted ensemble learning-based autonomous fault diagnosis method for photovoltaic systems using genetic algorithm. Int. J. Electr. Power Energy Syst. 144, 108591. https://doi.org/10.1016/j.ijepes.2022.108591 (2023).
Article  Google Scholar 
He, Z. et al. Compound fault diagnosis for photovoltaic arrays based on multi-label learning considering multiple faults coupling. Energy. Conv. Manag. 279, 116742. https://doi.org/10.1016/j.enconman.2023.116742 (2023).
Article  Google Scholar 
Amiri, A. F., Oudira, H., Chouder, A. & Kichou, S. Faults detection and diagnosis of PV systems based on machine learning approach using random forest classifier. Energy. Conv. Manag. 301, 118076. https://doi.org/10.1016/j.enconman.2024.118076 (2024).
Article  Google Scholar 
Chokr, B., Chatti, N., Charki, A., Lemenand, T. & Hammoud, M. Feature extraction-reduction and machine learning for fault diagnosis in PV panels. Sol. Energy. 262, 111918. https://doi.org/10.1016/j.solener.2023.111918 (2023).
Article  Google Scholar 
Chen, Z. et al. Random forest based intelligent fault diagnosis for PV arrays using array voltage and string currents. Energy. Conv. Manag. 178, 250–264. https://doi.org/10.1016/j.enconman.2018.10.040 (2018).
Article  ADS  Google Scholar 
Hao, J., Zhan, H., Xiao, C., Pei, H. & Wang, L. A method of operation status evaluation and fault diagnosis for PV arrays in the scenario of digitalization. Energy Rep. 12, 3020–3033. https://doi.org/10.1016/j.egyr.2024.08.071 (2024).
Article  Google Scholar 
Eskandari, A., Nedaei, A., Milimonfared, J. & Aghaei, M. A multilayer integrative approach for diagnosis, classification and severity detection of electrical faults in photovoltaic arrays. Expert Syst. Appl. 252, 124111. https://doi.org/10.1016/j.eswa.2024.124111 (2024).
Article  Google Scholar 
Montes-Romero, J. et al. Novel data-driven health-state architecture for photovoltaic system failure diagnosis, Solar Energy, 279, 112820, https://doi.org/10.1016/j.solener. (2024).
Li, D., Zhang, Y., Yang, Z., Jin, Y. & Xu, Y. Sensing anomaly of photovoltaic systems with sequential conditional variational autoencoder. Appl. Energy. 353, 122124. https://doi.org/10.1016/j.apenergy.2023.122124 (2024).
Article  Google Scholar 
Harrou, F., Dairi, A., Taghezouit, B., Khaldi, B. & Sun, Y. Automatic fault detection in grid-connected photovoltaic systems via variational autoencoder-based monitoring. Energy. Conv. Manag. 314, 118665. https://doi.org/10.1016/j.enconman.2024.118665 (2024).
Article  Google Scholar 
Saravanan, S., Kumar, R. S. & Balakumar, P. Binary firefly algorithm based reconfiguration for maximum power extraction under partial shading and machine learning approach for fault detection in solar PV arrays. Appl. Soft Comput. 154, 111318. https://doi.org/10.1016/j.asoc.2024.111318 (2024).
Article  Google Scholar 
Hong, Y. Y. & Pula, R. A. Diagnosis of PV faults using digital twin and convolutional mixer with LoRa notification system. Energy Rep. 9, 1963–1976. https://doi.org/10.1016/j.egyr.2023.01.011 (2023).
Article  Google Scholar 
Salazar-Peña, N., Tabares, A. & González-Mancera, A. Performance assessment and dynamic fault detection in photovoltaic systems using artificial intelligence. Energy 330, 136759. https://doi.org/10.1016/j.energy.2025.136759 (2025).
Article  Google Scholar 
Mellit, A. & Kalogirou, S. A. Chapter II-1-D – A survey on the application of artificial intelligence techniques for photovoltaic systems. in McEvoy’s Handbook of Photovoltaics 3rd edn (ed. Kalogirou, S. A.) 735–761 (Academic, 2018).
Fu, H. et al. Multi-coupling fault detection and diagnosis of photovoltaic arrays with improved slime mould algorithm and polycatboost. Process Saf. Environ. Prot. 194, 523–541. https://doi.org/10.1016/j.psep.2024.11.135 (2025).
Article  Google Scholar 
Kalay, M. Ş., Kılıç, B. & Sağlam, Ş. Systematic review of the data acquisition and monitoring systems of photovoltaic panels and arrays, Sol. Energy, 244, 47–64, https://doi.org/10.1016/j.solener.2022.08.029. (2022).
Labiod, C. et al. Enhanced photovoltaic panel diagnostics through AI integration with experimental DC to DC Buck boost converter implementation. Sci. Rep. 15 (1), 295. https://doi.org/10.1038/s41598-024-84365-5 (2025).
Article  ADS  MathSciNet  PubMed  PubMed Central  Google Scholar 
Noura, H. N., Allal, Z., Salman, O. & Chahine, K. Explainable artificial intelligence of tree-based algorithms for fault detection and diagnosis in grid-connected photovoltaic systems. Eng. Appl. Artif. Intell. 139, 109503. https://doi.org/10.1016/j.engappai.2024.109503 (2025).
Article  Google Scholar 
Dwivedi, D. & Pal, M. K. Victor Sam Moses Babu, Chakraborty, and Simplicial complexes using vector visibility graphs for multivariate classification of faults in electrical distribution systems, Computers and Electrical Engineering, 123, 110114, https://doi.org/10.1016/j.compeleceng.2025.110114 (2025).
Pineda, M., Barón, M. & Pérez-Bueno, M. L. Thermal imaging for plant stress detection and phenotyping. Remote Sens., 13 (1), https://doi.org/10.3390/rs13010068
Teta, A. et al. Fault detection and diagnosis of grid-connected photovoltaic systems using energy Valley optimizer based lightweight CNN and wavelet transform. Sci. Rep. 14 (1), 18907. https://doi.org/10.1038/s41598-024-69890-7 (2024).
Article  ADS  PubMed  PubMed Central  Google Scholar 
Yahyaoui, Z. et al. Fault diagnosis of uncertain photovoltaic systems using deep recurrent neural networks based lissajous curves. Comput. Electr. Eng. 123, 110191. https://doi.org/10.1016/j.compeleceng.2025.110191 (2025).
Article  Google Scholar 
Zenebe, T. M., Midtgård, O. M., Völler, S. & Dimd, B. D. Solar photovoltaic array short circuit fault analysis with machine learning using pre-trained convolutional neural network for feature selection. Solar Energy Adv. 5, 100103. https://doi.org/10.1016/j.seja.2025.100103 (2025).
Article  Google Scholar 
Hajji, M., Yahyaoui, Z., Mansouri, M., Nounou, H. & Nounou, M. Fault detection and diagnosis in grid-connected PV systems under irradiance variations. Energy Rep. 9, 4005–4017. https://doi.org/10.1016/j.egyr.2023.03.033 (2023).
Article  Google Scholar 
Sneha, K., Malik, N., Bilandi & Gupta, A. Narrow band-IoT and long-range technology of IoT smart communication: designs and challenges. Comput. Ind. Eng. 172, 108572. https://doi.org/10.1016/j.cie.2022.108572 (2022).
Article  Google Scholar 
Silva Santos, A. et al. Integrating autoencoders to improve fault classification with PV system insertion. Electr. Power Syst. Res. 242, 111426. https://doi.org/10.1016/j.epsr.2025.111426 (2025).
Article  Google Scholar 
Dupont, I. M., Carvalho, C. M., Jucá, S. C. S. & Neto, J. S. P. Novel methodology for detecting non-ideal operating conditions for grid-connected photovoltaic plants using internet of things architecture. Energy. Conv. Manag. 200, 112078. https://doi.org/10.1016/j.enconman.2019.112078 (2019).
Article  Google Scholar 
Madeti, S. R. K. A monitoring system for online fault detection in multiple photovoltaic arrays. Renew. Energy Focus. 41, 160–178. https://doi.org/10.1016/j.ref.2022.03.001 (2022).
Article  Google Scholar 
Sairam, S. et al. Edge-based explainable fault detection systems for photovoltaic panels on edge nodes. Renew. Energy. 185, 1425–1440. https://doi.org/10.1016/j.renene.2021.10.063 (2022).
Article  Google Scholar 
Et-taleby, A., Chaibi, Y., Boussetta, M., Allouhi, A. & Benslimane, M. A novel fault detection technique for PV systems based on the K-means algorithm, coded wireless orthogonal frequency division multiplexing and thermal image processing techniques. Sol. Energy. 237, 365–376. https://doi.org/10.1016/j.solener.2022.04.017 (2022).
Article  ADS  Google Scholar 
Et-taleby, A., Chaibi, Y., Allouhi, A., Boussetta, M. & Benslimane, M. A combined convolutional neural network model and support vector machine technique for fault detection and classification based on electroluminescence images of photovoltaic modules, Sustainable Energy Grids Networks, 32, 100946, https://doi.org/10.1016/j.segan.2022.100946. (2022).
Mellit, A., Benghanem, M., Kalogirou, S. & Massi Pavan, A. An embedded system for remote monitoring and fault diagnosis of photovoltaic arrays using machine learning and the internet of things. Renew. Energy. 208, 399–408. https://doi.org/10.1016/j.renene.2023.03.096 (2023).
Article  Google Scholar 
Latoui, A. & Daachi, M. E. H. Real-time monitoring of partial shading in large PV plants using convolutional neural network. Sol. Energy. 253, 428–438. https://doi.org/10.1016/j.solener.2023.02.041 (2023).
Article  ADS  Google Scholar 
Parsa, H. R. & Sarvi, M. Online fault Diagnosis, Classification, and localization in photovoltaic systems. IEEE Trans. Instrum. Meas. 73, 1–8. https://doi.org/10.1109/TIM.2024.3379087 (2024).
Article  Google Scholar 
Wang, Y. et al. Contactless diagnosis method and unsupervised learning for Panel-Level photovoltaic plant operation and maintenance. IEEE Access. 12, 174808–174817. https://doi.org/10.1109/ACCESS.2024.3494234 (2024).
Article  Google Scholar 
Download references
This research is funded by Thailand Science Research and Innovation Fund Chulalongkorn University (IND66210024 and IND_FF_68_331_2100_042), and Ratchadapisek Somphot Fund for Center of Excellence in Artificial Intelligence, Machine Learning and Smart Grid Technology. This research project is also supported by the Second Century Fund (C2F), Chulalongkorn University for Ph.D. Students and Postdoctoral Fellowship, and the National Science and Technology Development Agency (NSTDA) and the Electricity Generating Authority of Thailand (EGAT) [Grant No. JRA-CO-2563-13018-TH].
Center of Excellence in Artificial Intelligence, Machine Learning, and Smart Grid Technology, Department of Electrical Engineering, Faculty of Engineering, Chulalongkorn University, Bangkok, 10330, Thailand
Wattanasak Srisiri, Ngoc Thien Le, Muhammad Asim Saleem, Pasu Kaewplung, Surachai Chaitusaney & Watit Benjapolakul
PubMed Google Scholar
PubMed Google Scholar
PubMed Google Scholar
PubMed Google Scholar
PubMed Google Scholar
PubMed Google Scholar
W.S. contributed to the methodology, software, validation, writing – original draft and visualization; N.T.L. contributed to the conceptualization and supervision; M.A.S. contributed to the writing – review & editing and visualization; P.K. contributed to the conceptualization, resources, supervision and funding acquisition; S.C. contributed to the conceptualization, resources, supervision and funding acquisition; W.B. contributed to the conceptualization, resources, writing – review & editing, supervision, project administration and funding acquisition. All authors have read and agreed to the published version of the manuscript.
Correspondence to Surachai Chaitusaney or Watit Benjapolakul.
The authors declare no competing interests.
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Open Access This article is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License, which permits any non-commercial use, sharing, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if you modified the licensed material. You do not have permission under this licence to share adapted material derived from this article or parts of it. The images or other third party material in this article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article’s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
Reprints and permissions
Srisiri, W., Le, N.T., Saleem, M.A. et al. Artificial intelligence-based fault classification on photovoltaic plants using a low-cost open-source IoT system. Sci Rep 16, 1110 (2026). https://doi.org/10.1038/s41598-025-30678-y
Download citation
Received:
Accepted:
Published:
Version of record:
DOI: https://doi.org/10.1038/s41598-025-30678-y
Anyone you share the following link with will be able to read this content:
Sorry, a shareable link is not currently available for this article.

Provided by the Springer Nature SharedIt content-sharing initiative
Advertisement
Scientific Reports (Sci Rep)
ISSN 2045-2322 (online)
© 2026 Springer Nature Limited
Sign up for the Nature Briefing newsletter — what matters in science, free to your inbox daily.

source

This entry was posted in Renewables. Bookmark the permalink.

Leave a Reply