The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
library(cumulocityr)
library(knitr)
This vignette introduces the main functions with a few examples.
Credentials and base url for cumulocity are stored in a user’s private .Renviron
file.
The credentials are defined as follows:
CUMULOCITY_base_url = "[tenant url]"
CUMULOCITY_usr = "[username]"
CUMULOCITY_pwd = "[password]"
CUMULOCITY_device_id = "[an example device id]"
The tenant url should be of the form “https://tenant_name.cumulocity.com”. CUMULOCITY_device_id
is provided for convenience, but is not required by any of the main functions.
The file .Renviron
can be edited with usethis::edit_r_environ()
.
Get devices for the tenant and display a few columns. If no arguments are passed, get_devices()
returns all devices.
devices <- get_devices()
print(devices[,c("type", "name", "id")])
#> type name id
#> 1 c8y_SensorPhone Pixel 2 XL 1200
#> 2 c8y_Demo A demo device 200
#> 3 <NA> DemoDevice 51868
#> 4 c8y_MQTTDevice Temperature #1 53700
Get measurements for device “Temperature #1” and plot the result. Datetimes are returned as character strings; we first convert to POSIXct
before plotting.
meas <- get_measurements(device_id = 53700,
num_rows = 100,
date_from = "2019-09-30T19:59:00Z")
kable(head(meas[c("time", "type", "c8y_Temperature.T.value")]))
time | type | c8y_Temperature.T.value |
---|---|---|
2019-09-30T19:59:00.850Z | c8y_Temperature | 2.079117 |
2019-09-30T19:59:05.851Z | c8y_Temperature | 9.135455 |
2019-09-30T19:59:10.850Z | c8y_Temperature | 8.090170 |
2019-09-30T19:59:15.851Z | c8y_Temperature | 6.691306 |
2019-09-30T19:59:20.853Z | c8y_Temperature | 5.000000 |
2019-09-30T19:59:25.851Z | c8y_Temperature | 3.090170 |
time_parsed <- as.POSIXct(meas$time, format = "%Y-%m-%dT%H:%M:%OSZ", tz = "Z")
plot(time_parsed, meas$c8y_Temperature.T.value, type = "l",
xlab = "Time", ylab = "Temperature (deg C)")
Similarly, we can get events for the same device:
events <- get_events(device_id = 53700,
num_rows = 6,
date_from = "2019-09-30T19:59:00Z")
kable(events[c("type", "time", "c8y_Position.lng", "c8y_Position.alt")])
type | time | c8y_Position.lng | c8y_Position.alt |
---|---|---|---|
c8y_LocationUpdate | 2019-10-01T04:53:57.435Z | 77 | 88 |
c8y_LocationUpdate | 2019-10-01T04:53:52.435Z | 33 | 44 |
c8y_LocationUpdate | 2019-10-01T04:53:47.434Z | 22 | 33 |
3 | 2019-10-01T04:53:42.432Z | NA | NA |
c8y_LocationUpdate | 2019-10-01T04:51:27.419Z | 77 | 88 |
c8y_LocationUpdate | 2019-10-01T04:51:22.418Z | 33 | 44 |
By default, the content is parsed, but it is possible to return a list of JSON objects.
meas_03 <- get_measurements(device_id = 53700,
num_rows = 2,
date_from = "2019-09-30T19:59:00Z",
parse_json = FALSE)
print(meas_03)
#> [[1]]
#> [1] "{\"next\":\"https://mg.cumulocity.com/measurement/measurements?dateTo=2019-10-16T15:31:16Z&pageSize=2&source=53700&dateFrom=2019-09-30T19:59:00Z¤tPage=2\",\"self\":\"https://mg.cumulocity.com/measurement/measurements?dateTo=2019-10-16T15:31:16Z&pageSize=2&source=53700&dateFrom=2019-09-30T19:59:00Z¤tPage=1\",\"statistics\":{\"totalPages\":null,\"currentPage\":1,\"pageSize\":2},\"measurements\":[{\"self\":\"https://mg.cumulocity.com/measurement/measurements/53701\",\"time\":\"2019-09-30T19:59:00.850Z\",\"id\":\"53701\",\"source\":{\"self\":\"https://mg.cumulocity.com/inventory/managedObjects/53700\",\"id\":\"53700\"},\"type\":\"c8y_Temperature\",\"c8y_Temperature\":{\"T\":{\"unit\":\"\\u00baC\",\"value\":2.0791169082}}},{\"self\":\"https://mg.cumulocity.com/measurement/measurements/53702\",\"time\":\"2019-09-30T19:59:05.851Z\",\"id\":\"53702\",\"source\":{\"self\":\"https://mg.cumulocity.com/inventory/managedObjects/53700\",\"id\":\"53700\"},\"type\":\"c8y_Temperature\",\"c8y_Temperature\":{\"T\":{\"unit\":\"\\u00baC\",\"value\":9.1354545764}}}]}"
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.