# An Interoperable Component-Based Architecture for Data-Driven IoT System
## 5 Experiment Results and Discussions
### MPPT Implementation Experiment  
The experimental setup is as shown in Figure 5a,b, which is an experiment setup adopted from [36]. A solar array simulator (SAS) from Chroma (Model: 62150H-1000S) was used to generate  
Figure 4: Program flow chart of the data processing and data-driven function (MPPT use case). Figure 3: System architecture layer illustration (MPPT use case). the output characteristics of a solar PV array. The Chroma SAS is a DC power source that is capable of simulating the _I-V_ curve of different solar PV arrays under various solar intensity. For our case, a six series-connected PV modules of Kyocera Solar (Model: KC85T) was used to build the PV array in the SAS, and PV module specifications are shown in Table 2.  
The solar intensity and solar module model were selected from the SAS software. A single-ended primary-inductor converter (SEPIC) with 10 \(\Omega\) resistor load was used as the converter to step-up or step-down the operating voltage of the solar PV. The input of the converter was connected to the SAS, which acted as a solar array output. The voltage and current values of the PV array were sensed by the LEM sensors (LV-25P and LA-25 NP), which were used as a voltage and current transducer in this experimental setup. The sampling rate of the sensors to measure the voltage and current from the system was 0.1 s. The MKR1000, which acted as an end device of our IoT system, was connected to the sensory circuitry to read the PV array's operating voltage and current while integrated to the SEPIC converter. The Arduino MKR1000 was integrated with the Raspberry Pi 3, which was wirelessly connected to the Internet, and, whenever the MKR1000 measured a set of voltage and current reading, it transferred the data to the edge device, and waited for the feedback from the edge, as the next reading was only measured after the feedback received was applied on SEPIC. The Raspberry Pi as our edge device collected and processed the data from MKR1000 to calculate the operating power point. According to the power point calculated, the new duty cycle of the SEPIC was generated, and feedback to the MKR1000 was applied to the SEPIC. This operation automatically repeated until the maximum power point was located. The duty cycle step size was \(\pm\)0.01 and the switching frequency was 25 kHz. At the same time, the raw data of voltage and power collected from the end device were sent to the _InfluxDB_ for data visualization through _Grafana_. The proposed approach was evaluated for two different solar intensity settings: (1) 334 W/m\({}^{2}\); and (2) 667 W/m\({}^{2}\). Firstly, the P&O algorithm was used in both experimental setups. The experiment was then repeated with InCond algorithm. The sampling time to measure the voltage and current of the system was fixed at 0.1 s. First, we successfully showcase that the change of the MPPT algorithm is \begin{table}
\begin{tabular}{l c c} \hline Solar PV Isolation & 344 W/m\({}^{2}\) & 667 W/m\({}^{2}\) \\ Voltage at MPP (Vmpp) & 83.9 V & 93.8 V \\ Current at MPP (Impp) & 2.13 A & 3.81 A \\ Open circuit Voltage (Voc) & 101.2 V & 113.2 V \\ Short circuit Current (Isc) & 229 A & 4.10 A \\ \hline \end{tabular}
\end{table} 
Table 2: Parameters of KC85T solar PV module. Figure 5: Experiment setup of the MPPT implementation experiment. (**a**) end device setup, (**b**) overall setup. easily achievable in Figure 6a,b, where we change the MPPT algorithm and conducted the experiment without changing the experiment setup, data format, and end devices' settings. Figures 7 and 8 show the _I-V_ and _P-V_ curves both solar intensities, where the red dots on the curves indicate the maximum power point (MPP) of the solar array simulators. The MPPT tracking efficiency percentage values are highlighted with red-colored boxes. We can see that the system accurately tracked the MPP with MPPT efficiencies of above 99% (99.08% for 334 W/m\({}^{2}\) setup and 99.80% for 667 W/m\({}^{2}\) setup).