The increasing availability of sensors, smart devices, Web APIs, and services online calls for advanced and effective ways for developing applications that can easily embed such distributed components into complex and intelligent solutions.
In the context of the work on COMPOSE, we stumbled upon NodeRed a very nice “tool for wiring together hardware devices, APIs and online services in new and interesting ways“. NodeRed is a tool developed in Node.js which combines a nice and fairly intuitive Web-based graphical user interface a la Yahoo! Pipes, with an embedded execution environment.
NodeRed is fairly easy to setup and it can allow you to create fairly advanced executable applications in little time, which is why we adopted it within the COMPOSE project as a means to help developers create applications for the Web of Things.
Although I have not yet contributed to NodeRed core code, I have developed in my spare time a few extensions that are fairly handy.
JSON is an increasing popular format, especially among Web API providers. Although JSON support is native to NodeRed, extracting data out of JSON payloads is something that is not so well supported by NodeRed out-of-the-box. I have created a node for NodeRed that allows evaluating JSONPath expressions on the fly within application workflows, simplifying in this way the use of JSON data exposed by Web APIs or remote services.
Swagger™ is an interface definition language for describing REST APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection. When properly defined via Swagger, a consumer can understand and interact with the remote service with a minimal amount of implementation logic. Similar to what interfaces have done for lower-level programming, Swagger removes the guesswork in calling the service.
I have created a node for NodeRed that provides a generic client for Web APIs. All that is required for you to automatically be able to invoke a given API within a NodeRed application is to have at your disposal the corresponding swagger description (hint: use iServe to find some). The node allows you to easily inspect an API and configure the node to invoke the method desired easily, allowing you to invoke an external Web within your flow in a matter of seconds!
Bluetooth 4, aka Bluetooth Low Energy, is a very popular technology in the Internet of Things. Among other things it allows the discovery and advertising of remote, though relatively closely located, functionality even with resource constrained devices.
Because using BLE devices within Internet of Things applications is very often a requirement I have worked on a node that would simplify their use within NodeRed workflows. Currently the node is essentially centred on the discovery of devices and services but I shall be adding further functionality soon.