I'm in the process of building a weather station consisting of various indoor and outdoor weather sensors that are connected to an Arduino, to read basic things like temperature (DS18B20), humidity (DHT22) and pressure (BMP180). I might add other sensors later for rain, wind, etc. All sensors are currently connected by wire, and are within several feet of the Arduino.
Eventually I might add an additional indoor sensor station in another room, that will be remotely connected to the Arduino, probably by an nRF24L01+ board--I bought two online but have yet to play with them. But it probably won't get much fancier than that.
Right now I view the most important sensor readings on a 16x2 LCD connected via an I2C backpack, to save on Arduino pins and make things simpler in terms of wiring. I also sometimes view them via a Serial window, which allows me to view all of these sensors' readings, which isn't possible on a 16x2 LCD without paging screens, and I don't want to do that.
I also have an SD shield in the mix, to record all the sensor readings at regular intervals and transfer them to my PC eventually, to be saved either in Excel or a DB.
So far so good, and after much tinkering and teaching myself Arduino, electronics and the specifics of how these sensors work and communicate their readings, and re-leaning how to program in C/C++, I'm fairly satisfied with what I've built.
However, at this point I'd like to add the ability to upload the readings to the internet, to automate getting the data off the Arduino and be able to access it remotely, and to eventually share these readings with others. I first thought about developing a way to simply transfer the data to my PC, via Serial, and then upload the data from it to the internet, but the problem there is that my PC is often in Standby mode, and I want the data to be available continuously, in real time.
So I really do need to be able to connect the Arduino directly to the internet and bypass my PC.
Realizing that, I went and ordered a ESP8266-based breakout board the other day, and should be getting it within a few weeks (yeah, China by way of eBay). In the meantime, I'm trying to learn how to use it. I think I've got a basic handle on how to connect and interface it with the Arduino, in terms of pin connections, level conversion, voltage and current draw, libraries, etc. I'm very new to internet programming so I probably need to learn about TCP sockets, IP protocols, and so on. But I have a programming background so I think I can figure that out.
What I'm really not sure about is "where" I actually upload my data, and how. I'm not looking to turn the Arduino into a rudimentary web server that I can access via a browser. What I want to do is continuously upload the data somewhere "online" where it will be saved indefinitely and securely and be accessible by myself and possibly others whenever and wherever, fairly easily via standard internet programming, that is NOT a web server running on my PC, which it's quite capable of running I'm sure, precisely because it will often be on Standby.
I'm sure that there's a VAST variety of options there, but what are some basic, simple, reliable and most of all FREE ones? I've read about a site called Xively, but it looks too commercial for my needs. I basically just need an online or "cloud"-based place to store a very modest amount of data, that I can both upload data to, and read data from. For all I know Dropbox or Google drive will do the job, but I don't know enough about either to know.
What about WeatherUnderground? I understand that if approved you can upload your weather data to it, and your weather station is accessible worldwide. But can I then programmatically access that data to download it to my PC? Also, I'm looking for a more generic, context-free place to upload my data to, in case I someday want to upload, store and access non-weather data, such as GPS readings, workout info, etc.
I guess I'm basically asking how the "cloud" works on a programmatic and not just end-user basis, from an Arduino/WiFi perspective. I.e. an online "site" where you can store and access data remotely for whatever use, be it to serve data to a web site or phone app, or whatever.
Also, in what "logical" format should my data be stored, to make it fairly universal? Is XML the way to go, perhaps with a weather-specific variation?