Tutorial: Kabellos Drucken mit ESP8266 01S

Für den Anschluss habe ich ein preiswertes ESP8266 01S Modul gekauft, was auch auf dem Modul aufgedruckt stehen muss.
 Gekauft habe ich das Modul bei, Eckstein-Komponente https://eckstein-shop.de/ESP8266-ESP-01S-ESP-01-Update-Version-Serial-WIFI-Wireless-Remote-Control-Module.

Alternativ von amazon.de*

Damit sich das Modul einfach mit einem 5v seriellen Port auf einem Controller-Board verbinden lässt, habe ich einen ESP-01 Adapter* verwendet.

So sieht es in Kombination aus

Mit der Arduino IDE  das Projekt https://github.com/MajenkoProjects/WiFiSerialDTR

Nachtrag:

https://github.com/maxl95/WiFiSerialDTR_AutoConnect?fbclid=IwAR3C2xfUXREfngF_AVj6Mc4m6mhhnkeMNwVmDlEr6Znbyni2ZNRbNeMN8YM von Maximilian Fischer öffnen. Hierzu ist zu sagen das eine Konfigurationsseite für das Wifi automatisch geöffnet wird, sobald kein bekanntest Netzwerk zu finden ist. Alle vorhandenen WiFi’s werden aufgelistet und können ausgewählt werden.
Um später auch wieder auf die Konfigurationsseite zu kommen, muss die IP des ESP8266 über dessen IP, z.B. 192.168.1.x/_ac aufgerufen werden. Damit ist jederzeit ein Wechsel des Wlan möglich.
Maximilian Fischer möchte ich besonders danken, da er das Github-Projekt von „Majenko“ und https://hieromon.github.io/AutoConnect/index.html zusammengeführt hat.

Oder auch https://atadiat.com/en/e-esp8266-esp32-wifi-serial-bridge-converter/#Prepare_The_Software-2 heruntergeladen und mein WLAN mit SSID und Passwort im Arduino-Sketch eingetragen.

Es ist auch möglich das Modul als Accesspoint zu betreiben.

Der mit dieser Firmware erstellte COM-Port ist dann über 192.168.x.x:23 ansprechbar.

Repetier-Server lies sich problemlos verbinden und Pronterface auch.

Bei Pronterface wird im Feld Port die IP plus Port angegeben, in meinem Fall 192.168.1.74:23 und mit 115200 verbunden.

Mit Simplify3D gestaltet sich das etwas schwieriger, da es dort nicht möglich ist etwas anderes als einen „echten“ COM-Port einzutragen. Mir kam dann die Idee nach einer freien Software zu suchen, die auf dem PC aus dem WiFi-Port eine COM-Schnittstelle emuliert.

Dazu wurde  https://www.hw-group.com/product-version/hw-vsp3-single verwendet, was Freeware ist.

Ab hier wird es auch für die Benutzer von ESP3D interessant, denn ESP3D liefert einen COM-Port auf dem Port 8888!

 

 

Nun wurde Simplify3D getestet und tatsächlich verbindet sich S3D über den virtuellen Port mit dem WiFi-Modul und der Drucker lässt sich einwandfrei benutzen.

Die Auflistung der COM-Ports zeigt COM7 und NULL_COM7 an. Das ist der Port COM7 den ich als virtuellen COM-Port vorgegeben habe.

Im Moment muss das Modul noch manuell an ein vorhandenes WLAN gekoppelt werden, was nur durch ein erneutes Flashen des ESP8266 01S geht, oder aber es wird im Accesspoint-Modus verwendet.
Mit dem Programmierer hatte ich Kontakt aufgenommen, um eventuell an der Stelle Abhilfe zu schaffen.
Leider war der nicht besonders freundlich und es bleibt im Moment nur der Weg über die hartcodierten WiFi-Einstellungen zu gehen.
Die Einzelheiten zum Programmieren des ESP8266-01S führe ich hier nicht auf.
Wer eine Firmware auf einen Controller flashen kann, bekommt das auch hin.
Für Fragen stehen wir gerne zur Verfügung, Wer andere Möglichkeiten findet, die das Einstellen des ESP8266-01S, komfortabler machen, teilt uns das bitte mit.
Wir werden unser Tutorial entsprechend ergänzen.
Wer in der Lage ist den Sketch so umzuschreiben, dass die Wifi-Einstellungen ohne harte Codierung zu ändern sind, darf uns sein Ergebnis auch gerne zukommen lassen.
Ideen mit EEPROM-Ablage oder als Configdatei mit Unterstützung von SPIFFS, hatte ich schon.

Leider ist es recht viel Aufwand das so zu gestalten. Auf  https://github.com/tzapu/WiFiManager sind

Grundlagen zur Einbindung in vorhandenem Code zu finden.

Wer den Wifi-Port direkt in einem Raspberry einbinden möchten, kann das relativ einfach mit SOCAT   bzw. NETCAT bewerkstelligen.

Software Links:

http://www.eterlogic.com/Products.VSPE.html
https://freevirtualserialports.com/
https://www.hw-group.com/product-version/hw-vsp3-single
https://github.com/MajenkoProjects/WiFiSerialDTR

3D-Druck Grundwissen: Das Hotend

Das Hotend ist eines der wichtigsten, wenn nicht sogar das Wichtigste Bauteil des 3D-Druckers.
In ihm wird der feste Kunststoffaden (Filament) verflüssigt und durch eine Düse (Nozzle) auf die Druckplattform aufgetragen. Das Hotend besteht dabei nicht nur aus einem „heißen Ende“, wie es der Name vermuten lässt, sondern aus mehreren Bauteilen, die wir Euch hier näher erklären wollen.

Der Aufbau eines 3D Drucker Hotends – Infografik von Sercan Kahraman, CC-BY-SA; Bildquelle: threedom.de

Coldend

Das Coldend besteht meist aus einem gedrehten oder gefrästen Alukörper.
Dieser kann in verschiedensten Formen und Variationen ausgeführt sein, hat jedoch immer dieselbe Funktion: er kühlt das Hotend (klingt komisch, ist aber so) und sorgt dafür, dass sich das Filament nicht zu früh im Inneren des Hotends verflüssigt.
Das Coldend sollte immer aktiv gekühlt werden, was meistens mit einem kleinen Axiallüfter geschieht.
Es gibt aber auch Hotends die ein wassergekühltes Coldend besitzen.

Liner

