Lerncomputer Oxocards

Einleitung

Kleine Computer zum Mitnehmen faszinieren mich schon immer. Und was ist ein Mikrocontroller anderes? Andererseits kann man mit Mikrocontrollern normalerweise nichts machen, wenn man sie nicht mindestens einmal, aber oft auch dauerhaft, an einen PC anschließt, um sie zu programmieren oder Daten mit ihnen auszutauschen. Im Laufe der Jahre habe ich schon viele ausprobiert, wie zum Beispiel einen Raspberry Pi, Arduino Uno, Adafruit Feather und Circuit Playground oder ein TTGO T-Display, mit dem ich sehr viele Projekte verwirklicht habe. Was ich noch nicht ausprobiert habe ist ein Micro:bit, Calliope mini oder ein Teensy.

An alle kann man Elektronik wie Sensoren, LEDs oder Tasten anlöten und dann Programme schreiben, die diese Sensoren abfragen und damit Dinge steuern oder einfach nur die gemessenen Werte auf die eine oder andere Art anzeigen. Dabei kann man viel lernen, muss aber vorab die Hürde Lötkolben meistern.

Der Raspberry Pi ist allerdings anders: Er ist ein vollwertiger Desktop-Computer, da er mit Linux über ein ausgereiftes Betriebssystem verfügt, welches die Ausführung einer Vielzahl von vollwertigen Programmen, wie zum Beispiel Libre Office, Eclipse oder gar Mathematica, ermöglicht. Er hat allerdings auch einen Expansion Port, also eine Reihe von elektrischen Anschlüssen, die tief in sein Inneres führen, über den es möglich ist, genau wie bei den anderen, Sensoren, Taster und vieles mehr anzuschließen. Aber in gewisser Weise ist das beim Raspberry Pi Overkill. Er kann so viel mehr als die anderen und lenkt vielleicht gerade darum vom elementaren Verstehen eines Computers ab. Denn letztlich ist es kein multitaskingfähiges Betriebssystem und es sind auch keine 4 Kerne, die das Wesen eines Computers ausmachen, sondern einfach die Fähigkeit eine Folge von durchdachten Anweisungen extrem schnell und ohne einen einzigen Fehler immer wieder zu wiederholen.

Diese Fähigkeit besitzen alle Computer und damit eben auch alle oben aufgeführten Microkontroller. Für den Nichteingeweihten ist diese Fähigkeit aber völlig unsichtbar und ohne eigene Erfahrung nicht begreifbar. Diese Schwäche wird im Fall von zum Programmieren lernen designten Mikrocontrollern durch das Zufügen von mehr oder weniger interessanten Ausgabemöglichkeiten wie LEDs, RGB LEDs oder Lautsprechern ausgeglichen. Aber auch die Fähigkeit zu löten wird durch schon integrierte Sensoren erst einmal nicht benötigt und so ist es möglich sich auf das Lernziel ‚Programmieren‘ zu konzentrieren.

Dabei haben Micro:bit und Calliope mini so viele LED’s rechteckig angeordnet, dass es sogar möglich ist, damit einzelne Zeichen in einer Matrix darzustellen. Das Circuit Playground besitzt sehr viele Sensoren und sogar 10 RGB LEDs, mit denen sehr schöne Farbeffekte programmierbar sind. Bei der Ausgabe von mit den eingebauten Sensoren gemessenen Werten muss ich aber kreativ werden und überlegen, wie ich die Werte durch Farbverläufe oder das Aktivieren von einer bestimmten Anzahl der RGB LEDs simulieren kann.

Oxocards

An dieser Stelle kommen die Oxocards ins Spiel, die mit einem eingebauten RGB Display alle anderen aufgeführten Lerncomputer mühelos toppen. Mit einer Auflösung von 240×240 RGB Pixeln haben sie praktisch 57600 LEDs eingebaut und mit dieser großen Anzahl können sie bei weitem mehr visualisieren als die anderen. So ist es möglich Text – und damit von den Sensoren gemessene Werte – direkt auf das Display zu schreiben, aber auch Bilder darzustellen und 2D- und 3D-Animationen zu erzeugen! Das kann keiner der genannten anderen Lerncomputer!

Die Oxocards gibt es in 3 Geschmacksrichtungen: Galaxy, Artwork und Science!

