Difference between revisions of "Cerealbot/Software"
m (added api curl lines) |
m (migrated byobu section to /rpi) |
||
Line 98: | Line 98: | ||
Right now I'm streaming the webcam from v4l-mjpg-streamer, total pain, will look for something better. | Right now I'm streaming the webcam from v4l-mjpg-streamer, total pain, will look for something better. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Revision as of 15:02, 7 June 2015
Github files for this project.
Contents
[hide]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
Authbind
tl;dr: haproxy bad, authbind good.
In '/etc/default/octoprint' Set port to 80 and uncommand the extra arguments.
In '/etc/init.d/octoprint' Add 'AUTHBIND=/usr/bin/authbind' to the variable declaration section and then find the invocation of $DAEMON and add $AUTHBIND directly in front of it (with a space). When you restart the service, it should come up on port 80.
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.