Xcode Swift/SwiftUI SSH Verbindung zu RaspberryPi

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Xcode Swift/SwiftUI SSH Verbindung zu RaspberryPi

    Hey Zusammen,

    Ich benötige eure Hilfe.

    Ich habe folgendes vor:

    Ich möchte eine iPad App erstellen über die ich per SSH Befehle an meinen Raspberry senden kann.

    (Ich klicke einen Button -> SSH Befehl an RPI (Zeige das Bild an) -> RPI zeigt Bild an.

    Ich finde zum Thema SSH in Swift nur alte Github Beiträge.

    Ich habe über Cocoapod auch schon Frameworks installiert nur sind diese nicht Swift5 kompatibel und nach 4 Tagen recherchieren und probieren habe ich den Durchblick verloren.

    Ich habe semi gute Grundkenntnisse in SwiftUi und hoffe das es möglich ist das ganze auch in SwiftUi zumachen. (umso leichter fällt mir der App Aufbau)

    Ich hoffe das mir jemand hier helfen kann denn ich bin mit meinem Latein am Ende.

    Kurze Erklärung warum das ganze:

    Ich möchte das iPad als eine Art Steuerung für meine Raspberrys nutzen (auch wenn es gute Apps im Store gibt möchte ich mir meine selber gestalten)

    Folgende Daten braucht der Raspberry zur Verbindung:

    Computername: ip des rpi's oder pi@raspberrypi
    Benutzername: pi
    Passwort: raspberry

    Bitte habt Erbamen wenn ich nicht gleich alles verstehe.

    Gruß :) :)

    **vllt gibt es ja auch eine Variante als ssh

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von mrlbo ()

  • Die ssh ist ein sehr mächtiges Werkzeug, aber für das was Du vor hast, ist das nicht besonders gut geeignet bzw. macht das auf eine bestimmte Weise umständlich.

    Gibt's für iOS eine libssh oder dergleichen? Auch wenn das in C geschrieben ist, dann kannst Du das doch verwenden. Würde mir halt einen kleinen Adapter dafür schreiben.

    Oder Du schreibst dir einfach einen Service auf dem Raspi, der deine Anfragen entgegen nimmt, die Ausführung übernimmt und einen Status zurück gibt. Kann auch ein Webserver sein.

    Wenn Du einen Webserver/Webdienst schreiben möchtest, dann guck dir mal OpenAPI/Swagger an. Da gibt es auch Tools, die dir Code für deinen Service generieren. Wenn Du das in PHP machst, dann musst Du einen Webserver installieren (lighttpd, Apache, NGINX, ...), bissl PHP-Code genieren lassen und die Lücken mit deine Kommando-Zeilen-Anweisungen ausfüllen.

    Bezüglich Dienst/Serivce (Stichwort TCP-Server): Wenn es kein Swift für den Raspi gibt, dann schreibe das einfach in Python. Damit solltest Du ziemlich schnell am Ziel sein. Braucht aber natürlich auch bissl Einarbeitung. systemd ist dafür verantwortlich, dass ein Dienst auch nach dem Systemstart startet. -> Okay. Kann jetzt für den einen oder anderen auch nach viel Arbeit klingen, aber dieser Weg gefällt mir gut.
  • Danke für den Tipp

    Aber das ist genau das was ich nicht verstehe.

    Warum muss es immer mit irgendwelchen externen Tools funktionieren und mehreren Programmiersprachen.

    Ich kann den RPI doch superleicht von meinem Terminal ansprechen.

    1Befehl und ich bin eingeloggt, warum gibt es dafür keine Anleitung im Jahr 2020? das ist mir ein Rätsel, alles nur 2011 usw.

    Hast du vllt doch eine Idee wie ich den RPI ausschließlich in Swift anspreche? irgendein Framework was funktioniert?

    Danke und Gruß ;)
  • Viele verwenden die ssh nicht programmatisch. Kann mir gut vorstellen, dass Du somit nicht neue Artikel für jede neue Swift-Version findest. Wenn das Problem an der Swift-Version liegt, dann sollte das auch (einfach) zu lösen sein. Dazu muss man das Problem aber erst verstehen und das kann je nachdem nicht immer einfach sein.

    Und wenn Du was aktuelles möchtest, was ist mit SwiftNIO SSH?
  • zu SwiftNio gibt es nur ein Video/Beispiel was mit dem RPI kommuniziert allerdings nur für die GPIO's. (und das über Umwege)

    Hast du vllt schonmal einen Github Beitrag gesehen zu SwiftNio oder könntest mir helfen wie ich explizit den Raspi über das Heimnetzwerk ansprechen? in SwiftNio
  • Also SwiftNIO ist nicht SwiftNIO SSH.

    mrlbo schrieb:

    zu SwiftNio gibt es nur ein Video/Beispiel was mit dem RPI kommuniziert allerdings nur für die GPIO's. (und das über Umwege)
    Das klingt so, als ob jemand einen Server für den Raspi programmiert hat und dann ein paar GPIOs ansteuert. Das GPIO ansteuern brauchst Du nicht, dafür möchtest Du ja Kommandos ausführen. K.A. wie dazu der korrekte Aufruf in Swift lautet. Findest Du aber im Foundation Framework. Aber diese Variante möchtest Du sowieso nicht.

    mrlbo schrieb:

    Hast du vllt schonmal einen Github Beitrag gesehen zu SwiftNio oder könntest mir helfen wie ich explizit den Raspi über das Heimnetzwerk ansprechen? in SwiftNio
    NIOSSHClient Zeile 103. Hier wird das Kommando aufgerufen. Ist halt nicht in einen schönen handlichen Klienten verpackt, sondern etwas aufwendiger. Aber im Prinzip ist das das Beispiel, an dem Du dich orientieren kannst.


    Mir ist noch eingefallen, dass man git auch über die ssh nutzt. Allerdings hat man hierbei nicht Zugriff auch das Remote-System, sondern nur auf die Git-Shell oder so.


    Wenn dir das mit der ssh zu kompliziert wird, dann kannst Du ja einen Telnet-Dienst auf den Raspi installieren. Ist halt dann nicht verschlüsselt, aber in deinem Heimnetz ist das nicht so schlimm. Aber keine Ahnung, ob es dazu Videos gibt.