Rustic Retreat
Hot Projects
Live broadcasts and documentation from a remote tech outpost in rustic Portugal. Sharing off-grid life, the necessary research & development and the pursuit of life, without centralized infrastructure.
Subscribe to our new main project Rustic Retreat on the projects own website.
This is an old revision of the document!
chrono : Uhhhh, H0u5t0n, I have some good and some bad news
H0u5t0n : Bad news
chrono : I think we have a problem with F3l1ks
H0u5t0n : Could you be a bit more specific?
chrono : Well, seems as if the beige plastic element of extruder 0 melted
H0u5t0n : You mean the beige PEEK insulator between the hot- and cold-end?
chrono : Affirmative
H0u5t0n : How did that happen?
chrono : I was prepping him for a new job, manually set the target temp of
ext0 to 220°C for a quick cleaning extrusion of about 30mm of
filament when I noticed a sizzling sound which turned out to be
something dropping from the insulator onto the hot-end. A second
or so later, the whole hot-end started to drop out of the PEEK
insulator, at which point I set F3l1ks to standby to stop him
H0u5t0n : Did you check the temperature at that point?
chrono : Yeah, unfortunately, I didn't take a screenshot due to the hectic
of the moment and octoprint doesn't offer a history function to
get some hard data. All I can offer is a glimpse I had after I
stopped him and saw some obvious overshoot ranging somewhere
between 240-250°C. Did you guys ever verify the thermistor
readouts with an external reference thermometer?
H0u5t0n : Uhhhm, no... I suppose we did not
chrono : Ok, I'll have to do that then. Could you put a spare PEEK into
the next supply launch? I've already unmounted and secured ext0
so we should be able to continue printing in the meantime with
ext1 - after a couple of more safety tests
chrono : Which brings us to the good news:
H0u5t0n : Let me guess, you figured out a way to collect and ship F3l1ks's
metrics into the VFCC, to significantly reduce the risk of having
to work without more reliable data again?
chrono : Errr, yeah... exactly
Since the VFCC already offers all the features needed to store, retrieve and visualize all metrics of the 3D Print Robot it was only a matter of an hour to install and configure collectd on the Odroid C1 to gather all system and printing related metrics, ship them into InfluxDB and mash up this fancy Live - F3l1ks - 3D Print Robot Stats Dashboard
Check out the virtual-flight-control-center-opened Mission-Log, if you want to learn how to build something similar with open-source components yourself. In this case, collectd was chosen as the only collecting agent to run on the Odroid C1. It collects all high level related metrics with its own plugins and the temperatures are collected by the exec plugin calling octocmd - a console interface for octoprint - wrapped by a quickly hacked shell script.
Make sure to load the exec plugin at the top of collectd.conf and add this snippet to tell collectd to use the exec plugin to call octotemp.sh wrapper script:
<Plugin exec>
Exec "collectd:collectd" "/var/lib/collectd/scripts/octotemp.sh"
</Plugin>
In order to get the data from octoprint you can use octocmd on the console. Install and init (as the user that is calling it later, in this case collectd) according to documentation.
Put this into /var/lib/collectd/scripts/octotemp.sh or where ever you want, just make sure it's the same path as in collectd.conf and that is has the execution bit set:
HOSTNAME="${COLLECTD_HOSTNAME:-`hostname -f`}"
INTERVAL="${COLLECTD_INTERVAL:-5}"
while sleep "$INTERVAL"
do
DATA=$(/usr/bin/octocmd status)
BED_ACT=$(echo $DATA | awk '{print $7}' | cut -d'=' -f2 | cut -d',' -f1)
BED_TGT=$(echo $DATA | awk '{print $8}' | cut -d'=' -f2 | cut -d',' -f1)
EXT0_ACT=$(echo $DATA | awk '{print $11}' | cut -d'=' -f2 | cut -d',' -f1)
EXT0_TGT=$(echo $DATA | awk '{print $12}' | cut -d'=' -f2 | cut -d',' -f1)
EXT1_ACT=$(echo $DATA | awk '{print $3}' | cut -d'=' -f2 | cut -d',' -f1)
EXT1_TGT=$(echo $DATA | awk '{print $4}' | cut -d'=' -f2 | cut -d',' -f1)
echo "PUTVAL $HOSTNAME/octotemp/temperature-bed-tgt interval=$INTERVAL N:$BED_TGT"
echo "PUTVAL $HOSTNAME/octotemp/temperature-bed-act interval=$INTERVAL N:$BED_ACT"
echo "PUTVAL $HOSTNAME/octotemp/temperature-ext0-tgt interval=$INTERVAL N:$EXT0_TGT"
echo "PUTVAL $HOSTNAME/octotemp/temperature-ext0-act interval=$INTERVAL N:$EXT0_ACT"
echo "PUTVAL $HOSTNAME/octotemp/temperature-ext1-tgt interval=$INTERVAL N:$EXT1_TGT"
echo "PUTVAL $HOSTNAME/octotemp/temperature-ext1-act interval=$INTERVAL N:$EXT1_ACT"
done
$ chmod 0755 /var/lib/collectd/scripts/octotemp.sh