Custom data sources
If you can give me a point in the direction of the classes/interfaces I need to implement in order to create a new data source I will have a look and see how far I can get.
The classes you want to look at are these:
com.serotonin.mango.vo.dataSource.DataSourceVO - This is a value object type class that encapsulates all of the configuration information for a data source instance. It is also what gets stored in the database.
com.serotonin.mango.vo.dataSource.PointLocatorVO - This is the point-level version of the data source VO above. It is an interface; see also its implementer AbstractPointLocatorVO in the same package.
com.serotonin.mango.rt.dataSource.DataSourceRT - This is the run-time version of the data source. It encapsulates the actual protocol that is being implemented, and uses a VO to access its configuration. Also note the convenience subclass PollingDataSource in the same package.
com.serotonin.mango.rt.dataSource.PointLocatorRT - This is the point-level equivalent of the data source RT.
There are implementations of each of these for Modbus, SNMP, Spinwave, and the virtual data source, which you should review to give you context. Doing so should answer most of your questions. The rest of your questions you can post here.
Could someone tell me about the limitation of data sources? How many transactions can be kept in datasources or how long? In case of upgrading from current database to Microsoft SQL, is it possible?
Data sources are just mechanisms for collecting data; the number that you can run at a time depends on many factors, but in most cases you should be able to run enough to monitor more equipment than is currently imaginable.
By transactions i assume you mean data point values (i.e. historical records of data point values at specific times). Individual data point values take up tiny amounts of database space, but, sure, tens of millions of them can add up. In the end though, the amount that you can store only really depends on the size of your hard drive (or other persistent storage).
Mango can manage data purging for you. You can choose the point value purging characteristics at the level of the data point itself.
As for transferring data over from an existing database, it should be possible, but depends entirely on the structure of the data there, specifically how well it fits into the Mango structure. If you need details on the Mango database schema, let me know.
Thank you your reply.
It is interesting for know how can I store data into my database (SQL). I would like to store it for 3 or 6 months for analyst and accouting purpose.
Could you provide me more details on this topic so I can study more detail in Mango.
Mango currently only stores its data into it's own SQL database. The database that is used is Derby entirely because its embedded nature greatly simplifies the installation of Mango.
I have attached the current (0.9.2) table create script for your information. I hope this helps.
Attachment: download link
I am developing mango to use MySQL. Which script I need to modify to use MySQL? Anyone can tell me where.
The above script is the only one that should require updating. However, Mango was developed for use with embedded Derby and so does not utilize a connection polling mechanism. Without changing the code associated with creating connections you will likely experience rather poor performance.
Hi I am need to scan a list of devices (MBus).
This can take some time (i.e. modem dialin) - is BACNetDiscovery the answer for an template?
Possibly, at least for the Mango side of the code.