Im Inneren des Hotends befindet sich ein Teflonschlauch, auch Liner, PTFE-Schlauch oder Tube genannt. Bei Bowdensystemen verbindet dieser zusätzlich den Extruder mit dem Hotend.
Die Aufgabe des Liners ist, einen reibungsfreien Durchlass des Filaments im Hotend zu gewährleisten. Bei 1,75mm Filament hat der Liner meistens einen Aussendurchmesser von 4mm und einen Innendurchmesser von 2mm.
Das besondere an Teflon ist seine gute Gleiteigenschaft bei gleichzeitiger Hitzeresistenz.
Doch Achtung ab 275°C zersetzt sich das Teflon und es entstehen gesundheitsgefährdende Stoffe.

Heatbreak (Throat)

Die Heatbreak verbindet das Cold- mit dem Hotend bzw. dem Heizblock. Die Heatbreak ist das wichtigste Element des Hotends, da hier die Wärmeübertragung von heißer zu kalter Seite gebrochen wird, wie ja auch der Name schon sagt.
Hier passiert der Übergang von festen zum flüssigen Material, bevor das Filament aus der Düse austritt.

Je nach Anwendungsfall gibt es verschiedene Ausführungen der Heatbreak. Es gibt Versionen, bei denen der PTFE-Liner integriert ist, es gibt Versionen, wo der Liner durchgeschoben wird und es gibt Versionen, die auf einen PTFE-Liner im Inneren verzichten.
Die zuletzt genannte Version nennt sich auch Full-Metall oder All-Metall-Heatbreak.
Der Vorteil von Full-Metall-Heatbreaks ist, dass, dadurch das der Liner nicht bis in den Heizblock reicht, Temperaturen von über 275°C eingestellt werden können.

Heizblock mit Thermistor Quelle: e3d-online.com

Heizblock

Der Heizblock ist quasi das „heiße Ende“ des Hotends. Zumeist ist der Heizblock aus Aluminium gefertigt und ist Aufnahme für Heizpatrone, Temperatursensor, Heatbreak und Düse.
Je nach Ausführung wird der Temperatursensor (Thermistor oder Thermocoupler) gesteckt, geklemmt oder geschraubt.
Neben der Aluminium Version gibt es auch noch andere Materialien, wie zum Beispiel Kupfer, die für den Heizblock verwendet werden.

Die Heizpatrone

Die Heizpatrone besteht oft aus einem edelstahlummantelten, keramischen Heizelement. Der Durchmesser der meisten Heizpatronen ist 6mm mit einer Länge von 20mm.
Je nach Netzteilspannung wird eine Heizpatrone mit 12V oder 24V eingesetzt.

Da die Heizpatrone des Öfteren mal den Dienst quittiert, empfiehlt es sich mindestens eine Patrone in Reserve zu haben.

Temperatursensor

Mit dem Temperatursensor wird die Temperatur des Heizblocks ständig überwacht und an das Steuerungsboard gesendet.
Es gibt hier diverse Versionen wie der Sensor ausgeführt ist. Es gibt Thermocoupler, Thermistoren und noch eine ganze Reihe mehr.
Die meisten DIY und China 3D-Drucker besitzen einen PT100 NTC Thermistor.

Der Temperatursensor wird oft mit der Heizpatrone zusammen im Heizblock verklemmt oder daneben festgeschraubt.
Sollte einmal der Temperatursensor verrutschen oder defekt sein, kann es ganz schnell zu einer Überhitzung des Heizblocks, dem Thermal Runaway, kommen. Daher unbedingt auf den ordentlichen Sitz achten.

Quelle: https://dabai.rocks

Düse

Klein, unscheinbar und doch von größter Bedeutung. – Die Nozzle.
Meist ist die Düse aus Messing gefertigt und besitzt auf einer Seite ein Gewinde mit dem sie in den Heizblock geschraubt wird.
Als Standard hat sich ein Düsendurchmesser von 0,4mm etabliert.
Es gibt aber auch Düsen aus Edelstahl, gehärtete Düsen und Düsen mit Edelsteinen, die besonders bei abrasiven Materialien eingesetzt werden. Neben den unterschiedlichen Materialien gibt es auch noch eine große Anzahl verschiedener Durchmesser, die eine Düse haben kann.

Extruder einstellen (E-Steps kalibrieren) – denn es kommt doch auf die Länge an

Immer wieder lesen wir, dass einige von Euch Probleme mit Unter- oder Überextrusion haben.
Oft ist einfach nur ein falsch oder schlecht kalibrierter Extruder schuld.

In diesem kleinen How-To wollen wir Euch zeigen, dass das Einstellen kinderleicht und schnell gemacht ist.

Das Wichtigste vorab: Um den Extruder einzustellen sollte das Filament frei austreten können, das heißt, dass Ihr bei einem Bowden-Setup den Teflonschlauch aus dem Push-Fit (Verschraubung) entfernt und das Filament nicht durch das Hotend läuft.
Bei einem Direktextruder solltet Ihr die Düse entfernen, damit das Filament frei austreten kann.
Der Hintergrund ist, dass wir den Extruder und nicht das ganze Setup inkl. Düse kalibrieren wollen.

Die ganze Kalibrierung sollte am besten über OctoPrint, Repetier-Server oder ein anderes Programm erfolgen mit dem Ihr Zugang zum Kommunikationsterminal Eures Druckers habt.
Natürlich ist es auch möglich das Ganze ohne Terminal zu machen, aber einfacher und schneller geht es natürlich mit.

Filament ohne Aufwärmen fördern

Damit Ihr den Extruder auch im kalten Zustand kalibrieren könnt, gibt es einen schönen Befehl in Marlin, mit dem die Funktion PREVENT_COLD_EXTRUSION umgangen werden kann.

Gebt hierfür in Euren Terminal den Befehl M302 S0 ein, um die Temperaturkontrolle auszuschalten

M302 S0

Filament fördern und messen

Es gibt mehrere Möglichkeiten das Filament zu fördern und anschließend zu messen. Wir persönlich nutzen eine Methode, bei der wir ein klein wenig Filament verschwenden.
Diese wollen wir euch hier näher beschreiben.

Als erstes schiebt Ihr das Filament durch den Extruder und klemmt es mit dem Förderrad fest.

Jetzt schiebt das Filament so weit nach vorne, bis ein kleines Stückchen aus der Push-Fit Verschraubung herausschaut und schneidet es bündig mit der Aussenkante des Push-Fit ab.

