ComPi [Linuxsteuerung/Befehlsausführung]

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • [font="Arial"]Hallo, ich möchte mal mein Projekt vorstellen.[/font]

    [font="Arial"]Zum Projekt:[/font]
    [font="Arial"]Es nennt sich ComPi, zusammengesetzt aus Command und Pi.[/font]

    [font="Arial"]- ComPi ist ein Tool um ein Linuxsystem, vorzugsweise ein Server (Raspberry mit Rasbian, Debian), fernzusteuern. [/font]
    [font="Arial"]Es besteht aus einem Android Client und einem Python Server.
    [/font]
    [font="Arial"]- Es dient dazu auf einfache Art und weise Befehle auszuführen, entweder per Click auf dem Befehl oder per Sprache.[/font]

    [font="Arial"]- Zur Verbindung des Servers wird eine SSL Verbindung aufgebaut. Dies ist im Programm pflicht. Zur Zeit werden noch alles Zertifikate akzeptiert, dies wird sich aber in spätere Versionen ändern, um die Sicherheit zu erhöhen. Da das ganze auch über das Internet genutzt werden soll und alle Lösungen, die irgendwie in diese Richtung gingen, immer eine unverschlüsselte Verbindung aufgebaut haben, habe ich nun angefangen eine eigene Lösung zu entwickeln[/font]

    [font="Arial"]Benötigt wird:[/font]
    [font="Arial"]- Android Smartphone[/font]
    [font="Arial"]- Linux OS (Raspbian, Debian, etc.), mit python support[/font]

    [font="Arial"]Was kann gemacht werden:[/font]
    [font="Arial"]- ausführen von Befehlen per Sprachen oder klick[/font]
    [font="Arial"]- Antwort ob der Befehl verstanden wurde[/font]
    [font="Arial"]- Verschlüsselte Verbindung[/font]
    [font="Arial"]- Hinzufügen von neuen Befehlen, indem nur eine XML bearbeitet werden muss (wird sich noch ändern)[/font]
    [font="Arial"]- Der Befehl kann im Satz gesagt werden. Z.B. ist der Befehl "server ausschalten". So kann der Satz "Bitte den Server ausschalten" lauten.
    [/font]

    [font="Arial"]Kleiner Denkanstoß, was für Befehle möglich sind.[/font]
    [font="Arial"]- Dienste Starten und Stoppen, wie apache etc.[/font]
    [font="Arial"]- Wake on Lan für bestimmte pc's auf einfache art und weise[/font]
    [font="Arial"]- Fernsteuern von Funktechnik (z.B. Funksteckdosen http://alexbloggt.com/funksteckdosen-raspberry-pi-teil1/)[/font]
    [font="Arial"]- Steuerung von Programmen, die eine Command Line zur Verfügung stellen, wie VirtualBox[/font]
    [font="Arial"]- und was einem noch so einfällt [/font]

    [font="Arial"]Hinweis:[/font]
    [font="Arial"]ComPi ist noch in der Enwicklungsphase und bietet daher noch nicht sehr viele extra Funktionen und es sind Befehle manuell hinzuzufügen.
    Daher können auch noch Bugs und Fehler auftreten.
    [/font]

    [font="Arial"]Link zur App:[/font]
    [font="Arial"]https://play.google.com/store/apps/det…m.psx2pal.compi
    [/font]
    [font="Arial"]Falls ihr mich unterstützen wollt:[/font]
    [font="Arial"]https://play.google.com/store/apps/details?id=com.psx2pal.compi.pro
    [/font]

    [font="Arial"]Die App enthält alle weiteren Informationen zur Einrichtung des Servers für die App.[/font]

    [font="Arial"]Ich weiß noch nicht, ob ich hinterher eine Pro Version veröffentliche oder eine mit Werbung. Dies kommt auf das Interesse an diesem Projekt an. Falls es mal eine Pro Version geben sollte/wird, wird die Donate Version sich zur Pro Version wandeln. So haben alle Unterstützer automatisch schon die Pro Version "gekauft". [/font]

    [font="Arial"]Screenshots:[/font]
    [font="Arial"]Siehe Link zur App, da sind Screenshots enthalten.[/font]

    [font="Arial"]Geplante Features:[/font]
    [font="Arial"]- Benutzerbasierte Authentifizierung und Befehlzuordnung
    - Befehle über die App einpflegen ohne die XML selber bearbeiten zu müssen
    - Befehlstruktur erweitern, sodass auch Textausgaben eines Programmes wieder geben werden können (Als Antwort von der App). Um z.B. die Temperatur abzufragen.
    - Befehlstruktur erweitern, sodass Befehle miteinander kombiniert werden können, um Sätze zu sprechen (Und und Or Verknüpfung) Z.B. sind die Befehlswörter "server" und "ausschalten". Sodass dann der Satz "Bitte ausschalten des Servers vollziehen" oder einfach nur "Server ausschalten".
    - Kategorien abbilden
    - Mehr als einen Server zu verwalten
    - ssl self signed Zertifikat zu akzeptieren und nicht nur alle. Diese Option als optionale Einstellung.
    - Installscript für den Server
    - Connect/Disconnect Button
    - Mehr Einstellungen in der App, wie z.B. Textrückgabe anstatt Sprachrückgabe, etc.
    - mehr Sprachen[/font]

    [font="Arial"]Weitere Ideen[/font]
    [font="Arial"]- dynamische Parameterübergabe per Textbox oder Sprache, die mit einem Schlüsselwort eingeleitet wird[/font]
    [font="Arial"]- Linuxscript um Befehle einfacher hinzufügen zu können vom Server aus. [/font]

    [font="Arial"]Nun zu euch:[/font]
    [font="Arial"]Nun möchte ich eure Meinung zum Programm hören, ob dies zu gebrauchen ist und was ihr so für Ideen und Vorschläge habt.[/font]

    Einmal editiert, zuletzt von draig (27. Januar 2014 um 00:07)

  • soweit ich das verstanden habe ist es ein ssh client mit sprachsteuerung?
    nur dass man befehle davor speichern kann/muss und sie mit nur 1 klick oder psrachsteuerung ausführt?
    liege ich da richtig?

    ist bestimmt nützlich wenn man z.b. einen gameserver oder webserver etc. am laufen hat kann man ihn einfach 1 klick an und ausschalten
    updates runterladen
    besonders nützlich wirds natürlich für leute die ihre heizung licht etc. steuern :D
    so steuersysteme kosten ja normalerweise ein heiden geld
    und damit gehts ja ostenlos ;)
    coole idee!

    1 frage noch:
    kann man dem befehl auch parameter übergeben?

    (I) mehr käse = mehr löcher
    (II) mehr löcher = weniger käse
    (I) = (II)
    mehr käse = weniger käse
    :denker:

  • Ja Parameter kann man auch übergeben, dies funktioniert aber zur Zeit nicht dynamisch. Wäre aber eine Idee, den Parameter dynamisch anzugeben, bzw. zu sprechen. Nehme ich mit in die Liste auf.

    Es läuft über einen sslSocket, also nicht direkt ssh.
    Aber ansonsten hast du es soweit richtig verstanden.
    Der Sinn in der Konstruktion ist, dass es nicht auf eine Sache festgelegt sein soll, wie Haussteuerung mit Funksteckdosen, sondern sich jeder es sich so zusammenstellt, wie er es braucht. Derjenige muss natürlich ein bisschen Ahnung haben, um seine Befehle einpflegen zu können. Aber man könnte ein Script schreiben um vorgefertigte Dachen einzufügen, damit es leichter wird.


    Edit:
    Falls ihr Probleme beim Einrichten habt, dann meldet euch kurz, ich helfe euch dann.

    Einmal editiert, zuletzt von draig (25. Januar 2014 um 21:43)

  • Serverseitig würde ich dem user da schon einfache möglichkeiten geben Befehle oder Kommandos selbst einzupflegen ohne den PYthon Code ändern zu müssen. Dann ist es echt eine Tolle Idee.

    Wo finden wir eigentlich den PYthon Code?

    Einmal editiert, zuletzt von MrBecks (26. Januar 2014 um 10:10)

  • Hallo, man muss den Python Code nicht ändern. Die Befehle werden schon aus einer XML Datei ausgelesen und können schon erweitert werden. Gibt bisher nur kein Frontend (kommt noch) um die XML zu erweitern, dies muss noch manuell gemacht werden.

  • Erst mal velen Dank für dein Project.
    Habe alles nach deiner Anleitung installiert, bekomme aber beim starten des Servers folgende Fehlermeldung.

    Code
    Traceback (most recent call last):
      File "server.py", line 8, in <module>
        xmldocPort = minidom.parse(pathname + "/compi.xml")
      File "/usr/lib/python2.7/xml/dom/minidom.py", line 1920, in parse
        return expatbuilder.parse(file)
      File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 922, in parse
        fp = open(file, 'rb')
    IOError: [Errno 2] No such file or directory: '/compi.xml'


    Was koennte ich da falsch machen ?

  • Hallo, habe die server.py geupdatet. Bitte nochmal laden. Das Problem lag darin, dass ich einen relativen Pfad zur XML Datei angegeben habe und somit das Server sich nur aus dem eigenen Ordner starten lassen hat. Dies ist nun behoben.

    Wäre für ein neues Feedback dankbar.

  • Habe eben die zip-Datei neu geladen, und konnte keine veränderungen feststellen.
    Habe dann die zip-Datei in einen neuen Ordner entpacht und alle schritte zum SSL-Key neu ausgeführt und es funktioniert nur, wenn ich den server über den vollständigen Pfad starte :bravo2:
    Desweiteren sind in der Berschreibung die Schritte 4 und 5 gleich. Ist das ein schreibfehler ?


    MfG Turbotoni

    Einmal editiert, zuletzt von Turbotoni (28. Januar 2014 um 10:05)

  • Danke für den Hinweis. Ja dies ist ein Fehler, Schritt 5 gehört nicht in die Anleitung, werde dies beseitigen. Ich muss bei der App eh ein kleines Update machen. Lasst sich der Server auch vom relativen Pfad nun starten? Liegt im anderen entpacken Verzeichnis die compi.xml?

  • Der Server laesst sich nicht von relativen Pfad starten.
    Im entpackten Verzeichnis liegt auch die compi.xml.
    Die Zeitangaben der files, wie auch die Dateigroesse sind mit denen von gestern Mittag identisch.
    Koennte es sein. das das update auf den Download-Server nicht geklapt hat ?

    MfG Turbotoni

    Einmal editiert, zuletzt von Turbotoni (28. Januar 2014 um 13:03)

  • Es ist die richtige Datei, habe es gerade nochmal überprüft. Eigentlich soll das Programm den Pfad, indem es ausgeführt wird, auslesen und diesen vor der compi.xml setzen. Daher sollte auch das ausführen vom relativen Pfad funktionieren, was bei mir komischerweise funktioniert. Ich werde mal die Art ändern, den Programmpfad auszulesen. Werde dann denke ich mal heute Abend das Update hochladen.


    Edit: Das Update kommt erst morgen Abend. Habe es leider heute nicht mehr geschafft.

    Einmal editiert, zuletzt von draig (28. Januar 2014 um 23:57)

  • So die neue Version ist Online. Das App-Update sollte in 1-2 Stunden im Playstore zu sehen sein. Bitte einmal testen, ob sich der neue Server nun von einem relativen Pfad und absoluten Pfad öffnen lässt. Bei mir ist das der Fall.

    Ansonsten habe ich in der App kleinere Code Verbesserungen vorgenommen, sowie einen Startscreen mit Anweisungen hinzugefügt, was bei einem Update zu tun ist etc. . Außderm wird noch eingezeigt was neu ist, also eine Changelog.

    Das nächste Update wird bisschen länger dauern, aber dafür auch größer ausfallen. Werde nun erstmal einige weitere Funktionen implementieren. Falls ihr noch Fehler findet oder neue Ideen habt, einfach posten.

  • Der Server lässt sich nun vom relativen und absoluten Pfad starten.
    Aber ich habe noch mehrere Fehler im Server gefunden.

    • der Text zwischen <command> und </command> darf nur 20 zeichen lang sein, sonst kommt die Fehlermeldung "falscher Key"
    • wenn bei Sprechen Umlaute wie ä [font="Times New Roman"]ö[/font] oder ü im Wort enthalten sind, beendet sich der Server mit einer Fehlermeldung (z.B Küche)


    Desweiteren wäre es wünschenswert, das einzelne Befehle aus der XML-Datei in der App nicht angezeigt werden.
    Ich steuere z.b das Licht bei mir im Hof mit dem Befehl "licht hof". Von der Spacherkennung wird manchmal "licht hof" und manchmal "lichthof" erkannt. Für eine problemlose Funktion habe ich für beide Befehle einen Eintrag in der XML-Datei vorgenommen. Inder Befehlsauflistung in der App würde es aber reichen, wenn nur ein Befehl angezeigt würde und der andere versteckt wäre.

    MfG Turbotoni

  • Danke für dein Feedback.

    Ich werde dann erstmal die Fehler beseitigen und die App erweitern.
    Das mit mehreren Befehlen für ein "Befehl" ist schon auf der Todoliste.

  • @draig

    Für das Problem mit gesprochenen Umlauten habe ich jezt eine Loesung. man mus in data[3] einfach die Steuercodes die mit 195 begimnnen in ae, oe und ue ersetzen.

    Code
    if len(data) > 3:
                    data[3] = data[3].replace(chr(195) + chr(164), "ae")
                    data[3] = data[3].replace(chr(195) + chr(182), "oe")
                    data[3] = data[3].replace(chr(195) + chr(188), "ue")

    Du koenntest doch den Code vom server hier verffendlichen, so koennten mehrere Leute an den Fehlern arbeiten.

    Mfg Turbotoni

    • Offizieller Beitrag

    Für das Umlaute-Problem (u.a.) wurde doch UTF-8 entwickelt, das würde ich auch nutzen...dann braucht man auch keine Buchstaben zu ersetzen ;)

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

Jetzt mitmachen!

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