ArduinoIoTCloud library is the central element of the firmware enabling certain Arduino boards to connect to the Arduino IoT Cloud

Overview

ArduinoIoTCloud

Check Arduino status Compile Examples Spell Check Unit Tests codecov

What?

The ArduinoIoTCloud library is the central element of the firmware enabling certain Arduino boards to connect to the Arduino IoT Cloud. The following boards are supported:

How?

  1. Register your Arduino IoT Cloud capable board via Arduino IoT Cloud (Devices Section).
  2. Create a new logical representation known as a Thing.

Arduino IoT Cloud Components

  • Devices: Physical objects built around a board (e.g. MKR WiFi 1010). This is the hardware which runs the sketch, reads sensors, controls actuators and communicates with the Arduino IoT Cloud.

  • Things: Logical representation of a connected object. They embody inherent properties of the object, with as little reference to the actual hardware or code used to implement them. Each Thing is represented by a collection of Properties (e.g., temperature, light, pressure...).

  • Properties: Qualities defining the characteristics of a system. A Property can be defined as read-only (READ) to indicate that Arduino IoT Cloud can read the data, but cannot change the value of such Property. On the other end, it may be designated to be read-and-write (READWRITE), allowing Arduino IoT Cloud to remotely change the property’s value and trigger an event notification on the device. It is also possible to mark properties as write-only (WRITE) which means the cloud can write to this property but not read its value (this limits data transmission for properties which are used to trigger events only).

How-to-use

  • thingProperties.h
void onLedChange();
/* ... */
bool led;
int seconds;
/* ... */
void initProperties() {
  ArduinoCloud.setThingId("ARDUINO-THING-ID");
  ArduinoCloud.addProperty(led, WRITE, ON_CHANGE, onLedChange);
  ArduinoCloud.addProperty(seconds, READ, ON_CHANGE);
}
/* ... */
WiFiConnectionHandler ArduinoIoTPreferredConnection("SECRET_SSID", "SECRET_PASS");
  • MyCloudApplication.ino
#include "thingProperties.h"

void setup() {
  Serial.begin(9600);
  while(!Serial) { }
  pinMode(LED_BUILTIN, OUTPUT);

  initProperties();
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
}

void loop() {
  ArduinoCloud.update();
  seconds = millis() / 1000;
}

void onLedChange() {
  digitalWrite(LED_BUILTIN, led);
}

FAQ

Watchdog

This 1.0.0 release of this library adds watchdog functionality to all ATSAMD21G18 based cloud connected boards. A watchdog is simply an electronic timer counting down from a preset start value which, upon reaching zero, triggers a reset of the microcontroller. It can be used to automatically recover from temporary hardware faults or unrecoverable software errors. In order to avoid the watchdog from reaching zero the countdown timer needs to be regularly re-set to its start value. This is happening within ArduinoCloud.update() which is periodically called at the start of the loop() function. Although the watchdog is automatically enabled it can be disabled by setting the second parameter of ArduinoCloud.begin(...) to false:

ArduinoCloud.begin(ArduinoIoTPreferredConnection, false).

Device can not subscribe to THING_ID

ArduinoIoTCloudTCP::handle_SubscribeMqttTopics could not subscribe to /a/t/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/e/i

In this case either the device has not been associated with the thing within the Arduino IoT Cloud GUI configuration or there's a typo in the thing id.