Mit der Maschinensteuerung fördert jetzt genau 100mm Filament durch den Extruder und schneidet dieses wieder bündig am Push-Fit ab.

Um das Material zu fördern gibt es je nach Programm unterschiedliche Vorgehensweisen.
Bei Simplify3D ist es ganz einfach.

Hier müsst Ihr im Geräte Bedienfeld mit den Tipp-Kontrollen die 100mm extrudieren lassen.
Bei anderen Programmen kann es sein, dass man vielleicht mehrmals eine bestimmte Länge extrudieren muss (z.B. 5 x 20mm).

Jetzt wird der geförderte Strang mit einem Messschieber oder einem Lineal vermessen.
Das Ergebnis der Messung notiert Ihr Euch und benutzt unsere Berechnungstools um den Kalibrierungsfaktor zu ermitteln.

Werte testen

Nachdem Ihr den korrigierten Wert aus unseren Berechnungstools erhalten habt, wird dieser mit dem Befehl M92 Exxx (die xxx-Werte durch den neuen Wert ersetzen) in das Terminal eingetragen.

M92 Exxx

Jetzt müsst Ihr mit den korrigierten Werten noch einmal 100mm Filament fördern lassen und wieder, wie zuvor beschreiben vermessen.

Solltet Ihr mit dem Ergebnis zufrieden sein, dann notiert Euch die neuen Extruder-Steps. Anderenfalls wiederholt nochmal die zuvor beschriebenen Schritte, bis Ihr ein zufriedenstellendes Ergebnis habt.

Werte eintragen

Hier gibt es mehrere Möglichkeiten, die je nachdem, ob Euer Drucker ein offenes oder geschlossenes EEPROM hat, variieren.

Eintragen über EEPROM

Das Eintragen über das EEPROM geht, wenn es denn offen ist am Schnellsten.
Mit dem Befehl M92 Exxx und den vom Euch ermittelten Werten könnt Ihr den Wert direkt per Terminal an den Drucker übertragen und mit M500 das ganze Speichern.

Bitte nicht vergessen, mit M302 S170, die PREVENT_COLD_EXTRUSION wieder einzuschalten.

M92 Exxx
M302 S170
M500
Eintragen über Start-Code

Ein weiterer Weg die neuen Extruder-Steps einzutragen, ist dies über den Start-Code eures Slicer zu machen.

Hierfür tragt Ihr einfach den M92 Exxx Befehl in einer neuen Zeile in den Start-Code ein.

M92 Exxx
Eintragen über configuration.h

Die eleganteste Möglichkeit ist, dass Ihr den Wert direkt in Marlin in die configuration.h eintragt.
Hier müsst Ihr die folgende Zeile suchen:

#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 400, 93 }

Dort tragt Ihr dann den Wert für den kalibrierten Extruder (in diesem Fall E1) ein.

Wichtig: Bei allen Werten, die Ihr eintragt, darf kein Komma vor den Dezimalstellen stehen, sondern ein Punkt.

Jetzt solltet Ihr einen perfekt kalibrierten Extruder haben.

In einem weiteren Beitrag werden wir später auf die Extrusionswerte Eures Slicer eingehen, denn mit diesen könnt Ihr nun das Feintuning machen.

Wir hoffe Euch hat dieser Beitrag gefallen und Ihr empfehlt ihn weiter.

Tutorial: Repetier Server V 0.90.1 mit SSD-Speicher

Repetier-Server ist eines meiner Lieblingsthemen beim 3D Druck.
Nachdem mich die SD-Karten ziemlich annervten, wollte ich den Server auf einer SSD unterbringen.
Versuche, das zu dem Zeitpunkt verfügbare Image, auf so ein Teil zu flashen scheiterten leider.