Galaxy und Artwork unterscheiden sich lediglich in der äußeren Gestaltung und der vorgeladenen Programme, während die Science eine etwas unterschiedliche Hardware besitzt. Alle besitzen als Herz den ESP32, das tolle Display, 5 Tasten und einen Beschleunigungs- bzw. Neigungssensor, mit dem es möglich ist, Bewegungen festzustellen und interessante Experimente zu programmieren. Die Science besitzt darüber hinaus 7 Sensoren, mit denen 12 verschiedene Messgrößen abgefragt werden können. Dafür aber keinen Lautsprecher, den wiederum die Galaxy und Artwork besitzen. Die vielen Sensoren der Science machen über das reine Programmieren lernen hinaus Lust auf das Erforschen der Umwelt. So könnte man Wetterdaten erfassen und in einem Grafen darstellen oder einfach Temperatur und Licht im Kühlschrank ermitteln.

Der Lautsprecher macht vor allem bei Spielen zur akustischen Untermalung Sinn.

NanoPy

Die Oxocards besitzen allerdings noch weitere Besonderheiten: So wurde eine an Python angelehnte eigene Programmiersprache entwickelt, die nicht nur alle wesentlichen Elemente einer Programmiersprache beinhaltet, sondern auch Befehle aus dem 2D- und 3D-Grafik Bereich enthält, mit denen es möglich ist erste Erfahrungen in der Programmierung von 2D-Spielen oder Grafikanwendungen zu sammeln. Das ist erstaunlich, da das Display mit seinen 240*240 Pixeln nicht unbedingt üppig mit Auflösung ausgestattet ist. Die vielen beigefügten Anwendungen demonstrieren aber sehr schön dass es geht.

Da die Sprache als Interpreter arbeitet, sind die damit ablaufenden Programme bei weitem nicht so schnell, wie das Programme sein können, die zum Beispiel mit C++ der Arduino IDE für einen ESP32 kompiliert werden, aber das ist auch nicht schlimm, da die Oxocards eigentlich vor allem zur Schulung konzipiert wurden. Und dabei zeigt sich das Konzept mit dem direkt auf der Karte installierten Interpreter als weit überlegen. Bei der Arduino IDE muss man immer erst den Programmcode kompilieren und anschließend per USB auf den ESP32 übertragen. Das dauert! Manchmal mehrere Minuten.

Ganz anders bei der Oxocard: In einer Sekunde sind Programme über die zur Entwicklung gedachten Webseite auf die Oxocards übertragen und gestartet. So macht es viel mehr Spaß mit der Oxocard zu arbeiten. Eventuelle Fehler oder gerade beim Arbeiten entstehende Ideen können in wenigen Sekunden beseitigt bzw. eingebaut und ausprobiert werden. Keine Zeit zwischendurch Social Media zu kontrollieren oder einen Youtube-Film anzusehen, wie es mir manchmal beim Arbeiten mit der Arduino IDE passiert. So macht das Arbeiten Spaß und ein aufkommender Flow wird nicht durch Wartezeiten unterbrochen.

Macht das Erlernen von NanoPy Sinn?

Das Verständnis einer Programmiersprache macht immer Sinn. Die zum Programmieren erworbenen Kenntnisse der Planung einer algorithmischen Lösung und deren Umsetzung, mit egal welcher Programmiersprache, ist eine Fähigkeit, die im Leben grundsätzlich von Vorteil ist und auch bei Problemen, die scheinbar nichts mit Programmieren zu tun haben, eingesetzt werden kann. Und hat man eine prozedurale Programmiersprache wie NanoPy erst einmal verstanden, so wird man auch jede andere prozedurale Programmiersprache wie C++, Java oder JavaScript leichter erlernen können. Aber da NanoPy von der Syntax und den Möglichkeiten her Python ähnelt, erlernt man im Grunde auch eine aktuell durchaus gefragte Programmiersprache die bei Webentwicklung, Datenanalyse und Datenvisualisierung, Machine Learning und Künstliche Intelligenz, Automatisierung und Scripting, Wissenschaftliches Rechnen und Akademischer Forschung zum Einsatz kommt.

Debugger

