Button-Klick -> Befehl auf RPi ausführen

C

ctbeicss

Neues Mitglied
0
Hallöchen in die Runde.


Ich benötige mal Hilfe.

Es geht um eine einfache App zur Steuerung meiner Gartenbewässerung.



Die gesamte Steuerung läuft über einen RPi und zwei Relais, die ihre Arbeit bereits wunderbar verrichten.

Der RPi hat ne fixe IP und auch feste Zugangsdaten für einen Benutzer, der lediglich die Skripte für die Bewässerung ausführen kann.



Jedoch finde ich es doof, die Relais jedes mal über das Terminal selbst schalten zu müssen und würde gerne deshalb eine App erstellen, wo Buttons mir das Ganze abnehmen.



Das sollte einfach wie folgt aussehen:

App wird geöffnet, Willkommensbildschirm kommt, Ein Button "Übersicht Bewässerungen" leitet mich auf eine neue Stage wo 5 Buttons ("Rasen On", "Rasen Off", "Beet On", "Beet Off", "Garten Komplett") zu sehen sind.

Jetzt soll bei einem Druck auf die jeweiligen Button ein Skript auf dem RPi angesprochen bzw. ge"bashed" werden aber OHNE das in dem Moment in der App irgendeine Shell aufgeht oder sonst was. Jeder Button hat ein eigenes Skript auf dem RPi.

Einfach drücken, Command wird ausgeführt auf dem RPi und dann graut sich der Button in der App aus (Abhängigkeiten hab ich schon selbst hinbekommen).

Leider habe ich absolut keine Ahnung wie das dahinter stehende Prozedere ab dem Button-Klick aussieht.



Ich möchte hier auch kein Copy-Paste Code von jemandem haben; ich möchte es VERSTEHEN! Wenn jemand weiß wie es geht wäre eine "Anleitung" der bessere Weg als ein fertiger Code
:)




Vielen Dank und sonnige Grüße aus NRW.
 
@ctbeicss

Eigentlich recht einfach : Ich gebe Dir erst mal die Stichpunkte für deine Recherche

a) Auf dem Pi einen kleinen HTTP Server ( z.b. nginx) aufsetzen , kleines PHP Script der die IO-Pins mittels http GET steuert
b) Android : AndroidStudio, Default Activity Projekt , Knöpfe im Layout einfügen , drauf reagieren (onClickListener) und mit der Library OkHttp3 den Request an die feste IP des Pi's rausschicken.
P.S. Am besten für den Anfang JAVA, da gib es mehr Suchtreffer für dich.

Melde Dich , wenns jetzt an die Details gehen sollte.
Einen Source wolltest du ja nicht von mir geschrieben haben :)
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: ctbeicss
Besten Dank für den schnellen Interact :D :p
ich hätte evtl noch erwähnen sollen das hinter dem Pi noch ein entfernter steht, an dem die Relais angeklemmt sind :D
der steht mit Handynetz im entfernten Garten. Zugriff kommt per reverse SSH :D
also folglich führe ich auf RPi 1 (den ich auch steuern möchte mit der App) ein Skript aus damit sich dieser mit RPi 2 verbindet und dieser dann die GPIO's bedient.

Genau dieses Skript auf RPi 1 möchte ich mit der App ausführen :D

Viele Grüße
 
Zuletzt bearbeitet:
Na ja , "dein" Script auf dem Pi1 muss nun mal dort ausgeführt werden.
Da bleibt dir nur das Anstossen durch die App per http, NFC oder BT übrig.

Aufgrund der Entfernung zu Pi1 und der festen IP also nur über Http .......
Welche Sprache du letztendlich am Http-Server verwendest, um dein Script auszuführen, ist Schnuppe (PHP, Node.js etc etc)
 
Zuletzt bearbeitet:
Selbst wenn RPi 1 lokal im Netzwerk ist ? RPi steht bei mir im Wohnzimmer, RPi 2 im Garten 12 KM entfernt.
Ich bin dauerhaft mit Zu Hause über'n VPN verbunden. ich dachte das Ganze ginge auch über ne SSH Connection.
Wenn http da geeigneter ist werde ich mich damit jetzt mal auseinander setzen und melden wenn ich nicht weiterkomme :D

Danke! :)
 
Ich vermute, du machst einen Denkfehler -

Android ist eine eigenständige geschlossene VM - du kannst also nur mit einer Remote-Technik einen Trigger auf dem Pi1 auslösen.
Egal, ob du das Handy auch nur 10 cm daneben liegen hast.

Kabelgebunden geht da auch nichts mehr (z.b.USB) , da Android seit der Version 6.0 die AOA/FTTI Technik entfernt hat.
(Was ich aber für überzogen halten würde)

Du brauchst daher eine klassische Client/Serverlösung ....

P.S kleine Anmerkung , es gibt doch wunderbare Remote-Bewässerungs Ventile für 40 eus - Mit allen erdenklichen Protokollen.
Da ist die APp sogar schon fertig
https://www.amazon.de/gp/product/B08Q4JM862/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
 
Zuletzt bearbeitet:
Okay, gut das wir drüber gesprochen haben :) Hat sich jetzt schon gelohnt mich hier anzumelden :p :)
Ich streiche das mit dem SSH gedöhns und werde wie gesagt das HTTP-Ding versuchen (vermutlich gar nicht so schlecht weil auf Pi 1 apache2 aufgrund einer Nextcloud-Instanz schon installiert ist).
 
Zuletzt bearbeitet:
Vielleicht kannst du mir ja doch mit ein paar Source's zukommen lassen :)
Komme tatsächlich keinen Schritt weiter. Weder was ich in der App machen muss, noch wie ich den Server konfiguriere :D
 
Weder was ich in der App machen muss, noch wie ich den Server konfiguriere


Öhm, das ist nicht nur mal eben in einem Forum zu klären.

Mit dem SourceCode alleine kannst du eigentlich gar nichts anfangen, wenn du dich nicht ansatzweise mit der Entwicklungsumgebung, wie auch das Aufsetzen der Infrastruktur auseinander gesetzt hast .

Das ist nämlich die meiste Arbeit und erfordert schon ein wenig Praxiserfahrung ( Manifest, Implementation von Bibliotheken etc , SSL Security settings, Target Plattform, USB Debugging etc.)
Dementsprechend würde ich dir erst einmal zu einem Tutorial anraten , welches dir die Grundzüge beibringt - AndroidStudio hat auch schon so Einges mitgeliefert.

Dann :

Android Buttons:
Android Button OnClickListener Example - Sanfoundry

Android OkHttp3:
Overview - OkHttp


Auf Serverseite kann man hier natürlich keinen Leergang anbieten , wie man denn z.b ein PHP Script erstellt, welches GET's auswertet und Systemcall seines Scripts/Shells durchführt.

GPIO-Steuerung in PHP-Scripts | pi-buch.info
 
Zuletzt bearbeitet:

Ähnliche Themen

A
  • AnimaAngelo85
Antworten
1
Aufrufe
337
swa00
swa00
MES
Antworten
10
Aufrufe
819
MES
MES
M
  • MikelKatzengreis
Antworten
5
Aufrufe
128
swa00
swa00
Zurück
Oben Unten