Ultimaker Buildplate Camera

Uit MakerSpace Leiden
Naar navigatie springen Naar zoeken springen

Use

Login in mijn.makerspaceleiden.nl and in the navigation menu select Live 3D printer camera.

Setup

The ultimaker buildplate camera relies on a SSH tunnel provided by the service:

  [Unit]
  Description=Tunnel for the ultimaker camera
  After=network.target
  
  [Service]
  ExecStart=/usr/bin/ssh -N -i /etc/ultimaker-tunnel -l tunnel -p 222 -T -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -L 127.0.0.1:9998:CAMERAIP:8080 volmolengracht -
  RestartSec=30
  Restart=always
  
  [Install]
  WantedBy=multi-user.target

The key has been created with:

   ssh-keygen -f  /etc/ultimaker-tunnel 

And a 'permit' line for this has been added to the .ssh/authorized keys file on the space-side:

   no-pty,permitopen="192.168.6.12:8080",command="/bin/true"  ssh-rsa AAAA....= 

With the 'ssh-rsa AAA...' taken from /etc/ultimaker-tunnel.pub.

Note that this has to be done in the admin interface; under users (not in ~/.ssh; that file is automatically overwritten) - and need to be given 'tunnel' permissions.

At this port on the Ultimaker; there is a webcam module that accepts two rest calls (AFAIK): ?action=stream en ?action=snapshot. We take the latter to not overload things (and not having to deal with async streaming, etc).

The connection is then reverse proxied by the ultimaker module in mijn.makerspaceleiden.nl (https://github.com/MakerSpaceLeiden/makerspaceleiden-crm). The key config is in views.py:

   def snapshot(request):
      img = requests.get("http://127.0.0.1:9998/?action=snapshot").content
      return HttpResponse(img, content_type="image/jpeg")

With the updating done by a few lines of javascript - see https://github.com/MakerSpaceLeiden/makerspaceleiden-crm -> ultimaker/templates and then index.html