R/generacion_automatica_horarios_alumbrado.R

Defines functions generacion_automatica_horarios_alumbrado

Documented in generacion_automatica_horarios_alumbrado

#' @title Generación automática de horarios ON/OFF del alumbrado exterior y parking en base al orto y el ocaso
#'
#' @description Generación automática de horarios ON/OFF del alumbrado exterior y parking en base al orto y el ocaso
#'
#' @param campo
#'
#' @return json
#'
#' @examples  generacion_automatica_horarios_alumbrado(campo=0)
#'
#' @import httr
#' jsonlite
#' rjson
#' RCurl
#' dplyr
#' lubridate
#' timeDate
#'
#' @export

generacion_automatica_horarios_alumbrado <- function(campo=0){

  # ==============================================================================
  # PETICIÓN TOKEN THB
  # ==============================================================================

  cuerpo <- '{"username":"kepa@techfriendly.es","password":"kepa_tech"}'
  post <- httr::POST(url = "http://116.202.100.157:8080/api/auth/login",
                     add_headers("Content-Type"="application/json","Accept"="application/json"),
                     body = cuerpo,
                     encode = "json",verbose()
  )

  resultado_peticion_token <- httr::content(post)
  auth_thb <- paste("Bearer",resultado_peticion_token$token)

  # ==============================================================================
  # LLAMADA API EL TIEMPO
  # ==============================================================================

  # Llamada api
  url <- "https://www.el-tiempo.net/api/json/v2/provincias/26/municipios/26089"
  get_tiempo <- httr::GET(url = url, add_headers("Content-Type"="application/json","Accept"="application/json"))
  tiempo <- jsonlite::fromJSON(rawToChar(get_tiempo$content))

  # ==============================================================================
  # GENERACIÓN ORTO Y OCASO
  # ==============================================================================

  fecha_ref <- Sys.time()
  day(fecha_ref) <- day(fecha_ref)+1

  # Orto
  hora_orto <- tiempo[["pronostico"]][["manana"]][["@attributes"]]$orto
  # Eliminación de ceros a la izquierda
  hora_orto_1 <- as.numeric(gsub("[:].*","",hora_orto))
  hora_orto_2 <- as.numeric(gsub(".*[:]","",hora_orto))
  fecha_ref <- Sys.time()
  day(fecha_ref) <- day(fecha_ref)+1
  hour(fecha_ref) <- hora_orto_1
  minute(fecha_ref) <- hora_orto_2
  minute(fecha_ref) <- minute(fecha_ref)+10  # Margen de 10 minuros para apagar
  minutos <- ifelse(nchar(minute(fecha_ref)) == 1, paste("0",as.character(minute(fecha_ref)),sep = ""), minute(fecha_ref))
  hora_orto <- paste(as.character(hour(fecha_ref)),":",as.character(minutos), sep = "")

  # Ocaso
  hora_ocaso <- tiempo[["pronostico"]][["manana"]][["@attributes"]]$ocaso
  # Eliminación de ceros a la izquierda
  hora_ocaso_1 <- as.numeric(gsub("[:].*","",hora_ocaso))
  hora_ocaso_2 <- as.numeric(gsub(".*[:]","",hora_ocaso))
  hora_ocaso <- paste(as.character(hora_ocaso_1),":",as.character(hora_ocaso_2), sep = "")
  fecha_ref <- Sys.time()
  day(fecha_ref) <- day(fecha_ref)+1
  hour(fecha_ref) <- hora_ocaso_1
  minute(fecha_ref) <- hora_ocaso_2
  minute(fecha_ref) <- minute(fecha_ref)-10  # Margen de 10 minuros para apagar
  minutos <- ifelse(nchar(minute(fecha_ref)) == 1, paste("0",as.character(minute(fecha_ref)),sep = ""), minute(fecha_ref))
  hora_ocaso <- paste(as.character(hour(fecha_ref)),":",as.character(minutos), sep = "")

  # ==============================================================================
  # ACTUALIZACIÓN ATRIBUTOS
  # ==============================================================================

  id_dispositivo <- "3202bd70-418c-11ec-b26c-5339f6f4e88b"  # Dispositivo horarios. Contienen los horarios de los equipos de las zonas comunes

  for(i in 1:length(id_dispositivo)){

    # GET token del dispositivo
    url <- paste("http://116.202.100.157:8080/api/device/",id_dispositivo[i],"/credentials",sep = "")
    get_token <- httr::GET(url = url, add_headers("Content-Type"="application/json","Accept"="application/json","X-Authorization"=auth_thb))

    token <- jsonlite::fromJSON(rawToChar(get_token$content))
    token <- token$credentialsId

    url <- paste("http://116.202.100.157:8080/api/v1/",token,"/attributes",sep = "")

    # 1) Creacion atributos horarios  ALUMBRADOS
    json_envio_plataforma <- paste('{"Horario alumbrado exterior OFF":"', hora_orto,'",',
                                   '"Horario alumbrado parking OFF":"', hora_orto,'",',
                                   '"Horario alumbrado exterior ON":"', hora_ocaso,'",',
                                   '"Horario alumbrado parking ON":"', hora_ocaso,
                                   '"}',sep = "")
    post <- httr::POST(url = url,
                       add_headers("Content-Type"="application/json","Accept"="application/json","X-Authorization"=auth_thb),
                       body = json_envio_plataforma,
                       verify= FALSE,
                       encode = "json",verbose()
    )

  }
}
KepaAmigoTECHFriendly/prediccionesPresencia documentation built on Sept. 14, 2022, 4:09 p.m.