
FHEM Tutorial-Reihe - Part 55: OctoPrint-Integration in FHEM
Jetzt wurden schon einige Videos in Sachen Vorbereitung für den 3D-Drucker getroffen. Das läuft auch alles wunderbar soweit. Ich kann über OctoPrint einen Druck anstoßen, alles per Webcam überwachen und mich ganz entspannt zurücklehnen, oder? Nicht ganz. Mein Drucker ist jetzt in den Keller gewandert. Dort habe ich natürlich keine Kontrolle mehr über den Druck. Die ganze Zeit den “Live-Stream” anschauen könnte ich natürlich machen. Wenn ich unterwegs bin, klappt das aber nicht mehr. Also musste eine Bedienung von unterwegs her. Diese habe ich gelöst, indem ich mir regelmäßig per Telegram Nachrichten zusende. Im Problemfall kann ich den Druck dann dank ReverseProxy (oder VPN) per FHEM-Modul einfach stoppen.
Das ist natürlich nur Schritt eins. Im nächsten Schritt möchte ich den Drucker komplett per FHEM steuern können. Das heißt, ich werde einen Zwischenstecker nutzen um den Drucker vom Strom zu trennen, wenn er fertig ist (bzw. anschalten, wenn es logehen soll). Dazu aber in einem weiteren Video später mehr.
Was wird benötigt?
- Eine FHEM-Installation
- Ein 3D-Drucker (in meinem Fall ein Anycubic i3 Mega)
- Eine laufende OctoPrint-Installation (siehe Projekt-Beitrag)
Video
Befehle
Hier gibt es das OctoPrint-Modul zum Download. Der Rest wird im Video erklärt.
define KE_3DDrucker OctoPrint 192.168.178.21 5000
attr KE_3DDrucker apikey XXXXXXXXXXXXXXXXXX
attr KE_3DDrucker event-on-change-reading .*
attr KE_3DDrucker icon it_printer
attr KE_3DDrucker userReadings progress_completion_percent { sprintf("%d", ReadingsNum($NAME, "progress_completion", 0)) }
define KE_3DDruckerKamera IPCAM 192.168.178.21:8080
attr KE_3DDruckerKamera alias Kamera (3D-Drucker)
attr KE_3DDruckerKamera icon it_camera
attr KE_3DDruckerKamera path ?action=snapshot
attr KE_3DDruckerKamera storage ./www/snapshots
set WEB_Telegram sendImage ./www/snapshots/KE_3DDruckerKamera_snapshot.jpg
define n_KE_3dDruckerProgressTelegram notify KE_3DDrucker:progress_completion_percent:.* {}
{
if (Value($NAME) eq "Printing") {
my $progressPercent = ReadingsNum($NAME, "progress_completion_percent", 0);
if ($progressPercent % 20 == 0) {
fhem("get KE_3DDruckerKamera image");
fhem("sleep 2; set WEB_Telegram sendImage ./www/snapshots/KE_3DDruckerKamera_snapshot.jpg Fortschritt: $progressPercent %");
}
}
}