Programmierumgebung für Kinder

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
heikoh
Beiträge: 37
Registriert: 23 Dez 2012, 11:29
Wohnort: Heidenheim

Programmierumgebung für Kinder

Beitrag von heikoh » 05 Mär 2017, 20:29

Hallo,

nachdem mein Sohn inzwischen begeistert mit Brickly programmiert und erste Schritte mit Python macht, möchte ich hier nach dem idealen Setup zwischen Rechner (in diesem Fall Windows 10, könnte aber auch Linux, etc sein), TXT mit CFW und Python fragen. Bisher verpacken wir es in ein ZIP File als App und laden die Programme dann hoch. Auf Dauer ist das aber nicht zielführend. Im Forum habe ich die Möglichkeit über sftp Dateien auf den TXT zu übertragen gelesen. Hierbei sehe ich aber das Problem, dass ich die Programme nicht über das Display starten kann. Hat hierzu schon jemand eine bessere Idee/Umsetzung? Über FTP oder SFTP werden .py Dateien in ein Zielverzeichnis kopiert, gelöscht, etc... . Über eine App kann man diese dann auswählen und starten.

Ziel ist eine "Minientwicklungsumgebung" für Schulkinder. Eigentlich würde mir etwas wie beim Projekt http://www.tigerjython4kids.ch vorschweben. Kennt das vielleicht jemand? Leider wird bei diesem Projekt nur der Lego EV3 und ein Raspberry Roboter unterstützt. Wäre natürlich toll, wenn man hier auch noch den TXT aufnehmen könnte.

Viele Grüße

Heiko

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: Programmierumgebung für Kinder

Beitrag von richard.kunze » 05 Mär 2017, 21:31

Hallo Heiko,
heikoh hat geschrieben: Im Forum habe ich die Möglichkeit über sftp Dateien auf den TXT zu übertragen gelesen.
Das dürfte aktuell denke ich die beste Möglichkeit sein. Vor allem, wenn man für den Benutzer auf dem TXT ein Passwort setzt und für den SSH-Zugriff passende Schlüssel erzeugt und installiert (das geht wie sonst auch bei SSH üblich, d.h. der private Schlüssel landet in .ssh/id_irgendwas, und der zugehörige öffentliche Schlüssel kommt auf dem TXT nach /home/ftc/.ssh/authorized_keys). Damit kann man dann auch per SSH auf den TXT zugreifen ohne jedesmal auf dem Touchscreen die Sicherheitsabfrage bestätigen zu müssen.

Und SCP/SFTP lässt sich ja auch ganz gut in die normale Dateiverwaltung integrieren (zumindest unter Linux, ich glaube aber unter Windows hab ich auch schon mal was enstprechendes gesehen) - damit unterscheidet sich dann "Speichern auf dem TXT" nicht mehr wirklich von "Speichern auf einem USB-Stick" oder ähnlichem.
heikoh hat geschrieben: Hierbei sehe ich aber das Problem, dass ich die Programme nicht über das Display starten kann.
Doch, das geht - das hat mit der Art der Übertragung nichts zu tun.

Damit ein Programm im "Launcher" (d.h. auf dem Display) auftaucht und gestartet werden kann, muss es lediglich als "TXT-App" organisiert sein, d.h. die folgenden Bedingungen erfüllen:
  • Der Programmcode muss in einem Verzeichnis unter /home/ftc/apps liegen. Dabei nicht davon abhalten lassen dass die Namen der Unterverzeichnisse da normalerweise irgendeine lange, kryptische Zahlenkombinaton sind - die legt die "Store"-App beim Nachinstallieren von Apps so an damit es keine Namenskollisionen gibt, aber das ist kein Zwang. Man darf den Verzeichnissen gerne auch sprechende Namen geben.
  • In diesem Verzeichnis muss es eine Datei "manifest" geben, die wie hier beschrieben aufgebaut ist und wo eingetragen wird, wie das Programm heißt das gestartet werden soll (das muss dann übrigens auch nicht unbedingt ein Python-Script sein).
Wenn beides erfüllt ist, dann taucht das neue Programm spätestens beim nächsten Neustart des TXT auch auf (oder man zwingt den Launcher, die Programmverzeichnisse neu einzulesen - das geht am einfachsten, indem man über die "Language"-App die Sprache wechselt). Und Änderungen am Programm selbst werden immer beim nächsten Start des Programms wirksam.

Die einzige Schwierigkeit hierbei ist Debugging: Normalerweise sieht man die Ausgaben (und - hier wichtiger - die Fehlermeldungen) von so einer TXT-App nicht. Man kann zwar Logging für Apps einschalten (mit "echo "logging-start" | nc -c localhost 9000" auf dem TXT, die Ausgaben landen dann in der Datei /tmp/app.log), aber das ist denke ich nicht wirklich anfängertauglich.

