The Axeda Platform is a secure and scalable foundation to build and deploy enterprise-grade applications for connected products, both wired and wireless. This article provides you with a detailed feature overview and helpful links to more in-depth articles and tutorials for a deeper dive into key areas.
Types of Connected Product Applications
M2M applications can span many vertical markets and industries. Virtually every aspect of business and personal life is being transformed by ubiquitous connectivity. Some examples of M2M applications include:
- Vehicle Telematics and Fleet Management - Monitor and track the location, movements, status, and behavior of a vehicle or fleet of vehicles
- Home Energy Monitoring - Smart energy sensors and plugs providing homeowners with remote control and cost-saving suggestions
- Smart Television and Entertainment Delivery - Integrated set-top box providing in-view interaction with other devices – review your voicemails while watching a movie, chat with your Facebook friends, etc.
- Family Location Awareness - Set geofences on teenagers, apply curfews, locate family members in real time, with vehicle speed and condition
- Supply Chain Optimization - Combine status at key inspection points with logistics and present distribution managers with an interactive, real-time control panel
- Telemedicine - Self-monitoring/testing, telecardiology, teleradiology
Why Use a Platform?
Have you ever built a Web application? If so, you probably didn't create the Web server as part of your project. Web servers or Web application servers like Apache HTTPd or JBoss manage TCP sockets, threads, the HTTP protocol, the compilation of scripts, and include thousands of other base services. By leveraging the work done by the dedicated individuals who produced those core services, you were able to rapidly build an application that provided value to your users.
The Axeda Platform is analogous to a Web server or a Web application server, but provides services and a design paradigm that makes connected product development streamlined and efficient.
Anatomy of an Axeda Connected Product
Connected Products can really be anything that your product and imagination can offer, but it is helpful to take pause for some common considerations that apply to most, if not all of these types of solutions.
- Getting Connected - Bring your product or equipment to the network so that it can provide information to the solution, and react to commands and configuration changes orchestrated by the application logic.
- Manage and Orchestrate - Script your business logic in the cloud to tie together remote information with information from other business systems or cloud-based services, react to real-time conditions, and facilitate batch operations to synchronize, analyze, and integrate.
- Present and Report - Build your user experiences, enabling people to interact with your connected product, manage workflows around business processes, or facilitate data analysis.
Let's take a look at the Axeda Platform services that help with each of these solution considerations.
Wired & Wireless
Getting connected can assume all sorts of shapes, depending on the environment of your product and the economics of your solution. The Axeda Platform makes no assumption about connectivity, but instead provides features and functionality to help you connect.
For wireless applications, especially those which may use cellular or satellite communications, the speed and cost of communication will be an important factor. For this reason, Axeda has created the Axeda Wireless Protocol, or AWP, a cross-platform, efficient binary protocol that you can use to communicate bi-directionally with the platform. While the compact binary format is critical for wireless communications, AWP is also a good fit for connecting devices that have a wired Internet connection. The protocol is expressive, robust, secure, and most importantly, able to be implemented on a wide range of hardware and programming environments.
When you are ready to start coding your embedded agent for your product, the AWP Toolkit can help abstract the communication programming away completely, so that you can focus on the unique aspects of your connected product. The AWP toolkit is an ANSI C library that can be compiled into your own software and executed on a wide array of computing hardware and platforms. When multiple channels can be used (such as satellite, cellular, and wifi), the AWP Toolkit supports Least-Cost Routing, where information is sent over a channel based on the information's value and the channel's cost. This lets you control the application's wireless costs, while remaining flexible to business demands.
When you are faced with connecting legacy products that may be communicating with a proprietary messaging protocol, the Axeda Platform can be extended with Codecs to "learn" your protocol by translating your device's communication format into a form that the platform can understand. This is a great option for retrofitting existing, deployed products to get connectivity and value today, while designing your next-generation of product with AWP support built-in.
Learn more about connectivity options in the Communication Overview.
Manage and Orchestrate
The Data Model defines the information and its behavior in the Axeda Platform.
Rules form the heart of a dynamic connected application. There are three types of rules that can be leveraged for your orchestration layer:
- Expression Rules run in the cloud, and are configured and associated with your assets through the Axeda Admin UI or SDK. These rules have an If-Then-Else structure that's easy to create and understand. They're like a formula in a spreadsheet. For example, say your asset has a dataitem reading for temperature:
This rule compares the temperature to 80 every time a reading is received. When this happens, the rule creates an alarm with name "High Temp" and severity 100.
Learn more about Expression Rules.
- State Machines help organize Expression Rules into manageable groups that apply to assets when the assets are in a certain state. For example, if your asset were a refrigerated truck, and you were interested in receiveing an alert when the temperature within the cargo area rose above a preset threshold, you would not want this rule to be applied when your truck asset is empty and parked in the distribution center lot. In this case, you might organize your rules into a state machine called “TruckStatus”. The TruckStatus state machine would then consist of a set of states that you define, and the rules that execute when the truck is in a particular state.
State “Parked”: IF doorOpen THEN …
State “In Transit”: IF temperature > 40 THEN…
State “Maintenance”: <no rules>
You can learn more about state machines in an upcoming technical article soon.
Using Axeda Custom Objects, you can harness the power of the Axeda SDK to gain access to the complete set of platform data and functionality, all within a script that you customize. Custom Object scripts can be invoked in an ExpressionRule to provide customized and flexible business logic for your application. Custom Object scripts are written in a powerful scripting language called Groovy, which is 100% Java syntax compatible. Groovy also offers very modern, concise syntax options that make your code simple and easy to understand.
Learn more about Custom Objects
Knowing where something is, and where it has been, opens a world of possible application features. The Axeda Platform can keep track of an asset’s current and historical location, which allows your applications to plot the current position of your assets on a map, or show a breadcrumb trail of where a particular asset has been.
Geofences are virtual perimeters around geographic locations. You can define a geofence around a physical location by describing a center point and radius, or by “drawing” a polygon around an arbitrary shape. For instance, you may have a geofence around the Boston metro that is defined as the center of town with a 10-mile radius. You may then compare an asset’s location to this geofence in a rule and trigger events to occur.
IF InNamedGeofence(“Boston”) THEN CreateAlarm(…)
You can learn more about geofences and other location-oriented rule features in an upcoming tutorial.
In today’s software landscape, almost no complete solution is an island unto itself. Business systems need to interoperate by sharing data and events, so that specialized systems can do their job without tight coupling. Messaging is a robust and capable pattern for bridging the gap between systems, especially those that are hosted in the cloud. The Axeda Platform provides a message queue that can be subscribed to by external systems to trigger processes and workflows in those systems, based on events that are being tracked within the platform. A simple ExpressionRule can react to a condition by placing a message in the integration queue as follows:
IF Alarm.severity > 100 THEN PublishObject()
A message is then placed in the queue describing the platform event, and another business system may subscribe to these messages and react accordingly.
Web Services are at the heart of a cloud-based API stack, and the Axeda Platform provides full comprehensiveness or flexibility. The platform exposes Web Service operations for all platform data and configuration meta data. As a result, you can determine the status of an asset, query historical data for assets, search for assets based on their current location, or even configure expression rules and other configuration settings all through a modern Web Service API, using standard SOAP and REST communication protocols.
Learn more about Axeda Platform Web Services.
Web Service APIs simplify system integration in a loosely-coupled, secure way, and we have a commitment to offering a comprehensive collection of standard APIs into the Axeda Platform. But we can't have an API that suits every need exactly. You may want data in a particular format, such as CSV, JSON, or XML. Or some logic should be applied and its inefficient to query lots of data to look for the bit you want. Wouldn’t you rather make the service on the other side do exactly what you want, and give it to you in exactly the format you need? That is Scripto – the bridge between the power and efficiency of the Axeda Custom Object scripting engine, and a Web Service client. Using Scripto, you can code a script in the Groovy language, using the Axeda SDK and potentially mashing up results from other systems, all within the platform, and expose your script to an external consumer via a single, REST-based Web Service operation. You create your own set of Web Services that do exactly what you want.
This powerful combination let’s you simplify your Web Service client code, and give you easy access and maintainability to the scripted logic.
Rich Internet Applications are a great way to build engaging, information-rich user experiences. By exposing platform data and functions via Web Services and Scripto, you can use your tool of choice for developing your front-end. In fact, if you choose a technology that doesn’t require a server-side rendering engine, such as HTML + AJAX, Adobe Flash, or Microsoft Silverlight, then you can upload your application UI files to the Axeda Platform and let the platform serve your URL!
Far-Front-Ends and Other Systems
If a client-only user RIA interface is not an option for you, you can still use Web Services to integrate platform information into other server-side presentation technologies, such as Microsoft Sharepoint portal or a Java EE Web Application. You can also get lightning-fast updates for your users with the Enterprise Subscription Service (ESS). ESS allows your far-front-end to subscribe to an assortment of events that relate to an individual or set of assets. While your users are viewing a drill down on a set of assets, they can receive asynchronous notifications about real-time data changes, without the need to constantly poll Web Services.
Building Connected Products and applications for them is incredibly rewarding job. Axeda provides a set of core services and a framework for bringing your application to market. Please explore the rest of developer.axeda.com, and let us know what you think in the forums.