Timer (Ausschaltverzögerung)

  • Hallo meigrafd,

    erst einmal vielen Dank, dass du mir das Script noch erklärt hast!
    Damit ichs auch wirklich verstehe, habe ich das mit dem "./script.sh" und dem "./script.sh 10" ausprobiert und muss sagen: Das ist der ja "Knaller", bin schwer beeindruckt. Man kann auf der Konsole die Laufzeit des Timers ohne Eingriff in das Script ändern und hat dazu stets noch eine Grundzeit. Jetzt stellt sich mir die Frage: Wie könnte die Eingabe außerhalb der Konsole erfolgen? Dann könnte ich z.B. die Bewässerungszeit je nach Wetter anpassen. Ein Script per SMS aufrufen (unter Verwendung deines Beitrages "server-steuerung-via-sms", welches übrigens 1A funktioniert und was ich hier im Forum schon erwähnte) kann ich. Aber ich wüßte nicht, wie den Zeit-Wert "mitschicken".
    Aber das sind nur mal so ein paar Gedanken, soll heißen, ich erwarte dazu nicht schon wieder eine Lösung von dir. Du hast bestimmt genug mit der Beantwortung von Fragen anderer Forumsmitglieder zu tun.

    Gruß Meisengeier


  • Ein Script per SMS aufrufen (unter Verwendung deines Beitrages "server-steuerung-via-sms", welches übrigens 1A funktioniert und was ich hier im Forum schon erwähnte) kann ich. Aber ich wüßte nicht, wie den Zeit-Wert "mitschicken".

    Das smsscript.sh Script aus [Tutorial] Server Steuerung via SMS verarbeitet den Text der SMS:

    Code
    RCVPASS=`echo "$TEXT" | cut -d" " -f1`
        ACTION=`echo "$TEXT" | cut -d" " -f2`

    Auch hier wird wieder wie bei der Parameter Geschichte ein Leerzeichen als "weiteres parameter" gewertet..
    Beispiel: "Passw0rd LichtAN"
    cut -d" " -f1
    nutzt " " als delimiter also Trennzeichen und -f1 wählt Feld-1 aus.

    Du müsstest das Script also nur nach dem hier gelernten entsprechend erweitern ;)
    Du weißt ja welche "ACTION" du via SMS sendest um deine Bewässerung zu steuern... Frag das einfach ab, setz eine Bedingungsprüfung und prüfe dann ob ein weiterer "Parameter" übergeben wurde, wenn ja führe das Script mit der Laufzeit aus......

  • Hallo meigrafd,

    ich hätte nicht gedacht, dass du dich meiner noch weiter annimmst. Freut mich natürlich sehr, vielen Dank.
    Leider wird mir die Umsetzung deiner Tips nicht gelingen. Das fängt schon damit an, dass, weil ich KEIN Passwort haben wollte, gleich oben im Script vor dem "Passwort", sowie vor den beiden "if" und "fi" jeweils ein "#" Zeichen gesetzt habe (ausprobiert). Ich müsste also erst mal wissen, welche Befehle rein nur für die Passwortabfrage "zuständig" sind. Weiterhin vertstehe ich nicht, was " -f1 wählt Feld-1 aus" bedeutet. Ist mit "Feld" eine Zeile gemeint oder eine Stelle in der Zeile? Kurzum, was du aus dem Ärmel schüttelst, verstehe ich nur Bahnhof. Und zuguterletzt wüßte ich auch nicht, an welche Stelle im Script eine "Bedingungsprüfung" zu setzen wäre. Gemäß meines Wissensstandes könnte ich mir bestenfalls mehrere Scripte mit verschiedenen Zeiten nach folgendem Muster basteln:

    #Steckdose 7
    TIMER 10 (z.B. für 10 Minuten, 20 wäre für 20 Minuten, usw.)
    gpio write 6 1

    oder ein GPIO und ein Script starten:
    #Steckdose 7
    TIMER
    gpio write 6 1
    /home/pi/timer.sh (dein Script starten)

    Ist natürlich nicht wirklich der "Bringer".

    Ich käme also ohne weitere "Denkanstöße" von dir nicht aus. Ob du dir das weiterhin antun möchtest, überlasse ich dir. Ich bin nicht böse, wenn du deine Hilfe einstellst, denn mein ursprüngliches Anliegen hast du ja beantwortet und mir damit bereits richtig geholfen.

    Gruß Meisengeier

  • Zitat

    denn mein ursprüngliches Anliegen hast du ja beantwortet und mir damit bereits richtig geholfen.

    Das schreit nach einem neuen Thread, dann können sich alle die wollen bei der Lösung deines Problems einbringen, auch meigrafd. Das ist besser, als Threads mit immer neuen Fragen zu fluten, da Leute, die später hierher finden, dann echt schnell die Übersicht verlieren :)

    LG

  • Hallo linusg,

    danke für deine Ansicht, doch sollten wir das nicht meigrafd überlassen?
    Immerhin ist er hier DER Fachmann und nicht ich! Ich für meinen Teil bin froh, dass er mir überhaupt hilft! Bis auf 2 kurze Zwischenmeldungen hat sich an diesem Thread ohnehin niemand anders beteiligt. Warum sollte das bei einem Neuen anders sein und wie würdest du das neue Thema nennen, nach was fragen? Ich wüßte es nicht. Ich wüßte nur, dass ich dann wieder von vorn anfangen dürfte meine "Probleme" zu erklären. Außerdem haben sich die jetzige "Fragen" erst aus diesem Thread ergeben. Und wenn mir meigraft in diesem Thread nicht mehr antwortet, was ja auch sein gutes Recht ist, dann ist das eben so. Ich werde zu diesen "Problemen" keinen neuen aufmachen.
       
    Gruß Meisengeier

  • Ganz wie du meinst, allerdings gilt hier i.d.R. nur EINE Frage pro Thread. Ich will da nicht reinfunken, war nur so ein Gedanke ;)

    Und doch, wenn du halbwegs was vorher probiert hast und die Frage verständlich formulierst, sind hier erstaunlich viele bereit zu helfen. Ist aber dein Sache.

    Beispiel: Ich habe den Thread nicht verfolgt, will jetzt aber auch nicht den ganzen durchlesen, um dann Festzustellen, dass das aktuelle Problem nicht mehr dem ursprünglichen entspricht. Bei einem neuen sieht das ganz anders aus...

    LG

  • Hallo meigrafd,

    Info: Bezüglich meines letzten Beitrages habe ich mich inzwischen mit der "smsscript.sh" Datei "beschäftigt". Herausgekommen ist dies hier:

    TEXT=`sed -e '1,/^$/ d' < $2`
    # Make text uppercase:
    TEXT=`echo "$TEXT" | tr "a-z" "A-Z"`
    ACTION=`echo "$TEXT" | cut -d" " -f1`

    case $ACTION in

    #Steckdose 7 ein
    Timer)
    gpio write 6 1
    ;;

    Das Script ist in dieser Form immer noch voll funktionsfähig, ist aber übersichtlicher und die Passwort-Abfrage hat sich schon mal erledigt! Das wollte ich dir eigentlich nur mitteilen. Weiterhin habe ich in der ACTION= echo...Zeile "f2" in "f1" (=Feld?) geändert. EineWirkung konnte ich nicht feststellen. Somit bleiben zur Aufbereitung (Lesen) der SMS "nur" noch die beiden Text-, sowie die ACTION-Zeile übrig, oder? Doch wie und wo hier nun eine Variable (laufzeit) eingebunden werden kann, erkenne ich immer noch nicht.

    Gruß Meisengeier

  • linusg hat prinzipiell Recht - für dieses andere Anliegen wäre ein neuer Thread besser, weil dein Ursprüngliches Problem/Anliegen wurde hier ja schon gelöst und das ist jetzt eigentlich ein neues/anderes Thema ;)

    Die Frage zum "Feld" lässt sich vielleicht auch so beschreiben:

    cut wird auf eine Zeile angewendet. Als Trennzeichen dient hier ein Leerzeichen also " ". Somit entspricht "field 1" quasi das selektieren des 1.Wortes... Vergleichbar mit besagten Parametern:
    ./script.sh bla blub
    "bla" ist das erste Parameter.
    "blub" ist das zweite Parameter.
    ... was ans Script übergeben wird. Als Trennzeichen dient auch hier ein Leerzeichen.
    Würde man jetzt also folgendes machen:

    Code
    echo bla blub | cut -d" " -f1


    wäre die Ausgabe: bla
    Macht man stattdessen:

    Code
    echo bla blub | cut -d" " -f2


    wäre die Ausgabe: blub

    Nun verstanden? ;)

    Eine Alternative zu "cut" wäre übrigens auch mit awk möglich:

    Code
    echo bla blub | awk '{print $1}'


    Bezüglich deines veränderten "smsscript.sh" Scripts wäre es aber wirklich besser du erstellst einen neuen Thread und postest dort dann das vollständige Script (bitte in CODE), da das was du hier gezeigt hast nicht wirklich vollständig sein kann - und man somit auch nicht wirklich gut helfen kann.


    PS: Beachte auch mal das Kommentar in Zeile 2 deines oben gezeigten Scripts - vielleicht kriegst du es auch dann selber hin ohne neuen Thread.

  • Hallo meigrafd,

    ich nutze das "smscript.sh" genauso und es funktioniert! Es fehlt lediglich die Endung "esac" und weitere Kommandos (hielt ich hier für unwichtig).
    Das mit dem Feld (f1, f2) habe ich probiert; ist soweit verstanden.
    Nur nutzt mir das immer noch nichts, ist für mich vergleichsweise wie mit einer Wechselschaltung: Ich als Elektriker stecke diese in 1 Minute funktionsfähig zusammen, egal ob es eine normale oder Sparschaltung ist. Ein Laie kann dies ja nur durch Versuche schaffen, wenn er Glück hat, gehts schnell, wenn nicht, wirds garnichts. So gehts mir hier gerade, habe den ganzen Nachmittag ergebnislos probiert!
    Und ich verstehe dich auch nicht. Das SMS-Script ist dein Beitrag, du kennst das (dein) Timer-Script, zeigst mir, dass man beim Aufruf noch Parameter anhängen kann. Wäre es da nicht zweckmäßiger, wenn du mir in deiner Antwort (vielen Dank dafür) nun kurzerhand die konkreten Änderungen in der "smsscript.sh" mitgeteilt hättest, als dass ich einen neuen Thread anfangen soll? Nimm es mir bitte nicht übel, aber kann es sein, dass du zuviel um die Ohren hast, zuviele Leute gleichzeitig "bedienst"? Dann solltest du nicht vergessen ab und zu mal an dich selbst zu denken.
    Eines vielleicht noch: Ich wollte "spoiler" oder "code" verwenden, habe auf der Hilfe-Seite zu diesen Begriffen jedoch -keinen Eintrag- gefunden.
    Nochmals vielen Dank für dein Timer-Script.

    Gruß Meisengeier

  • Steckt dir jemand anderes eine Kreuzschaltung zusammen weißt du dann noch längst nicht wie du sowas selber verschalten kannst, oder?

    Was sagt denn die 2.Zeile bzw das Kommentar in dem Script aus, die ich dir noch als Hinweis in Beitrag#28 nannte?


    Du hast einen Thread zu einem Problem erstellt. Dieses Problem wurde mittlerweile gelöst. In diesem Thread jetzt ein weiteres Problem zu behandeln führt zu Chaos, in diesem Forum. Das absichtlich zu fördern ist nicht wirklich toll.
    Ich verstehe nicht wieso das für dich so unverständlich ist bzw du dich weiterhin weigerst diesem Wunsch einfach folge zu leisten?

  • Fangen wir jetzt an uns zu streiten? Ich hatte nicht die Absicht, dich in irgendeiner Form anzugreifen.

    Steckt dir jemand anderes eine Kreuzschaltung zusammen weißt du dann noch längst nicht wie du sowas selber verschalten kannst, oder?
    Doch, sofern er "nach den Regeln der Technik" gebaut hat, würde ich damit klarkommen. Eine Kreuzschaltung ist eine erweiterte normale Wechselschaltung. Der oder die Kreuzschalter "sitzt/sitzen" zwischen den beiden Korrespondierenden. Das ist alles. Wird heute aber oft durch Taster und Stromstoßrelais ersetzt.

    Was sagt denn die 2.Zeile bzw das Kommentar in dem Script aus, die ich dir noch als Hinweis in Beitrag#28 nannte?
    Meinst du "# Make text uppercase:"? Falls ja, schreiben (gemäß google-Übersetzung, ich kann kein englisch) in Großbuchstaben.

    Du hast einen Thread zu einem Problem erstellt. Dieses Problem wurde mittlerweile gelöst. In diesem Thread jetzt ein weiteres Problem zu behandeln führt zu Chaos, in diesem Forum. Das absichtlich zu fördern ist nicht wirklich toll.
    Hättest du mir gesagt, dass ich einen neuen Thread anfangen soll, hätte ich das auch gemacht. Hast du aber zu keiner Zeit angesprochen.

    Ich verstehe nicht wieso das für dich so unverständlich ist bzw du dich weiterhin weigerst diesem Wunsch einfach folge zu leisten?


    "Ich verstehe nicht wieso das für dich so unverständlich ist" Was meinst du? " ..du dich weiterhin weigerst diesem Wunsch einfach folge zu leisten" Wessen Wunsch? Ja, ich WEIGERE mich! Solche Töne habe ich Gott sei Dank seit dem Ende der DDR nicht mehr gehört und ich möchte sie auch nicht mehr hören, schon gar nicht in einem Forum! Daher denke ich, wir sollten das Thema hiermit beenden. Ein Timer bei dem man die Zeit noch flexibel per Kommando vorgeben kann, wäre schon eine feine Sache gewesen, keine Frage. Aber wenn man sich deswegen streiten muss, dann muss es auch ohne diesen Komfort gehen.

    Gruß Meisengeier


  • Steckt dir jemand anderes eine Kreuzschaltung zusammen weißt du dann noch längst nicht wie du sowas selber verschalten kannst, oder?
    Doch, sofern er "nach den Regeln der Technik" gebaut hat, würde ich damit klarkommen.

    Ich hab auch Elektroinstallateur gelernt und weiß daher dass ich das "ohne es zu kennen" nicht verstanden hätte.
    Du hast mit diesem abstrakten Beispiel/Vergleich angefangen....

    Kaue ich dir irgend was fertiges vor lernst du dabei nichts und versteht es auch nicht - fragst dann also immer wieder nach...

    Was sagt denn die 2.Zeile bzw das Kommentar in dem Script aus, die ich dir noch als Hinweis in Beitrag#28 nannte?
    Meinst du "# Make text uppercase:"? Falls ja, schreiben (gemäß google-Übersetzung, ich kann kein englisch) in Großbuchstaben.

    Und wieso steht im case des original Scripts dann sowas wie "REBOOT)" und du nutzt "Timer)" ? :-/


    Hättest du mir gesagt, dass ich einen neuen Thread anfangen soll, hätte ich das auch gemacht. Hast du aber zu keiner Zeit angesprochen.

    In Beitrag#28 steht das 2x, ein mal am Anfang und noch mal zum Ende hin.

  • Hallo meigrafd,

    wie schon sagte, wir sollten das Thema hier beenden. Ich habe keinen Bedarf auf (weiteren) Streit.

    Ich kann nicht etwas lernen, was ich vorab überhaupt nicht zusammenbringe bzw. verstanden habe. Deshalb das Beispiel mit der Wechselschaltung und wenn du auch Elektriker bist, umso besser, dann verstehtst du doch, was ich meine.
    Noch kurz zu "REBOOT" und "timer": In 23 schreibe ich das in Großbuchstaben (ohne Klammer hinten). Hätte ich es klein geschrieben, wärs auch egal gewesen, denn du kennst ja dein Script.
    In 24 meint "linusg" ich sollte ein neuen Thread anfangen, nicht DU. Du "kommst" erst danach drauf! Warum du das ab da auch so siehst, ist für mich nicht wirklich nachvollziehbar. Im Prinzip waren nur wir beide "involviert", obwohl es bereits in diesem Thread jedem frei stand, sich einzubringen. Wozu also plötzlich ein Neuer?

    Gruß Meisengeier

Jetzt mitmachen!

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