Doch der Interpreter hat noch einen, gerade für das Erlernen einer Programmiersprache, viel größeren Vorteil. Es ist möglich die Programme zu debuggen! Und wenn Anfänger jetzt auch murren und denken, was ist denn das schon wieder, wird jeder Profi begeistert sein. Für Neulinge: Der Debugger ermöglicht es dem Interpreter beim Arbeiten zuzusehen. Das geht, indem man ein Programm nicht einfach mit voller Geschwindigkeit ablaufen lässt, sondern stattdessen immer nur einen einzigen Befehl ausführt. So sieht man exakt was der Interpreter gerade macht und kann den Befehl lesen und gleichzeitig sehen was auf dem kleinen Display passiert. Das ermöglicht ein viel besseres Verständnis des Ablaufs eines Programms. Es geht aber noch weiter: Gleichzeitig können auch die Inhalte der Variablen eingesehen werden und diese sind oft eine der größten Hürden für Anfänger. Denn wenn Programmcode auf den Inhalten von Variablen basiert – und das ist immer der Fall – basieren viele Fehler darauf, dass der Programmierer beim Schreiben des Programmcodes zwar bestimmte Konstellationen von Werten in den Variablen annimmt, aber diese sich eben durch den Ablauf ändern und das manchmal auch auf eine vom Programmierer nicht bedachte Weise.

Wenn man in dieser Situation aber genau nachsehen kann, was bei einem bestimmten Befehl mit dem Wert einer Variablen passiert, kann man Fehler bei weitem schneller erkennen!

Ein Beispiel beim Arbeiten mit der Arduino IDE: Wenn ich hier einen hartnäckigen Fehler suche, baue ich von Hand an bestimmten Stellen im Code ‚Serial.println‘-Anweisungen ein, muss anschließend neu kompilieren und hochladen und dann sehen was das Programm für Werte ausgibt. So geht das manchmal eine ganze Weile, immer wieder baue ich an anderen Stellen Ausgaben ein und immer wieder muss ich kompilieren und hochladen, bis ich irgendwann den Fehler gefunden habe.

Ganz anders mit der Oxocard: Hier starte ich das Programm im Debug-Modus und kann mich dann im Einzelschritt durch den Code tasten und dabei die ganze Zeit die Variablen und das Geschehen auf dem Display im Auge behalten.

Leider kann diese wirklich bedeutende Möglichkeit bei vielen zu den Oxocards mitgelieferten Beispielen nicht gut genutzt werden, da bei diesen Demos viele Befehle keine Veränderung auf dem Display verursachen, obwohl die Bezeichnungen der Befehle (z.B. drawLine, drawRectangle, drawTriangle, drawCircle) dies suggerieren. Das liegt daran, dass erst beim ‚update()‘-Befehl tatsächlich etwas auf das Display gezeichnet wird!

Pädagogischer Ansatz

Etwas, was bei den Oxocards völlig anders gemacht wird als bei anderen mir zum Lernen bekannten Mikrocontrollern, ist die Methode, wie hier Wissen vermittelt werden soll. Anstatt erst in irgendeiner Weise etwas zu erklären und dann darauf aufbauend die Idee eines kleinen Programms zu entwickeln, sind die Oxocards gespickt mit kleinen Programmen, die unmittelbar ausführbar sind. Wenn sie nicht tatsächlich schon auf den Oxocards gespeichert sind, können sie binnen einer Sekunde mit einem einzigen Mausklick auf die Karte gebracht und gestartet werden. Da nahezu alle Programme durch den Einsatz des Displays attraktive Ausgaben bieten, bin ich neugierig zu erfahren wie das eigentlich gemacht wird.

Dies ist mit der schon erwähnten Webseite möglich. Sie dient als Integrierte Entwicklungsumgebung (IDE) für die Oxocards. Sie teilt sich in 3 Teile auf, auf denen ganz links alle Beispiele und eventuell schon eigene Programme aufgeführt, in der Mitte der aktuell bearbeitet Programmcode und rechts zusätzliche Erklärungen sind. Mit dieser Webseite können Programme angesehen, verändert, neu geschrieben, Variablen angesehen und mit dem Debugger untersucht werden. Die Seite besitzt ein modernes, optisch ansprechendes Design und ist größtenteils selbsterklärend.

