Raspberry PI - Webserver - GPIO steuerung

  • Hallo,

    ich benutze einen RPI 3, worauf ein Webserver(in meinem Fall Apache ) läuft.

    Bin Anfänger und möchte einfach über GPIOs eine LED ansteuern(über den Webserver), was ich auch geschafft habe.

    Habe 2 Buttons erstellt zum Ein-und Ausschalten und ebenfalls eine Zeiteingabe. Programmiert wurde mit PHP.

    Ich möchte nun jedoch, dass die LED nur leuchtet, solange man auf den Button klickt, sobald man den Button nicht mehr anklickt soll die LED aufhören zu leuchten.

    Hat hier jemand eine Ahnung wie das funktionieren könnte?

    Nachdem dies mit dem Button klick funktioniert, würde ich gerne einen Schrittmotor, nach dem selben Konzept ansteuern.

    Ist es überhaupt mit PHP möglich oder muss auf eine andere Sprache wie Java oder C# über Mono umgestiegen werden?

    Mit freundlichen Grüßen,

    Josef Knappitsch

  • Möglich ist das. Allerdings benötigt ein Schrittmotor eine Steuerung. Die muss natürlich irgendwie angesprochen werden. Möchtest Du pro Klick einen Stepp machen oder durch einen Button eine bestimmte Position einnehmen lassen?

    Erstmal danke für die schnelle Antwort.

    Im Idealfall einen Schieberegler wodurch man die Stepps einstellen kann oder über einen Button, wo man wie oben angesprochen, den Button anklicken muss und sobald man damit aufhört, der Motor stoppt. Im Prinzip wie ein Taster, solange man drückt wird ein Signal gegeben und wenn damit aufhört eben nicht.

    Einmal editiert, zuletzt von Josef Knappitsch (22. August 2018 um 10:25)

  • Hallo,

    wenn du das ganze interaktiv machen möchtest, d.h. dass die GPIOs des Pi auf Event (Button geedrückt, Schieberegler verschoben etc) reagieren, musst du das anders angehen. Mit dem klassischen Request-Response Modell, bei dem die Webseite immer komplett geladen wird, kommst du da nicht wirklich weiter.

    Browser-seitig setzt du das mit JavaScript um, bei einem Event (wie Button gedrückt, Button los gelassen) sendest du einen AJAX-Request an den Server, der das dann verarbeitet. Was du serverseitg einsetzt ist im Prinzip gleich, so lange die mit der Programmiersprache die GPIOs schalten kann. Im Falle des Pi bietet sich da z.B. sehr stark Python mit einem Webframework wit Bottle oder Flask an.

    Gruß, noisefloor

  • Hallo,

    wenn du das ganze interaktiv machen möchtest, d.h. dass die GPIOs des Pi auf Event (Button geedrückt, Schieberegler verschoben etc) reagieren, musst du das anders angehen. Mit dem klassischen Request-Response Modell, bei dem die Webseite immer komplett geladen wird, kommst du da nicht wirklich weiter.

    Browser-seitig setzt du das mit JavaScript um, bei einem Event (wie Button gedrückt, Button los gelassen) sendest du einen AJAX-Request an den Server, der das dann verarbeitet. Was du serverseitg einsetzt ist im Prinzip gleich, so lange die mit der Programmiersprache die GPIOs schalten kann. Im Falle des Pi bietet sich da z.B. sehr stark Python mit einem Webframework wit Bottle oder Flask an.

    Gruß, noisefloor

    Danke ebenfalls für die Antwort. Also Clientseitig einfach über JavaScript und Serverseitig Python mit Bottle oder Flask? Wie sieht es aus wenn ich später über eine App steuern möchte?(Framework Xamarin). Wäre hier nicht eine Programmierung über C# mit Project Mono notwendig ?

  • Hallo,

    Zitat

    Also Clientseitig einfach über JavaScript

    Ja, das ist auch ziemlich alternativlos.

    Zitat

    und Serverseitig Python mit Bottle oder Flask?

    Kann man machen, muss man aber nicht. Du kannst grundsätzlich serverseitig alles nehmen was a) am dem Raspi läuft, b) HTTP-Requests entgegen nehmen kann und c) GPIOs schalten. Wenn du kein Python kannst, aber total gut Java oder Node.js oder ..., dann mach's damit.

    Zitat

    Wie sieht es aus wenn ich später über eine App steuern möchte?(Framework Xamarin). Wäre hier nicht eine Programmierung über C# mit Project Mono notwendig ?

    App = "irgendwas" mit GUI, was lokal auf dem Raspberry läuft?

    Gruß, noisefloor

  • Zitat

    App = "irgendwas" mit GUI, was lokal auf dem Raspberry läuft?

    Würde gerne über eine APP(welche ich mit Xamarin erstelle) am Smartphone (Ios und Android), den Schrittmotor steuern.

    LG

  • Hallo,

    Zitat

    Würde gerne über eine APP(welche ich mit Xamarin erstelle) am Smartphone (Ios und Android), den Schrittmotor steuern.

    Dann macht eine serverseitige, REST-ähnliche Schnittstelle wie vorgeschlagen noch mehr Sinn, weil dann auch deine App auch darüber mit dem Raspi kommunizieren kann.

    Eine Alterantive wären noch Websockets, aber das ist etwas schwieriger / aufwendiger zu implementieren.

    Gruß, noisefloor

    Einmal editiert, zuletzt von noisefloor (23. August 2018 um 15:54) aus folgendem Grund: Typo fix

  • Hallo,

    Dann macht eine serverseitige, REST-ähnliche Schnittstelle wie vorgeschlagen noch mehr Sinn, weil dann auch deine App auch darüber mit dem Raspi kommunizieren kann.

    Eine Alterantive wären noch Websockets, aber das ist etwas schwieriger / aufwendiger zu implementieren.

    Gruß, noisefloor

    Okay Danke. Habe so etwas bis jetzt noch nie gemacht. Wie kann man sich dass mit der Rest-Schnittstelle vorstellen? Kann man hier wenn am Webserver eine andere Programmiersprache zum steuern verwendet wird als in der App trotzdem über diese Rest-Schnittstelle miteinander kommunizieren?

    lg

  • Ja. Du schreibst den Server-Code in der Sprache deiner Wahl (Python-Frameworks wurden z. B. schon genannt) und die App fürs Smartphone oder was auch immer in der Sprache deiner Wahl. Über HTTP oder Websockets (soo kompliziert sind die gar nicht) kann dann die App mit dem Server kommunizieren, im Falle von Websockets kann auch der Server zu beliebigen Zeitpunkten Daten an die App schicken, sobald diese einmalig die Websocket Verbindung hergestellt hat.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!