Rduinoiot provides an easy way to connect to Arduino Iot Cloud API with R. Functions allow to exploit API methods for many purposes, manage your Arduino devices and dashboards and access to the data produced by sensors and sketches. This is not an official library by Arduino.
To get the current released version from CRAN:
install.packages("Rduinoiot")
To get the current development version from GitHub:
# install.packages("devtools")
devtools::install_github("FlavioLeccese92/Rduinoiot")
In order to access the API methods you need to create an API key. This
can be done by logging into your Arduino Cloud account and going to the
page https://cloud.arduino.cc/home/api-keys/
and retrieve
corresponding ARDUINO_API_CLIENT_ID
and ARDUINO_API_CLIENT_SECRET
.
library(Rduinoiot)
# Sys.setenv(ARDUINO_API_CLIENT_ID = 'INSERT CLIENT_ID HERE')
# Sys.setenv(ARDUINO_API_CLIENT_SECRET = 'INSERT CLIENT_SECRET HERE')
create_auth_token()
#> v Method succeeded
Things associated to the user account can be easily accessed using
things_list()
. This function will return detailed information, in
particular things_id
which are needed to access to properties.
tl = things_list()
#> v Method succeeded
created\_at | href | id | name | properties\_count | sketch\_id | timezone | updated\_at | user\_id | device\_fqbn | device\_id | device\_name | device\_type |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2022-08-12 13:49:43 | /iot/v1/things/0b18eba2-2aba-4740-8bec-5043403ecdd9 | 0b18eba2-2aba-4740-8bec-5043403ecdd9 | Smart Garden | 8 | 7a8e48be-e77d-401c-8ef7-05bd6e7b4c27 | America/New\_York | 2022-08-12 18:23:38 | fd39fa13-cbac-49ac-9316-cbdf452ba1c9 | NA | NA | NA | NA |
2022-08-12 18:24:07 | /iot/v1/things/60ef7770-90c0-4068-ac3d-8a2301c3ac3d | 60ef7770-90c0-4068-ac3d-8a2301c3ac3d | Home Security Alarm | 7 | 87cbfdec-b965-4a04-814a-232f65ac2f8e | America/New\_York | 2022-08-12 18:42:09 | fd39fa13-cbac-49ac-9316-cbdf452ba1c9 | NA | NA | NA | NA |
2022-08-12 21:57:28 | /iot/v1/things/b6822400-2f35-4d93-b3e7-be919bdc5eba | b6822400-2f35-4d93-b3e7-be919bdc5eba | Personal Weather Station | 5 | 0ef1dc12-dd8f-477e-963a-f7734b5ff141 | America/New\_York | 2022-08-12 21:59:46 | fd39fa13-cbac-49ac-9316-cbdf452ba1c9 | arduino:samd:mkrwifi1010 | fa7ee291-8dc8-4713-92c7-9027969e4aa1 | MFA | mkrwifi1010 |
2022-08-12 13:32:16 | /iot/v1/things/bc3b2763-a775-4fc8-95da-c03235d47f3a | bc3b2763-a775-4fc8-95da-c03235d47f3a | Thinking About You | 2 | 3a558c37-f087-47e9-8f01-339b40fc6dd9 | America/New\_York | 2022-08-12 13:40:06 | fd39fa13-cbac-49ac-9316-cbdf452ba1c9 | NA | NA | NA | NA |
Reading real-time humidity sensor of one of your devices can be done as follow:
thing_id = "b6822400-2f35-4d93-b3e7-be919bdc5eba"
property_id = "d1134fe1-6519-49f1-afd8-7fe9e891e778" # Humidity
data_ts = things_properties_timeseries(thing_id = thing_id,
property_id = property_id,
desc = FALSE, interval = 3600)
#> v Method succeeded
time | value |
---|---|
2022-09-19 21:00:00 | 26.58458 |
2022-09-19 22:00:00 | 25.64852 |
2022-09-19 23:00:00 | 24.94009 |
2022-09-20 00:00:00 | 24.97513 |
2022-09-20 01:00:00 | 25.20554 |
2022-09-20 02:00:00 | 24.66693 |
2022-09-20 03:00:00 | 24.54984 |
2022-09-20 04:00:00 | 23.92859 |
2022-09-20 05:00:00 | 23.37810 |
2022-09-20 06:00:00 | 24.62635 |
A catchy representation of humidity time series can be plotted, for instance, by using the library echarts4r by John Coene:
library(echarts4r)
library(dplyr)
library(lubridate)
data_ts = data_ts %>% mutate(time = with_tz(time, tzone = Sys.timezone()))
data_ts %>%
e_charts(time) %>%
e_line(value, name = "Value", color = "#007BFF", showSymbol = FALSE, smooth = TRUE,
connectNulls = TRUE, animation = FALSE, emphasis = NULL,
lineStyle = list(width = 1)) %>%
e_title(left = 'center', text = "Humidity",
subtext = "Last 1000 values averaged hourly",
textStyle = list(fontWeight = 'lighter')) %>%
e_grid(top = 70, right = 30, left = 50, bottom = 30) %>%
e_x_axis(show = TRUE, type = "time") %>%
e_y_axis(show = TRUE, scale = TRUE) %>%
e_legend(show = FALSE)