Für die Entwicklung ist es daher eventuell besser, die Programme zunächst auf dem PC (am besten gleich in der IDE, wo man dann üblicherweise auch einen richtigen Debugger zur Verfügung hat) laufen zu lassen und sie erst dann auf den TXT zu übertragen wenn sie halbwegs laufen. Das geht sogar für viele Programme, die die Ein- und Ausgänge des TXT verwenden: Man muss dazu dann nur die originale Fischertechnik-Oberfläche laufen lassen (d.h. in der Community-Firmware die "FT-GUI"-App starten), dann kann ftrobopy (das ist die Bibliothek, die die IO-Ansteuerung macht) vom PC aus den TXT "fernsteuern". Dafür brauchst man dann natürlich die passenden Python-Bibliotheken auch auf dem PC (im Wesentlichen PyQt4 und TouchStyle.py für die GUI, sowie ftrobopy für die IO-Ansteuerung). Was damit leider nicht funktioniert ist die Kamera - die wird im "Online-Mode" (d.h. mit dem Python-Programm auf dem PC und Verbindung zum TXT über die Original-Fischertechnik-Software) anders angesteuert als im "Offline-Mode" (d.h. das Python-Programm läuft direkt auf dem TXT).
heikoh hat geschrieben: Ziel ist eine "Minientwicklungsumgebung" für Schulkinder. Eigentlich würde mir etwas wie beim Projekt http://www.tigerjython4kids.ch vorschweben. Kennt das vielleicht jemand? Leider wird bei diesem Projekt nur der Lego EV3 und ein Raspberry Roboter unterstützt. Wäre natürlich toll, wenn man hier auch noch den TXT aufnehmen könnte.
Ich kannte das nicht, aber auf den ersten Blick sieht das so aus als sollte das durchaus machbar sein. Eventuell bringt es ja was, mal bei den Autoren anzufragen ob die daran Interesse hätten?

Liebe Grüße,

Richard

sven
Beiträge: 2750
Registriert: 18 Okt 2010, 18:13
Wohnort: Rahden
Kontaktdaten:

Re: Programmierumgebung für Kinder

Beitrag von sven » 05 Mär 2017, 21:38

Hallo!

Auch wenn ich bisher nichts mit der Community Firmware gemacht habe hätte ich eine Idee:

Warum muss das denn per ftp, sftp gemacht werden?
Der TXT hat doch eine IP und ist im Netzwerk.
Könnte man nicht einfach den TXT im Explorer als Netzlaufwerk einbinden?
Dann könnte man ohne jegliche Software Daten austauschen.

Gruß
Sven
Dieses Posting gibt ganz allein meine persönliche Meinung wieder!

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: Programmierumgebung für Kinder

Beitrag von richard.kunze » 05 Mär 2017, 21:57

Hallo Sven,
sven hat geschrieben: Warum muss das denn per ftp, sftp gemacht werden?
Muss es nicht, das ist nur am einfachsten (weil alles dazu nötige auf dem TXT schon da ist und läuft).
sven hat geschrieben: Der TXT hat doch eine IP und ist im Netzwerk.
Könnte man nicht einfach den TXT im Explorer als Netzlaufwerk einbinden?
Prinzipiell geht das. Dazu muss man aber auf dem TXT nochmal zusätzliche Software laufen lassen (in dem Fall "Samba", das die Serverseite von Windows-Netzfreigaben für Linux implementiert) und das braucht halt auch Resourcen (vor allem Arbeitsspeicher), die man auf dem TXT besser verwenden kann (um z.B. Modelle zu steuern).

Wenn man das vom Benutzer ein- und ausschaltbar macht wäre das aber durchaus eine Idee.
sven hat geschrieben: Dann könnte man ohne jegliche Software Daten austauschen.
Auf meinem Linux-Rechner brauch ich dafür auch so keine zusätzliche Software - da ist der TXT (mit SFTP) schon "einfach in den Explorer eingebunden"...

Liebe Grüße,

Richard

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: Programmierumgebung für Kinder

Beitrag von MasterOfGizmo » 05 Mär 2017, 22:12

richard.kunze hat geschrieben: Die einzige Schwierigkeit hierbei ist Debugging: Normalerweise sieht man die Ausgaben (und - hier wichtiger - die Fehlermeldungen) von so einer TXT-App nicht. Man kann zwar Logging für Apps einschalten (mit "echo "logging-start" | nc -c localhost 9000" auf dem TXT, die Ausgaben landen dann in der Datei /tmp/app.log), aber das ist denke ich nicht wirklich anfängertauglich.
Es gibt eine anfängerfreundliche Variante: Man öffnet die Seite "http://meintxt/applog.py". Das klappt allerdings nicht so zuverlässig und man muss ggf. ein oder zweimal Reload drücken, bis der Browser zufrieden ist und man die "logging started"-Meldung sieht. Sobald das der Fall ist kann man auf dem TXT einfch APPs starten und sieht deren Ausgaben dann im Browser auftauchen.

