Brick in the Cloud

The Lego Machine Cloud Project


Declarative Robot Programming via Salesforce on your Mobile with Salesforce1

20131119-081643.jpgThe Lego MachineCloud project has received a massive boost in the form of two great technologies from Lego and Salesforce! I’m so pleased to confirm that my test to get the Salesforce Streaming API working on the EV3 has been a raving success! This technology allows the robot to be highly responsive to commands from Salesforce, including the hugely exciting brand new Salesforce1 mobile app.

Having uploaded the required Java libraries to the brick and adapted some Java code from a previous project. I then extended the objects I created for the previous robot to create a more “declarative” programming approach. That can be driven by Command records created by the user in the latest Salesforce user web and mobile interfaces!

Streaming Commands from the Machine Cloud

robotHere you can see a screenshot of the Robot record showing a list of commands that it has executed, note the New Command button! Simply click this button and select the type of command you want, hit Save and often before the screen can even refresh the EV3 will get the streaming API event notification and perform the command! I literally lept up from my chair the first time it did this. I’ve uploaded the source code to the project to GitHub, feel free to take a look and see how its all done!

Declarative Robot Programming via your Mobile!

programI have extended the Robot and Command objects with another object called Program. This is a container for multiple Command records, allowing you to design a program in the Salesforce UI and then create a single Command record to execute that Program!


Having updated my version of the Salesforce mobile app, now known as Salesforce1, i quickly found that my Command object is now also available in this application. Within a few taps my EV3 was now also responding to commands sent via my phone! Now that is a true “No Software” reality! Amazing stuff Salesforce!


I’ll be bringing the robot you see in the video to Dreamforce with me next week, where I cannot wait to see what people think of this approach to programming the EV3 in the “Internet of Things Lab” session. Its a basic framework at this stage but the potential is huge for having Robot’s socialise (from all over the world!) on the Salesforce “Machine Cloud” platform. See you at Dreamforce next week!

Brief Demo Video

1 Comment

Programming the new Lego Mindstorms EV3!

EV3RSTORMI’ve finally got my hands on the next generation of Lego programmable bricks, the Lego Mindstorms EV3. It has a number significant improvements over the NXT shown in my previous posts. Most notably for me is the improved processor and the fact that it actually runs Linux, not only that but Lego have shared the source code to the firmware as well! Bravo Lego!

Screen Shot 2013-11-14 at 00.48.30

It has only been out a short while and already it has been embraced by the community and a surprise corporate interest from none other than Oracle themselves! I  wanted to try Java on the last brick, but read that it had a number of limitations and caveats. Not so with the EV3, Oracle have provided a fully fledge Embedded version of their JVM for use on the brick, more on this in a moment! Thank you!


I also of course needed to get the brick talking to the internet, once again the EV3’s improvements gave it big step forward from the rather large third party Wifi receiver I found for the last robot. This time, its time to plug in the worlds smallest Wifi USB dongle, the Edimax EW-7811Un (note this does not work with the standard Lego software currently)! Check it out its tiny, ideal for cloud enabling robots!

Finally a Micro SD card slot gives the ability for extra storage, as well is the ability to create a bootable partition on it. Meaning you don’t have to replace the standard firmware to get started, just build an appropriately formatted and configured SD card image (not quite as easy at present as you’d imagine, but worth the effort!) and the device boots from that if installed.

lejosLogoThis is exactly how the clever developers at leJOS have provided a toolkit to run the Oracle JVM with the appropriate configuration to run regular Java code! With a little help from Juan Antonio Breña Moral and his website on EV3 programming. I was also soon up and running with a pretty slick Eclipse based devleopment environment and a deployment script taking the otherwise heavily clicky task of pushing the code to the device down to a matter of a few seconds using an Ant script. Next step Salesforce connectivity! I’d settle for nothing less than using the Salesforce Streaming API for this robot, and I was not to be disappointed…