Table of Contents

3D Printer extruder PEEK insulator meltdown

felix-extruderv4-peek-meltdown

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

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.

HOWTO

collectd

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>

octocmd

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.

exec wrapper script

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