Comments
  • Lora support

    Lora support

    Support for LoRaWAN boards. ArduinoIoTCloud has been separated in ArduinoIoTCloudTCP and ArduinoIoTCloudLPWAN handlers to support TCP and Lora connection. ArduinoIoTCloud becomes a pure virtual class. One of these two object is instantiated according board type

    opened by fabik111 17
  • ESP8266 support for Arduino IoT Cloud (User/Pass Authentification)

    ESP8266 support for Arduino IoT Cloud (User/Pass Authentification)

    This pull request adds support for the ESP8266 to be used with the Arduino IoT Cloud utilizing user/password authentification with the cloud.

    If you want to try this feature out you must follow the following steps:

    • Checkout the corresponding branch of Arduino_ConnectionHandler which contains the necessary changes to support ESP8266 user/pass login git clone https://github.com/arduino-libraries/Arduino_ConnectionHandler -b esp8266-user-pass-login
    • A example sketch is available under examples/ArduinoIoTCloud_ESP8266
      • Set your ARDUINO_CLOUD_DEVICE_ID, ARDUINO_CLOUD_DEVICE_PASS and THING_ID as well as your WIFI data SECRET_SSID and SECRET_PASS

    Requires https://github.com/arduino-libraries/Arduino_ConnectionHandler/pull/1

    opened by aentinger 17
  • CloudSchedule

    CloudSchedule

    Opening to start integration testing with cloud side.

    /cc @eclipse1985

    TODO:

    • ~~Add property tests~~
    • ~~Use const instead of numbers~~
    • ~~Check CloudSchedule isActive() method~~
    • ~~Timezone -> see https://github.com/pennam/ArduinoIoTCloud/tree/cloudschedule_timezone~~
    type: enhancement topic: code 
    opened by pennam 13
  • Firmware Over-The-Air (OTA) update capability

    Firmware Over-The-Air (OTA) update capability

    This PR intends to provide firmware OTA capability via Arduino IoT Cloud and MKR MEM shield connected to either MR 1000, MR WiFi 1010, MR NB 1500 or MR GSM 1400. The following modifications need to be made to the sketch:

    /* ... */
    #include <SFU.h>
    #include <utility/ota/OTAStorage_MKRMEM.h>
    /* ... */
    static OTAStorage_MKRMEM ota_storage;
    /* ... */
    void setup()
    {
      /* ... */
      ArduinoCloud.setOTAStorage(ota_storage);
    }
    

    Furthermore the desired OTA storage type needs to be configured in ArduinoIoTCloud_Config.h, e.g.

    #ifndef OTA_STORAGE_MKRMEM
      #define OTA_STORAGE_MKRMEM      (1)
    #endif
    

    The firmware sets the hidden int property OTA_STORAGE_TYPE to one of the following values which allows the cloud to determine which OTA update storage medium is available:

    • OTA_STORAGE_TYPE = -1 -> No OTA storage medium connected, OTA not possible
    • OTA_STORAGE_TYPE = 0 -> MKR MEM Shield connected, OTA possible

    If the OTA update file has been downloaded and its checksum verified successfully then a reset is performed and the new firmware is flashed onto the MCU by the second stage SFU bootloader. In case of an error during the update process no reset is performed and the source of the error is written to the hidden int property OTA_ERROR. The following error codes are available:

    • OTA_ERROR = 0 -> No Error
    • OTA_ERROR = 1 -> OTA storage initialisation failed
    • OTA_ERROR = 2 -> OTA storage open failed
    • OTA_ERROR = 3 -> OTA storage write failed
    • OTA_ERROR = 4 -> Checksum mismatch
    • OTA_ERROR = 5 -> Received data overrun (too much data received before it could be processed)
    type: enhancement 
    opened by aentinger 12
  • Avoid multivalue properties split

    Avoid multivalue properties split

    Problem: with the current logic of CBOR message creation is actually possible that a multivalue property is splitted in two consecutive messages. This would break any multivalue property widget in create dashboard because is expected that all the values of the same multivalue property are updated at the same time.

    Proposed solution: Adding CHECK_CBOR_MULTI macro is possible to throw a CborErrorTooManyItems error when the whole multivalue property does not fit into the CBOR message. As a consequence the CBOR message is discarded (not sended to the cloud) and all the properties included in the discarded message and markes as appended_but_not_sended are scheduled for re-send. Furthermore the encoded_properties_message_limit is updated in order to send the correct number of properties to avoid re-trigger the error. The excluded property will be then sended in the next message. The same logic applies when the error occurs closing the CBOR container.

    First run:

    prop_a
    prop_b
    prop_c
    multi_prop_d.1
    multi_pror_d.2 <- CborErrorTooManyItems
    

    Second run:

    prop_a
    prop_b
    prop_c
    

    Third run:

    multi_prop_d.1
    multi_pror_d.2 
    ...
    

    Other changes: Commits https://github.com/arduino-libraries/ArduinoIoTCloud/commit/eb41da82c0e31a7c8908216a2a695d985de93250 and https://github.com/arduino-libraries/ArduinoIoTCloud/commit/ab527a150f53dea7a408887f239a446db3ffadbe are addressing a different but in some way correlated issue. If the propety container has a number of high change rate properties in the first positions and this properties are filling the CBOR message buffer these high change rate properties are updated each sendPropertiesToCloud call leaving out the other properties.

    This can be easily reproduced creating a sketch with 18 float properties and a loop like the one below. atest_12 is never updated.

    void loop() {
      ArduinoCloud.update();
     
          atest_0++;
          atest_1++;
          atest_2++;
          atest_3++;
          atest_4++;
          atest_5++;
          atest_6++;
          atest_7++;
          atest_8++;
          atest_9++;
          atest_A++;
          atest_B++;
          atest_C++;
          atest_D++;
          atest_E++;
          atest_F++;
          atest_10++;
          atest_11++;
          atest_12++;
          delay(500);
    }
    

    Lastly since i've added the appended_but_not_sended i've also included commit https://github.com/arduino-libraries/ArduinoIoTCloud/commit/14eb4799320eacd0ca9d967aa6a988935f97c8d4 that does not change any behaviour of the library, but it makes a bit clear that we need to echo back the received properties to the cloud even if unchanged.

    /cc @eclipse1985

    type: imperfection topic: code 
    opened by pennam 11
  • Deferred OTA

    Deferred OTA

    @facchinm i've took your PR #265 and made some small changes:

    • removed default transport overriding
    • Added https://github.com/arduino-libraries/ArduinoIoTCloud/commit/bfe9e1c05510cead57ea1300f6bac9316c21b86f https://github.com/arduino-libraries/ArduinoIoTCloud/commit/00f61ba7df82649a40dce98412de4d27b3a08b06 in order to sync _ota_req variable with the cloud and be able to start a deferred OTA after a board reset.
    • some other minor cosmetic change

    Having this feature has some minor drawbacks:

    • last_values message size is increased
    • if for some reason the library fails to send the cleared _ota_req flag to the cloud then onOTARequestCb() will be called again even if the OTA update was already applied.

    Tests:

    WebIDE OTA: Board | Test --- | --- MKR WiFi 1010 | :heavy_check_mark: Portenta | :heavy_check_mark: NANO RP2040 | :heavy_check_mark:

    arduino-cloud-cli deferred OTA:

    ./arduino-cloud-cli ota upload --device-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --file filename.ino.bin --deferred

    Board | Test --- | --- MKR WiFi 1010 | :heavy_check_mark: Portenta | :heavy_check_mark: NANO RP2040 | :heavy_check_mark:

    /cc @eclipse1985 @manchoz

    topic: code 
    opened by pennam 10
  • ArduinoCloud does not reconnect

    ArduinoCloud does not reconnect

    The simple example projects to light up an LED work fine, but the whole thing stops working when WiFi connection gets momentarily lost, and it doesn't reconnect, requiring a reset. If this is normal, then what is the recommended way to detect a disconnect and reconnect? Thanks

    opened by jcham 9
  • Offload IoT Cloud connection to Nina module

    Offload IoT Cloud connection to Nina module

    Requires nina-fw 1.4.2

    The SHA256 on OTA should be retested on the field (could be too slow for real world usage). In that case we should vendor a software only, embedded friendly implementation.

    TODO: add control code if fw is < 1.4.2 that HALTS the execution. Strings comparison (<=>) should be checked on megaAVR since it reports false results.

    opened by facchinm 9
  • ArduinoIoTCloudClass::update() stuck when internet connection fails

    ArduinoIoTCloudClass::update() stuck when internet connection fails

    Hi all, I'm having trouble keeping a nano33iot running when the internet connection (but not wifi) fails/drops for a short period of time. It gets stuck in the function void ArduinoIoTCloudClass::update(CallbackFunc onSyncCompleteCallback) called from the loop() code.

    After the connection fails, the board will have 45/60 seconds of life before getting completely stuck inside that function. No trying to reconnect occurs. Even if the internet connection fails for only a couple of seconds, the board will freeze in 45/60 seconds. The only solution is to reset either the board or the access point (the latter will trigger a wifi drop and the board will come back to life again searching for the wifi network).

    Tested repeatedly in the last few days in many ways:

    • unplugging the ethernet cable on a wifi accesspoint
    • disabling the mobile network on android in hotspot mode
    • casually walking away from the AP with the board in hands (this sometimes will trigger the wifi drop+reconnection)
    • different accesspoint/networks
    • on a mkrwifi1010

    With some Serial.print-fu I was able to narrow it a little bit to the call _mqttClient->poll() inside the update() function.

    Tested sketch is fresh template generated by the Arduino Create IoT Cloud compiled with the latest release of ArduinoIoTCloud (and dependencies).

    opened by raffaelecassia 9
  • Red death by LED with PortentaH7

    Red death by LED with PortentaH7

    Can someone check if the ArduinoIoTCloud-Basic kills the PortentaH7 (Solid Red onBoard LED). I have copied ThingID and DeviceID from the cloud and used my own wifi credentials.

    opened by hpssjellis 8
  • Cannot connect to ArduinoIoTCloud

    Cannot connect to ArduinoIoTCloud

    I get this every time I try to connect, any ideas?

    [ 42816 ] Connected to [wifi]
    [ 42817 ] Connecting to Arduino IoT Cloud...
    [ 43124 ] Bogus NTP time from API, fallback to UDP method
    [ 45229 ] Bogus NTP time from API, fallback to UDP method
    [ 47206 ] Bogus NTP time from API, fallback to UDP method
    
    opened by jmbeck 8
  • Reset when connected to network but no internet

    Reset when connected to network but no internet

    I am using the MKR Wifi 1010 with the IoTCloud but I have one problem. When my board is connected to my wifi but has no internet connection my board resets. I already disabled the watchdog by adding the argument false to the ArduinoCloud.begin function. This fixed the problem where my board resets itself if it was not connected to my network. But it still resets when it is connected to the network but has no internet access.

    opened by mderler 1
  • Add support for opta board

    Add support for opta board

    ~~Need to add CI~~ Needs:

    • https://github.com/arduino-libraries/Arduino_Portenta_OTA/pull/34
    • https://github.com/arduino-libraries/Arduino_ConnectionHandler/pull/87
    type: enhancement topic: code 
    opened by pennam 2
  • Use without using Arduino_ConnectionHandler library

    Use without using Arduino_ConnectionHandler library

    It would be really nice if there was a way to use this without it taking control of the network connection allowing someone to do their own network connection handling. Is this something that the team would consider, or would my best bet to to fork this and customize if for my own use?

    type: enhancement topic: code 
    opened by chrisisbeef 1
  • Use NTP as primary time source and connection handler as fallback

    Use NTP as primary time source and connection handler as fallback

    Some user reported a wrong behaviour of the scheduler widget due to wrong time. After some investigations we discovered that the time readed from connection handler was wrong.

    https://forum.arduino.cc/t/arduino-cloud-scheduler-responding-to-utc-time-instead-of-local-time/992909/21

    The issue needs some more investigation to understand if the root cause is a wrong time injected from the provider or some bug in the MKRNB library, but it looks a good idea to change the priority of the time sources and use NTP as first choice and the connection handler as fallback.

    topic: code 
    opened by pennam 1
  • Avoid creating constants and macros in the global namespace

    Avoid creating constants and macros in the global namespace

    This library defines some constants in the global namespace, such as the following ones:

    https://github.com/arduino-libraries/ArduinoIoTCloud/blob/451d57d53da33dfad490c6c0cd9f521780066e7c/src/ArduinoIoTCloud.h#L51-L56

    This generates errors whenever they are also defined by other libraries, preventing their coexistence. For instance, ~the ArduinoBLE library defines both READ and WRITE~ (not anymore, constants were renamed in ArduinoBLE) and in general it is very likely to find constants named like this.

    It would be nice to avoid polluting the global namespace, obviously in a retrocompatible way...

    topic: code 
    opened by alranel 6
