1. Introduction
To monitor and control industrial processes in different sectors, such as power generation systems, agriculture [
1], and biogas [
2], supervisory control and data acquisition (SCADA) systems have been developed. Explicitly in the case of photovoltaic (PV) systems, the SCADA systems can optimize PV system performance [
3]. The main components of a SCADA system incorporate field instrumentation devices (FIDs), remote terminal units (RTUs), the main SCADA server or master terminal unit (MTU), and human–machine interface (HMI) devices. FIDs are used as a part of the SCADA system to collect data that are critical for use in industrial production, such as current, pressure, temperature, and voltage. FIDs and RTUs can communicate over wireless or wired communication protocols, resulting in efficient data communication. In general, RTUs are physically placed in distributed regions for data communication and processing. In addition to serving the purpose of communication with MTUs, RTUs can control FIDs as well. In contrast, MTUs are at a central location and serve the purpose of data communication, data storage, and hosting the main server.
The architecture of the SCADA system has gone through a significant change since its first utilization. Monolithic SCADA, as the first generation, represents a standalone framework where the RTUs are connected to the MTU via wide area networks (WANs). RTUs and MTUs, if not manufactured by the same vendor, often cannot communicate with each other due to proprietary communication protocols. Distributed SCADA stands for a SCADA system that uses a local area network (LAN) to achieve communication between each operation station and uses WANs between the RTUs and the corresponding operation stations. This architecture facilitates system miniaturization by assigning each operation station different functions. For example, an operation station that solely exchanges data with RTUs or provides the HMI to the operator can be made smaller. Ref. [
4] Networked SCADA lifts the vendor limitation by adopting standard communication protocols, e.g., Ethernet and Transmission Control Protocol (TCP)/Internet Protocol (IP). IoT SCADA, as the fourth generation, introduces IoT technology and cloud services into the traditional SCADA field, promoting the modernization of industry or Industry 4.0 [
5]. Unlike networked SCADA, more diverse devices can be utilized in IoT SCADA, such as smart sensors. Moreover, cloud services, including storage, servers, software, and computing can be integrated in IoT SCADA. Applications of IoT in the industry context, including digital twins and the prediction of system failures, have advanced industrial automation to a large extent [
6]. Conventional SCADA systems come with high cost and high power consumption [
7], leaving a challenge for small-scale and cost-sensitive PV systems. Additionally, scalable and flexible SCADA systems are gaining attention in response to the development of the renewable energy industry. Renewable resources can be abundant in remote areas, where the integration of IoT adds to the information flow. Moreover, the high cost of proprietary SCADA systems prevents the massive adoption of small-scale PV installations, while low-cost solutions can be proposed by using IoT architectures. The adoption of the Internet of Things (IoT) in SCADA systems utilizes connected devices and sensors via Internet Protocol (IP) networks to collect and analyze data, offering improved flexibility, scalability, and cost-effectiveness [
8]. As a result of the IoT, more PV installations with different nominal capacity, from small rooftop arrays to large solar farms located in remote or urban areas, can employ scalable SCADA systems.
Message Queuing Telemetry Transport (MQTT) is a communication protocol running over TCP/IP. Based on the publish/subscribe mechanism, MQTT is a lightweight, open, and easy-to-implement solution. The MQTT broker separates the publisher from the subscriber, routing messages by topic [
9]. This architecture encourages the integration of low-bandwidth devices in the IoT context, where numerous RTUs and MTUs with limited processing power can be present [
10]. Prevalent in the IoT field, MQTT in IoT-based SCADA systems can be achieved by Node-RED, an open-source programming tool. With the flow-based interface, developers can quickly connect devices and create interactive dashboards to display monitored variables [
11]. The reduced complexity makes Node-RED a practical option for efficiently handling data transmission via MQTT and visualization in real-life scenarios.
As a part of this study, an open-source SCADA system based on the IoT for monitoring a PV system has been proposed. Voltage sensors and current sensors are specified as the F031-06 0–25 V voltage sensor module and the ACS712 current sensor module. Monitored voltages and currents are first collected by these analog sensors and the connected RTU ESP32 module, and then data are transmitted to the MTU Banana Pi M4 Berry via Wi-Fi connection. By utilizing the open-source programming tool Node-RED running on the MTU, our solution for PV system monitoring can be easily replicated by developers. The adoption of the MQTT protocol between the RTU and the MTU requires minimum bandwidth while ensuring reliable and real-time communication within the SCADA system. The designed SCADA system incorporates low-cost components such as FIDs, RTUs, and MTUs, making the proposed system cost-effective as a whole. To add to this, the proposed SCADA system is experimentally validated, which ensures the reliability of this work.
The following is the outline of the rest of this paper. A review of the related literature is presented in
Section 2. In
Section 3 and
Section 4, the system description and the components used throughout the course of this study are introduced. In
Section 5, the implementation methodology is covered. In
Section 6, the experimental setup and results are demonstrated.
Section 7 highlights the discussion part of this paper. The conclusion of this paper is provided in
Section 8. Limitations and the future work are described in
Section 9.
2. Related Work
The authors of [
12] designed a remote monitoring and control system for a PV-based water-pumping system. For field data acquisition, a light-dependent resistor (LDR) module to measure the sunlight and an ultrasonic sensor to measure the water tank level are connected to an Arduino UNO R3. Also equipped with an SIM800L module, global system for mobile communication (GSM) connectivity is added to the Arduino UNO R3. The Raspberry Pi 2 works as a server hosting the Node-RED platform, and the data storage unit collects sensor readings from the Arduino UNO R3 via SMS commands. Another GSM module is added to the Raspberry Pi 2 to enable the SMS updates between it and the Arduino UNO R3. Received data are processed to CSV files, including timestamps, water level readings, and the pump status. An Android application can check the PV pumping system status and turn the pump on/off over SMS and query the historic data from the Raspberry Pi 2 using the MQTT protocol via Ethernet. Their research utilizes GSM to achieve remote monitoring as a part of their work. In [
13], an IoT-based wireless data acquisition and control system for PV modules was introduced. For the hardware setup, the authors used three NodeMCU Wi-Fi modules flashed with Tasmota firmware that are responsible for collecting sensor readings, servo motor control, and controlling relays for ON/OFF control. Sensors include a voltage and a current sensor, a luminosity sensor, an ambient temperature sensor, a humidity sensor, and four waterproof temperature sensors. They are all mounted on one PCB. Another hardware component is a Raspberry Pi running the Raspbian OS with software packages installed: NodeRED for data handling, InfluxDB for data storage, Grafana for data visualization, and WireGuard VPN for remote access. The overall system performance was validated in terms of data accuracy, latency times in communications, CPU computational and thermal performance benchmarks, and sampling rate. The sole focus of the study was PV module performance under open-circuit conditions, not considering the realistic performance impact from other common parts such as the charging controller, the battery, and the load.
The researchers in [
14] developed a novel system to track the maximum power point (MPP) of PV panels under partial shading based on artificial vision. A wireless network node (WSN) powered by the PV panel consists of an MCU ATmega328P, an RF transceiver ATmega128RFA1, an external ADC, a battery, and a buck-boost converter. The coordinator node is an ATmega128RFA1 microcontroller that receives sensor readings from or sends the control signal to the WSN. The coordinator node connects with a webcam and a Raspberry Pi. The artificial vision algorithm requires the input voltage, the input current of the DC-DC converter, the ambient temperature, and the webcam images of the PV panel to generate the reference voltage of the DC-DC converter. The duty cycle control signal can also be generated and sent to the WSN via the coordinator node. The Raspberry Pi runs the artificial vision algorithm, obtains the reference voltage for the MPP, and calculates the duty cycle of the DC-DC converter. The authors claim their remote monitoring and control system has efficiency of more than 99%, even under partial shading conditions.
An open-source SCADA system to monitor a PV panel and a backup battery was designed in [
15]. The microcontroller ESP32 Thing measures and collects the PV panel voltage, the PV panel current, and the backup battery voltage through the connected sensors. The sensor readings are then sent to the Thinger.IO local server running on the Raspberry Pi 2 via a local Wi-Fi network for saving data, monitoring in real time and controlling remotely. HMI dashboards are created over the Thinger.IO server to facilitate the monitoring and supervisory control. Two system configurations were tested, where the Raspberry Pi was connected to either Ethernet or the LAN port of a local Wi-Fi router, with the latter being an industrial network. This work adopts the modern SCADA architecture, which is IoT-based. The authors of this study claim their work is low-cost, low-power, and open-source. As a part of [
16], an IoT platform for online monitoring of renewable energy systems was developed. A grid-connected PV station in the Saharan environment was taken as the case study to validate the effectiveness of the proposed system. An LA-25NP current sensor and an LV-25P voltage sensor, as the FIDs, are connected to an ESP32 (RTU) with Wi-Fi module. An ADSL Wi-Fi router as the gateway achieves communication between the ESP32 and the main server through the MQTT protocol. A website displays the monitored data in graphic form, and a MySQL database manages and stores the collected data. According to the researchers, this work is low-cost, IoT-based, and suitable for harsh environments, such as the desert. An industrial IoT system with redundant network architecture was presented in [
17] to remotely monitor a solar plant. The computing module of a Raspberry Pi 4 combined with a Waveshare board acts as the MTU and the RTU at the same time. Collected data from the pyranometer and environmental sensors are transmitted to the MTU via RS485 for Modbus communication. An SIM7600G-H-PCIE module resolves the cellular communication from the MTU to the operation center by deploying VPN tunnels. Irradiance, temperature, generated power, and process flow are presented by Grafana visualization. In this study, the authors suggest that resilience can be ensured by using a redundant mechanism in which the backup node takes over the master role when the master node is unreachable.
Another study [
18] proposes an IoT-based system for the monitoring of a PV fuel cell system. The DC power output from the combination of the PV array and the fuel cell was monitored by sampling the voltage and current. An ATMega2560 as the RTU first collected the monitored voltage and current, and then sent the data to the NodeMCU ESP8266 module through serial communication. Finally, a ThingSpeak platform received the data from the ESP8266 and displayed them graphically. This work enables the real-time and remote monitoring for a PV fuel cell system that can be applied in residential areas. As reported in [
19], the authors used supervisory control and data acquisition (SCADA) data to check the soundness of the blades following a lightning strike in order to increase up-time by quickly resuming operations in response to a number of reports about blade damage following lightning strikes on wind turbines. In [
20], the authors present a framework for developing an Intrusion Detection System (IDS) for SCADA-based power systems using machine learning, which incorporates effective modeling methods, such as data preprocessing, data augmentation, automated feature selection, rigorous training, and testing. For the purpose of substantiating our proposed design framework, we used a publicly available ORNL (Oak Ridge National Laboratory) dataset.
An approach to apply SCADA systems in industrial control systems is presented in [
21]. A multilayer architecture for SCADA control is presented, along with aspects of interoperability and interconnectivity within the architecture reference models, as well as research opportunities and challenges arising from the recent rapid increase in industrial control system complexity and digital transformation. In this study, the authors investigate the issue of proprietary SCADA systems and demonstrate how SCADA quality requirements are related to new technology adoption in steel manufacturing. In important infrastructure such as power, telecommunications, transportation, and manufacturing plants, supervisory control and data acquisition (SCADA) systems provide monitoring and control. The authors of [
22] believe that the SCADA system operating in connection with the Internet is vulnerable compared to isolated SCADA systems. As a result, the security of SCADA systems is gaining attention. In addition, they discuss some high-impact security incidents, objectives, and threats. The authors in [
23] use SCADA to connect a lower central controller to an upper WEB monitoring system, which is the hub of a microgrid intelligent monitoring platform. Using Java as middleware, the designed system provides communication and control functions between the central controller and the upper monitoring system. As part of the microgrid’s security and stability, the SCADA system executes real-time data acquisition, storage, load balancing, resource recovery, and security processing simultaneously. The authors in [
24] utilized a SCADA system for development of energy management systems for intelligent buildings. The design system integrates information data regarding illumination, temperature, and ventilation, which is important in modern building design technology. In this study, they used PLC controllers that can be controlled by the central SCADA system. The authors of [
25] developed a SCADA system for data logging and control of a solar backup power system for a grid connected system with an annual capacity of 516.75 MWH. The system is designed for a village in Lebanon for irrigation and domestic use.
The authors of [
26] proposed a highly customizable SCADA platform based on the industrial IoT (IIoT) concept. Modbus TCP protocol was used to achieve communication between the PLC and Node-RED, while the MQTT protocol was used for communication between Node-RED and two MQTT clients (MQTT.fx in Windows OS and MQTTClient in iOS). Experimental results indicate that (1) the PLC simulated by Mod_RSsim can successfully publish the status code of the motors to the Node-RED dashboard via Modbus TCP and (2) the two MQTT clients can successfully publish and subscribe to the Node-RED dashboard via MQTT. This paper contributed to the conceptualization of applying IoT in a SCADA system, providing a framework for future practical scenarios. A Node-RED-based SCADA architecture for a hybrid power system was implemented in [
27]. One voltage sensor and five current sensors collected the hybrid power system parameters, sending them to the Node-RED platform running on the Windows OS via a USB cable from an Arduino Mega2560. A Wio terminal was also utilized to display the monitored parameters. This work serves as an alternative to implementing the SCADA system without IoT architecture. Furthermore, this work focused on monitoring more than control in SCADA implementation.
During the course of this study, a considerable amount of literature has been reviewed, and some of the useful parts have been summarized in the above section of this article. According to the literature reviewed and to the best of authors knowledge, no such SCADA system has been identified that uses a Banana Pi M4 Berry to host a Node-RED-based IoT server and uses the MQTT protocol over a private network for remote monitoring. The designed SCADA system during the course of this study is the first of its kind, with the following key contributions.
The proposed open-source SCADA system utilizes the latest IoT architecture configured over a Banana Pi M4 Berry that provides all remote monitoring and control capabilities essential for the operation of PV systems in remote locations.
Node-RED, an open-source platform, and the commercially available components utilized in the system design facilitate the scalability of the system, including the choice of communication channels and the number of sensors.
A two-step load cut-off mechanism is provided in the designed system: (1) An operator of the SCADA system can manually shut down the relay with just a tap using the intuitive user interface (UI) when necessary. (2) When the monitored battery voltage falls below a pre-set threshold, the relay will automatically turn off, featuring over-discharge protection of the battery.
6. Experimental Setup and Results
To evaluate the performance and capabilities of the developed open-source SCADA architecture, it has been configured to monitor solar PV metrics—current, voltage, and power—within the PV installation at the Electrical Engineering Laboratory at Memorial University. The hardware connections were built based on the system description in
Section 3.
Figure 8 depicts the experimental setup of the proposed SCADA system. The hardware configuration is illustrated in
Figure 9, where CS stands for current sensor and VS stands for voltage sensor.
Figure 10 represents the PV installation, which consists of 12 solar panels, spanning a collective area of 14 square meters, with each panel capable of producing approximately 130 W and 7.6 A at maximum. For the purposes of this test, the SCADA system was interfaced with two panels of the array, which consists of an output of 260 W and 15.2 A at maximum, to provide a focused assessment of the system’s data acquisition and control functionalities. Additionally, the system incorporated six maximum power point tracking (MPPT) controllers and a battery bank comprising six lead–acid batteries to optimize and maintain energy efficiency.
Node-RED (MQTT Broker), which is installed on the BPI-M4 Berry machine locally and hosted on a local Wi-Fi network, is configured to receive the sensor readings collected and published by the ESP32-E microcontroller (MQTT Client). Using the MQTT protocol, the data are transmitted in real time. In the Node-RED platform, the node flow, as shown in
Figure 11, is responsible for calculating electrical power, subscribing and publishing messages, and creating HMIs (dashboards). Dashboards are built for the remote monitoring of the PV panel data, including the PV panel voltage/current, the battery voltage/current, and the load voltage/current. The power of each component is calculated by multiplying the voltage and the current. The data trend can be easily monitored remotely. HMIs connected to the local Wi-Fi network access the dashboards by browsing the URL “192.168.x.x:1880/ui” in a web browser for real-time monitoring. 192.168.x.x should be replaced by the IP address of the BPI-M4 Berry. The Banana Pi Debian 1.0.0 OS was installed on the eMMC of the BPI-M4 Berry. During the setup, two Chrome webpages and one terminal running Node-RED were open in the OS, with the dashboard webpage on the top. CPU usage varied between 1% and 34%, corresponding to idle status (about 80% of the time) and data update status (about 20%). The memory used was around 870 MB, being 43.8% of the total available memory. The hardware resources required in this setup were notably less than the total available resources, ensuring safe and continuous system operation. Due to the volatile nature of the weather in St. John’s, data vibrations were observed during the test of the proposed SCADA system. To validate the accuracy of the measured data, six digital multimeters are used to measure the PV system variables. Measurement results from the proposed SCADA system align with those of the digital multimeters, showcasing that our system accurately measures the PV system variables.
Figure 12 is the screenshot of the Node-RED dashboard showing the logged PV system data during a day. Starting from 10:12, the PV panel voltage fluctuates between 14.1 V and 22.5 V. The PV current remained steady with a smaller fluctuation between 3 A and 3.4 A. The PV panel power ranged from 38.50 W to 74.54 W. The battery voltage was kept around 14.5 V, while the battery current was about −2.8 A, indicating that the battery was charging the load. The battery power ranged from −44 W to −37 W. The load voltage was the same as the battery voltage due to the parallel circuit configuration. The load current was varying in the center of 4.88 A. The load power ranged from 67.38 W to 72.07 W. After 17:07, the PV voltage began to decrease from 21.5 V, entering a relatively stable stage ranging from 11 V to 12 V. The PV panel current dropped from 3.27 A to 0.62 A at 18:24. The PV panel power was 7.38 W at 18:24. The battery voltage also dropped to 12.59 V, since the power from the PV panel cannot compensate for the load power. The battery current increased to −4.06 A, trying to output the maximum power for the load when the battery voltage was dropping. The battery power increased to −51.16 W at 18:24 PM. The load voltage, current and power decreased to 12.59 V, 4.66 A, 58.72 W at 18:24. At 20:11, the PV voltage and the PV power were 0. The battery voltage and the load voltage were both 12.28 V. The battery current and power were −4.22 A and −51.82 W. The load power was solely from the battery.
The solar eclipse of 8 April 2024 was a total solar eclipse visible from places in Canada, the United States, and Mexico. In St. John’s, NL, Canada, we monitored the solar PV panel voltage during this eclipse, as shown in
Figure 13. From 17:14 to 17:16, the PV voltage decreased rapidly from 11.47 volts to 3.73 volts due to the blockage of the sunlight. After 17:16, the voltage increased to 12.27 volts at 17:18 since the Moon was no longer stopping the sunlight shed to the St. John’s area. This also validates the system performance.
Figure 14 is the PV output current during the eclipse. Similarly, the PV current dropped dramatically around 17:16, while it remained at a near-zero level longer than the PV voltage.
Furthermore, to test the supervisory control capability of our system, a button was added to the dashboard to manually turn ON/OFF the relay and the load. A switch node was created and added to the Node-RED flow to enable supervisory control. The relay will be turned off when the switch node is set to be OFF by a simple click. Moreover, the local control of the battery was configured in Arduino IDE so that when the battery voltage is less than 13 V, the relay turns off. The relay will only remain ON when the supervisory switch is ON and the battery voltage is larger than 13 V. From
Figure 15, the switch node was set to be OFF at 21:25, and subsequently both the battery current and the load current went to a value near zero since the relay and the load were turned off.
Figure 16 presents the experimental results for local control. Despite the switch node being ON, the battery current and the load current were still near zero due to the functionality of local control since the battery voltage went below 13 V.
8. Conclusions
Crucial operational facilities are distributed across vast areas, in often inhospitable terrains, and are increasingly reliant on a mix of traditional and renewable energy sources, including solar PV systems and wind turbines. The need for an open-source and scalable system to oversee these diverse energy assets is of paramount importance. Proprietary and non-configurable SCADA systems, while having enabled some degree of centralized control and monitoring, present significant downsides. Only limited companies produce these SCADA systems, which leads to relatively high prices and high maintenance costs. Moreover, the system compatibility of such proprietary systems with the components manufactured by other companies remains a question. Therefore, an open-source and customizable SCADA system as a solution can reduce the dependence on specific vendors and improve system compatibility.
In this paper, based on a comprehensive arrangement of FIDs, an RTU, an MTU, and a robust SCADA communication channel (MQTT) to track and manage data flow, the designed system has shown excellent performance in laboratory settings. The system facilitates (1) real-time monitoring of essential parameters such as voltage and current for the PV panel, the battery, and the load and (2) remote and local control of the load through a network of sensors, the ESP32-E microcontroller, and the Banana Pi M4 Berry single-board computer. The PV system data during the total solar eclipse on 8 April 2024, in addition to regular validation of the system performance in real time, also testify to the reliability of the proposed SCADA system. The supervisory control and local control are also tested to be effective in the experimental results. Furthermore, it provides easy-to-implement methods for displaying data, using the Node-RED platform to increase operational reliability. Overall, the implementation of this SCADA system not only fulfills the need for an affordable monitoring solution—as evidenced by its total cost of CAD $94.5, zero running costs, and a running power of 3.19 W—but also demonstrates versatility and precision in handling real-time data in robust environments.
9. Limitations and Future Work
There may exist some potential limitations in this study. The system operational time is limited due to time constraints. A longer period of monitoring would add to the credibility of the work. Moreover, other open-source SCADA software and dashboards can be undertaken as a future research direction and comparison, e.g., Home Assistant with ESPHome. Furthermore, the PV system monitored in this paper is single string and low power. The current research work can also be extended for multi-string, larger PV systems. In addition, data storage can be considered for implementation in the cloud, e.g., Google Cloud, to align with the IoT context. Finally, the SCADA system can also have its application for different system hardware, e.g., a Li-ion battery-based PV system including interaction with battery bank BMS or a hybrid system with a grid-connected inverter, AC load, and higher DC bus voltage. Additional security features, such as user accounts, passwords, and local data logging in the server can be added in Node-RED. Using additional measurements for the PV system, system fault diagnosis can be added in Node-RED.