My team is using SunSPOTs as wireless real-time or store-and-forward data collectors for scientific experiments in high school and college classrooms. The project is funded by an NSF grant and is being worked on at a university in Massachusetts. It is educational and non-profit in nature. The goal is to collect, store, view, and visualize data collected from many different types of devices (including SunSPOTs) in real-time... all from within a web browser. We have a Java XML-RPC web service paired with a MySQL databse that handles all the back end work. To actually collect the data, we are using a Java applet (necessary for talking to the actual hardware devices from inside the browser).
We have used the SPOTs to transmit real-time sensor data from the on-board sensors as well as analog and digital inputs. For example, we have attached a GPS unit to the analog pins, which records the data and transmits it back to the host machine when it's in range. Then we do a Google Maps visualization of the GPS coordinates along with the sensor data that was collected at each point.
SunSPOTs are the only wireless sensor platforms we are working with right now, although we are strongly considering integrating cell phones with Bluetooth-capable sensors. We would like to use Android phones because they are really open in that way. Imagine connecting a temperature sensor to a Bluetooth transmitter, which streams temperature readings to your cell phone, which transmits the readings over a cell or wifi network to a central data store. The possibilities really are endless for that type of thing.
Now for the bad news. We have had our share of frustrations with SunSPOTs, mostly involving the SDK. The SDK is always changing, and it is poorly documented in many areas. Many libraries are marked as experimental or dangerous. Many times the documentation says not to use a particular library for a particular purpose, but it doesn't suggest an alternative. Even simple things like storing data on the device are really quite difficult. There is an easy way to store things, but sometimes it can malfunction and corrupt the device or data. There is a more difficult way that is safer, but less flexible. Radio communication is also overly complex. There's a simple way to do it, but it is marked as "test purposes only" and "don't use this for important information". One of the main features of the device is the ability to do wireless communication. At least make it straightforward and stable. There are lots of little things like that about the SunSPOTs--missed opportunities.
Another frustration involves portability. It is really difficult to make a program that someone can use to plug in a SunSPOT and read data off of it. Just trying to make sense of the dozens (yes, dozens) of Ant scripts involved in a seemingly simple task such as building a MIDlet and deploying it to an attached SPOT can take a long time. It would be nice to give someone a SPOT and ask them to collect data for a weekend and upload it to our website from home. Outside of having them download and install the entire SunSPOT SDK, there's no easy way to do that.
Despite the downsides, the SunSPOTs are probably the best wireless sensor and control platforms out there. The Java API, though lacking in some key areas, is still easier to understand and use than most (all?) other similar platforms.