solarpowerlog

This file is some random thought collection and gives some ideas what direction
solarpowerlog goes...

ROADMAP

Next Version: (which will probably be version 0.24)

-> Rework of the Sputnik Inverters (complete)
	Current version had basically copy-paste code for every command and
        was ugly to maintain. The new version encapsulates all commands that
        the Sputnik inverter undertands in a set of templated and special
	classes.
	As a side-effect adding new commands is now (usually) child-play.

-> Sputnik Simulator integrated in solarpowerlog (complete)
	The "existing" netcat based inverter was too static, and therefore,
	based on the CSputnikInverter a simulator has been embedded.
	After compiling with simulator support and configurating it, it will
	listen e.g TCP/IP and answer queries from e.g. another instance of
	solarpowerlog (or other programms that support the Sputnik Inverters)
	Additionally, it will provide a control server, so the answers to the
	queries can be tweaked (values changed, commands turned off/on)

-> Improved SIGTERM Handling (complete)
	Current versions took some time from SIGTERM to actual termination due
	to the internal handling of events (WorkScheduler had to finish a work
 	before checking the status.) Worst-case syvinit sent SIGKILL before we
	handled SIGTERM and this could lead that some buffers are not flushed.

	The new handling inserts a "Work" when SIGTERM is received and
	therefore actively informing the inverters/datafilters of the imminent
	termination, so that appropiate actions can be performded.

-> SharedComms (complete)
	SharedComms are still experimental and there are several ugly race-condtions,
	especially when receiving data from the inverter.
	The problem is that in the time betwen the first read request is completed and
	the time until the inverter will request the next one bytes can get lost.
	Solution is to introduce some caching, so the SharedComms will always read,
	even without an read request and buffer until the inverter actually requests
	to read.

-> Comms/Inverter interaction, configuration. (complete)
	-> The inverters should specify timeouts, not the communication objects
	This allows more fine-grade settings, in respect to context.

=======================================

Scheduled for next+1 versions:

-> Documentation update
	solarpowerlog needs some better documentation. The current docs are quite
	outdated and incompete.

-> Development documents update
	The same for the dev docs

-> Docs are not well maintainable
	They are maintained "out of the source" and this is hard to keep in
	sync. So bring the docs into the source tree and auto-generate docs at
	buildtime

=======================================

open, but no release goal yet:

-> Sputnik Inverter
	-> Make the "event log" available, (EC* commands.)
	-> Support setting the date/time of the inverters

-> CVS Inverters
	-> Specify the time between flushes, not only "flush every time"

-> Configuration System
	-> Allow all classes to cache config info and cache them locally in
	member variables (as dynamic reconfiguration has been dropped as
	design goal)
	This should reduce complexity (lower CPU at the cost of memory, but
	will increase readability of the code)

-> SQL datafilter

-> JSON/XML output

-> Communication: The cases where callbacks are allowed to be NULL are now gone
    Check if deletion of the commands in the task of the ASIO based classes still needs
    to be done or if this can be removed.

-> Complete the HTML Writer to allow plotting more than one inverter.


-----------------------------------------------
random ideas....

- Rework the Capability interface, maybe a helper class that will update
  the variables by callbacks or by direct accessing members: This is a common
  coding for all filters, so having code reuse will might this easier and
  better
- witty-application or XML-Request interface (to make some ajaxiation ;-)
- "End of Day" Filter -- for just one dataset reflecting the whole day.
- Adding some other inverters
- additional filters, for monthly, yearly reports, comparisions of inverters, string)
- mail plugin to report errors (or a daily mail)
- reporting not only to mail, but also to *** (e.g. twitter)
- solar weather forecast (there was a post debian-mentors)

