Raspberry - Externer Temperaturfühler soll Lüfter einschalten/auschalten

Hallo,

ich bin vor kurzem von Octoprint auf Reptier umgezogen bzw. habe aktuell beides parallel in der Nutzung. 

Ich habe einen Rasperry PI 4 mit einem DS18b20 Temperatursensor. Des Weiteren habe ich ein Relaisboard mit 3 Relais auf dem Raspberry. 

Als Drucker habe ich 2 Prusa i3 MKS3 wobei einer bald auf MK4 umgebaut wird. 

Bisher war es bei Octoprint so, dass ich die Temperatur des Gehäuses über GPIO auslesen konnte und auch den Lüfter aktivieren konnte. Je nach Filament konnte ich das ganze per G-Code steuern. 

Gerne möchte ich das auch im Repetier-Server umsetzen.

Ich habe nun ein Shellskript gebastelt, welches die Temperatur vom Sensor ausliest und den Lüfter einschaltet, je nach voreingestellter Temperatur. Die Temperatur wird dabei aus einer Datei auf dem Raspberry gelesen. 

#! /bin/bash
filename=/var/lib/Repetier-Server/scripts/temp.txt
SENSOR1=28-062017af09fd

read temp < $filename
if [ -z "$temp" ]
then
        echo "60" > $filename
        read temp < $filename
else
      temp=$temp
fi
chamber=$(echo "scale=2; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/$SENSOR1/w1_slave | awk -F't=' '{print $2}')/1000" | bc -l)
chamber_clean=$(echo "scale=0; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/$SENSOR1/w1_slave | awk -F't=' '{print $2}')/1000" | bc -l)
temp_on=$temp
temp_off=$(echo "$temp_on-5" | bc)
if [ $chamber_clean -ge $temp_on ]; then
        echo 0 > /sys/class/gpio/gpio26/value
elif [ $chamber_clean -le $temp_off ]; then
        echo 1 > /sys/class/gpio/gpio26/value
fi
exit 0

Wie bekomme ich es hin, dass die ich die Temperatur per GCode vom Drucker an den Repetier schicke und dort dann verarbeitet. Dies würde bedeuten, dass die Temperatur in der Datei "temp.txt" gespeichert wird und durch einen Cronjob automatisch nach spätestens einer Minute der Lüfter angeht. 

Ich habe einiges von Execute gelesen, würde insofern funktionieren, wenn ich Parameter übergeben kann, welcher dann in der temp.txt gespeichert wird. 

Ich würde mich über eine Lösung freuen :)

Grüße
René

Comments

  • Ja check mal das manual Kapitel advanced setup zu execute. Du willst einen mit sync="false" damit der Druck nicht unterbrochen wird und allowParams="true" um Parameter zu Übergeben.

    Lies mal in computed expressions Kapitel, da steht wie du Temperturen der Extruder oder des Betts als abfragen kannst. Die kannst du einfach als Parameter in @execute mit einfügen.

    Du kannst auch ohne cronjob arbeiten und den Umweg über die Datei sparen.
    @callOnEvent event function

    kann eine Funktion bei einem Ereignis, hier "timer60" aufrufen. Pack das in 'Sende bei Druckeraktivierung" in den Ereignisabhängigen Skripten und ruf dein Skript gleich mit der Tempertur ab.

    So würde ich es mal versuchen.
Sign In or Register to comment.