Ultimaker Buildplate Camera
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