Die übliche Vorgehensweise die config.txt so einzurichten, dass die richtige Laufwerksbezeichnung eingesetzt wurde funktionierte auch nicht.
Dann fand ich ein Tutorial (https://www.randombrick.de/raspberry-pi-3-von-usb-sticks-und-ssd-festplatten-booten/), dass eine andere Möglichkeit bot die SSD ans Laufen zu bekommen.
Das hat sogar funktioniert und die Geschwindigkeit mit der der Raspberry und Repetier-Server dann unterwegs sind, ist klasse.

Ja, aber einen Haken hatte die Geschichte und ich habe wie ein Blöder gesucht, warum der Druck mittendrin einfror.
Das passierte recht häufig und nervt natürlich, denn nur die Mechanik blieb stehen und die Heizungen machten fleißig weiter.
Gegencheck mit einer SD-Karte und identischem Image lief sauber.

Dann kam das neue Update vom Repetier-Server auf 0.90.1 und ich war gespannt, ob meine SSD direkt zu Flashen geht.
Es geht und die SSD startete sofort ohne Änderungen von Laufwerksbezeichnungen. Nur das Display musste wieder eingestellt werden, was aber immer gemacht werden muss.
Meine persönlichen Anpassungen für die Funksteckdose liefen einwandfrei nach dem schönen Tutorial auf https://selbstgedruckt.de/funksteckdosen-repetier
Die Funksteckdose schaltete sofort über die Weboberfläche. Die zusätzlichen Gcode-Befehle arbeiten auch.

Was überraschender Weise nicht funktionierte, war der manuelle Aufruf der Skripte mit dem User „pi“, der aber als Benutzer für die Anpassungen verwendet wird. Im Verzeichnis raspberry-remote konnte der Befehl „send“ genutzt werden, aber über eine Ansteuerung aus einem anderen, übergeordneten Pfad wollte das Teil einfach nicht.
Da ich nun nicht der Linuxprofi bin, konnte ich mir das nicht erklären. Die Funktion im Server ist zwar da, aber das hat genervt.

Durch Zufall habe ich dann herausgefunden, dass es nur funktioniert, wenn die den sonst nötigen „.“ (Punkt) vor dem Befehl weggelassen habe.
Damit ich auch zufrieden bin, habe ich die Skripte angepasst und für den Benutzer „pi“ im Bashskript eine Abfrage eingebaut, die abfragt welcher Benutzer aufgerufen hat und dann über eine IF-Anweisung zwei verschieden Befehle steuert.

Ich habe mir inzwischen erklären lassen, dass es mit einer Vorsichtsmaßnahme für den Superuser zusammenhängen soll und das von diesem nicht zufällig ausgeführt wird und eventuelle Schadsoftware das System beschädigen kann. Verifizieren kann ich das im Moment nicht.

Alles lief und dann der Blick auf den Speicher des Pi. Der Befehl „free“ im Terminalfenster zeigte dann den beruhigenden Wert unter „available“ an.

Nicht mehr ca. 40.000 sondern >700.000 wurde beim Druck angezeigt und auch die Vorschau des Werkzeugweges im Steuerungsfenster lief wieder flüssig.

Zusätzlich noch eine Webcam dran und trotzdem kein Leistungseinbruch.

Fazit: Ich bin begeistert und sehr zufrieden. Das neue Update kam also zum richtigen Zeitpunkt. Die verwendete SSD ist im Foto zu sehen. Der Adapter nennt sich „mSATA SSD Erweiterungs-Platine für den Raspberry Pi“ und die benötigte SSD „Mini mSATA 3 1,8 Zoll SSD Solid State Drive

Tutorial: Funksteckdosen mit Repetier-Server schalten

 

Vorwort

Zuerst möchte ich anmerken, dass ich mich an die Anleitung von Philipp Seidel gehalten habe.
Diese Anleitung ist für den OctoPrint Printserver gedacht und funktioniert auf dem Repetier-Server aber auch so, benötigt aber einige zusätzliche Einstellungen.
https://blog.seidel-philipp.de/anleitung-3d-drucker-mit-octoprint-einschalten-und-ausschalten

Herzlichen Dank an Philipp Seidel für die wichtige Vorarbeit!

Das wird benötigt

Als besonderen Bonus haben wir einen Gutscheincode über 15% Rabatt für den Kauf des Repetier-Servers Pro erhalten.
Der Gutscheincode lautet „selbstgedruckt“ und ist bis zum 31.08.2018 gültig.
https://www.repetier-server.com/

Codierung der Funksteckdose

  • Den SystemCode (hausinterner Code) der Funksteckdose* stellen wir auf 10101.
  • Den Unitcode, die eindeutige Adressierung der Steckdose, wird mit den DIP-Schaltern auf 10000 (A) eigestellt. Damit wird die Adresse Steckdose als „D“ oder „4“ definiert.
Codierschalter der Funksteckdose

Anschlussplan des Sendemoduls an den Raspberry Pi

Anschlussbelegung an den Raspberry PI – Quelle http://www.raspberrypi-spy.co.uk

Die Anschlüsse werden wie folgt verbunden:

GND vom Sendemodul an -> GND des Raspberry
DATA vom Sendemodul an -> GPIO-PIN 17 des Raspberry
5V (VCC) vom Sendemodul an -> 5V des Raspberry

Raspberry Pi mit angeschlossenem Sendemodul

Software

Die benötigten Komponenten auf dem Raspberry werden wie folgt installiert:
Software für die Installation ist Putty und WinSCP

Installation.

Als Benutzer ‚pi‘ auf dem Raspberry Pi per Putty anmelden. (Das Passwort ist meistens: ‚raspberry‘)

Git installieren und WiringPi, mit dem die GPIO-Pins des Raspberry Pi gesteuert werden

Da für die Installation noch einige elementare Module im Repetier-Server Image fehlen, müssen diese vorher mit den folgenden Befehlen installiert werden:

sudo apt-get update
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install make
sudo apt-get update
sudo apt-get install git
sudo git clone git://git.drogon.net/wiringPi
cd wiringPi
sudo ./build
Raspberry-Remote installieren
cd
sudo git clone git://github.com/xkonni/raspberry-remote.git
cd raspberry-remote
sudo make send

Anpassungen für Repetier-Server

Nun kommen wir hier zu den benötigten Anpassungen, damit der Benutzer „repetierserver“ auch die Funktionen benutzen kann.
Der User „repetierserver“ muss als sogenannter „sudoer“ deklariert werden und Rechte auf verschiedene Verzeichnisse und den „send“-Befehl bekommen.
Das ist einiges an manueller Tipperei. Hier die Befehle und bitte darauf achten, dass beim ersten „echo“ nur ein „>“-Zeichen verwendet wird und ab dem zweiten „echo“ dann bitte so „>>“ :

sudo -s
echo "repetierserver ALL=NOPASSWD: /home/pi/raspberry-remote" > /etc/sudoers.d/repetierserver-remote 
echo "repetierserver ALL=NOPASSWD: /home/pi/raspberry-remote/send" >> /etc/sudoers.d/repetierserver-remote 
echo "repetierserver ALL=NOPASSWD: /home/pi/autopoweroff.sh" >> /etc/sudoers.d/repetierserver-remote 
echo "repetierserver ALL=NOPASSWD: /home/pi/autopoweron.sh" >> /etc/sudoers.d/repetierserver-remote 
echo "repetierserver ALL=NOPASSWD: /home/pi" >> /etc/sudoers.d/repetierserver-remote

Im Nachhinein habe ich festgestellt, das mit sudo visudo -f /etc/sudoers.d/repetierserver-remote die Datei auch erstellt werden kann.
Üblicherweise öffnet sich dazu der „nano“ Editor. Innerhalb des Editors gibt es einige rudimentäre Befehle einer Textverarbeitung.
Die aktulle Zeile kann mit Ctrl-K ausgeschnitten und mit Ctrl-U wieder eingefügt werden. Damit sind dann nur noch einige Angaben zu ändern.
Mit Ctrl-O wird gespeichert und anschließend mit Ctrl-X der Editor verlassen.

repetierserver ALL=NOPASSWD: /home/pi/raspberry-remote/send
repetierserver ALL=NOPASSWD: /home/pi/raspberry-remote
repetierserver ALL=NOPASSWD: /home/pi/autopoweron
repetierserver ALL=NOPASSWD: /home/pi/autopoweron.sh
repetierserver ALL=NOPASSWD: /home/pi/autopoweroff
repetierserver ALL=NOPASSWD: /home/pi/autopoweroff.sh
repetierserver ALL=NOPASSWD: /home/pi
repetierserver ALL=NOPASSWD: /usr/bin/python

Befehle für Repetier-Server einrichten

Auch das Schalten aus dem Gcode funktioniert mit selbstdefinierten Befehlen.
Wichtige Grundlage ist die Anpassung der extcommands.xml, die wie folgt aussehen sollte:

<config>
<!-- If you want to run external commands, enter them in this configuration with
full path. You will see them in the main menu. Copy this file into the
<storage>/database directory.
Security consideration: The reason there is no online editor for this is simply
security. The commands you enter here are executed with the privileges of the
daemon running the server. If you would allow online configuration, a hacker could
simply add any command he needs to hack your system. -->
<command>
<name>Shutdown Server</name>
<execute>sudo /sbin/shutdown -h now</execute>
<confirm>Really shut down the server?</confirm>
<!-- Define if command should show up in local printer interface, default true.-->
<local>true</local>
<!-- Define if command should show up in remote printer interface, default true.-->
<remote>true</remote>
<!-- Define if command should show up only for users with print permission, default true.-->
<print-permission>true</print-permission>
<!-- Define if command should show up only for users with add files permission, default false.-->
<add-permission>true</add-permission>
<!-- Define if command should show up only for users with del files permission, default false.-->
<del-permission>true</del-permission>
<!-- Define if command should show up only for users with configuration permission, default false.-->
<config-permission>true</config-permission>
</command>
<command>
<name>Reboot Server</name>
<execute>sudo /sbin/shutdown -r now</execute>
<confirm>Really reboot the server?</confirm>
<!-- Define if command should show up in local printer interface, default true.-->
<local>true</local>
<!-- Define if command should show up in remote printer interface, default true.-->
<remote>true</remote>
<!-- Define if command should show up only for users with print permission, default true.-->
<print-permission>true</print-permission>
<!-- Define if command should show up only for users with add files permission, default false.-->
<add-permission>true</add-permission>
<!-- Define if command should show up only for users with del files permission, default false.-->
<del-permission>true</del-permission>
<!-- Define if command should show up only for users with configuration permission, default false.-->
<config-permission>true</config-permission>
</command>
<command>
<name>Drucker_Strom_an</name>
<execute>./home/pi/autopoweron.sh</execute>
</command>
<command>
<name>Drucker_Strom_aus</name>
<execute>./home/pi/autopoweroff.sh</execute>
</command>
<command>
<name>Testmail</name>
<execute>python /home/pi/Druckerfertig.py</execute>
</command>
<execute name="poweron" allowParams="true">./home/pi/autopoweron.sh</execute>
<execute name="poweroff" allowParams="true">./home/pi/autopoweroff.sh</execute>
</config>

Weitere Dateien

Im Verzeichnis /home/pi müssen die Skriptdateien autopoweron.sh und autopoweroff.sh stehen. Diese müssen mit dem Befehl ‚chmod +X autopoweron.sh‚ bzw. ‚chmod +X autopoweroff.sh‚ ausführbar gemacht werden.

Die Datei autopoweron.sh hat folgenden Inhalt:

#!/bin/bash
sudo ./home/pi/raspberry-remote/send 10101 4 1

Die Datei autopoweroff.sh hat folgenden Inhalt:

#!/bin/bash
 sudo ./home/pi/raspberry-remote/send 10101 4 0

Nutzung der zusätzlichen Funktionen im Gcode

Nutzung der zusätzlichen Funktionen im Gcode

@execute poweron
@execute poweroff

Diese Befehle veranlassen den Repetierserver dann entsprechend die Funksteckdose an oder auszuschalten.
Um die Befehle automatisch direkt von einem Slicer im Gcode einzubauen, werden diese Befehle im Scriptteil vom Slicer z. B. Simplify3D eingetragen.

Das Anschalten „poweron“ muss am Anfang des Scripts eingefügt werden
{PREPEND „@execute poweron \n“} und wird durch den Postprozessor Befehle {PREPEND „xxxx“} gesteuert.

{APPEND „@execute poweroff\n“} für das Ausschalten muss dann am Ende stehen und wird über den Befehle {APPEND „xxx \n“}. Mit der Zeichenkombination „\n“ wird eine Zeilenschaltung gemacht.

Einbinden der Befehle in Simplify3D
Hinweis

Damit das Abschalten des Druckers nicht zu schnell stattfindet und das Druckbett vom Extruder weggefahren ist, muss auf die vollständige Abarbeitung des Gcodes geachtet werden.
Damit dies gewährleistet werden kann, ist z.B. nach dem Fahrbefehl ein M400 notwendig.
Damit wird der Controller angewiesen mit der Abarbeitung des Gcodes zu warten, bis der vorige Befehl abgearbeitet ist.
Die Stelle im Endscript ist gelb markiert.

Tutorial als PDF

Anleitung als PDF: Tutorial-Funksteckdosen-für-den-Repetierserver

Funksteckdose Repetier

Tutorial: Installation von Klipper

Immer öfter konnte man in Foren, sozialen Netzwerken usw. lesen, dass es eine neue Art Firmware gibt.
Das Besondere daran ist, dass nur ein ganz kleiner Teil Firmware auf dem Drucker installiert wird und der Rest über einen externen Controller, wie z.B. dem Raspberry Pi* läuft.

Es handelt sich um ein Open Source Projekt von KevinOConnor und nennt sich Klipper. [https://github.com/KevinOConnor/klipper]

Es wird dabei auf die Unterstützung von LCD-Displays verzichtet, da alles über OctoPrint gesteuert wird.
Der andere Vorteil ist, dass nach einer Änderung der Konfiguration nicht mehr die gesamte Firmware auf den Drucker geflasht werden muss, sondern nur noch auf den Raspberry Pi* kopiert wird.

Wir haben den Versuch gestartet und Klipper auf unserem Anet AM8 Drucker installiert.
Damit Ihr das Ganze nachmachen könnt, haben wir hier dieses Tutorial für Euch geschrieben.

HINWEIS:
Alle gemachten Angaben sind ohne Gewähr auf Funktion und Richtigkeit. Für eventuell entstehende Schäden übernehmen wir keinerlei Haftung. Sämtliche Veränderungen geschehen auf Eure Verantwortung und Gefahr.

Das Tutorial ist für das Anet V1-5 Board verfasst worden. Bei anderen Boards und Herstellern bitte auf die aktuelle Beschreibung / Installationsanweisung auf https://github.com/KevinOConnor/klipper achten!

Was wird benötigt?

Fangen wir mal bei den Komponenten an, die Ihr für die Installation von Klipper benötigt:

Raspberry Pi Zero W (Wireless) & Zero Essentials Kit*
Raspberry Pi Zero W (Wireless) & Zero Essentials Kit
 Preis nicht verfügbar Jetzt auf Amazon kaufen*
Preis inkl. MwSt., zzgl. Versandkosten

So wird’s gemacht

Nachdem Ihr OctoPrint auf dem Raspberry Pi* installiert habt (eine Installationsanleitung findet Ihr übrigens hier) solltet Ihr noch einmal überprüfen, ob es irgendwelche Updates gibt und diese installieren.

Es geht los, indem Ihr mit einem SSH Client (wir haben dafür PUTTY benutzt) auf Euren Raspberry Pi* zugreift.
Diesen sprecht Ihr über die von Eurem Router vergebene IP Adresse an und logt Euch ein.

Der Benutzername sollte pi und das Passwort, sofern ihr es nicht geändert habt, raspberry sein.

Als nächstes gebt Ihr folgende Befehle im Eingabemaske ein, um die Dateien von Klipper auf Euren Raspberry Pi* zu übertragen:

git clone https://github.com/KevinOConnor/Klipper
./Klipper/scripts/install-octopi.sh

Nun sollte die Installation der Dateien beginnen und Klipper auf dem Raspberry Pi* installiert werden.

Als nächstes muss Euer Mainboard des Druckers für die Installation von Klipper vorbereitet werden.
Dafür wird Microcontroller mit einer sehr geringen Firmware beschrieben, die die Befehle an die Treiber und Motoren weitergibt.

Dafür gebt Ihr folgendes in die Eingabemaske des SSH Clients ein:

cd ~/Klipper/
make menuconfig

Es öffnet sich eine Anwendung, wo Ihr den Chipsatz, die Baudrate und die Taktrate Eures Mainboards einstellen müsst. Da jedes Board (RAMPS, Arduino Due, etc.) anders ist, solltet Ihr wissen, welchen Prozessor usw. Ihr auf dem Board verbaut habt und welche Baudrate Ihr einstellen müsst.

Für das Original Anet V1-5 Board sind die Werte übrigens wie folgt:

  • Microcontroller Atmega AVR
  • Prozessor atmega1284p <– (kann je nach Board und aktueller Installationsanweisung abweichen)
  • Taktgeschwindigkeit 16MHz
  • Baudrate 115200 <– (kann je nach Board und aktueller Installationsanweisung abweichen)

Nachdem Ihr die Werte gespeichert habt, könnt Ihr die Anwendung wieder schließen und gebt nun folgendes in die Eingabemaske ein:

make

Jetzt erstellt Klipper eine *.hex Datei, die Ihr mit dem nachfolgenden Befehlen auf den Drucker übertragen müsst:

HINWEIS: Vorher den Drucker in OctoPrint trennen, falls Ihr dies noch nicht gemacht habt.

sudo service klipper stop
make flash FLASH_DEVICE=/dev/ttyUSB0 (ACHTUNG! Hier den richtigen Port auswählen)
sudo service klipper start

Damit solltet Ihr Euer Mainboard für die Installation vorbereitet haben.

Beim Anet Board funktionierte der oben beschriebene Weg leider nicht, so dass wir folgenden Weg bestreiten mussten:

Nachdem wir

sudo service klipper stop

eingegeben haben, mussten wir für das Übertragen einen anderen Befehl verwenden:

avrdude -v -p atmega1284p -c arduino -P /dev/ttyUSB0 -b 57600 -D -U flash:w:/home/pi/Klipper/out/Klipper.elf.hex:i

Es wird die *.hex auf das Board geflasht.
Anschließend gebt Ihr noch

sudo service klipper start

um Klipper wieder zu starten.

Danach könnt Ihr über

sudo reboot

das System neu starten.

Da wir keine Linux- und RaspberryPi-Spezialisten sind, können wir Fragen zu den Befehlen nur bedingt beantworten. Wir bitten daher um Nachsicht.

Als nächstes öffnet Ihr OctoPrint und müsst dort die Einstellungen für die serielle Schnittstelle ändern. Es ist nämlich nötig für Klipper eine temporäre Serielle Schnittstelle einzurichten.

Dafür wir unter Einstellungen – Serielle Verbindung – Zusätzliche Serielle Port der Wert /tmp/printer eingetragen und der Haken bei „Bei unbehandelten Firmwarefehlern nicht nur den Druckauftrag abbrechen, sondern auch die Verbindung zum Drucker trennen.“ entfernt.

Das war es erstmal für die Installation von Klipper.

Drucker konfigurieren

Damit Klipper überhaupt weiß, wie der Drucker anzusteuern ist, muss dieser erstmal eingerichtet werden. Dies kann über mehrere Wege erfolgen.

Auf https://github.com/KevinOConnor/Klipper/tree/master/config findet Ihr Beispielkonfigurationen für verschiedene Boards und Mechaniken, die Ihr für Euren Bedarf anpassen könnt. Es sind zum Beispiel Konfigurationen für das RAMPS-Board oder für einen Core-XY Drucker vorhanden. 

Glücklicherweise konnten wir eine bereits vorkonfigurierte Datei für das Anet V1-5 Board finden, welche ihr hier herunterladen könnt.
Dort sind bereits alle Motoren, Endschalter und Sensoren (ohne ABL) definiert und müssen nicht mehr angepasst werden.

Falls doch, könnt Ihr die Datei mit einem kostenlosen Texteditor (Notepad++ o.ä.) bearbeiten und die Werte darin verändern.

Unter  https://github.com/KevinOConnor/Klipper/blob/master/config/example.cfg gibt es eine ausführlich beschriebene Beispieldatei, die alle Informationen enthält, was wie einzustellen ist. Sie dient als Grundgestell und kann natürlich ebenfalls von Euch angepasst werden.

Nachdem Ihr die Datei heruntergeladen habt, müsst Ihr diese erstmal in printer.cfg umbenennen.
Die Datei könnt Ihr an einem Ort Eurer Wahl abspeichern.

Um die Datei auf den Raspberry Pi* zu bekommen, braucht Ihr ein Datentransferprogramm (FTP Client), wie z.B. FileZilla. Es wird um Zugriff zu bekommen, wie beim SSH Client, eine Verbindung über die IP Adresse des Raspberry Pi* aufgebaut.

Benutzernamen und Passwort sind wieder pi und raspberry der Port ist 22.

Ihr sucht nun die printer.cfg und kopiert diese auf das Verzeichnis /home/pi

Nun öffnet Ihr OctoPrint und verbindet den Drucker über die zuvor angelegte Schnittstelle /tmp/printer und gebt im Terminal restart und anschließend status ein. Solltet Ihr alles richtig gemacht haben, dann erwartet Euch die Meldung printer is ready.

Das war’s auch schon.

Die Besonderheit von Klipper besteht darin, dass, wenn Ihr die Konfiguration geändert habt, nicht mehr alles kompiliert und auf das Mainboard des Druckers geflasht werden muss. Muss jetzt nur noch die printer.cfg mit einem Texteditor geändert werden und das ganze wieder per Datentransferprogramm (FTP Client) auf den Raspberry Pi* übertragen werden.

Durch die Eingabe von restart lädt Klipper die neue Konfiguration und es kann direkt getestet werden.

Mehr zur Konfiguration und sonstigen Fragen zu Klipper versuchen wir in unserer Facebook Gruppe https://www.facebook.com/groups/klipper.firmware/ zu beantworten.

Hier findet Ihr noch ein Q&A zum Anet A8: https://github.com/KevinOConnor/klipper/issues/78

Installationsvideo 

Hier gibt es noch ein schönes Video von David Schuchert alias Hochdruck3D, wo die Installation noch einmal sehr gut erklärt wird.
Falls Euch das Video gefällt, dann könnt Ihr gerne seinen Kanal abonnieren.

Druckergebnisse

Es ist schon faszinierend, wenn der Drucker mit echten 100m/s loslegt.
Ein Video davon könnt Ihr hier demnächst finden.

Natürlich muss die gesamte Peripherie stimmen und das gesamte System gut abgestimmt sein.
Wir tasten uns in den nächsten Tagen weiter durch und wenn es etwas Neues gibt, dann lassen wir es Euch hier wissen.

Tutorial: Eigenes Logo auf dem Bootscreen – so geht’s

 Das wird benötigt:

Um einen individuellen Bootscreen zu erzeugen, braucht Ihr folgende Dinge:

  • Einen 3D-Drucker mit Full Graphics LCD Controller
  • Euer Logo im JPG oder GIF Format in der Auflösung 128 x 64 Pixel, welches Ihr auf den Bootscreen übertragen wollt



So wird’s gemacht

Am einfachsten funktioniert das Ganze, wenn Euer Logo schwarz-weiß ist. Ansonsten müsst Ihr ein wenig Hand an Euer Bild anlegen und es in schwarz-weiß gestalten bzw. umwandeln.

Bei unserem Beispiel haben wir unser Logo auf das Nötigste reduzieren.

Unser Logo auf das Nötigste reduziert

Um das Bild später zu übertragen wird eine maximale Auflösung von 128 x 64 Pixel benötigt. Ihr könnt mit einer höheren Auflösung anfangen und später herunterskalieren, solltet aber bedenken, dass aufgrund der Pixel nicht alle Details sauber dargestellt werden können. Daher empfehlen wir Euch nicht zu detailreich zu starten.

In unserem Beispiel sind wir, wie folgt, vorgegangen:

Wir haben unser Logo soweit bearbeitet und reduziert, dass es schwarz-weiß exportiert werden konnte.
Als Programm haben wir in diesem Fall inkscape benutzt.

In paint.net haben wir eine neue Datei geöffnet und diese mit 128 x 64 Pixel definiert. Das zuvor in inkscape erzeugte Bild wurde per Paste & Copy in paint.net übertragen und in die Grenzen eingepasst.
(Alle zuvor probierten Varianten mit Öffnen und skalieren von anderen Dateien z.B. PNG hat bei uns immer wieder zu Problemen geführt)

Ihr solltet übrigens darauf achten, dass der Hintergrund transparent bleibt, um die Erkennung des Bildes zu verbessern.

Die Vorschau ist schon sehr pixelig – dies liegt an der niedrigen Auflösung

Die fertige Datei wird nun im JPG oder GIF-Format an einen beliebigen Ort abgespeichert.



Nun geht es ganz einfach:

Wir haben die Seite http://www.digole.com/tools/PicturetoC_Hex_converter.php geöffnet und unser Bild dort hochgeladen.


Um das Bild auf das Display zu bekommen mussten wir noch ein paar Einstellungen anpassen.
Unter „Resize to“ wird die Auflösung des Displays mit 128 x 64 Pixel angegeben.

Nach einem Druck auf „Get C string“ sieht man ein weiteres Fenster mit dem Code für das Bild und eine Vorschau des Logos, wenn alles geklappt hat.
Den Hex-Code haben wir in die Zwischenablage kopiert.

Als nächsten Schritt haben wir die marlin.ino unseres CR-10 geöffnet und die Datei _bootscreen.h gesucht.
Dort haben wir wiederum den zuvor in die Zwischenablage kopierten Text über den vorhandenen Text in den geschweiften Klammern geschrieben.

Folgende Zeilen müssen noch angepasst werden, falls die Werte noch nicht drin stehen:
#define CUSTOM_BOOTSCREEN_TIMEOUT   2500
#define CUSTOM_BOOTSCREEN_BMPWIDTH  128
#define CUSTOM_BOOTSCREEN_BMPHEIGHT 64

Jetzt muss nur noch das Ganze kompiliert und auf das Board übertragen werden.
Solltet Ihr alles richtig gemacht haben, dann könnt Ihr, nach dem Neustart, Euer Logo beim Starten des 3D-Druckers sehen.

Wer es noch ein bisschen individueller mag, der kann natürlich noch in der configuration.h unter nachfolgenden Punkt seinem 3D-Drucker eine individuelle „Ready“ Message verpassen.

// Optional custom name for your RepStrap or other custom machine
// Displayed in the LCD „Ready“ message
#define CUSTOM_MACHINE_NAME „CR-10 by SELBSTgedruckt“

Wir hoffen Euch hat dieses kleine Tutorial gefallen und Ihr besucht unsere Seite bald wieder.

Ihr wollt was wirklich Individuelles bei Eurem Drucker haben?

Wie wäre es mit einem eigenen Bootscreen? Seit Marlin 1.1.0 gibt es dieses coole Feature für Full Graphics LCD Displays und wir wollen Euch mit diesem Tutorial zeigen, wie Ihr ganz schnell und einfach das Aussehen des Startbilds verändern könnt.

Wer mag, kann uns natürlich durch Klicken auf die Produktlinks unterstützen und bei unseren Partnern einkaufen. Wir erhalten einen kleinen Beitrag zurück und können Euch somit immer wieder mit tollen neuen Infos versorgen.

Tipp: Simplify3D – Grundlagen (Videosammlung)




Wir haben hier für Euch ein paar Videos zusammengefasst, die den Umgang mit dem Slicer Simplify3D vereinfachen sollen.
Natürlich hätten wir auch selber ein paar Videos machen können, aber wir finden die Videos von Multec sehr gut und informativ, so dass wir Euch diese hier zeigen möchten.
Es werden in den Videos nicht nur die Grundlagen erklärt, sondern später auch einzelne Tipps und Tricks veraten, wie Ihr Simplify3D noch optimierter nutzen könnt.

Solltet Ihr spezielle Fragen haben oder bestimmte Funktionen genauer erklärt bekommen wollen, dann lasst es uns wissen und wir werden versuchen auf Eure Fragen einzugehen.
Nutzt dafür bitte die Kommentarfunktion.

Und nun viel Spaß beim Zuschauen.




Tutorial: Drucken aus der Ferne – Teil 2 Dateiupload zu OctoPrint™

In meinem letzten Beitrag Drucken aus der Ferne Teil 1 – Installation von OctoPrint habe ich schon kurz angedeutet, dass ich in diesem Beitrag auf Möglichkeiten eingehen möchte, wie man OctoPrint mit anderen Programmen verknüpft.

Daten direkt auf den OctoPrint-Server hochladen

OctoPrint selbst hat mit der Cura Engine einen integrierten Slicer, doch die meisten die ich kenne benutzen diesen nicht, sondern z.B. Slic3r oder Simplify3D um die Daten drucktauglich zu machen.
Doch anschließend müssen die G-Code-Dateien noch den Weg in den Drucker finden.
Entweder man überträgt die Dateien auf eine SD-Card, schieb sie per Drag & Drop ins Serverfenster oder lädt sie, so wie ich, direkt aus dem Slicer heraus hoch.

Upload aus slic3r

Mit dem Programm slic3r ist die Verbindung zu OctoPrint fast ein Kinderspiel, denn die Entwickler haben eine OctoPrint-Schnittstelle direkt in das Programm integriert.
Alles was Ihr benötigt ist die API von OctoPrint und schon kann es losgehen.

Öffnet slic3r und sucht nach folgendem Reiter „Printer Settings“ und dem Feld „OctoPrint Upload“

Hier tragt Ihr die IP Adresse Eures OctoPrint-Servers und die API aus OctoPrint ein.
Die API erhaltet Ihr, indem Ihr unter Einstelungen den Punkt API sucht.


Das hier, unter dem QR-Code, eingetragene Passwort kann für Eure Verbindung übernommen werden, oder Ihr erfindet ein eigenes Passwort.

Tragt beides in die vorgesehenen Felder ein und testet die Verbindung, indem Ihr auf den Test Button drückt. Sollte alles richtig konfiguriert sein, dann öffnet sich folgendes Fenster:

Im Hauptfenster von slic3r ist nun ein weiterer Button mit der Bezeichnung „Send to printer“ zwischen den Buttons „Export STL“ und „Export G-Code“
hinzugekommen.

Drückt Ihr hier drauf, sobald Ihr Eure Einstellungen für den Druck fertigt habt, so lädt slic3r den G-Code direkt auf Euren OctoPrint-Server hoch.

Ein Zwischenspeichern ist nicht mehr erforderlich und Ihr könnt direkt, über die OctoPrint-Oberfläche, Euren Druck starten.

Upload aus Simplify3D™

Der Dateiupload aus Simplify3D™ (kurz S3D) ist leider nicht ganz so einfach, da hierfür noch ein weiteres Programm benötigt wird.

Das Hilfsprogramm ist in diesem Fall curl [https://curl.haxx.se/download.html].
Das kleine Programm hilft Euch die Dateien auf den OctoPrint-Server hochzuladen.

Ladet Euch die passende ZIP-Datei von curl herunter und entpackt diese auf Eurer Festplatte.

Achtung:
Ihr müsst dafür auf der Downloadseite ein wenig nach unten scrollen, bis Ihr den Bereich für die Windows Installationen findet. Dort wählt Ihr dann die passende Datei aus. (In meinen Fall war es jetzt die Win64 x86_64 zip für SSL und SSL)

Öffnet den Ordner, wohin Ihr die Dateien entpackt habt und verschiebt aus dem Unterverzeichnis „src“ die Datei „curl.exe“ in Euren Windows-Ordner (in diesem Fall C:Windows).

Jetzt könnt Ihr S3D und die Prozesseinstellungen öffnen.

Im Reiter „Skripte“ gebt Ihr im Bereich „Zusätzliche Terminal-Befehle für Nachbearbeitung“ folgende Zeile ein:

curl -k -H „X-Api-Key: hier tragt Ihr Eure API aus OctoPrint ein“ -F „select=false“ -F „print=false“ -F „file=@[output_filepath]“ http://hier tragt Ihr Eure OctoPrint IP-Adresse ein/api/files/local“

Speichert die Prozesseinstellungen ab und startet S3D neu.

Wenn Ihr nun Euer Modell drucken wollt, dann bearbeitet wie gewohnt die Prozesseinstellungen usw. und drückt auf „Auf Druck vorbereiten!“ und anschließend auf „Druckdatei speichern“.
Die Druckdatei müsst Ihr nun noch in einem Ordner Eurer Wahl abspeichern.

Wenn Ihr alles richtig eingestellt habt, dann müsste, wenn Ihr OctoPrint aufruft, die Datei aus S3D hochgeladen worden sein.

Merken

Merken

Merken

Merken

Merken

Merken

Merken

Merken




 Preis nicht verfügbar

Jetzt auf Amazon kaufen*
Preis inkl. MwSt., zzgl. Versandkosten

Zuletzt aktualisiert am 22. November 2019 um 8:23 . Wir weisen darauf hin, dass sich hier angezeigte Preise inzwischen geändert haben können. Alle Angaben ohne Gewähr.

Zuletzt aktualisiert am 22. November 2019 um 8:36 . Wir weisen darauf hin, dass sich hier angezeigte Preise inzwischen geändert haben können. Alle Angaben ohne Gewähr.

Zuletzt aktualisiert am 22. November 2019 um 8:36 . Wir weisen darauf hin, dass sich hier angezeigte Preise inzwischen geändert haben können. Alle Angaben ohne Gewähr.