Releases(1.8.0)
  • 1.8.0(Nov 7, 2022)

    Changelog

    • CI: Use mbed_portenta core release instead of ArduinoCore-mbed HEAD (#333)
    • Fix spell check failures and typos (#332)
    • Fix Unexpected input warning running unit-tests workflow (#334)
    • Add common define for STM32H7 boards (#335)
    • Fix write() in BearSSLClient.cpp (#337 )
    • Examples cleanup and adjust (#327) (#341)
    • Add ethernet interface support for Portenta H7 (#328)
    Source code(tar.gz)
    Source code(zip)
  • 1.7.0(Aug 2, 2022)

    Changelog

    • Add CloudString .clear() method and PropertyActions::CLEAR string to cleanup messenger widget (#329)
    • README.md improvements (#331)(#330)(#323)
    • CI: fix for ESP32 (#326)
    • CI: remove ArduinoBearSSL library dependency (#316)
    • CI: Add note about esp8266 core version (#325)
    • Add esp32 as supported architecture (#322)
    Source code(tar.gz)
    Source code(zip)
  • 1.6.1(May 30, 2022)

    Changelog

    • Remove PORTENTA H7 M4 from CI (#310)
    • TimeService: Check if board is connected before issue a time request (#317 ). This also fixes a crash of ESP32 platform.
    Source code(tar.gz)
    Source code(zip)
  • 1.6.0(Mar 8, 2022)

  • 1.5.0(Feb 8, 2022)

    Changelog

    • Add support for thing_id discovery protocol (#297)

    Notes

    • Hardcoded thing_id from old sketch templates will be ignored.
    • After upgrading to this library version it is no longer possible to rollback to previous versions with an OTA.
    • Upgrading to this library version with an OTA will produce this one time false error message: "Unable to verify OTA: the board did not answer after reboot".
    Source code(tar.gz)
    Source code(zip)
  • 1.4.1(Jan 24, 2022)

    Changelog

    • Add definition of generic ESP32 to ARCH test (#294)
    • Add retry delay on topic subscription failures (#298)
    • Avoid splitting multivalue properties when multiple messages are needed to sync (#293)
    • Use a more fair way to sync properties to the cloud (#293)
    Source code(tar.gz)
    Source code(zip)
  • 1.4.0(Dec 6, 2021)

  • 1.3.1(Nov 12, 2021)

  • 1.3.0(Nov 4, 2021)

    Changelog

    • Add support for deferred OTA (#281)

    Notes

    This library introduce OTA properties synchronization with the cloud. Due to this fact updating to this library version with an OTA update will lead to an update process repeated twice to correctly synch OTA properties.

    Source code(tar.gz)
    Source code(zip)
  • 1.2.1(Oct 6, 2021)

  • 1.2.0(Oct 5, 2021)

    Changelog

    • New CI Arduino Lint workflow (#268)
    • Fix CloudElectricpotential typo (#275)
    • Fix int to float conversion error (#276)
    • Enable RTC for PORTENTA (#273)
    • Add CloudTime variable (#277)
    • README Watchdog typo fix (#270)
    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Jun 15, 2021)

  • 1.1.0(Jun 14, 2021)

    Changelog

    • Support OTA on Nano RP2040 Connect (#256)
    • Refactor watchdog handling (#260)
    • Fix preprocessor directive for watchdog handling (#263)
    Source code(tar.gz)
    Source code(zip)
  • 1.0.2(May 25, 2021)

    Changelog

    • Enabling setInsecure() for ESP32 (#251)
    • Refactor OTA request handler code (#252)
    • Removing no-longer needed CRC module. (#253)
    • Disable CI compilation for Uno WiFi Rev. 2 (#254)
    • Remove claim of compatibility with megaavr architecture (#255)
    • Remove commented-out CI code for Uno WiFi Rev. 2. (#258)
    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(May 4, 2021)

  • 1.0.0(May 3, 2021)

    Changelog

    • Use latest released version for CI build for Arduino_AVRSTL and Arduino_Portenta_OTA (#229)
    • Use authenticated GH API requests in "Compile Examples" CI workflow (#230)
    • Fix typo in the ArduinoIoTCloud-Callbacks example (#231)
    • Improve reliability on connection loss (#233)
    • Adding watchdog for SAMD architecture (#235)
    • Adding preeliminary support for RP2040 Connect. (#236)
    • Enable BearSSL Offload for MKR WiFi 1010 and Nano 33 IoT (#237)
    • Modernize CI system (#238)
    • Enable watchdog for ArduinoCore-mbed based boards (#239)
    • Compile for Nano RP2040 Connect during CI build. (#240)
    • Add mbed_nano and mbed_portenta as supported architectures. (#241)
    • Feed Portenta H7 watchdog during OTA. (#242)
    • Implement exponential retry/back-off strategy to avoid router overloading. (#244)
    • Fix: Correct required nina-fw version for SSL stack offloading (#245)
    • Explain watchdog behaviour in README. (#247)
    • Increase timeout for last-value synchronisation to 30 seconds. (#248)
    • Track the number of unsuccessful request-last-values. (#249)
    Source code(tar.gz)
    Source code(zip)
  • 0.13.1(Feb 9, 2021)

  • 0.13.0(Feb 2, 2021)

  • 0.12.0(Feb 1, 2021)

    Changelog

    • Use sketch compilation CI actions from their new dedicated repositories (#207)
    • Support ESP32 patch (#211)
    • Remove api symlink deletion step from CI workflow (#213)
    • Use default branch of ArduinoCore-API in CI workflow (#214)
    • Add ESP32 board to "Compile Examples" CI workflow (#217)
    • Pin Arduino CLI version used in CI to 0.13.0 (#222)
    • Pin esp8266:esp8266 platform version to 2.5.0 in CI builds (#223)
    • New Callbacks example + Added Nano 33 IoT to boards list in examples comment (#224)
    • Offload IoT Cloud connection to Nina module (#208)
    • Revert "Pin Arduino CLI version used in CI to 0.13.0 (#226)
    • Reversion: Only use BearSSL offload for Uno WiFi Rev. 2 (#227)
    Source code(tar.gz)
    Source code(zip)
  • 0.11.3(Nov 24, 2020)

    Changelog

    • Update Portenta platform in Compile Examples CI workflow (#204)
    • Use arduino/cpp-test-action in Unit Test CI workflow (#206)
    • Fix lenght typo (#205)
    • Improve error message when wrong thing id is configured. (#210)
    Source code(tar.gz)
    Source code(zip)
  • 0.11.2(Oct 5, 2020)

    Changelog

    • Extending tooling for OTA header to incorporate magic number/version field (#197)
    • Use random NTP ports (#198)
    • Add mbed to list of supported architectures (#200)
    • Reset status flag OTA_ERR upon attempt of a new OTA download (#201)
    • Extend tooling to set OTA compression flag to stay aligned with cloud builder API (#202)
    Source code(tar.gz)
    Source code(zip)
  • 0.11.1(Aug 27, 2020)

    Changelog

    • Improving README (#189)
    • Adding example for self-provisioning (#187)
    • Removing stdin/stdout topic strings since we currently don't need those topics anymore (#190)
    • Use flash strings (F("my flash str") to conserve RAM space (#191)
    • Add hiddden property OTA_CAP for signaling OTA update capability (#192)
    • Adding FAQ section describing possible causes when the device can not subscribe to the thing id (#194)
    • Bugfix: Only set OTA_CAP when correct nina firmware version is installed and inprove warning message (#196)
    Source code(tar.gz)
    Source code(zip)
  • 0.11.0(Aug 18, 2020)

    Changes

    • Reduce public API by turning connect/disconnect into protected methods. (#113)
    • Port CI configuration from Travis CI to GitHub Actions (#115)
    • Report memory usage change caused by PRs (#116)
    • Replacing SetDeviveId with SetDeviceId (#117)
    • Firmware Over-The-Air (OTA) update capability (#118)
    • Add GitHub Actions workflow to run unit tests and check code coverage (#121)
    • Update CI status badges in readme (#122)
    • Only run Compile Examples workflow when relevant files are modified (#123)
    • Improve board-specific configuration system in compile-examples CI workflow (#124)
    • Both MqttClient and BearSSLClient are allocated on the stack instead of the heap. (#128)
    • Integrate ArduinoCloudThing with ArduinoIoTCloud (#129)
    • Replace custom SingleLinkedList with std::list (#130)
    • Run unit tests via valgrind to check for memory leaks (#131)
    • Extracting property container functionality (#132)
    • Add size trends report step to CI workflow (#133)
    • Refresh spell check CI workflow (#134)
    • Additional update policy "OnDemand" (#135)
    • Allow an optional encoding of the timestamp in the CBOR message (#137)
    • Use temporary file for storing the downloaded OTA image. (#138)
    • Deprecate old c style functions for adding properties in favour of composition (#139(
    • Default value for update policy and rate limit (#140)
    • Various minor refactor operations (#141)
    • Use the WiFi Nina module for storing the OTA image (#145)
    • Integrate ArduinoBearSSL 1.5.0 with ArduinoIoTCloud and reduce ressource requirements. (#148)
    • Removing ArduinoBearSSL dependency (#149)
    • Split ArduinoCloudThing into CBOREncoder and CBORDecoder and clean up superflous statements. (#150)
    • Drastically reduce size of cloud serial buffers (#151)
    • Fix: Handle encoded CBOR message exceeding buffer size (#152)
    • Use the SARA U-201 modem for storing OTA update image. (#153)
    • Remove property OTA_STORAGE_TYPE (#154)
    • Automatically configure OTA for MKRMEM/SFU (#155)
    • Automatically configure SSU/OTA logic for MKR GSM 1400 (#156)
    • Renaming OTAStorage_MKRMEM to OTAStorage_SFU (#157)
    • Bugfix: Changing value of property before loop prevents connection to cloud server. (#158)
    • Changing #define OTA_STORAGE_MKRMEM to OTA_STORAGE_SFU (#159)
    • Fix: Use sketch compile time if no connection is available for estimating system time. (#160)
    • Fix: Preventing dereferencing nullptr in case of missing initialisation (#161)
    • Removing obsolete identifier CloudProtocol::V2 from test code (#162)
    • Adding keywords.txt for syntax highlighting in Arduino IDE (#163)
    • Debug macros replace direct calls to Arduino_DebugUtils (#164)
    • Change github actions compile examples workflow back to use the latest release version (#165)
    • Add tool for LZSS compression/decompression and improve documentation (#166)
    • Use the latest released version of WiFiNINA for CI build (#167)
    • Support LZSS capable SSU Bootloader (#168)
    • Add support for LZSS tools on MacOS (#169)
    • This change allows to use the LZSS decompression feature of the SNU (#170)
    • Refactor OTA Storage API (#171)
    • Remove CloudSerial (#172)
    • Add verbose debug output for OTA logic (#173)
    • Calculate SHA256 over firmware image uploaded via OTA (#174)
    • OTA image delivery via HTTPS (#175)
    • Restructure connection logic (#177, #176)
    • OTA logic should be called at start of update (#178)
    • Add Portenta H7 to Arduino IoT Cloud (#179)
    • Adding Portenta H7 to list of supported (WiFi enabled) boards (#181)
    • Use ArduinoCore-samd - latest released version for CI (#182)
    • Add Portenta boards to Compile Examples CI workflow (#183)
    • Disable warnings when compiling test code -Werror and GCC 9.3.0 (#185)
    • Add alias names for various server side used "property types" (#186)
    • Produce warning when running with nina-fw version < 1.4.1 (required for OTA) (#188)
    Source code(tar.gz)
    Source code(zip)
  • 0.10.0(Apr 8, 2020)

    Since over the course of the ArduinoIoTCloud development a lot of clutter has gathered which makes it more difficult to use the existing code base to add something new on top (increasing technical debt). This release contains contains a large clean-up of the whole code base which allows to easily build on top of it.

    Source code(tar.gz)
    Source code(zip)
  • 0.9.3(Mar 17, 2020)

    • Removal of call to function init within ArduinoIoTCloudLPWAN::begin since init is implemented empty within the LoRa connection handler (48e8a1ed3c093e04c3ac3ff9546c6ccb3bfcdaf0)
    • Further cleaning up and refactoring.
    Source code(tar.gz)
    Source code(zip)
  • 0.9.2(Mar 3, 2020)

    • Removing unused parameter Client & of ArduinoIoTCloud::reconnect()
    • Register a function for retrieving a global timestamp with ArduinoCloudThing (necessary to break hidden dependency to RTCZero - see here).
    • Bugfix: The TCP load balancer of the Arduino IoT Cloud terminates a TCP connnection after 350 seconds. Unfortunately this termination is only detected after transmitting the next data set to the Arduino IoT Cloud. This has the unfortunate side effect that the data set sent to the cloud is lost. This change buffers every transmission to the server and requests a retransmission in case of loosing the connection. Note: This can only happen if the keep-alive interval is set to a value > 350 seconds.
    Source code(tar.gz)
    Source code(zip)
  • 0.9.1(Feb 25, 2020)

    • Removal of update previously marked as deprecated
    • Removal of unused struct mqttConnectionOptions
    • Refactoring of time provisioning code within a single class TimeService
    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(Jan 28, 2020)

  • 0.8.2(Dec 31, 2019)

Owner
Arduino Libraries
This org contains the official Arduino Libraries. See @arduino for the tools (IDE, Pro IDE, CLI...)
Arduino Libraries
AlmaviosLitMqtt allows an easy connection(IoT) to cloud providers

AlmaviosLitMqtt A simple arduino library provisioning a client to connect with Cloud Providers, via MQTT. It is looking for agnostic connection. This

Almavios 1 Nov 20, 2020
WiFi connectivity module for SAM Element.

ACS-M1128 SAM Element IoT WiFi Connectivity SAM Element is an IoT platform. Visit our website to get to know more. Quick Links & Requirements Knowledg

SAM Element 1 Mar 13, 2020
Arduino library to connect your project to IRC (Internet Relay Chat)

IRC Client Library for Arduino Connects your arduino project to an IRC server. Features Easy connection to an IRC server through a Client implementati

Fredi Machado 32 Aug 19, 2022
Arduino TopLevel Client for aliyun IoT Platform

运行于 arduino 的 阿里云 IoT 接入 SDK,在底层连接的基础上增加数据回调绑定、发送数据和事件等 api 的封装,免去自己解析数据的痛苦

芋头 119 Dec 13, 2022
Arduino Cloud Thing Middleware

Arduino Cloud Thing Middleware Attention: with the release of ArduinoIoTCloud:v0.11.0 ArduinoCloudThing has been fully integrated into ArduinoIoTCloud

Arduino Libraries 8 Mar 22, 2022
A library to simplify the process of getting and storing data to Antares IoT Platform through HTTP on ESP8266.

Antares ESP8266 HTTP This is the documentation for Antares ESP8266 library. This library is meant to simplify the process of retrieving and deploying

null 6 Jul 2, 2021
A library to simplify the process of subscribing and publishing data to Antares IoT Platform through MQTT on ESP8266.

Antares ESP8266 MQTT A Library to simplify the process of MQTT publication and subscription to Antares IoT Platform using ESP8266. This library works

null 6 Mar 9, 2022
Arduino Arduino library for the CloudStorage server project. The library provides easy access to server-stored values and operations.

Arduino-CloudStorage Arduino/ESP8266 library that allows you to easly store and retreive data from a remote (cloud) storage in a key/value fashion. Cl

Gil Maimon 7 Jan 30, 2022
Arduino library for making an IHC in or output module using an Arduino

Introduction This is an Arduino library for making an IHC in or output module using an Arduino. (IHC controller is a home automation controller made b

Jens Østergaard Nielsen 2 Mar 26, 2020
The Approximate Library is a WiFi Arduino library for building proximate interactions between your Internet of Things and the ESP8266 or ESP32

The Approximate Library The Approximate library is a WiFi Arduino Library for building proximate interactions between your Internet of Things and the

David Chatting 102 Dec 7, 2022
Arduino library for controlling the MCP2515 in order to receive/transmit CAN frames.

107-Arduino-MCP2515 Arduino library for controlling the MCP2515 in order to receive/transmit CAN frames. This library is prepared to interface easily

107-Systems 51 Nov 16, 2022
Arduino library for interfacing with any GPS, GLONASS, Galileo or GNSS module and interpreting its NMEA messages.

107-Arduino-NMEA-Parser Arduino library for interfacing with any GPS, GLONASS, Galileo or GNSS module and interpreting its NMEA messages. This library

107-Systems 15 Jan 1, 2023
Arduino library for providing a convenient C++ interface for accessing UAVCAN.

107-Arduino-UAVCAN Arduino library for providing a convenient C++ interface for accessing UAVCAN (v1.0-beta) utilizing libcanard. This library works f

107-Systems 54 Jan 2, 2023
Arduino web server library.

aWOT Arduino web server library. Documentation 1. Getting started Hello World Basic routing Application generator Serving static files 2. Guide Routin

Lasse Lukkari 246 Jan 4, 2023
Arduino, esp32 and esp8266 library for ABB (ex PowerOne) Aurora Inverter, implement a full methods to retrieve data from the Inverter via RS-485

ABB Aurora protocol You can refer the complete documentation on my site ABB Aurora PV inverter library for Arduino, esp8266 and esp32 I create this li

Renzo Mischianti 22 Nov 22, 2022
Arduino library for the MCP2515 CAN Controller

MCP2515 CAN Controller Library for Arduino Compatibility with the ACAN library This library is fully compatible with the Teensy 3.x ACAN library https

Pierre Molinaro 4 Dec 18, 2022
CAN / CANFD Arduino Library for Teensy 4.0

CAN Library for Teensy 4.0 / 4.1 It handles Controller Area Network (CAN) for CAN1, CAN2 and CAN3, and Controller Area Network with Flexible Data (CAN

Pierre Molinaro 12 Dec 9, 2022
Analog Devices Analog Digital Converter AD7173 Arduino library

AD7173-Arduino Analog Devices AD7173 analog digital converter Arduino library Mostly tested setup for this library: 1007 data rate external crystal co

brain-duino 8 Nov 20, 2022
Arduino library for nRF51822-based Adafruit Bluefruit LE modules

This library is for all nRF51 based Adafruit Bluefruit LE modules that use SPI or UART. Current nRF51 based Bluefruit LE products include: Bluefruit L

Adafruit Industries 184 Nov 6, 2022