Channels ▼


The Arrayent Internet-Connect Development Kit

App Creation

I found the process of creating an Arrayent application remarkably simple, though it did require a phone call to Arrayent's Application Architect, Harshy Wanigasekara, to understand the reasoning behind creating three attributes to establish a time series data collection service. I learned that Arrayent is working on reducing this to the more logical choice of two named attributes, but this option was unavailable at the time of my testing.

The requisite "Hello, world" of the Arrayent system is to hook up the on-board temperature sensor with the Arrayent back-end for time series reporting. While the user guide is well written, it didn't have a section on "your first application" which could have easily demonstrated how the system worked by walking developers through the temperature time series app creation process. Like many things with the company, the guide is rapidly evolving along with the expanded services that Arrayent can provide so this discussion may be included in future iterations. In the meantime, here's a brief synopsis of the process:

  1. Ensure both boards are powered and the Ethernet Gateway is connected to the Internet and the RF module.
  2. Log into the Arrayent Configurator website using the login credentials provided in the DevKit.
  3. Figure 4: The Arrayent Configurator Login Screen.

  4. Click the Device Attributes menu option in the Arrayent Configurator.
  5. Click the New button in the Device Attributes section of the page and select these three existing attributes from the Name drop down list:
    • temp, a Hardware Attribute for the reported value received from the device
    • tempp, a Hardware Attribute for the sampling period to poll the temp attribute
    • temp-ts, a numeric Time Series for the captured tempp values.

    [Click image to view at full size]
    Figure 5: Setting the temperature attributes.

  6. Log into the Arrayent Utility Application website using the login credentials provided in the DevKit. You can also create new customer accounts via the Customer Accounts menu item in the Configurator website. Be sure to use the same application ID as the one specified in the Configurator.
  7. [Click image to view at full size]
    Figure 6: The Arrayent Utility Application Login Screen.

  8. Click on the Set button for the tempp attribute and set the value to 60, thereby sampling the temp value every 60 seconds.
  9. If the temperature sensor was working and the Internet connection was live, a value should eventually be displayed for the temp attribute. Temperature readings are supplied in degrees Fahrenheit.
  10. [Click image to view at full size]
    Figure 7: The Arrayent Utility Application Device Monitor and Control Screen.

  11. Allow the RF module and Gateway connection to remain active for an hour or more.
  12. Revisit the Arrayent Utility Application page on the Arrayent Customer Account website and click on the View History button for the temp-ts attribute. As long as the devices were powered and the connections were stable, this action should display a time-based line graph for the date range selected.
  13. [Click image to view at full size]
    Figure 8: The Temperature Time Series.

  14. After confirming that the temperature values are being confidently captured, you can set notification thresholds by which you can be alerted via email or Twitter tweets. Assign the device code, set the alert method, threshold value, the email address or Twitter account and the message to be displayed when the alert is triggered. The Auto Disarm selection is thankfully selected by default, ensuring that message recipients will only receive a single message when the alarm is tripped instead of every time the sampling rate checks the targeted value.
  15. [Click image to view at full size]
    Figure 9: Setting the Alert conditions.

These same steps can be followed for sampling sensors that can be attached to the digital lines (ex: adc1 for Digital Line 1, etc.).

Frequent samples can rapidly grown data storage needs, so unless the sensor requires frequent polling, setting the rate to 1 minute or more should be adequate for most scenarios. Although Arrayent has not at this writing confirmed any strict data storage quotas, Harshy estimates that most developer accounts should be able to store between 3 to 6 months of device data at a 1-minute sampling rate.

Other Considerations

While the prospect of relatively easy, network-enabled embedded systems application development is attractive, questions remain. As these small devices continue to evolve and literally embed themselves at our work and home, how is security and privacy addressed? What happens to the functionality of Arrayent's devices if/when Arrayent's backend fails? If significant security exploits or fatal flaws are discovered in the device's firmware, how can they be inexpensively updated en masse? The very nature that makes these devices network-reliant signify an area that should be addressed before such devices permeate our world. As automobile manufacturers are learning with their embedded systems, poor security considerations and buggy software can lead to disastrous results, and many of these systems are not even widely broadcasting across the Internet. Certainly early adopters to this nascent embedded systems approach can take the risk, but these considerations should be assessed before taking on the full responsibility of long-term support on commercial applications based on Arrayent's technology.

As for the development experience, Arrayent certainly takes care of the heavy lifting involved with capturing device data, messaging and when programmatically inclined to do so, remotely signaling activity on their devices. This leaves developers with more time to focus on their primary application. Extracting device data from Arrayent's systems is also easy using Arrayent's well documented web services API. Developers also have access to Arrayent's Trac-based bug tracking website to submit and be kept aware of problems and their resolution states. They also anticipate hosting a developer forum site in the near future to encourage other Arrayent developers to share ideas and assist each other with development questions and answers.

Future Opportunities

I'm excited by the potential that Arrayent's approach has to offer. While the hobbyist can certainly build their own one-off systems that do the same thing that Arrayent proposes, scaling these solutions to a commercially viable, mass market product is a different story. Indeed, I have built a number of home-brewed network-enabled projects with an Arduino attached to an Ethernet Shield and a couple of Python scripts cron'd to poll the state of the sensors connected to the board, but building more than a few of these for friends and family would get downright expensive, not to mention brittle. Arrayent's smarter structured approach abstracts away these headaches so that the final deliverable is unlikely to fail on account of back-end systems problems. Arrayent has done an impressive job with the ease of which their devices call home, and setting up device capture and emitting attributes can be performed without writing a line of code. For anyone who has done this without such assistance, such a task is not only daunting, it can also be incredibly error-prone. Removing such potential for error from the overall development cycle equation could be a huge benefit for programmers and product designers alike, and from my vantage point, Arrayent has an impressive head start in this emerging market.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.