I have been very frustrated with Arduino IOT experience. After working with the service for nearly 3 months and evening having moved to an annual paid plan I have been left with nothing but a bitter taste in my mouth regarding my whole experience with this platform. Perhaps it's because I'm using an ESP32 module and not an MKR1010 board....but it sees Arduino is unable to produce these boards since they have been out of stock for months unless you buy the bundle package with a bunch of useless crap.
I have used a lot of questiably stable programs in the past and this has to be by far the worst one I've come across in terms of stability and reliability. Everything about the IOT service just feels poorly done and I feel like most of that revolves around the web based code editor and whatever type of operating system it's using when it loads onto a board....that's assuming you can actually get the create agent to work properly and it even attempts to load the program, probably half the time it simply errors out with either "Failed To Fetch File" or fails to set the proper baud rate for uploading with.
I have verified both my hardware and program are 100% stable when used offline via the desktop IDE. I have had an offline version running for more than 60 days without a single error but as soon as I move my project to the IOT editor it becomes extremely unreliable. The IOT aspect should NEVER interfere with the programs primary operation, the fact it does means someone really dropped the ball on the way it was created in the first place. Again, this may be hardware related but after having used boards from Sparkfun, Adafruit and several other companies it seems pretty unlikely since they all work fine until they are used with the IOT editor.
To say I am disappointed in everyone involved with the creation and development of the Arduino IOT cloud is an understatement. Unless some serious changes are made to the IOT format this is going to end up tarnishing the Arduino name and will simply push programmer's to use other platform's that are actually reliable.
There is currently an global shortage of electronics components. However, I just checked and they are in stock (with significant quantities available in cases where it is shown) in both branches of the Arduino Store, Amazon, and all the global distributors. I didn't take the time to check local distributors, but extrapolating on my findings I'd guess many of them have stock also:
What do you mean by "move my project to the IOT editor"? Does it involve making changes to your code?
Same question: are you running the exact same sketch when they are in the "work fine" state as when they are used with the IOT editor?
Assuming the versions of dependencies installed are the same, a program should work exactly the same when compiled and uploaded via the desktop Arduino IDE as it does when compiles and uploaded using the Arduino IoT Cloud editor or Arduino Web Editor.
It is possible that there could be some differences in success rate of uploads since, even though the uploader tool is identical, the Arduino development software does have a role in the upload process for certain boards (as well as controlling the handover of the serial port from Serial Monitor to the upload process and back again) and so it is possible there are some differences in how that is managed by Arduino Create Agent vs Arduino IDE. But that is only about uploads. The production of the binary is the same, so once you get a successful upload there should be no difference which Arduino software was used to compile it.
Assuming the versions of dependencies installed are the same, a program should work exactly the same when compiled and uploaded via the desktop Arduino IDE as it does when compiles and uploaded using the Arduino IoT Cloud editor
It does not, on multiple occasions I have witnessed variables that failed to change(being indicated by digital pin state changes) when the specified criteria was met when using the IOT cloud editor. It does not matter if web variables are involved or not. For asoulty no reason the RTOS the cloud platform is using stop running functions when they are called. At one point I had nearly 3 weeks of uptime of flawless operation and with out anything being touched/altered or changed the IOT version simply stopped processing a function call. Power cycling the board resolved the issue for several hours before it started acting up again. After another power cycle it ran for nearly a week before acting up again. There were zero changes made other then turning the power off and then back on in each case. When compared with the desktop version I've gone more than 3 months without a single issue.
The call in the main loop for ArduinoCloud.update(); appears to also be a blocking function or will at least become a blocking function when trying to update web values and they do not update correctly. Create a simple program in the IOT cloud that runs a loop on a timer every 1 second and increase the value of a number every time the counter fires. Then have it toggle an LED every 60 counts and increase a counter in the web app by 1. It will take much longer then 60 seconds between state changes for your LED.
If an web update fails to update a value it will also cause the entire loop to hang and in a number of cases appears to trigger some kind of watchdog reset but its not a full reset and does not invoke the setup routine when it resets.
Also, the editor itself is a bit of a joke and lacks basic functionality such as "Auto Format" and its "Find" feature is pretty pathetic. The Arduino Create Agent is also extremely buggy. It will randomly close for no reason, after having experienced this behavior on 3 separate PC's I gave up trying to troubleshoot its issues. Its clear that it's just very poorly written. Furthermore, the huge banners that are triggered when the agent is started or closes on its own in the IOT IDE are beyond annoying and make it even harder to deal with the create agent being unstable since the banners block the upload button.
The Arduino desktop IDE is rock solid for one simple reason, it's only running the raw code and not some gimmicky RTOS. The Cloud IDE is clearly using some type of RTOS as shown by the program size it uploads and its likely the source of all the issues I've encountered.
As far as the MKR boards, it had been about 2 or maybe 3 weeks since I last looked for them. I've just ordered one with overnight shipping as a last hope before I write off my entire experience with the IOT cloud as a massive waste of time. My project is extremely simple...however what its controlling is extremely dangerous and there is zero room for any kind of hiccups. I would have assumed that anything released by Arduino would have been stable and thought this would have saved me a considerable amount of time......I'm thinking I would have been better off at this point if I had just made my own SQL server and written my own android app to view and control my board with.
Arduino Web Editor (AKA "full editor") does have auto format capability. Trigger it via the Ctrl+B keyboard shortcut. It looks like the Arduino IoT Cloud editor does not have it though. I think the decision to make the Arduino IoT Cloud editor as minimal as possible was a reasonable one, but this particular feature doesn't add any noticeable complexity so I don't see that omitting it is beneficial in any way.
Anyway, for anyone but beginners, I would recommend using Arduino Web Editor for your cloud-based sketch development needs instead of the Arduino IoT Cloud editor.
And of course you are welcome to use the desktop IDE if you don't need a cloud editor. Arduino IoT Cloud is useful for generating your Thing sketch template, and of course for creating the dashboard, but after that you can just as easily use the desktop IDE for all further development and uploading of your Thing sketch. The beta stage Arduino IDE 2.x even has a "Remote Sketchbook" capability that provides access to all the sketches you have on the cloud from the IDE.
This statement doesn't makes sense to me. Neither one knows anything about an RTOS. They are only development tools. Any RTOS is in the sketch program you upload (likely in the core or a library), and would be used regardless of whether you compiled the sketch using the desktop IDE or one of the cloud tools.
It comes back again to the question I asked in my previous reply, which you didn't answer.
The MKR WiFi 1010 is a nice board. I think you'll be glad to own one even if you decide Arduino IoT Cloud isn't for you.
Since you are already experienced with ESP32, you might like that it uses an ESP32 as its WiFi radio. The difference is that your sketch is running on a separate ATSAMD21G18 microcontroller. Even though most users will stick to Arduino's standard "NINA" firmware for the ESP32, it is possible to upload your own custom firmware to the ESP32, which you can write as an Arduino sketch just as you would when using a standalone ESP32 board.
If you are using the ESP32 with Espressif's core, then FreeRTOS is automatically bound into the binary: Core_0 is dedicated RF/Radio and Core_1 is Arduino-centric; by default.
I'm thinking I would have been better off at this point if I had just made my own SQL server and written my own android app to view and control my board with.
I have had great success working with Arduino and hosting the graphics, data, and web-server on a Raspberry Pi 4 running NodeRED. Creates a flexible and powerful dashboard with a full webserver backend. A hole in your firewall will get you Internet access; just remember to secure everything properly and decide how to deal with those changeable TCP/IP home addresses! Or, script your NodeRED data to upload to the Arduino IoT cloud.
Interesting project, the Node-RED-Dashboard looks a lot nicer that what the Arduino dash provides.
If I was to create my own server, it would be done on an actual web server using php and mysql. I had looked into this as an option initially but it really didn't seem like it was going to be worth the effort to do it when I only need to display 4 values and have 2 remote switches as manual overrides. It was mostly due to needing to create an Android app for a UI that I really didn't feel like messing with.
As for the ESP32, I'm not a fan of them. I've just never liked using one for anything more than a pass though gateway because of how the cores interact. This would likely explain why the millis timing works fine with using it with the desktop IDE and gets thrown all out of whack when its being used with the Arduino cloud.
in0 It comes back again to the question I asked in my previous reply, which you didn't answer.
Unless you know something that I don't and was never able to find any information on, cloud sketches don't compile in the desktop IDE even if you add the IOT library. Maybe they do for MKR boards but I've come across several posts with people using the ESP32 where they were not able to compile the IOT sketches with the desktop IDE. So no, the sketches are not identical. What I've run from the desktop IDE is functionally the same minus anything that has to do with the IOT stuff.
They do. If you'd like help with using the desktop IDE for your Arduino IoT Cloud sketches, please post the error message you are getting and we'll help you out.
That difference in the sketches is the cause of the different behavior you are observing, not the different Arduino development tools you are using to compile them.
I gotta say I'm with you PeteS. I've just about had it with Arduino IOT as well. I'm not gonna bother listing all my complaints but just wanted to give you some support. I've got a 1010 coming soon and if I have any grief with it like I've had with the 1000 and the Nano33 I'm just gonna walk away from Arduino IOT. I apologize for being just a hater, but I read this post and I suddenly felt like I wasn't alone in my frustration. Over the years I've never had any issues with an Uno or Mega or even a Micro. Nothing compared to any of the MKRs or the Nano 33 I have. I know its unfair to bash on Arduino like this but I just had a 1000 crap out on me today after it had been working just fine in my project for months now. So I'm just unloading... grrr.
Have you made any progress on the various problems discussed in this thread? I'm having very similar issues. I have been blaming myself, but it is rapidly becoming very hard not to conclude that my reliability problems are not primarily with the platform.
I'll post code if this discussion gets detailed, but to start I'll just explain why I'm coming to a very similar conclusion as Pete and Steve:
I've added an oled to my project so I can watch for updates to the web variables. Sometimes, but only for a few hours at best if I'm lucky, the web variables update in the 'thing' summary and dashboard (and the dashboard displayed via the iOS app) like clockwork. But as often as not, they go through periods of failing to update when they change locally (as monitored on the oled). I've verified that, during periods when they are failing to update, that the device is (a) showing as connected on the web platform and (b) that it is showing up as connected on my home router.
Has any kind of resolution been found for these behavioiurs? Do my descriptions of the issues suggest any specific troubleshooting?
Hej PeteS, I'm with you as well. I'm trying to get the cloud and dashboard working with genuine boards like nano 33 IoT and MKR1010, but it's still looks impossible. When I upload the same code through Arduino IDE it works great, no issues, but the when I try to same through the editor in cloud it just goes sh%t, and the board start to connect and disconnect from the computer. I have tried on different platforms, win11, chromebook, same result. Definetly something is terribly wrong with IoT Cloud and the editor, just have no clue what. I have sent my problem in to Arduino support, they are looking into it.
No resolution, but without having gotten any feedback on whether they were bugs or what to troubleshoot on my end, I gave up. I've found a couple of other free IoT platforms to be inconsistent at best, but have had good luck with Blynk's free account.
I’m also having issues with IoT Cloud Thing. I have an hour meter that works perfectly with an LCD display, but I thought it would be a good app to get my feet wet with IoT. I purchased a Nano rp2040 connect, and created a thing template with the variables I needed. I downloaded it, to continue development on my MacBook, since compile and program times were too slow from the web. I ported my hour meter specific code into the thing, and It worked perfectly for 10-20mins, then reset for some reason. I started down the path of thinking my code was the problem, but after stripping everything out of the loop with the exception of
ArduinoCloud.update();
and
IMU.readAcceleration(Ax, Ay, Az);
The app still reset occasionally.
If I comment the cloud update out of the fully functional loop, it never crashes.
Then I started down the path of looking for a watchdog issue in the update function. I discovered I could disable the watchdog, and tried that, but I would still get the random reset.
I’ve ordered another Nano rp2040, but if it crashes, I’ll pack it in.
My suspicion at this stage of the game is there’s some interaction between the IMU and the Ethernet chip that’s causing the problem.
I'm going to start from with a minimal Thing and gradually work my way up to the full app to see where it goes sideways.
I created a new thing last night with one read only variable tracking the number of minutes running. I just checked, and with a 20ms wait in the loop, it's been running for 400 minutes without issue.
Next I'll add the IMU back in and only read X, Y and Z. If/when I run into problems, I'll post the before and after code.
Reading the IMU caused a reset 40s after the app started, and again 40minutes later. I'm going to create a new topic documenting my code and test methodology. I'll add a link here once I post it.
Well, here we are a year later and none of this has been fixed yet and if anything its even worse now then it was last year.
I PAYED for an Arduino that was advertised as supporting over the air programming and it clearly doesn't work.....FIX IT ! ! ! !
I'm also paying for the premium IOT cloud service and now even that has turned into a bigger steaming pile of crap then it was last year as well.
WTF am I paying for!?!?!
Someone on the Arduino team needs to get off their lazy ass and fix these issues. As a customer that PAID for both a product and a service I am ENTITLED to what I have payed for and expect it to work as advertised.
I could recompile stuff on local computer and using IoT lib.
I simply copied sketch and other tab out of cloud editior, to have that variable skelet and callback template, and installed missing dependencies.
I do not know why using this cloud compile (25 a day) when its done faster locally and I have control over lib versions and have local connection for upload. What are the benefits you expect from this cloud compile?
I use esp8266 modul and it seems running stable now for 3 days.
So this part works for me. I could assist to setting up local compile if you need help.
The app for android on other side, is buggy and things are missing and i didnt find the source code to solve the issues.