{"id":173,"date":"2015-11-29T17:57:44","date_gmt":"2015-11-29T16:57:44","guid":{"rendered":"http:\/\/chriskrz.selfhost.bz\/?p=173"},"modified":"2024-11-12T10:23:26","modified_gmt":"2024-11-12T09:23:26","slug":"einfache-entwicklungsumgebung","status":"publish","type":"post","link":"https:\/\/www.rustimation.eu\/index.php\/einfache-entwicklungsumgebung\/","title":{"rendered":"Einfache Entwicklungsumgebung"},"content":{"rendered":"<p>Hier erkl\u00e4re ich euch, wie ihr mit einfachen Mitteln eine recht nette Entwicklungsumgebung aufbauen k\u00f6nnt, um Skripte in Python, html oder PHP auf dem PC zu editieren und dann vollautomatisch auf den Pi zu \u00fcbertragen. Nat\u00fcrlich reicht so etwas nicht an professionelle Geschichten wir Eclipse oder so heran, aber daf\u00fcr ist der Lern- und Installationsaufwand sehr viel geringer.<br \/>\n<!--more--><br \/>\nDas Entwickeln von eigenen Programmen in Python oder PHP oder anderen Sprachen ist direkt auf dem Raspberry Pi etwas m\u00fchsam. Auch wenn der Pi einen eigenen Monitor hat und man \u00fcber die grafische Benutzeroberfl\u00e4che Programme schreibt (z.B. mit Idle), geht das alles nicht sehr fl\u00fcssig vonstatten.<\/p>\n<p>In vielen F\u00e4llen hat der Raspberry Pi keinen eigenen Monitor und auch keine eigene Tastatur sondern wird headless \u00fcber SSH und ein Terminalprogramm &#8211; z.B. Putty &#8211; vom PC aus bedient.\u00a0 Der sich dann anbietende Nano Editor ist etwas altbacken &#8211; eigentlich richtig Old School, richtig Entwickeln macht mit der Zeilenorientierung von Nano wenig Spa\u00df. Der <em>vi<\/em> Editor ist ein von vielen Profis verwendetes, altes Schlachtross\u00a0 aber schwer zu erlernen.<\/p>\n<p>Ein Problem dabei ist, dass man auf dem PC zwar sehr komfortabel schreiben kann, der PC aber meist weder Python noch PHP verarbeiten kann, da der PC halt kein Server ist; der Pi hingegen schon (zumindest dann, wenn ihr einen Webserver mit PHP auf dem Pi installiert). GPIO kann der PC sowieso nicht, also muss alles, was mit GPIO zu tun hat, eh auf dem Pi aufgerufen bzw. getestet werden.<\/p>\n<h3>Was braucht man dazu<\/h3>\n<ul>\n<li>Einen Raspberry Pi mit WLAN oder LAN und headless Zugriff \u00fcber Putty o.\u00e4.<\/li>\n<li>einen guten Editor, der auf dem PC laufen soll. Ich empfehle Notepad ++ (kost nix)<\/li>\n<li>ein Programm, dass Verzeichnisse zwischen dem PC und dem Pi synchronisiert. Ich empfehle WINSCP (kost auch nix).<\/li>\n<\/ul>\n<h3>Notepad++ konfigurieren<\/h3>\n<p>Da gibts nicht viel zu tun, ist aber trotzdem wichtig, um sp\u00e4ter keine Probleme zu bekommen.<\/p>\n<ol>\n<li>\u00a0<strong>Zeilenschaltung<\/strong>: Bei Windows ist das Zeilenende eine Kombination aus &lt;CR&gt; und &lt;LF&gt;, ausgeschrieben <em>Carriage Return<\/em> und<em> Line Feed<\/em> (wie bei einer alten Schreibmaschine) oder Chr$(13) Chr$(10). Bei Linux hingegen wird nur ein Line Feed verwendet &#8211; auch wenn das im Editor nicht so ohne Weiteres sichtbar ist. Das kann sp\u00e4ter zu Problemen f\u00fchren. Siehe diesen <a href=\"http:\/\/www.rustimation.eu\/index.php\/shebang-oder-wie-man-python-weglaesst\/\" target=\"_blank\" rel=\"noopener noreferrer\">Artikel<\/a>. Also muss das Zeilenende in Notepad ++ wie folgt eingestellt werden:<br \/>\nIm Men\u00fc Einstellungen auf \"Optionen\" gehen und dann bei \"neue Dateien\" im Feld \"Zeilenenden\" <em>UNIX<\/em> ausw\u00e4hlen. Als Kodierung <em>UTF-8 ohne BOM<\/em> ausw\u00e4hlen.<\/li>\n<li><strong>Tabulatoren<\/strong>:\u00a0 Warum auch immer, kommt der Python Interpreter durcheinander, wenn Einr\u00fcckungen gemischt mal mit Tabulatoren gemacht werden und mal mit Leerzeichen. Am besten stellt man den Editor so ein, dass bei Python generell Tabulatoren durch 4 Leerzeichen ersetzt werden: Im Men\u00fc Einstellungen auf \"Optionen\" gehen, dann \"Sprache\" ausw\u00e4hlen, im Feld \"Tabulatoren\" die Sprache \"Python\" markieren oder unterhalb davon Tabulatorbreite auf 4 und das H\u00e4kchen bei \"Durch Leerzeichen ersetzen\" machen.<br \/>\n<span style=\"color: #808080;\">Notepad++ \u00e4ndert gelegentlich seine Men\u00fcs, so fand sich die Tabulatoren Einstellung in einer fr\u00fcheren Version dieses Posts woanders. Obige Anleitung bezieht auf Notepad++ 7.3.3. (Build 8. M\u00e4rz 2017)<\/span><\/li>\n<li>Wer mit <strong>JSON<\/strong> arbeiten will kann sich noch den Hinweis bei meinem Artikel <a href=\"http:\/\/www.rustimation.eu\/index.php\/wetterbericht-und-astrodaten-auslesen-und-mit-json-verarbeiten\/\" target=\"_blank\" rel=\"noopener noreferrer\">Wetterbericht &#8230; mit JSON auslesen &#8230;<\/a>\u00a0 zu Gem\u00fcte f\u00fchren.<\/li>\n<\/ol>\n<h3>WINSCP konfigurieren<\/h3>\n<p>Nach dem Start von WinSCP erscheint zuerst ein Anmeldefenster. Dort klickt ihr auf \"Neues Verbindungsziel\". Als \u00dcbertragungsprotokoll w\u00e4hlt ihr SCP aus. In das Feld Rechnername tragt ihr entweder den Namen eures Raspberry Pi (z.B. RaspberryZwei) oder die IP Adresse des Pi in eurem Netzwerk. Gegebenenfalls\u00a0 die Portadresse \u00e4ndern\u00a0 und dann noch den Benutzernamen und wahlweise Passwort eintragen.\u00a0 Dann den Button \"Speichern unter\" anklicken und die Sitzung speichern. Optional k\u00f6nnt ihr auch das Passwort mitspeichern. Mit dem \"Anmelden\" Button wird die Sitzung gestartet.<\/p>\n<h3>Dateien synchron halten<\/h3>\n<p>Nach dem Start von WinSCP seht ihr zwei explorer\u00e4hnliche Fenster. Links das vom PC, rechts das vom Pi Homeverzeichnis. Navigiert wird genau so wie beim Windows Dateiexplorer. Dateien werden einfach durch anpacken mit der Maus und verschieben zwischen den Fenstern kopiert.<\/p>\n<p>Erzeugt euch auf dem PC und dem Pi ein Verzeichnis, in dem ihr euer Projekt ablegen wollt.<\/p>\n<p>Mit dem <em>Synchronisieren<\/em> Button in der Men\u00fczeile oben kann man die Verzeichnisse leicht abgleichen. \u00dcber die Checkbox \"\u00c4nderungszeit\" im Synchronisationsdialog wird jeweils die neueste Datei kopiert. Vorsicht bei der Checkbox \"Dateien L\u00f6schen\". Hier kann es passieren, das eine auf dem PC versehentlich gel\u00f6schte Datei auch auf dem Pi gel\u00f6scht wird, oder umgekehrt, was unter Umst\u00e4nden zum Totalverlust f\u00fchren kann.<\/p>\n<p>Noch viel besser als das Synchronisieren ist der Button links davon: \"Entferntes Verzeichnis aktuell halten\". Ist diese Funktion aktiv, wird alles, was ihr in eurem Projektverzeichnis auf dem PC speichert, sofort auf den Pi kopiert. Die Funktion wird \u00fcber den Startbutton des Dialogs aktiviert.<\/p>\n<p>Jetzt k\u00f6nnt ihr nach Herzenslust mit Notepad++ auf dem PC codieren, jedes Mal, wenn die Datei gespeichert wird, ist sie unmittelbar darauf auf dem Pi wieder zu finden und kann dort ausgef\u00fchrt werden.<\/p>\n<h3>Programme Testen<\/h3>\n<p>Nachdem ein <strong>Python<\/strong> Skript auf dem Pi gelandet ist, wechselt ihr zu einem Terminalfenster (im headless Betrieb w\u00e4re das wahrscheinlich Putty) und startet das Script. Wenns nicht gleich funktioniert, liegt es wahrscheinlich daran, dass ihr es noch nicht lauff\u00e4hig gemacht habt.\u00a0 Wie das geht, bzw. was dabei zu beachten ist findet ihr in diesem <a href=\"http:\/\/www.rustimation.eu\/index.php\/shebang-oder-wie-man-python-weglaesst\/\" target=\"_blank\" rel=\"noopener noreferrer\">Artikel<\/a>.<\/p>\n<p><strong>PHP Skripte<\/strong> auf dem Pi\u00a0 ruft ihr \u00fcber euren Browser am PC auf. Einfach in die Adresszeile die IP Adresse , ggf. den Pfad und den Namen des Skripts\u00a0 eintragen. z.B.<\/p>\n<pre class=\"lang:default decode:1 inline:1 \">192.168.178.22\/prog\/test.php<\/pre>\n<p>PHP ist ohne richtiges Entwicklungstool etwas m\u00fchsam, da wir die Scripte nicht auf korrekte Syntax \u00fcberpr\u00fcfen k\u00f6nnen\u00a0 und der PHP Server auch keine vern\u00fcnftige R\u00fcckmeldung gibt. Im Normalfall bekommt man bei einem Fehler nur ein wei\u00dfes Browserfenster. Da hilft dann nur in ganz kleinen Schritten vorzugehen und sehr viele <em>echo<\/em> Statements einzubauen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hier erkl\u00e4re ich euch, wie ihr mit einfachen Mitteln eine recht nette Entwicklungsumgebung aufbauen k\u00f6nnt, um Skripte in Python, html oder PHP auf dem PC zu editieren und dann vollautomatisch auf den Pi zu \u00fcbertragen. Nat\u00fcrlich reicht so etwas nicht an professionelle Geschichten wir Eclipse oder so heran, aber daf\u00fcr ist der Lern- und Installationsaufwand &hellip; <a href=\"https:\/\/www.rustimation.eu\/index.php\/einfache-entwicklungsumgebung\/\" class=\"more-link\"><span class=\"screen-reader-text\">Einfache Entwicklungsumgebung<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,8,9,11],"tags":[56,31,55,34],"class_list":["post-173","post","type-post","status-publish","format-standard","hentry","category-json","category-php","category-python","category-raspbian","tag-entwickeln","tag-notepad","tag-programmieren","tag-python-2"],"_links":{"self":[{"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/posts\/173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/comments?post=173"}],"version-history":[{"count":1,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/posts\/173\/revisions"}],"predecessor-version":[{"id":3133,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/posts\/173\/revisions\/3133"}],"wp:attachment":[{"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/media?parent=173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/categories?post=173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rustimation.eu\/index.php\/wp-json\/wp\/v2\/tags?post=173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}