j.a.r.v.i.s. realized

If you remember from my earlier post, I wanted to build the cool AI interface from the Iron Man movie series: J.A.R.V.I.S., as voiced by Paul Bettany.

jarvis

Well, I’ve done it. I wrote up several intents in an Amazon Alexa Skill, created an Amazon Lambda function as the end-point, created a proxy in Node (which is served up by a Raspberry Pi Zero W single-board computer) to forward inbound Internet traffic and I’m now able to ask an Amazon Echo Dot how my printer is doing at home.

EchoDot

Remotely Control a Printer

For example, I can say:

Computer, ask Jarvis for my printer’s status.

…to which she will reply:

charming-pascal is ready and operational.

Now remember, I’m two miles away from home while I’m doing this and all of this still works.  I could ask:

Computer, ask Jarvis which file is selected.

…and she’ll say:

RC_microSD-clip.gcode is currently selected.

This is useful to know when I later code this up to remotely print a job as well. I can also ask:

Computer, ask Jarvis for the job status.

…and the reply might be:

charming-pascal is finished printing RC_microSD-clip.gcode

In the collection of skill intents, I now have the following:

  • Stop the print job
  • Start the print job
  • Pause the print job
  • Resume the print job
  • Ask for the print job status
  • Ask for the selected print job file
  • Ask for help
  • Open the Jarvis app

And I’ll need other intents to select a file to print, preheat the extruder and possibly other things yet unimagined.

I’ll definitely want to remotely see the output of the internal webcam inside the printer to make sure that it’s happy; sometimes print jobs go afoul for a variety of reasons.

Remote Power Control

In addition, I also purchased a TP-Link Smart Plug to control power to the printer. I now have an Alexa skill to turn the printer on and off remotely.

tp-link

Computer, turn on my 3D printer.