Version 1.0.4-26

Which IOT cloud platform should my students use with the powerful Arduino PortentaH7!

So I researched very quickly 90 IOT Cloud platforms. And looked deeper into about 15 platforms.

And the winner is: Adafruit.io

Here is an image of my criteria for my students:

Why Adafruit?

Steps for students to use Adafruit.io


  1. Signup/Login to the Adafruit.io website.Click "IO" --> Click "MY-KEY" --> Copy your Username and your Active Key
  2. Then load this page to send/receive data from a static MQTT-Websocket ada-websocket02.html IT WORKS GREAT!
  3. Now try an MQTT app for Android like iotmqttpanel or for any laptop Node-Red or for Windows try MQTT-explorer
    Reminder to use "feeds" and not "feed" /{username}/feeds/{name-of-feed}
    If you find these confusing then just move on
  4. Send data from a static webpage over HTTP
      The following needs your webhook key. That's it.
    1. Easiest way to send data to io.adafruit.com; Just use a normal HTML form. Copy following into a file with a .html extension

    2. ada-write-to-feed01.html Send raw data to Adafruit using vanilla Javascript async await fetch. WORKS GREAT
    3. ada-write-to-feed02.html Send formatted value=4 data to Adafruit using vanilla Javascript async await fetch. WORKS GREAT
    4. ada-write-to-feed03.html Send JSON formatted {"value":"4"} data to Adafruit using vanilla Javascript async await fetch. WORKS GREAT
  5. Read data from a webpage over HTTP Draft: ada-read-feed02.html WORKS GREAT

    Now the important Arduino Connections


  6. Send data from an Arduino PortentaH7 with WiFi using form style HTTP POST action arduino-portenta-post01.ino
    Code here as well

  7. Send data from an Arduino PortentaH7 using MQTT over WiFi arduino-portenta-mqtt-client01.ino
    Code here as well



  8. Send data from an Arduino PortentaH7 using HTTP POST over Ethernet arduino-ethernet-insecure-adafruit-post.ino Since this is insecure I suggest not using it

  9. Send data from an Arduino PortentaH7 using MQTT over Ethernet arduino-mqtt-ethernet-insequre.ino Since this is insecure I suggest not using it

  10. Try an Adafruit MQTT integration with the Helium console (advanced: need a LoRaWan board like the Portenta LoRa Vision Shield) Get 10,000 Data Credits for signing up. WORKS GREAT
  11. Try an Adafruit HTTP integration with the Helium console (advanced:see above). I still need to test this.







Second place is: HiveMQ

For giving up to 100 free devices and supporting Websocket-MQTT and for the potential connections with small devices

Third place is: Arduino Cloud

For making things easy

Honourable Mention to:



Ubidots.com

Tago.io

Qubitro:

Thingsboard:

Datacake.co

PipeDream.com

Scaleway.com iot-hub:
Note: Most of these sites are fine, they just need a User Experienc Expert to make them faster to setup and easier to use.

The Old Index, before Adafruit won!

And here are links to the very important static webpages that can communicate with a few IOT cloud platforms
Webhooks are important for small WiFi capable devices to send data, receive an update would be a nice bonus
ubidots05.html or ubidots06.html or adafruit01.html or ada02.html Webhook static webpage using http or https that works with Ubidots and can send-only to Adafruit and probably many other integrations. Note: I think Ubidots may have tightened up some security because I can't seem to get it working again!

Websockets are important to be able to display data live on a webpage also a bonus if they can send data
hive05.html This SSL websocket static webpage can communicate with both mosquitto and HiveMQ and probably many more

Note: For HiveMQ more data needs to be entered: username, password, clientID

Why are static webpages important! NodeJS, PHP etc web servers are very powerful but confusing for my students. Gitpod is amazing for development of complex web servers and it ties well with Github but does not stay active for very long, Heroku Cloud is also amazing and works well with Github but is also fairly complex for High School students.

Many IOT cloud sites brag about their "Dashboard" and how easy it is to setup
I like and dislike "dashboards" they are great to get things started, but eventually I will start to need the page view to be slightly different. Over the last 46 years of coding this situation has happened repeatedly where company programmers try to make things easier but actually just cripple your ability to do what you want.

An example would be a machine learning program that works from your browser and updates an MQTT site every minute with summarized data. I could easily (might take a year LOL) make that however with Dashboards I would need my machine learning program on one webpage and the dashboard openned on another webpage. For many people that would be fine, for me that would be very frustrating.

IOT cloud sites that are good but not yet great in my opinion!


Arduino Cloud:
Great, easy to use, dashboard simple to understand
and has NONE of my criteria in the image above! No free integrations, I have found no examples of easy to use MQTT, HTTPS, Websocket-MQTT. Even things like LoRaWan integrations with the Portenta LoRa Vision Shield do not seem as easy to setup as they should be. I love Arduino hardware and software, but the Arduino cloud is not yet ready for everything I need, other than a quick student introduction to setting up a cloud variable and changing it.

Adafruit:
Free to use, great, easy to use MQTT connectivity also supports CayenneLPP simplification of the JSON data, Dashboard easy to work with, works great with the Helium LoRaWan network and the Helium Console. Https webhooks works to update data.
https Webhooks do not work to read data. Have not found websocket-MQTT

TagioIO or Ubidots or ThingSpeak:
Free to use. Great HTTPS connectivity, my above webpage demonstrates Ubidots connectivity with https webhooks using a static webpage.
I have not found websockets-MQTT and have not tested arduino MQTT

HiveMQ:
Free to use: Great WebSocket connectivity as seen by my static webpage above. Fast easy to use and easy to understand. Lots of free use.
Issues connecting websockets with Helium. I have not found out how to do https webhooks I have not yet tested MQTT with Arduino

Scaleway iot-hub: Was recommended to me but needs a Credit card

Qubitro: Still testing, some positives some negatives

Thingsboard: Powerful, not sure if the cloud side is free.

A few resources I like

  • hive mqtt
  • adafruit
  • Ubidots

    A few things I have done

    Youtube video going through each of the IOT platforms I have found not really finding much


    EdgeImpulse forum talking about the IOT cloud issue here

    The base github for this static webpage has a README.md file with lots of Cloud IOT site links for twitter and webpages here

    The old research index-old.html page is here with lots of not working examples

    Opinions are my own. Use at your own risk: By Jeremy Ellis Twitter @rocksetta
  • ...
  • ...
  • ...