Last few week I had to spend quit a bit more time on the project as I wanted to make sure the basic functionality was there. I changed some parts of the code, did some performance testing, tuned the code a little bit and yesterday I put it into a state I think is good enough to show. Here is more or less an overview of the software architecture:
It’s more or less the same as the drawing you saw before. One of the differences is that the console application is now an application on its own plus the server IO back-end is more or less programmed as a service which automatically loads at boot. This way security rules can be applied, although they have not be implemented at this stage. The console app talks to the back-end server through TCP/IP and uses the same classes and methods as the front-end website when interacting with the XBee network. Regarding the front-end webserver, in the end I remained using the Jetty webserver. Altough it is still not performing very well, it does with it is supposed to do and I can’t find a solution which can be used as easily as the current one. Loading web pages still takes some time, but since this is more a research project than a product design I think concluding that “the functionality is doing what we hoped for” is good enough. Below you’ll find a screenshot of the analog values page which got a small interface update since my last screenshot of it. Notice the labels that get displayed when hovering one of the samples.
New in the front-end website is this “Command line” page which does exactly what you think it will do: allow the user to send commands to the XBee network. The back-end server has been upgraded to maintain a list of connected devices (with a timeout value of 1 hour) and so we can query the connected devices at all time. A dropdown box is filled with all connected devices and list of all available AT commands is also displayed as a dropdown box. The parameter box can be filled in optionally. In the picture below you see a demonstration of using the front-end ‘command line’. In the previous form submit we selected a node, selected the D1 command and filled in no parameters. After hitting the submit button the D1 command is send to the node which will then reply with its configuration value of the D1 register. Next the page loads as the one seen in the picture below and displays the value of the D1 register. As you see the value is 5 which means the D1 register is configured as digital high output. Next I filled in 4 in the parameter field, the dropdown boxes automatically select the same command from before when the pages loads and so when I would now push the submit button the D1 command with parameter 4 would be send to the remote XBee node which will then be configured as digital low output. To make a long story short, the led that was connected to the remote XBee on pin D1 was once lighted on but has now been turned of through our front-end website.
At this moments I’m finalizing my report which should be finished on friday, with next week my final presentation about what I’ve been doing past few months. Wish me luck because if all goes well I can call myself Professional Bachelor in ICT from then on!!