Skip to contents

Data Collection

For inverters that do not collect historical data, you may want to do this collection with R.

Here are some ideas to achieve it.

Use pins storage

  • Initialize the board dataset maned “inverter_data” (only once) We can choose the most simpler board to be the local board
library(pins)
board <- board_local()
if (!"inverter_data" %in% pin_list(board)) {
  initial_data <- tibble::tibble(
    date = lubridate::now(), get_output_data(c("192.168.0.175"))
    )
  board |> pin_write(initial_data, name = "inverter_data", versioned = TRUE)
}
  • Read the {pins} local board content for dataset “inverter_data”
history <- board |> pin_read("inverter_data")
  • Read new data from the inverter and append it to the dataset :
new_data <- tibble::tibble(
  date = lubridate::now(), get_output_data(c("192.168.0.175"))
  )
board |> pin_write(rbind(history, new_data), name = "inverter_data", versioned = TRUE)
  • look at recorded versions
board |> pin_versions("inverter_data")

All-in-one in a script

Now that we know the dynamic behavior, we can move that to a R script and run it on a regular basis with system tools

and you can use and edit the following file as a baseline

system.file("inverter_data.R", package = "microinverterdata")

and setup (or remove) the environment variables required for the script to run, and finally save the modified script in an accessible folder.

MacOS / Linux platform

The system tool crontab is the tool of choice for job scheduling on linux :

crontab -l

Last step here is to configure the crontab to run it every 30 min like in the following crontab entry

# m h dom mon dow command
0,30 * * * * R CMD BATCH /path/of/modified/inverter_data.R

MS Windows platform

Depending of your version, last step here is to configure the task scheduler or the powershell PSScheduledJob to run it.