Cloud services

I'm using arduino with an ESP8266 for a variety of projects, currently through the Cayenne IoT cloud service. Some concerns I have however:

Data uploaded is saved is saved in the server but there is no way to retrieve that to the arduino - This creates a limitation if the device is unreachable due to a power or network outage. Some examples that apply after a power outage
a) was the light on or off?
b) when running a count down timer, how to re-load the last value that was sent to the server?
c) inability to control the device (if this was saved on the server, the command would be retrieved on next connection, otherwise control is lost if the device is not online)

Are there any recommendations for better IoT platforms?

Maybe host your own platform. I currently use a raspberry pi zero W at home loaded with Node-Red and Mosquito to read various sensors around the home and display them on a dashboard. I also push the data to Cayenne, ubidots and dweet.io so I can access the data while not at home.
I'm in the process of configuring an RPi 3B+ to replace the RPi Zero as I want to add InfluxDb, Chronograph & Telegraph for better visuals and data managment to Node-Red & Mosquito and the more powerful processor will help. I may also add a nginx server to serve the data (over VPN) so I no longer need Cayenne.