Spinkled liberally around the island are sensors that keep track of what is going on. These help us to see what areas are popular and what needs to be redeveloped.
How does it work?
There are sensor scripts in some of the features around the island, these sweep periodically and record the position of any avatars nearby (in a very similar way to a radar). When the sensors have saved up lots of data they send it to a database hosted in the real world. All sorts of crazy statistics are then done and a summary page give an overview of activity on the island. The main page with all the data on it is hosted in the physics department at the OU.
Where are the sensors?
The sensors are strewn around the island (physics.open.ac.uk/~obutters/sl/schomepark/sensor_status.php). They all scan once every five minutes (at the same time), so it is possible that you are online for 4:59 and then log off and it will miss you, equally so you could log on and be sensed in one second.
The data gathering process means that a senor could record you going past and save the data, it will not send the data to the data base until the sensor is completely full however. This means that if you are in an area that is not very popular then it will not show up in the data base for a while (up to 24 hours).
The sensors only have a range of 96m (thanks LL), and they can only sense upto 16 things (thanks again LL), so we have to go down the route of many of them all over the place. This is limited by the throttling of llHttpRequest (once again thank you LL) to 20 requests per 100 seconds, across all objects owned by the same owner in the same sim, i.e. the most sensors that one island can safely have is 20.
Explanation of features on web page
The date range is the range of data fetched from the data base, there are three options (last 24 hours, last week, ever), all of the plottings on the page will adjust themselves to this date range.
The sensor status pages shows where the sensors are and what their properties are, e.g. how big their scanning radius is.
The heat map shows the popular areas of the island. This is split into two levels, ground level and above 100m. 100m was chosen as this is the height that we allow the residents to build above.
The data on the left hand side is a small selection of interesting stuff; unique visitors shows how many unique visitors have been there; the most frequent visitor is the one who has the most number of entries in the data base (usually trixxiee); the total combined time spent online asumes that each time someone is entered in the data base they can be assumed to be online for five minutes; the most popular place is based upon which sensor picks you up (they are all named).
The list of 'who' shows when the last time people were online. Clicking a link will display data about just that avatar.
The bottom left graph shows the number of entries in the data base with a one hour resolution. This plot is similar to cumulative time spent in world by everyone in that hour.
The data is saved in a MySql database. For privacy reasons we cannot give out the raw data, so you will have to make do with the summay page.
The source code
We are musing making all the code here open source, so anyone can put a similar monitoring system on their island. Just need to tidy it all up a bit first....
Double check to see if 16 results overloads the list. - It does, make an array that can handle 16 results.
Don't preferentially insert based upon who inserted first, maybe make it random?
Maybe make a summary page that generates once every 24 hours then query that instead of whole table. See how load on DB fairs.
Sensors don't delete themselves from the dabe when they are deleted in SL, maybe make them delete if they don't appear for a few days?
Calculate a volume of scan radius as to calculate a coverage measure.
Get a better map (this one is from SchomeBase) - am currently trying to inntegrate with map api, but doesn't seem to work on the teen grid. I have asked linden about this, am just waiting for a reply.....
Have the map say what the different regions are called, so you can see what is the most popular area.
Plot of visitors each day, can see trends over time that way.
Sensor status page doesn't update sensors in the air properly.
Make page pretty.
Sensors loose value between last reported and first reported.
Investigate the throttling of llHttpRequest. If there is an absolute limit on the island as a whole then offset the sensors.
Sort the 'fairy' problem.
And pray tell, what is the fairy problem? --Mgaved 15:17, 10 May 2007 (BST) If you click on Fairy Schomer it also gives you TibbyFairy's data, as I used a LIKE statement to save an extra line of code (lazy). A great spot by Dan, I would have never noticed this!--Olly 16:36, 10 May 2007 (BST) Make the heat map key have 256 divs every time as to avoid gaps and issues when visitor numbers>256.
Have two plots for the sensor locations, one at ground level one higher up.
Only INSERT if it doesn't exist.
Have the sensors check to see if data saved correctly, and if not email the data to someone instead (this can then be inserted to the database by hand).
Make the sensors output at midnight if they have data and are not full, then never more than 24 hours behind.
Synchronize the sensors so they all scan at exactly the same time, so greatly improving resolution.
Host in my dept.
Make the sensor locations update correctly.
Finish the heat map.
Scale the graph properly.
Two maps, one for ground level (upto 100m?), and one for sky activity.
: When I view the page in Firefox or IE the cumulative hours graph is drawn first then the sensor birdseye view is drawn over the top of the graph so I can only see half the graph. Is this just on my computer or is it a common issue? cheers --Mgaved 09:30, 19 April 2007 (BST)
Make the names in the 'Who' list a hyperlink that queries the DB to just show that user's information.
Make a page for the staff too.
Title on the y-axis plot.
Colour scale for the map.
Musings/Suggestions (please do add to this)
Any ideas, suggestions or questions about the sensors please stick them here.