Das ist genau der Code, den ich rauswerfen wollte, weil ihn eh keiner verwendet :-) Alternative wäre das mal zu reparieren.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Benutzeravatar
PHabermehl
Beiträge: 2429
Registriert: 20 Dez 2014, 22:59
Wohnort: Bad Hersfeld

Re: Programmierumgebung für Kinder

Beitrag von PHabermehl » 05 Mär 2017, 22:16

Ich habe da ein webinterface im Hinterkopf, dass die Daten zwischen PC und TXT überträgt. Außerdem könnte das webinterface das debug-logging transparent integrieren... Das wäre doch schon eine halbe IDE...
Gruß Peter
https://www.MINTronics.de -- der ftDuino & TX-Pi Shop!

viele Grüße
Peter

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: Programmierumgebung für Kinder

Beitrag von MasterOfGizmo » 05 Mär 2017, 22:19

Wenn ich Langeweile hätte, dann würde ich Brickly nehmen, dort die linke "Blockly"-Hälfte entfernen und stattdessen CodeMirror da reinbauen (http://codemirror.net/).

Dann würde man seinen Python-Code halt nicht aus Klötzen zusammen klicken, sondern im Code-Editor direkt schreiben. Ohne PC-Zwang direkt auf dem TXT per Handy oder was auch immer ...
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: Programmierumgebung für Kinder

Beitrag von richard.kunze » 05 Mär 2017, 22:28

PHabermehl hat geschrieben:Ich habe da ein webinterface im Hinterkopf, dass die Daten zwischen PC und TXT überträgt. Außerdem könnte das webinterface das debug-logging transparent integrieren... Das wäre doch schon eine halbe IDE...
Gruß Peter
Dann kannst Du eigentlich auch gleich Nägel mit Köpfen machen und die komplette Debugger-Schnittstelle von Python da drüberschleifen.

Und wenn Du dann noch einen browserbasierten Editor da mit reinbaust (z.B. https://ace.c9.io/), etwas Datei- und Projektverwaltung drumrumstrickst, und dem ganzen noch eine "Brickly"-artigen, blockbasierten Sprache (für die Anfänger) sowie Unterstützung für Rust und C (für die Experten) mitgibst, dann hast Du das was ich eigentlich schon immer auf dem TXT haben wollte :D

Und ja, wenn niemand mir da zuvorkommt dann baue ich das irgendwann auch selber - aber nicht bevor die Basis untendrunter hinreichend fertig und stabil ist.

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: Programmierumgebung für Kinder

Beitrag von richard.kunze » 05 Mär 2017, 22:37

MasterOfGizmo hat geschrieben:Dann würde man seinen Python-Code halt nicht aus Klötzen zusammen klicken, sondern im Code-Editor direkt schreiben. Ohne PC-Zwang direkt auf dem TXT per Handy oder was auch immer ...
Kann man mit dem aktuellen Stand im GIT im Prinzip schon jetzt: Auf dem TXT einloggen, "PYTHONPATH=/opt/ftc jupyter notebook --no-browser --ip $die_ip_des_txt" starten, und dann per Browser auf http://ip-des-txt:8888 gehen. Ist halt ein Jupyter-Notebook, d.h. eher was für die Leute aus der Akademiker-Ecke.

Und das Ganze frisst fett (meiner Meinung nach zu fett) Resourcen - deshalb werde ich das auch nicht per Default aktivieren (und eventuell auch wieder rauswerfen).

Benutzeravatar
PHabermehl
Beiträge: 2429
Registriert: 20 Dez 2014, 22:59
Wohnort: Bad Hersfeld

Re: Programmierumgebung für Kinder

Beitrag von PHabermehl » 05 Mär 2017, 23:07

MasterOfGizmo hat geschrieben:Es gibt eine anfängerfreundliche Variante: Man öffnet die Seite "http://meintxt/applog.py". Das klappt allerdings nicht so zuverlässig und man muss ggf. ein oder zweimal Reload drücken, bis der Browser zufrieden ist und man die "logging started"-Meldung sieht. Sobald das der Fall ist kann man auf dem TXT einfch APPs starten und sieht deren Ausgaben dann im Browser auftauchen.

Das ist genau der Code, den ich rauswerfen wollte, weil ihn eh keiner verwendet :-) Alternative wäre das mal zu reparieren.
Yepp, wenn ich's gewusst hätte... Ab heute haste mindestens einen User, und lass das mal bütteschön 'drin...
Gruß Peter
https://www.MINTronics.de -- der ftDuino & TX-Pi Shop!

viele Grüße
Peter

Antworten