Zurück zum pädagogischen Ansatz. Die IDE ist der Platz auf dem es möglich ist alle mitgelieferten Programme zu verändern. In seiner zartesten Form geschieht dies über das Tab ‚Konstanten‘ im rechten Teil der Seite. Denn hier werden automatisch Regler für im Programmcode gefundene Konstanten dargestellt, die mit der Maus verändert werden können. Überträgt man anschließend den Programmcode wieder zur Oxocard, so wirken sich die durch die Regler vorgenommenen Änderungen direkt auf die Ausgabe des Programms auf dem Display aus. Der Oxocard Anwender (normalerweise der Lernende) hat durch eine durch ihn ausgelöste Aktion etwas für ihn bis zu diesem Moment schwer Vorstellbares (er hat selbst ein Programm manipuliert ohne das es anschließend abstürzt 🙂 ) erreicht. Im Idealfall führt das zu einer intrinsischen Motivation, die mit viel Glück selbsterhaltend ist und zu immer weiter führenden Änderungen führt, die nebenbei sein Wissen über Programmierung deutlich verbessern oder überhaupt erst aufbauen!

Die Oxocard Science

Die Science hat 7 Umweltsensoren eingebaut, die 12 verschiedene Sensorwerte liefern kann. Neben den eher üblichen Sensoren wie die für Temperatur, Luftfeuchtigkeit und Licht sind auch Sensoren für Luftdruck, Beschleunigung bzw. Lage, Geräusche und verschiedene Gase enthalten. Bemerkenswert ist der Lichtsensor, da er nicht nur einfach die Helligkeit, sondern sogar die Farbe bestimmen kann. Die Entwickler haben sich viel Mühe gegeben und geben meist nicht einfach nur den puren Sensorwert zurück, sondern rechnen diesen in für den Endanwender deutlich einfacher zu handhabende Größen um.

So gibt es zum Beispiel für die Werte des Mikrofonsensors folgenden Größen:

getMicrophoneAmplitude

Gibt die aktuell dominanteste Mikrofonamplitude als Long-Wert zurück.

Die Amplitude wird mit Hilfe der Fast Fourier Transformation (fft) berechnet.

getMicrophoneDecibel

Gibt den aktuellen Geräuschpegel als Byte-Wert in Dezibel zurück.

Der Geräuschpegel wird anhand der Mikrofon-Amplitude berechnet:

getMicrophoneFrequence

Gibt die aktuell dominanteste Frequenz in Hz zurück.

Die Frequenz wird mit Hilfe der Fast Fourier Transformation (fft) berechnet. Mögliche Werte sind: 250Hz, 375Hz, 500Hz, …, 15375Hz

Der Umweltsensor liefert folgende interessante Größen:

getCO2

Gibt den aktuellen CO2-Wert in ppm zurück.

getIAQ

Gibt die aktuelle IAQ-Einstufung zurück.

IAQ steht für Indoor Air Quality und nimmt normalerweise einen Wert zwischen 0 und 5 an:

Wert Level Zustand
≤1,99 1 Sehr gut
2.00-2.99 2 Gut
3.00-3.99 3 Mittel
4.00-4.99 4 Schlecht
≥5.00 5 Sehr schlecht

getTVOC

Gibt den aktuellen TVOC in mg/m3 zurück.

TVOC steht für Total Volatile Organic Compounds und beschreibt die Menge an gas- und dampfförmigen Substanzen organischen Ursprungs in der Luft.

GetETOH

Gibt den aktuellen ETOH-Wert in ppm zurück.

ETOH (bzw. Ethanol) ist eine flüchtige, brennbare, farblose Flüssigkeit und gehört zu den organischen chemischen Verbindungen.

Einige der verwendeten Sensoren:

  • RGB Sensor: APDS-9251
  • Temperatur und Luftfeuchtigkeit Sensor: SHTC3
  • Umwelt Sensor: ZMOD4410
  • Drucksensor: MS5607-02BA03

Vielfalt

 
Die Programmbeispiele sind klug gewählt. Entsprechend der 3 verschiedenen Karten sind bei Science viele Programme enthalten die Sensoren abfragen und deren Werte in verschiedener und ansprechender Art und Weise auf dem Display ausgeben werden. Die Artwork enthält vor allem Beispiele aus dem Bereich Algorithmische Kunst, hier findet eine Symbiose aus Kunst, Mathematik und Informatik statt. Die Galaxy hingegen bedient sich am angeborenen Spieltrieb des Menschen, der ja ein wichtiger Faktor bei Entwicklungs- und Lernprozessen sein kann.

