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, which calls 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