Welcome to the numericstream wiki! The project started out as a way to take data from my own weather station and put it on the internet. That project is still unfinished, however as the software works, and should be useful for a wide range of applications I've open-sourced it.
The basis of this software is to take data from serial ports, and put it into a database where it can be then served up by a web server. The driver that takes the data from the port to the database is written in C++, the web pages are written in php.
Installation: [Installation].
Driver configuration: [DriverConfig]
Building Blocks: [BuildingBlocks]
Future Plans: [FuturePlans]
The idea behind this is to keep everything simple, lightweight and fast. The C++ driver will cope with serial data being transmitted at 5Hz (and on that test the single core Laptop was also running the simulator and a virtual serial port). The SQLite database only allows a single process to write to the database, and this can only write if there are no reads going on. The case of writer's block is taken care of in the design of the driver as it will queue up the writes to the database and write them when it can. This could fail if there are too many clients reading, but the future plans to create a copy of the database will resolve this potential problem.
Similarly the client is written in php to keep everything fast and lightweight, however with a huge number of clients the server may well get overloaded as all processing is done on the server side. It is intended to serve up web pages to an intranet, so this shouldn't be a problem, however future plans should get around this.
Currently fixed width and delimited data strings are supported, the next releases should complete all the serial setting options that currently aren't available. Keep an eye on the developments - new releases and upgrades will be tweeted from @numericstream.
Wiki: BuildingBlocks
Wiki: DriverConfig
Wiki: FuturePlans
Wiki: Installation