Aber die Artwork- und Galaxy-Karten unterscheiden sich sowieso nur im sehr ansprechenden optischen Design und sind in der Hardware völlig gleich. Lediglich die Science ist etwas anders aufgebaut und enthält vor allem Sensoren und dafür keinen Lautsprecher. Das heißt Spiele auf der Science haben keine Soundausgabe.

 
Bei den Spielen hat man sich richtig Mühe gegeben und teilweise berühmte Klassiker nach programmiert. Besonders hervorheben möchte ich Frogger, Asteroids, Lunar Lander und Miner, eine Scrambler Variante! Das diese berühmten Spiele unter NanoPy auf den Oxocards laufen, gibt einem die Möglichkeit sie selbst nach eigenen Vorstellungen umzubauen oder weiter zu entwickeln. Das finde ich eine großartige Motivation, wobei zu berücksichtigen ist, dass das dann schon etwas für eindeutig Fortgeschrittene ist.

Aber auch viele Demos sind außergewöhnlich. Ein paar Beispiele, die mir besonders gefallen haben:

  • Bücher→Informatikmagie-Ordnung und Chaos: Eine Vielzahl von bunten Bällen fliegen hin und her und prallen von den Seiten ab.

  • Bücher→Informatikmagie-Schneeflocke: Es werden immer wieder Schneeflocken erzeugt.

  • Galaxy→Demos→Aliens: Es werden außerirdische Lebensformen als 2D-Darstellung generiert.

  • Galaxy→Demos→Speed: Animation die an den Blick aus einem Fenster der Star Trek Voyager erinnert.

  • Beispiele→2D→Isometrie: Animation von 3-dimensional dargestellten Quadern, die auf dem Display vobei laufen. Erinnert an das Spiel Zaxxon auf dem C-64.

  • Beispiele→3D→Endless: Eine Animation einer virtuellen Landschaft über die man scheinbar fliegt.

  • Science→Demos→Game of life: Conway’s Life, eine Lebensimulation.

Das Informatikmagie Buch

Speziell für die Oxocards hat Thomas Garaio ein Lehrbuch geschrieben, in dem direkt anhand der Programmbeispiele einzelne Aspekte der Programmiersprache NanoPy besprochen werden. Das Buch teilt sich in folgende Teile auf:

  • Die Oxocard Mini Serie

  • Einrichten

  • Erster Start

  • Lernen am Beispiel

  • Die Sprache Oxoscript (Die Sprache heißt jetzt NanoPy)

  • Klassenreferenz

  • Funktionsreferenz

  • Sprachreferenz

  • Weitere Informationen

Die ersten Kapitel bzw. Seiten behandeln die Möglichkeiten der Einrichtung und grundsätzliche Erklärungen. So richtig los geht es erst ab Seite 37 mit dem Kapitel ‚Lernen am Beispiel‘. Ab da werden einige der Beispielprogramme genau erklärt. Es gibt immer auch etwas Information zu den Hintergründen und auch die zugrunde liegende Mathematik oder Physik werden knapp aber meist ausreichend erläutert. Das gefällt mir sehr gut.

Wenn man dieses Kapitel durch gearbeitet hat und so schon einiges an Erfahrung mit der Oxocard, der IDE und dem Arbeiten mit beidem gesammelt hat, geht es auf Seite 95 weiter mit einer detaillierten Erklärung der Programmiersprache Oxoscript (NanoPy).

Mit der ab Seite 129 beginnenden Klassen- Funktions- und Sprachreferenz werden alle Möglichkeiten noch einmal detailliert erklärt.

Das Informatikmagie Buch ist auf jeden Fall eine hervorragende Ergänzung zu den Oxocards und unbedingt zu empfehlen! Schade, dass es den Oxocards nicht einfach beliegt, denn das würde das Lernangebot so richtig rund machen! Ich finde sogar, dass es für denjenigen/diejenige, der/die tatsächlich mit den Oxocards das Programmieren und darüber hinaus noch einige Konzepte der Informatik lernen will, unabdingbar ist!

Für mich als erfahrenen Entwickler geht es sicher auch ohne Buch und die Oxocards sind schicke Gadgets für den Schreibtisch, aber mit dem Buch sind sie auf jeden Fall ernstzunehmende Teilnehmer im Markt der Lerncomputer.

