This is actually a topic I’ve been thinking quite a bit about lately. We’ve had the idea for more “embedded” Ignition data collectors for a while, but it recently came up again after talking to various companies at Oracle OpenWorld who are looking to introduce new ARM based machines that run Java. This is would advantageous for the embedded space because the power requirements are less than that of x86 based systems.
In particular, I have one of these units sitting on my desk right now, running Ignition. These are just dev units, and the ultimate field-ready device would look different (and would be spec’d differently - that product page currently shows a max temp rating of 40c, which is obviously not enough).
At any rate, the specific device isn’t so important, what is important is what a Ignition on a box would look like compared to regular Ignition. Several things we’re looking at:
- The data cache must be able to hold a lot of data - and the store and forward system needs to be able to run on a schedule.
- The system (internal database and data cache database) must be very fault tolerant, to deal with power interruptions, as you mentioned.
- Serial driver support will become more important.
One of the main steps towards accomplishing the first 2 is to make the database system used pluggable. Right now the internal database is based on HSQLDB, which has functioned well enough, but frankly we think it would be better to look at other options for these devices. SQLite in particular is a strong contender, but Oracle’s Berkeley DB offers some interesting features, if you don’t mind licensing it. Of course, if the system were more pluggable, it would be possible to experiment with any system, such as Firebird, or MySQL embedded. Another element that might come into play is how the cached data is represented. Currently it is serialized into a blob in a db. However, we might find that a straight file system approach is more appropriate. At least, there isn’t much of a reason why it shouldn’t be an option.
How many tags do you expect each of these units to monitor? What types of devices will you be connecting to?