Ohne Gelaber: Wie schließe ich eine beliebige Webcam an den Creality Ender3 V3 KE an? Mit Timelapse, RAM-Disk und Spaghetti-Erkennung!
Firmware aktualisieren
Wir benötigen die aktuelle Firmware von Creality:
- Lade das neueste Firmwareupdate von GitHub herunter.
- Kopiere die Datei „Ender-3_V3_KE_F00X_ota_img_V1.X.X.XX.img“ auf den USB-Stick.
- Lösche vorsichtshalber auf Deinem Drucker alle alten Druckjobs, damit das Update nicht wegen Speicherplatzmangel abbricht.
- Stecke nun den Stick in den eigeschalteten Drucker.
- Eine Meldung popt hoch und Du bestätigst, dass Du das Update installieren willst.
- Der Drucker startet jetzt neu
- Fertig
Mit Drucker verbinden
Welche IP hat Dein Drucker? Am Display nachsehen:
- Zahnrad-Symbol
- System
- Reiter Netzwerk antippen
- Die IP-Adresse Deines Druckers wird unter dem Netzwerknamen angezeigt. Merken!
Terminal (oder Putty) öffnen und Folgendes eingeben:
ssh root@IP-DEINES-DRUCKERS
Passwort ist Creality2023
Jedenfalls für v1.01.12. Schaut aber nach, ob das auch so bleibt, wenn die eine neue Firmware herausgebracht haben.
Webcam-Dienst laden und aktivieren
cd /etc/init.d wget http://openk1.org/static/k1/scripts/S50non_creality_webcam chmod 755 S50non_creality_webcam /etc/init.d/S50non_creality_webcam restart
Jetzt ist die Webcam verfügbar. Ich habe an meinen KE den absoluten 3D-Drucker-Webcam-Klassiker, eine Logitech C270 angeschlossen. Diese hat den Vorteil, dass man sie öffnen und den Fokusring manuell genau auf das Druckbett einstellen kann.
Zeitraffer?
Du willst Zeitrafferaufnahmen machen? Kein Problem! Es gibt das Helper-Script, das wir dafür installieren müssen. Wieder via ssh mit dem Drucker verbinden und …
git clone --depth 1 https://github.com/Guilouz/Creality-Helper-Script.git /usr/data/helper-script
Wir starten es mit:
sh /usr/data/helper-script/helper.sh
Es erscheint dieses Menü:
Wir wollen Moonraker Timelapse installieren, tippen also 10 ein:
Zack! Und es ist installiert!
Makro eintragen
Damit wir auch einen Knopf haben, auf den wir klicken können, öffnen wir den Drucker im Browser (fluidd).
—> Konfiguration ({..}-Symbol) —> printer.cfg öffnen
Und fügen den folgenden Text am Ende des Scripts, vor dem grauen Bereich ein:
[include timelapse.cfg]
Speichern und Neustarten!
Aktivieren und Updates
Damit das Plugin auch aktiviert und aktualisiert wird, müssen wir in die moonraker.conf Folgendes eintragen:
Den Drucker im Browser öffnen (fluidd).
—> Konfiguration, {..}-Symbol —> moonraker.conf öffnen
Am Ende den Code einfügen:
[timelapse] output_path: ~//timelapse/ frame_path: /tmp/timelapse/ [update_manager timelapse] type: git_repo primary_branch: main path: ~/moonraker-timelapse origin: https://github.com/mainsail-crew/moonraker-timelapse.git managed_services: klipper moonraker
Speichern und Neustarten!
Einstellungen
Und wie kann ich das nun bedienen?
Es gibt zwei neue Punkte unter fluidd:
- Zeitraffer im Hauptmenü
Hier startet man die Zeitrafferaufnahme manuell - Einstellungen –> Zeitraffer
Hier findet man alle Einstellungen
Ich stelle das Parken des Druckkopfes aus. Das bremst den Druck doch sehr stark aus.
Als Zielvorgabe für die Länge eines Videos nehme ich 20 Sekunden, das sollte mehr als ausreichend sein.
Timelapse automagisch starten
In Eurem Slicer müsst ihr etwas in den „Before-Layer change G-Code“ und den „Machine end G-Code“ eintragen, wenn Ihr automatisch jeden Druck mit einer Timelapse-Aufnahme begleiten wollt.
Ich habe mir dazu einfach eine Kopie meines normalen Druckers erstellt und sie am Ende mit der Bezeichnung TIMELAPSE versehen.
Before Layer Change:
TIMELAPSE_TAKE_FRAME
Machine End G-Code:
TIMELAPSE_RENDER
RAM-Disk?
Ja, der Ender KE hat einen eMMC-Speicher, der zwar nicht so robust und schnell wie eine SSD ist, aber doch deutlich schneller und zuverlässiger als SD-Karten oder USB-Sticks. Der Einsatz einer RAM-Disk ist nicht zwingend nötig, würde aber sicher auch nicht schaden.
Wir sind noch auf dem Drucker als root angemeldet.
Wir erstellen einen Einhängeunkt für unsere RAM-Disk mit folgendem Befehl:
mkdir /media/ramdisk
Jetzt wollen wir, dass alle, auch der Mainsail-Prozess auf diesen Ordner zugreifen kann.
chmod 777 /media/ramdisk
Für eine Zeitrafferaufnahme benötigen wir noch die Ordner für das Timelapse-Video und für die Einzelbilder:
mkdir /media/ramdisk/timelapse /media/ramdisk/frames
Nun soll die RAM-Disk bei jedem Start des Druckers eingehängt werden. Dazu fügen wir der Datei /etc/fstab eine Zeile hinzu, die dies bewirkt.
echo "tmpfs /media/ramdisk tmpfs defaults,size=20% 0 0" >> /etc/fstab
Größe?
Du fragst Dich jetzt, was „20%“ bedeuten sollen, richtig? Maximal soll die Timelapse-Funktion 20 % des verfügbaren Arbeitsspeichers einnehmen. Das sind im Falle des Ender3 V3 KE 64 MB.
Ja, Megabyte! Der Creality Ender3 V3 KE hat einen Arbeitsspeicher von nur insgesamt 328 MB.
Gut, ein Bild hat eine Größe von um die 50 KB, wenn die Auflösung der Webcam 720p beträgt. Wir bekommen also rund 1.300 Bilder, bzw. Layer in die RAM-Disk. Bei einer Druckauflösung von 0,2 mm entspricht das einer Höhe des Druckobejekts von rund 28 cm. Der Ender3 V3 KE kann nur 24 cm hoch drucken, also sind wir so auf der sicheren Seite.
Was passiert aber, wenn die RAM-Disk trotzdem vollläuft, oder der RAM von Klipper benötigt wird?
Keine Sorge, das tmpfs (temporäres Filesystem) schreibt in solchen Fällen den Inhalt der RAM-Disk in das Swap-File auf dem eMMC. Der Drucker sollte nicht abstürzen oder hängen bleiben.
Trotzdem solltet Ihr Eure Zeitrafferaufnahmen zeitnah herunterladen und dann auch löschen.
Pfade anpassen!
Wir müssen wieder die Moonraker.conf ändern und zwar die Pfade für die Videos und die Bilder!
output_path: /media/ramdisk/timelapse/ frame_path: /media/ramdisk/frames/
Diese sollen natürlich auf der RAM-Disk sein.
Spaghetti-Erkennung
Über das Helper-Script geht das ebenfalls ganz einfach. Dazu benötigt Ihr aber einen Obico-Account. Während der Installation werdet Ihr durch die Verbindung geführt. Zuerst muss aber Entware installiert werden: 4 eingeben.
Jetzt Moonraker Obico, also 12 eingeben.
Nach einer langen Weile will er dann, dass wir einen eigenen Server angeben, oder diese Website aufrufen: https://app.obico.io/
Da wir noch keinen eigenen Server haben, nehmen wir den offiziellen Server und drücken dafür auf die Enter-Taste.
Dann passiert Folgendes:
Wieder Enter eingeben.
Auf die Website von Obico wechseln und Klipper auswählen.
Link now? Ja, klar!
Moonraker Obico ist bereits installiert, also klicken wir auf „Next“.
Und da ist er auch schon! Wir klicken auf „Link“:
Einen sprechenden Namen geben wir auch ein!
Wir checken den Printer Feed out, der noch leer ist, da wir nicht drucken.
Im Terminal beenden wir mit „q“ noch das Helper-Script.
Fertig!
Wenn jetzt ein Druckfehler erkannt wird, bricht Obico Remote über das Internet den Druckauftrag ab. Das geht schnell, also nicht wundern und fluchen, dass der Drucker nichts mehr druckt, sondern mal bei Obico vorbeischauen.
Ein Hinweis, daß man über das Panel „rooten“ muss, sollte noch rein.
Zusätzlich:
-r funktiert nicht beim mjpeg-streamer
Die Kamera wird auch in der original Webanwendung angezeigt, also ganz ohne Mainsail und co.
Gruß
Thomas
Danke für den Hinweis. Deswegen fragte ich ja nach Feedback. :-)
Habe es geändert.
Was macht -r? Du kannst den Stream doch auch so über etwa den VLC sehen: http://IP-DEINES-DRUCKERS:8080/?action=stream
-r ist resolution, die Auflösung. Der Default sind magere 640×480 Pixel.
Ist insbesondere doof in der Creatly Print Anwendung, weil da das Seitenverhältnis nicht stimmt.
Ich kann gut damit leben
In der Creality App? Hmmm, die habe ich wieder runtergeworfen. Versuche doch einmal im Helper-Script fluidd oder Mailsail statt das Creality Webinterface auf Port 80 zu setzen. Customize und Remove. Vorher aber fluidd oder Mainsail installieren. In beiden Anwendungen ist das Seitenverhältnis korrekt. Schätze, dass die Nebula-Cam ein anderes Bildformat hat.
Hallo Hessi,
Vielen Dank für die tolle Anleitung.
Meine Logitech C920 hatte perfekt funktioniert.
Seitdem ich jedoch Mainsail und Fluidd update durchgeführt habe funktioniert die Cam nicht mehr.
Im Mainsail kann ich die Camera hinzufügen, vorschau wird auch angezeigt beim hinzufügen der Cam, jedoch im Dashboard wird Sie einfach nicht angezeigt. Es ist auch kein Tab vorhanden für die Cam zum konfigurieren des Dashboards.
In Fluidd kann ich die Kamera zwar hinzufügen oder löschen, erscheint dann aber immer ein Warndreieck neben der Cam und sie wird automatisch deaktiviert.
Wenn ich über den browser auf den stream zugreife wird jedoch ein Bild angezeigt.
http://xxx.xxx.x.xxx:4408/webcam/?action=stream
http://xxx.xxx.x.xxx:4409/webcam/?action=stream
Auf beiden Ports.
Ich habe auch schon im Internet gesucht nach einer Lösung, komme aber nicht weiter.
Kannst Du mir einen Tipp geben wo ich den Fehler suchen muss?
Kannst Du bitte mal nachsehen, ob der Webcam-Dienst auch gestartet ist?
Hallo Hessi,
Der Dienst scheint zu laufen, ich kann via web auf den Stream zugreifen. In Mainsail wir beim hinzufügen der Cam der Stream in der Vorschau angezeigt. Sowohl auf Port 4408 (Fluidd) wie auch auf Port 4409 (Mainsail).
Ich erhalte eine Fehlermeldung beim entfernen der Cam in Fluidd, invalid Argument: Name. Die Cam wird dann auch nicht entfernt, ich kanns Sie nur via Mailsail Web löschen.
zur info, ich bin ein newbe in Linux, evtl. muss Du mir erklären wie ich prüfen kann ob der Webcam Dienst läuft
Update,
Ich konnte das Problem lösen indem ich moonraker mit HELPER SCRIPT FOR CREALITY KE SERIES de-installiert und neu installiert habe.
Nun funktioniert alles wie es soll.
Es werden auch alle updates in Fluidd und Mainsail angezeigt (nach modifikation des moonraker.config, der update part für Fluidd und Mainsail waren deaktiviert)
Creality-Helper-Script
v0.0.0-3-g42af6615-inferred
AKTUELL
fluidd
v1.29.1
AKTUELL
klipper
AKTUELL
mainsail
v2.10.0
AKTUELL
moonraker
v0.8.0-325-g99b97afc
AKTUELL