Leider finden sich im Buch keine Erklärungen zu den Spielen! Eine ausführliche Erklärung des Aufbaus von Frogger oder Lunarlander wäre eine eine tolle weitere Motivation gewesen. Aber zugegeben, da hätte man vielleicht sogar ein eigenes Buch daraus machen können. Vielleicht kommt das ja noch?

Beispielprogramm

Interessanterweise gibt es in den ganzen Beispielen kein einziges, welches sich mit der grafischen Darstellung eines Verlaufs von Sensordaten beschäftigt. Gerade für die Science Karte und ihren Sensoren ist das aber ein nützliche Sache, darum habe ich mir erlaubt etwas dafür zu programmieren. Das Programm soll als Beispiel für eigene Versuche dienen. Im Programm habe ich allerdings die eigentliche Temperaturabfrage auskommentiert, um stattdessen durch Zufallswerte eine gute Demonstration der Möglichkeiten zu zeigen. ‚delay‘ sollte an die eigenen Anforderungen angepasst werden.

Verlaufsanzeige:

def onDraw():
    clear
    //temps[pointer] = getTemperature()
    temps[pointer] = random(20, 50)
    pointer = pointer + 1
    if pointer > 23
        pointer = 0
    for i in [0..23]
        drawPointer = pointer + i
        if drawPointer > 23
            drawPointer = drawPointer - 24
        drawRectangle(i*10, 239 - temps[drawPointer], 6, temps[drawPointer])
    delay(100)
    update()

Hardware

Wie schon erwähnt basieren die Oxocards auf dem von mir mehr als geschätzten ESP32 Mikrocontroller. Wahrscheinlich ist es möglich diesen und auch das eingebaute Display und das 5-Tasten Keyboard mit der Arduino IDE in C++ zu programmieren. Aber wozu sollte man das machen? Es geht hier nicht um maximale Geschwindigkeit sondern stattdessen um den maximalen Lernerfolg und da bin ich mir sicher, dass der mit dem auf den Oxocards befindlichem NanoPy Interpreter eher erreicht wird. Andererseits sollte man NanoPy aber auch nicht nur als für Lernzwecke entwickelten Interpreter abtun. Für eine Vielzahl von ernsthaften Anwendungen ist die Sprache mehr als ausreichend.

Eine nette Idee ist der mitgelieferte Ständer aus Pappe, mit dem es möglich ist die Oxocards auf dem Schreibtisch aufzustellen. Dazu passend wird ein einfaches USB-Kabel mit einem 90 Grad Stecker mitgeliefert, so dass das Kabel bei auf dem Ständer befindlichen Oxocards nicht nach unten, sondern nach hinten abgeführt wird. Und für dieses Kabel, welches am einen Ende einen USB-A Anschluss hat, gibt es noch ein superkleines Adapter, mit dem der USB-A Anschluss in einen USB-C Anschluss konvertiert werden kann!

Die Oxon AG, die hinter den Oxocards steckt, bietet in ihrem Shop noch ein paar andere Artikel an, von denen ich noch das Gooseneck-USB-Kabel erwähnen möchte, mit dem man die Oxocards in irgendeinen USB-Anschluss stecken und sie dann nach Belieben ausrichten kann. Dort gibt es auch noch einen Oxocharger, der aber auch durch eine beliebige andere Powerbank ersetzt werden kann.

In Verbindung mit einer Powerbank kann eine Oxocard auch mobil betrieben werden. Das macht gerade bei der Science Sinn, denn theoretisch lassen sich so Anwendungen entwickeln, die in Verbindung mit den Sensoren Experimente in der Natur ermöglichen. Auch einer tatsächlichen mobilen Spielekonsole würde man so näher kommen, aber wer mag schon einen ‚Gameboy‘ in den Händen halten, wenn da ständig eine Powerbank dran hängt?

Kosten

Zur Zeit kostet eine der beiden günstigeren Oxocards, die Artwork, bei Thalia 59,- Euro und die Science 89,- Euro. Die Galaxy scheint im Moment nicht lieferbar zu sein. Wer noch das wirklich gute Buch ‚Informatikmagie‘ dazu haben möchte, zahlt noch einmal 40,- Euro extra. Also mit Versand zusammen knapp über 100,- Euro.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert