Raspberry Pi 3 (Raspbian) durch Windows UWP App (C# / Windows Phone 10) steuern

  • Paspberry Pi 3 (Raspbian) durch Windows UWP App (Windows Phone 10) steuern

    Hallo zusammen,

    ich fasse kurz Voraussetzungen und Ziel zusammen:

    • Voraussetzung 1: Raspberry (Raspbian) hängt im WLAN.
    • Voraussetzung 2: Raspberry hat ein Python Skript (ausführbar), das eine LED einschaltet.
    • Voraussetzung 3: Windows Phone 10 hat eine UWP (Universal Windows Platform) App (C#), mit einem Button.
    • Ziel 1: Der Button soll die LED einschalten.
    • Ziel 2: Der Raspberry soll der UWP sagen, dass die LED an ist.
    • Ziel für die Zukunft: Ich nenne es mal kurz Hausautomation und das auch mit Sprachsteuerung.
    • Problem 1: Kommunikation zwischen UWP und Raspberry.
      Durch einmalige Eingabe der Raspberry IP (oder Host/Benutzer), sowie Passwort, sollte die Verbindung aufgebaut und Eingaben gespeichert werden. Es wäre auch zweckmäßig die Verbindung nur durch bestimmte IPs im WLAN zuzulassen (ich denke das macht eine Variable schon mal zum fixen Parameter). Die Steuerung soll zunächst nur Lokal im WLAN erfolgen, nicht über das www.


    Ich habe das etwas vereinfacht, um mich nur auf das Problem zu beziehen.
    Warum verwende ich nicht Windows IoT Core? --> Ich nutze den Raspberry auch für weitere Anwendungen unter Raspbian (Python).

    Zum Problem 1:
    Ich habe mich schon etwas damit befasst und auch viele Suchen in diesem Forum oder im www durchgeführt. Ein paar Ideen und warum ich sie nicht umsetzen kann/möchte, bzw. verbunden mit der Frage ob eine derartige Verbindung durch eine andere Konfiguration vielleicht nutzbar gemacht werden kann:

    • SSH (Secure Shell) mit Putty unter Windows 10 (PC): Verbinden mit Host, ganz einfach. Hier quasi nur ein Terminalfenster zur Verfügung, das direkt die Befehle auf dem Raspberry ausführt.
      Warum nicht mit Putty: Die UWP App hat eine Benutzeroberfläche mit Button. Ein Teil des Tools Putty, quasi der nur der Tunnel/die Verbindung, ist das fehlende Glied. Ein Terminalfenster auf dem Handy macht natürlich wenig Sinn.
    • RDP (Remote Desktop Protocol) unter Windows 10 bietet natürlich eine nahezu 1:1 Fernsteuerung.
      Schießt etwas über das Ziel hinaus. Ich stelle mir den Austausch eines „einzelnen Befehls“, ohne die Grafische Benutzeroberfläche des Raspberrys zu nutzen.
    • Samba-Server auf Raspberry, um Netzwerkverzeichnisse anzubieten.
      Bietet mir die Möglichkeit auf Verzeichnisse zuzugreifen und Daten auszutauschen. Angenommen ein Raspberry-Verzeichnis ist dadurch im Heimnetzwerk freigegeben und enthält das Skript: Jetzt müsste ich es durch die UWP nur irgendwie auf dem Raspberry ausführen (nicht auf dem Windows Phone).
    • Apache-Server auf dem Raspberry über HTTP mit PHP über Webbrowser auf dem Handy steuern. Schon mal gar nicht schlecht. Aber momentan könnte ich das (inkl. Aller damit verbundenen Herausforderungen) nur für die Steuerung aus dem www einrichten.
      Der Nachteil ist die Web-Oberfläche und der Zugang aus dem Internet. Ich wollte es einfacher halten: Zugang nur Lokal und durch eine UWP.
    • FTP-Server auf dem Raspberry, quasi wie Samba nur übers www.
    • OpenELEC/LibreELEC (Kodi oder Plex) ist eine eigene Distribution, womit es eigentlich schon weg fällt. Im Prinzip arbeitet es ja mit Samba über SSH. Die Smartphonesteuerung geht mit Apps (nicht so vertreten für Windows, wen wunderts) oder über Brwoser. Sie beschränkt sich jedoch auf Multimedia soweit ich weiß – zumindest das meiste verfügbare.
    • DLNA-Server auf dem Raspberry. Aus Sicherheitsgründen nur Read-only glaube ich. Und hier gilt auch: Ziel ist nicht den Raspberry als „Medien-Server“ zu verwenden.


    Ich glaube es kristallisiert sich heraus: Den Raspberry und darauf Verzeichnisse und Daten im Netzwerk verfügbar zu machen ist in Raspbian zunächst mal möglich. Sofern bspw. Samba dafür geeignet sein sollte, fehlt die Idee für den C#-Programmtext auf dem Host (Raspberry) etwas auszuführen. In der Regel führt ein Doppelklick auf eine Datei in einem Netzwerkverzeichnis, diese Datei auf dem „Eingabegerät“ aus, wo der Doppelklick durchgeführt wird. Dass diese Datei (das Skript) aber auf dem Host ausgeführt werden soll wäre eine weitere Hürde.
    Zudem besteht das Problem, dass der Raspberry auch eine Rückmeldung geben soll. Ich denke hierzu ist ein „Rahmen-Skript“ notwendig, das ein unter Raspbian (jedes beliebige) eigenständige Skript ausführt und eine Rückmeldung an die UWP geben kann. Muss aber nicht, die Rückmeldung kann auch direkt im einfachen LED-on/off Skript enthalten sein. Sofern der Zugriff gelingt und das Skript ausgeführt wird, muss der Raspberry auch eine Antwort an die UWP senden. Diesbezüglich ist meine Sicht noch etwas neblig.

    Man kann hoffentlich sehen, dass ich mich etwas damit befasst habe. Neben dem ganzen Raspberrywissen inkl. Python3 brauche ich natürlich auch C#-Kenntnisse und Wissen über das Programmieren von UWP-Apps mit Visual Studio (2015). Als Maschinenbauer bin ich leider nicht ganz im Thema drin, also seht mir eventuelle Missverständnisse bitte nach. Ich arbeite neben den (un)endlichen Möglichkeiten des www mit dem über 1000-seitigen Buch: Kofler, Kühnast, Scherbeck „Raspberry Pi – Das umfassende Handbuch“, 3. Auflage.

    Ich hoffe jemand kann mir einen Tipp geben, welchen Google Hit ich übersehen habe oder gar welches Kapitel im genannten Buch ich nochmal (noch) intensiver lesen sollte. Der passende Programmcode mit Erklärungen wäre natürlich optimal. Auch wenn es sicherlich jede Menge Leute auf diesem Planeten gibt, die das schon gelöst haben – Wie groß ist die Wahrscheinlichkeit, dass ich einen davon hier treffe? :)

    Grüße Queeuqack AKA René

  • Raspberry Pi 3 (Raspbian) durch Windows UWP App (C# / Windows Phone 10) steuern? Schau mal ob du hier fündig wirst!

    • Offizieller Beitrag

    Hallo Queequack,

    Willkommen im Forum!


    Apache-Server auf dem Raspberry über HTTP mit PHP über Webbrowser auf dem Handy steuern. Schon mal gar nicht schlecht. Aber momentan könnte ich das (inkl. Aller damit verbundenen Herausforderungen) nur für die Steuerung aus dem www einrichten.
    Der Nachteil ist die Web-Oberfläche und der Zugang aus dem Internet. Ich wollte es einfacher halten: Zugang nur Lokal und durch eine UWP.

    Das scheint auf den ersten Blick (mangels evtl. passender APPs für Win-Telefone?) die beste Lösung zu sein. Zugang aus dem Internet hat der Webserver nur wenn Du diesen einrichtest bzw. zulässt. ;)

Jetzt mitmachen!

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