fetch_from_influx.R 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. library(influxdbclient)
  2. token <- "XPBViJ3s4JL9_wPffwd5M2EgXj5hcUgT0n4jNhv7m6-NC-6SSxQ3run4kXtWBvOk-FYr1VG5Tj5WcoHgjge9jw=="
  3. org <- "laempe"
  4. bucket <- "energy-monitor"
  5. client <- InfluxDBClient$new(url = "http://influxdb:8086",
  6. token = token,
  7. org = org)
  8. get_df <- function(client, query) {
  9. result <- client$query(gsub("[\r\n]", "", query))
  10. time <- result[["_result"]][[1]][["time"]]
  11. df <- data.frame(time)
  12. for (i in 1:length(result[["_result"]])){
  13. r <- result[["_result"]][[i]]
  14. if(exists("channel", r))
  15. field <- sprintf('%s_%s', r[["_field"]][1], r[["channel"]][1])
  16. else
  17. field <- r[["_field"]][1]
  18. df[field] <- r[["_value"]]
  19. }
  20. rm(result)
  21. return(df)
  22. }
  23. start = "2022-05-04T06:00:00+02:00"
  24. stop = "2022-05-04T11:25:00+02:00"
  25. query = sprintf('
  26. from(bucket: "energy-monitor")
  27. |> range(start: %s, stop: %s)
  28. |> filter(fn: (r) => r["_measurement"] == "plant")
  29. |> filter(fn: (r) => r["_field"] == "auswerfer_1_heben" or r["_field"] == "auswerfer_1_senken" or r["_field"] == "gaswagen_ausfahren" or r["_field"] == "gaswagen_einfahren" or r["_field"] == "hubtisch_heben" or r["_field"] == "hubtisch_senken" or r["_field"] == "rolltor_oeffnen" or r["_field"] == "rolltor_schliessen" or r["_field"] == "schuss" or r["_field"] == "seitenteil_links_schliessen" or r["_field"] == "seitenteil_links_und_rechts_oeffnen" or r["_field"] == "seitenteil_rechts_schliessen" or r["_field"] == "unterteil_faehrt_aus" or r["_field"] == "unterteil_faehrt_ein")
  30. |> aggregateWindow(every: 50ms, fn: last, createEmpty: false)
  31. |> toBool()
  32. |> yield(name: "last")
  33. |> drop(columns: ["_start", "_stop"])
  34. ', start, stop)
  35. hengli_plant = get_df(client, query)
  36. query = sprintf('
  37. from(bucket: "energy-monitor")
  38. |> range(start: %s, stop: %s)
  39. |> filter(fn: (r) => r["_measurement"] == "24v")
  40. |> filter(fn: (r) => r["_field"] == "current" or r["_field"] == "voltage")
  41. |> aggregateWindow(every: 20ms, fn: mean, createEmpty: false)
  42. |> yield(name: "mean")
  43. |> drop(columns: ["_start", "_stop"])
  44. ', start, stop)
  45. hengli_24v = get_df(client, query)
  46. query = sprintf('
  47. from(bucket: "energy-monitor")
  48. |> range(start: %s, stop: %s)
  49. |> filter(fn: (r) => r["_measurement"] == "480v")
  50. |> aggregateWindow(every: 60ms, fn: mean, createEmpty: false)
  51. |> yield(name: "mean")
  52. |> drop(columns: ["_start", "_stop"])
  53. ', start, stop)
  54. hengli_480v = get_df(client, query)
  55. plot(hengli_24v$current_10, type = "l")
  56. library(ggplot2)
  57. ggplot(hengli_24v, aes(x=time)) +
  58. geom_line(aes(y=current_10), color = "#ff0000")