Thursday, April 26, 2012

Closing this blog

This is surely the last entry in this blog. panStamp has now its own web page and duplicating posts seems a bit unnecessary. You can view the activity and progresses regarding the panStamp project from the official announcements.

Wish to see you there soon!

Saturday, April 21, 2012

Pachube, ThingSpeak and now

Cloud data services are playing an important role in telemetries and cooperative M2M projects. Distributed automation is in fact taking a new dimension due to the availability of tools and databases in the cloud. Following this philosophy, Lagarto-MAX was developed as a way to bind low-power wireless networks (and hence panStamps) to the Internet. Our extended automation module is capable to run complex tasks locally and also connect local networks to remote data services. Pachube and ThingSpeak were supported in the first version of  the application and now is supported too., still in beta-test, provides some features which are typically beyond the mission of a remote data service. This platform offers different ways to plot readings, process data and even control values. also lets users configure their own monitoring/control panels and link to other internet services as Twitter. graph tools
Figure 1: - multi-line graphing tool

To be honest, controlling local resources from a cloud service is not something that I would do on a daily basis but I understand that some applications do require this functionality. The following picture shows a custom panel that I created to test this feature: custom control panel
Figure 2: - Custom control panel

Sending data to is simply done by defining custom events on Lagarto-MAX. No difference here with regard to other cloud services except that panStamps can be controlled from (see the above control panel).

Lagarto-MAX programmed event
Figure 3: Event that uploads a humidity value to

The above event is simple to understand: whenever Garden.Humidity changes, the value is pushed to That's all. We could  do periodic updates instead but I personally prefer to act upon network events when this saves in the amount of updates.

data push to
Figure 4: programmed action requires some few parameter to be transmitted in order to identify user, controller and data feed. Apart from this, you only have to select the endpoint whose value has to be pushed to the platform.

Friday, April 20, 2012

Saturday, April 14, 2012

Lagarto-MAX: the eye that watches everything...

Lagarto-MAX is now available for download from SVN. With this new client we can integrate multiple lagarto servers and manage their values from a single interface. Lagarto-MAX provides the necessary tools to connect endpoints between them, take decisions and push values to the cloud.

Lagarto-MAX, as Lagarto-SWAP, is entirely configurable from the web interface. It's basically a client listening on the lagarto notification channel which processes events and triggers actions based on network and time conditions. The following are some of the features provided by Lagarto-MAX:
  • Reception of network events from any lagarto server on the same IP network
  • Transmission of commands to any lagarto server on the same IP network
  • Common web control/monitoring interface for all lagarto endpoints
  • Event manager programmable from the Web interface
  • Automatic upload of values to different cloud data services (Pachube, ThingSpeak, ...)
  • Simple thread-independent interface for running user Python scripts.
  • Python API for managing values such as "get_value" or "set_value"
Web events can be of different nature: control lagarto endpoints (SWAP, ...) periodically or on a given date, watch for value changes and push them to the cloud, etc.

Figure 1: example of web event

At the moment of writing this post and with regard to the cloud services only Pachube and ThingSpeak are supported. However, adding support for new services is really easy so we can expect to provide connectivity with new cloud-based platforms in the short term.

Figure 2: real data being pushed to ThingSpeak from Lagarto-MAX

Event-side, users can develop their own Python scripts as well and use the provided API's from there. Read/write network data and push data to the cloud can be done by the means of simple commands. The following is just an example:
from api import NetworkAPI as network

# Lagarto endpoint
endpoint = network.get_endpoint("SWAP-network.SWAP.Temperature")

print, "in", endpoint.location, "is", endpoint.value, endpoint.unit

# The above code prints the same result as the following:
value = network.get_endpoint("SWAP-network.SWAP.Temperature")

print "Temperature in SWAP is", value, " C"

Another nice feature provided by Lagarto-MAX is the endpoint panel. It's similar to Lagarto-SWAP's except that it shows the values from every Lagarto server running in the same IP network (LAN or Internet). All lagarto values being showed from the same web interface... really useful when your lagarto network consists of multiple distributed servers...

Lagarto-MAX is already documented in our wiki. I expect to post some screencasts showing the creation of events from the web interface soon.

Tuesday, April 10, 2012

panStamp at

We finally made the jump! panStamp is from now on not only a project but also a commercial reality. We are using indiegogo as an initial promotional platform. At the same time, we expect to get sufficient funds to start mass production and hence break down prices.

Link to the campaign at

Thanks to everyone for your support along this year!

Thursday, April 5, 2012

New commercial website

I've been really busy preparing the commercial release of panStamp: presentations, production, logistics, ... and our new commercial website. I now feel that I've delayed this too much but, at least, we are on time for May.

This site still needs to be completed with a FAQ page and a user forum but the main structure is already there. Announcements on the commercial website should replace this blog after some time. In the meantime, I'll be duplicating the posts here and there. You'll also notice that the commercial website is showing very few details about the technical aspects of the project. I really want to leave this for the documentation wiki.

This project will show an interesting activity next week. On the commercial side, we'll be releasing a campaign from indiegogo where we'll be offering developer kits as the ones owned by our beta-testers. On the technical side, a first version of Lagarto-MAX will be probably released... time to upload some data to the cloud...

Stay tuned !!

Sunday, February 19, 2012

Lagarto connects SWAP networks to the IP world

Whilst beta-tests follow their own progresses, I've been working on a piece of software that will be the master key for bringing panStamps to the IP world. Lagarto is a lightweight software solution designed to run in low-power computer platforms like PlugComputers and RaspberryPI's.

Figure 1: Lagarto logo

This solution introduces a simple but powerful architecture where no central process is needed. Just servers and clients run autonomously whilst communicating among them via simple cross-platform mechanisms:
  • HTTP GET/POST for reading and writing physical values
  • ZeroMQ for notifying events occurred from the physical networks
Lagarto is a multi-process platform. This platform consists of one or multiple Lagarto servers and none, one or multiple Lagarto clients. Lagarto servers provide their own embedded web server (WSGI) so that configuration and basic control/monitoring of the physical networks can be accomplished via Web and HTTP GET/POST requests. No need to pass through a different service or process to do the basic stuff.
Figure 2: Lagarto basic architecture

Lagarto introduces a simple JSON-based protocol, used in both HTTP and ZeroMQ communication channels. Since ZeroMQ and HTTP are multi-platform, Lagarto servers and clients can be developed using almost any programming language, on any OS. At the moment of writing this blog entry, only a Lagarto server has been developed. It's obviously Lagarto-SWAP, the process charged to interface SWAP networks (and hence panStamps) with future Lagarto clients. For the moment, Lagarto-SWAP provides a nice way to read and write SWAP values from any HTTP client- I'll try to describe some examples about possible HTTP integrations of Lagarto-SWAP with third-party applications in future posts.

And finally, some screenshots:

Figure 3: Lagarto-SWAP general settings page

Figure 4: Lagarto-SWAP endpoint panel