With this blog post Iwould like to wrap up my Google Summer of Code work for 52°North. And since pictures say more than a thousand words, I prepared a video about my project “GIS link to the Web of Things“.
The video aims at introducing the Arduino SenseBox’s various features. The final version fulfills the pre-development objective of the “GIS link to the Web of Things”. “Things” refer to the Local Sensor Module of Arduino which is bridged to standard GIS software, such as Google Earth and the ESRI JavaScript API-based clients. In layman language, the SenseBox stores sensor measurements and other information locally and provides it to client software via the Geoservices REST API in JSON or KML encoding.
Features
The SenseBox features can be divided into three functional parts:
- AutoUpdate functionality
- JSON response format
- KML response
The AutoUpdate functionality periodically stores the sensor’s readings, data, time, and geographical coordinates in a log file at a specific location on a memory card. This requires a working GPS receiver attached to the Arduino. If there is no GPS reception, the automatic update does not take place while the search for a GPS signal continues. The update interval can be set by the user. Each line of the log file looks like the one below:
D2005-08-07,U1123372800000,T21:23:00,N6,M37,S31,L63.76547,29.72474,1;
The format here is D<Date>,U<UnixTime>,T<Time>,N<Serial ID>,M<Sensor1 reading>,S<Sensor2reading>,L<coordinates>
Before we elaborate on the JSON response format, we need to mention the ESRI JavaScript (JS) API. The best part is that it completely follows a RESTful interface. This is suitable for our purposes since it is a fairly lightweight communication protocol. A JavaScript client was programmed which runs above the JS API and sends the request to the Feature Server (in our case it is the Arduino SenseBox). Upon receiving such requests, the SenseBox retrieves the information stored through AutoUpdate on an SD card, compiles them into a JSON structure and sends it back to the client. The JavaScript client then decodes the information and displays it. Not all the information present on the SenseBox, only the requested part, is sent at once.
The KML response is very similar to the JSON response except for the fact that it is delivered to an Earth Browser client, such as Google Earth. In addition, the data stored on the SD card is retrieved and encoded in KML format instead of JSON format before it is sent to the client.
The SenseBox, the name of the Arduino device programmed, stores the sensor’s measurement (on-board) and other information required to truly assess its state on an SD card. When a GIS software client wants that data, it is sent to it in a JSON or KML encoding.
On a personal note, it was a largely helpful experience working in close association with a highly professional organization like 52°North. I got a new eye on how to efficiently and boldly carry out tasks in general, not just coding tasks.
Leave a Reply