Python Skript starten mit Unterbefehl

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,
    ich habe ein Python Skript welches ich wie folgt starte.

    Code
    python ibustester.py -dev /dev/cu.usbserial-A9QTPVV7

    Sobald das Skrip gestartet ist kann ich "w" eintippen und mit Return bestätigen und wechsle in den Schreibmodus. Im Schreibmodus kann ich dann Befehle

    Code
    9C 05 BF 7C 04 72 2C

    o.ä. senden. Das problem ist ich muss das alles Händisch machen. Ich möchte, dasss das ganze in einem schritt funktioniert.

    Ich Stelle mir da etwas vor wie:

    Code
    python ibustester.py -dev /dev/cu.usbserial-A9QTPVV7 HierDerSchreibBefehl

    Wie kann ich das Umsetzen?
    Das Skript ist hier zu finden.

    Am liebsten würde ich direkt mehrere Nachrichten hintereinander senden.

    Einmal editiert, zuletzt von Gazura36 (25. August 2017 um 00:59)

  • Dort ist das Skript zum anschauen und auch eine keine Dukumentation, wollte nicht alles hier rein Kopieren, da alles auch ohne Anmeldung sichtbar ist.

    Einmal editiert, zuletzt von Gazura36 (25. August 2017 um 00:59)

  • Hallo,

    Zitat

    Wie kann ich das Umsetzen?


    Von Prinzip so, dass du das Skript so modifizierst, dass es a) zusätzliche Optionen akzeptiert und erkennt und dann im Programmfluss die Daten, die du mit den zusätzlichen Optionen übergibst, auch sendet.

    Das könnte mit ein paar Zeilen Code erledigt sein, kann aber auch mehr Aufwand sein. Ohne den Quelltext zu sehen kann man da nicht mehr sagen.

    Gruß, noisefloor

  • Ohne Code-Aenderung:

    Ein File namens input erstellen mit folgendem Inhalt:

    Code
    w
    9C 05 BF 7C 04 72 2C

    Und dann:

    Code
    python ibustester.py -dev /dev/cu.usbserial-A9QTPVV7 < input

    Oder mit einem bash-Script drum herum:
    (Ungetestet, muesste aber schon relativ nahe dran sein)

    Bash
    #!/bin/bash
    
    
    echo -en "w\n$1\n" | python ibustester.py -dev /dev/cu.usbserial-A9QTPVV7

    In diesen Fall waere der Aufruf:

    Code
    ./meinscript "9C 05 BF 7C 04 72 2C"

    Einmal editiert, zuletzt von Tell (23. August 2017 um 14:09)


  • So sieht die Python datei aus. Direktlink kann ich leider nicht zu verfügung stellen.

    Die Obere Lösung von @[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"] [/font][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Tell[/font][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"] Funktioniert optimal vielen dank![/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Wie kann ich das ganze jetzt noch so erweitern, das ich den Inhalt, der von dem Skript ausgegeben wird in eine IF Schleife verwenden kann?[/font]

  • > kann man in dem Input File auch noch irgendwie eine pause integrieren?
    Im input-File nicht, im Script schon:

    Bash
    #!/bin/bash
    
    
    (echo w; sleep 1; echo "$1") | python ibustester.py -dev /dev/cu.usbserial-A9QTPVV7

    > Wie kann ich das ganze jetzt noch so erweitern, das ich den Inhalt, der von dem
    > Skript ausgegeben wird in eine IF Schleife verwenden kann?
    Inhalt in ein File schreiben und spaeter wieder lesen mit Redirection:

    Bash
    #!/bin/bash
    
    
    (echo w; sleep 1; echo "$1") | python ibustester.py -dev /dev/cu.usbserial-A9QTPVV7 > output

    Besser aber gleich eine Pipe nutzen:

    Bash
    #!/bin/bash
    
    
    (echo w; sleep 1; echo "$1") | python ibustester.py -dev /dev/cu.usbserial-A9QTPVV7 | befehl(e)

    Oder wie von anderen vorgeschlagen, das python-Script anpassen...

    Einmal editiert, zuletzt von Tell (23. August 2017 um 15:32)

  • Tell optimal ist die lösung mit den pausen leider noch nicht zummal die Zeile dann ewig lang wird, wenn man einen Befehl 10 mal senden muss.

    WIe kann ich den das Skript anpassen? Da hören meine kenntnisse nämlich leider auf.

  • > optimal ist die lösung mit den pausen leider noch nicht zummal die Zeile dann ewig lang wird,
    > wenn man einen Befehl 10 mal senden muss.
    Tja, so lange ich nicht weiss was es eigentlich geben soll, kann ich auch nicht entscheiden was besser oder schlechter ist.

    Was soll das denn werden wenn es fertig ist?

  • Also das gesammt Ziel ist es die Befehle mit einer PHP Webseite zu triggern.

    Die iBus codes sind für das Bus System von einem BMW E46 und ich möchte das Dach per Webseite öffnen. Die Dafür benötigten Bus Nachrichten habe ich bereits. (vier einzelne Codes). Die Müssen aber mit einer leichten Verzögerung gesendet werden.

    Zum öffnen werden folgende 4 Nachrichten gesendet:
    9C 05 BF 7C 04 72 2C
    00 05 BF 7D 00 22 E5
    00 05 BF 7D 00 23 E4
    00 05 BF 7D 00 23 E4

    Die möchte ich in einem Skript senden, welches das Via Webseite gestartet werden kann.
    Die Oben erwähnten 10 mal werden für die Fenster benötigt, da diese pro Nachricht nur ein Stück nach oben/unten fahren.

  • Das Script fuers Dach:

    Fuer das Fenster kann man einen anderen Loop benutzen oder ein paarmal den Code hinschreiben

Jetzt mitmachen!

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