Cerealbot/Software

From Makers Local 256
< Cerealbot
Revision as of 23:07, 8 June 2015 by Ctag (Talk | contribs)

Jump to: navigation, search

Github files for this project.

Cerealbot Code

Underneath the queue is a hodge podge of shell scripts and C programs.

Current System:

Shell script hooks bound to Octoprint's "printStart" and "printDone" events. These handle setting the flag which indicates a part is being printed/removed. Once a part is being removed, its corresponding gcode is deleted from the queue.

A cron job checks the printer status and queue for a match of "free printer + file to print" and then kicks off the print job.

A C program acts as a buffer to the arduino and allows the shell scripts to control hardware in a easy to use but complicated to setup manner.

API

Curl is great for testing around with both Octoprint and RedQueen's api, but I've switched the shell scripts to use resty for ease of maintenance.

Curl Examples
To RedQueen:
curl --data "{\"message\":\"${MSG}\", \"channel\":\"##rqtest\", \"isaction\":false, \"key\":\"${APIKEY}\"}" https://crump.space/rq/relay -H "Content-Type:application/json"
To Octoprint:
curl -H "X-Api-Key:$OCTO_API_KEY" http://bns-daedalus.256.makerslocal.org/api/printer -o /tmp/printr_status.json

Webcam

To list available formats:

v4l2-ctl --list-formats

or

v4l2-ctl -d /dev/video0 --list-formats-ext

Octoprint

To use an http stream with octoprint, the URL has to be formatted correctly.

At first glance, I tried: cerealbox.256.makerslocal.org:8081, which didn't work.

Turns out Octoprint blindly appends a GET variable to the URL, which turns the above into: cerealbox.256.makerslocal.org:8081?2354jk345 which isn't a valid URL anymore.

So, you have to set up the webcam URL like: http://cerealbox.256.makerslocal.org:8081/

Here the trailing slash lands the GET variable. It took Hunter Fuller to figure all that out.

mjpg-streamer

mjpg-streamer is by far the best solution for webcam streaming from the RPi. A recent update brought immense relief for CPU overhead.

Base command to run:

mjpg_streamer -b -i "./input_uvc.so -d /dev/video0 -n -f 5 -r 1280x720" -o "./output_http.so -p 8080 -w ./www"

Previously I've used the -y flag for compatibility, which totally crushed the little CPU, but the most recent build of mjpg-streamer appears to work quite well with my Logitech webcam using the default MJPG codec.

Slic3r Config

I'm still working on a Slic3r config, its on github.

Octoprint Server - RPi

Raspbian - Debian

Archlinux

To run octoprint from port 80 as user 'octoprint', I adjusted the systemd unit file to launch with authbind.

[Unit]
Description=Octoprint 3d Printing Web Server
After=network.target

[Service]
User=octoprint
Group=octoprint
Type=simple
ExecStart=/usr/bin/authbind --deep /usr/bin/octoprint --port 80
Restart=on-failure

[Install]
WantedBy=multi-user.target

Right now I'm streaming the webcam from v4l-mjpg-streamer, total pain, will look for something better.