tools/monitr/get-boxes.R

library(magrittr)
library(opensensmapr)
library(sf)

if (is.null(as.list(environment())$osem_boxes_ts))
  osem_boxes_ts = data.frame()

b = osem_boxes()

# for $`active` computations
diffNow = (opensensmapr:::utc_date(Sys.time()) - b$lastMeasurement) %>% as.numeric(unit='hours')
neverActive = b[is.na(b$lastMeasurement), ] %>% nrow()

# only keep aggregated data
b_agg = data.frame(time = Sys.time(), boxcount = nrow(b))
b_agg$model = b$model %>% table() %>% as.list() %>% list()
b_agg$exposure = b$exposure %>% table() %>% as.list() %>% list()
b_agg$geometry = b %>% st_as_sf() %>% st_geometry() %>% list()
b_agg$phenomena = b %>% osem_phenomena() %>% list()

b_agg$active = list(
  'never' = neverActive,
  '1h' = nrow(b[diffNow <= 1, ]) - neverActive,
  '1d' = nrow(b[diffNow <= 24, ]) - neverActive,
  '30d' = nrow(b[diffNow <= 720, ]) - neverActive,
  '365d' = nrow(b[diffNow <= 8760, ]) - neverActive
) %>% list()

# combine with existing time series
osem_boxes_ts = rbind(b_agg, osem_boxes_ts)

# cleanup
rm(b)
rm(b_agg)
sensebox/opensensmapR documentation built on March 12, 2023, 8:09 a.m.