Posts by Meisengeier

    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

    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

    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

    Hallo meigrafd,


    wenn Mehrere, noch dazu 5 und 6 Sterne-Generäle sagen, dass das Script bei ihnen läuft, dann muss der Fehler bei mir liegen. War auch so, denn jetzt ist alles ****PERFEKT***!!! Besser kann es nicht funktionieren. Habe inzwischen auch meine Meldungen eingebunden; funktioniert ebenfalls 1A! Brauche nicht mal mehr Merker zu setzen (damit die Meldungen nicht ständig wiederholt werden).


    Danke, danke meigrafd für deine Geduld mit mir. Punkt folgt.


    Warum hats nicht gleich funktioniert? Ich hatte das Script zunächst auf meinen PC kopiert und von dort weiter auf den Raspi. Schätze mal, dass es daran gelegen hat, denn ich habs (jetzt) ein 2.Mal direkt auf den Raspi kopiert und gut wars! Hätte ichs gleich so gemacht, wäre das schon ab Beitrag 7 erledigt gewesen. Ärgerlich, aber zumindest weiß ich das jetzt für das nächste mal.


    Jetzt wäre es natürlich noch schön, wenn du mir die Funktionsweise des Scriptes vielleicht noch erläutern könntest. Ein Teil davon ist mir bekannt, aber nicht die 1. Zeile, der Ausdruck "gpio_state", sowie "-eq". Und wie du das mit dem "Video" gemacht hast würde mich auch interessieren.


    :danke_ATDE:

    Hallo und vielen Dank,


    ich habe das Script nochmal gründlich nach Übertragungsfehlern (beim kopieren), falsch eingerückt, usw. abgesucht und Fehler dieser Art nicht gefunden.
    Habe nach dem Shebang "set -x" eingefügt, hier die Meldung:


    + '[' '!' -z '' ']'
    + Laufzeit=300
    /home/pi/versuch.sh: Zeile 8: Syntaxfehler beim unerwarteten Wort `then'
    /home/pi/versuch.sh: Zeile 8: ` if [ "$gpio_state" -eq 1 ]; then'


    Ich benutze übrigens Raspian GNU/Linux 7 (whezzy). Hat das vielleicht was zu sagen?


    Gruß Meisengeier

    Hallo meigrafd,


    ja, habe ich gemacht.
    Es kommt folgende Fehlermeldung:
    /home/pi/versuch.sh: Zeile 8: Syntaxfehler beim unerwarteten Wort `then'
    /home/pi/versuch.sh: Zeile 8: ` if [ "$gpio_state" -eq 1 ]; then'


    Da ich ja nun nicht gerade der "Schleifenfuchs" bin, habe ich den Fehler nicht gefunden.


    Gruß meisengeier

    Hallo meigrafd,


    ok, habe ich verwechselt: Python hat ja die Endung "py" und nicht "php".
    Sieht so aus, als wenn ich an meinem Script wohl selbst weiter probieren muss.
    Danke trotzdem, dass du dir für mich Zeit genommen hast.


    Gruß Meisengeier

    Hallo meigrafd,


    "Wo/Wie fest gelegt wird, wie lange die 2.Schleife laufen soll, steht nirgends."


    Doch, und zwar ganz oben: "Zeit=15" Dummerweise habe ich die Kommentarzeile, nämlich: "Hier die Zeit in Minuten eingeben" nicht mitkopiert, habs übersehen. Ich bitte um Entschuldigung. Die Timer-Zeit ergibt sich in etwa wie folgt: 1 Durchgang dauert 6 Sekunden = sleep 6, der nächste Faktor = 9, was rund 1 Minute ergibt. x 15 = 45 Schleifendurchläufe = 15 Minuten. Der GPIO6 bzw. die GPIOs wird/werden mittels 8 Button auf der Weboberfläche des Programmes (siehe Link) praktisch per Hand EIN- und Ausgeschaltet. Lediglich der Timer-GPIO6 soll sich nach der vorgegebenen Zeit (z.B. 15 Minuten) automatisch ausschalten.


    "Diese 30 Sekunden Sache macht es nur unnötig kompliziert. Du hast eine Laufzeit von zB 15 Minuten, ein "sleep" kann "Minuten" oder "Sekunden" dauern am einfachsten sind hier Sekunden."


    Wielche Möglichkeit empfiehlst du sonst, um den Schaltzustand des GPIO6 oder der GPIOs kontinuierlich abzufragen? Mache ich die Laufzeit mit "sleep", bleibt das Script an dieser Stelle solange stehen, bis der sleep beendet ist und genau das ist ja mein Problem! Deshalb der Versuch mit den Schleifen. Damit kann ich zumindest schon mal den Timer jederzeit stoppen und auch wieder starten. Es ist aber wie eingangs beschrieben immer noch fehlerbehaftet.
    Ansonsten hast du vollkommen richtig erkannt, wie ich den Timer gerne hätte. Ich hätte auch nicht gedacht, dass die Lösung so schwierig ist, dachte vielmehr, das liegt einzig an meinen geringen Fähigkeiten.
    Wie du schreibst, wäre das Script mit "php" einfacher zu realisieren. Ja, wenn das so ist und du so freundlich wärst, mir ein Script in "php" zu schreiben, dann würde ich den GPIO6 eben für sich allein abfragen. Dann müsste ich aber bitte noch wissen, wie man ein php-Script auf der Konsole ausprobieren kann und wie es beim Start des Raspi automatisch gestartet wird. ich weiß es echt nicht.


    Gruß Meisengeier

    Hallo meigrafd,


    mit der bash frage ich auch alle anderen GPIOs ab und komme damit eigentlich ganz gut zurecht. Mit der "sys" kenne ich mich garnicht aus. Wie gesagt, habe ich im Prinzip "nur" mit der Verschachtelung der 2 Schleifen Probleme. Dein Hinweis zum Einrücken ist übrigens schon sehr hilfreich. Weil ich mich (programmtechnisch) nicht besser auszudrücken weiß, hatte ich dir ja vorhin geschrieben wofür ich das Timer-Script nutzen möchte. Du müsstest dich also überhaupt nicht an meine "Vorlage" halten. Vielleicht noch 2 Punkte: 1. Der GPIO6 wird bereits beim Start des Raspi auf "mode out" gesetzt und 2. bitte noch daran denken, dass ich bei weitem nicht dein Können besitze; soll heißen, dass Script sollte möglichst "einfach gestrickt" sein.


    Gruß Meisengeier

    Hallo meigrafd,


    ich habe soeben dein 1.Script ausprobieren wollen und festgestellt, dass es bei mir nur den Pfad: /sys/class/gpio/ dateien: "unexport, export" gibt, nicht aber: sys/class/gpio/gpio/direction. Damit wird zwar die Schleife durchlaufen, aber der GPIO nicht abgefragt. Ich arbeite noch mit Raspi Pi 2 (u.a., weil das oben genannte Programm nicht mit dem Betriebssystem des Raspi 3 läuft) und Noobs (glaube 1.4 ).


    Gruß Meisengeier

    Hallo meigrafd,


    vielen Dank für deine Unterstützung.


    Der bzw. die GPIOs werden durch das nachstehende Programm geschaltet:


    https://translate.google.de/tr…-your-Raspbe/&prev=search


    Von daher dient mein Script im wesentlichen nur der Abfrage der GPIOs, wobei ich den GPIO6 zum Timer "aufrüsten" möchte. Wie erwähnt, wird Der EIN- oder AUS-Zustand alle 30 Sekunden abgefragt (und eine Meldung verschickt, welche ich hier der Einfachheit halber herausgenommen habe). Wird der GPIO EINgeschaltet, läuft die frei wählbare Zeit ab und schaltet den GPIO wieder aus. Mein Problem ist die eigentliche Zeitschleife (z.B. 15 Minuten), welche bei jeder 30 Sekunden-Abfrage ebenfalls mit "leer durchlaufen" wird, was wie beschrieben zu Fehlern führt, wenn der GPIO genau in diesem Leerdurchlauf gesetzt wird. Es wäre daher wünschenswert, wenn die eigentliche Zeitschleife nur in "Gang" gesetzt werden würde, wenn der GPIO auch EIN ist. Anstatt der 2. Schleife hätte auch ein "sleep" genügt, aber damit gäbe es keine Möglichkeit den Timer vorzeitig zu beenden. Vielleicht mal noch zum Sinn und zum besseren Verstänsdnis des Ganzen: Ich möchte meine Gartenberegnung damit einschalten (auch aus der Ferne) und weil ich schon langsam vergesslich werde, soll diese dann automatisch wieder ausgeschaltet werden. Gern kannst du mir auch einen anderen Vorschlag zur "Zeitbasis" machen. Wichtig ist mir nur, dass ich die Zeit in Minuten am Scriptanfang separat eintragen kann. Dabei sollte das Script möglichst einfach bleiben, damit ich es noch verstehe.


    Gruß Meisengeier

    Hallo liebe Forengemeinschaft,


    ich würde mich freuen, wenn ihr euch mein nachstehendes Script einmal ansehen und mir Verbesserungen mitteilen könntet. Zur Funktion:
    Das Script stellt einen Timer dar, welcher per "Hand" den GPIO6 auf EIN setzt und nach einer einstellbaren Zeit (Beispiel 15 Minuten) den GPIO6 "automatisch" wieder auf AUS setzt. Darüber hinaus wollte ich die Möglichkeit haben, den Timer, also den GPIO6 jederzeit auf AUS setzen zu können. Das ist eigentlich schon alles. Die Abfrage des GPIO6 erfolgt alle 30 Sekunden, das ist für mich ausreichend. Das Script funktioniert soweit auch gut, kann den Timer ein-und jederzeit ausschalten oder die vorgegebene Zeit ablaufen lassen. Das kann aber, weil die beiden Schleifen nun ständig alle 30 Sekunden (auch wenn der Timer nicht eingeschaltet ist) durchlaufen, zu Störungen des zeitlichen Ablaufes führen, z.B. dann, wenn der GPIO z.B. in der Mitte eines AUS-Durchlaufes auf EIN gesetzt wird. Dann läuft nämlich nur noch die Restzeit ab. Wie gesagt, wäre echt nett, wenn jemand eine Lösung für mich hätte.


    Vielen Dank vorab


    Meisengeier

    Hallo Manul,


    "Es ist Dein Skript - ich hab nur ein paar Zellen rausgelöscht".
    Ja, aber du hast es so "umgescriptet", dass es nun macht, was ich möchte und damit ist es in gewisser Weise doch deins, oder?

    Nun gut, wenn du keinen Kaffee möchtest? Deine Entscheidung. Ich habe wirklich zig Stunden "verballert", den hätte ich gern ausgegeben.


    Gruß Meisengeier

    Hallo Manul,


    habe vielen, vielen Dank für dein Script. Es funktioniert perfekt!!! Du hast mir damit sehr geholfen. Ich hatte mir die abenteuerlichsten Scripte gebastelt, bin dabei immer davon ausgegangen, dass man noch zusätzliche Merker setzen muss. Doch weit gefehlt, wie ich dank dir feststellen durfte. Wie man so schön sagt, manchmal ist weniger eben MEHR oder einfach nur genial, weil genial einfach. Ich wäre nie auf deine Lösung gekommen. Bleibt mir nur fragen: Wie kann ich dir danken? Ich zahle gern einen Kaffee oder auch 2! Das meine ich auch so!


    Gruß Meisengeier



    :danke_ATDE:

    Hallo verehrte Forengemeinschaft,


    es ist mal wieder soweit: Seit Tagen bin ich am Probieren und finde einfach keine Lösung. Ich wäre euch daher sehr verbunden, wenn Ihr mir zu dem nachstehenden Script die entsprechenden Tips geben könntet. Das Script meldet jeweils 1x die Zustandsänderung des GPIO 7, also ob EIN oder AUS und funktioniert erst mal wie es soll. Es hat aber den Nachteil, dass nach einem Reboot, wenn GPIO 7 noch Aus ist, auch immer die AUS-Meldung 1x ausgegeben wird. Da diese 1. Meldung überflüssig und damit störend ist , hätte ich gern, dass die 1. Aus-Meldung erst dann ausgegeben wird, wenn zuvor der GPIO 7 auf EIN (Heizung ein) war.
    Falls ich hier wieder im "falschen" Forum unterwegs bin, bitte ich schon jetzt um Entschuldigung, aber besser weiß ich es nicht.


    Vielen Dank vorab


    Meisengeier


    #!/bin/bash
    wert="$( gpio read 7 )"
    if [ "$wert" = "0" ]; then
    mwert="1"
    fi
    if [ "$wert" = "1" ]; then
    mwert="0"
    fi
    while true; do
    wert="$( gpio read 7 )"
    if [ "$wert" = "1" ] && [ "$mwert" = "0" ]; then
    echo "Heizung eingeschaltet"
    mwert="1"
    fi
    if [ "$wert" = "0" ] && [ "$mwert" = "1" ]; then
    echo "Heizung ausgeschaltet"
    mwert="0"
    fi
    sleep 10.0
    done

    Hallo meigrafd,


    vielen Dank für deine wirklich ausführlichen Beiträge, welche ich auf jeden Fall "ausprobieren" und aufheben werde. Und ich bitte um Entschuldigung, denn ich habe deinen 1. von vorhin glatt übersehen.
    Möchte noch kurz darauf eingehen:
    Meine beiden sh.Scripte liegen im /home/pi Verzeichnis. Das 1. Script enthält nur meine Mobilfunknummer, nichts weiter. Ich wollte damit erreichen, dass, wenn sich diese einmal ändern sollte, dann nur an einer Stelle geändert werden muss. So vergesse ich vor allem auch keine Datei.


    Ich wünsche Dir ein Frohes Fest


    Meisengeier

    Hallo liebe Leute,


    ich möchte mich hiermit recht herzlich bei Euch für eure wirklich schnelle Hilfe bedanken.


    Funktioniert perfekt!!! Bin jetzt richtig happy!


    Das mit dem "source" war mir bisher völlig unbekannt. Super, wieder was gelernt.


    ich wünsche Euch ein Frohes Weihnachtsfest


    Meisengeier

    Hallo liebe Forengemeinschaft,


    habe heute ziemlich den ganzen Tag vergeblich gesucht und probiert. Wäre nett, wenn Ihr mir bei folgendem Problem helfen könntet:


    Ich möchte gern in einer 1. Datei meine Handynummer (gemäß dem nachstehenden Beispiel) eintragen
    #!/bin/bash
    #Hier die Mobilfunknummer eingeben:
    Nummer="0049157355555"


    und diese Handynummer sollte dann für eine 2. Datei (wie folgt) "zur Verfügung" stehen.
    #!/bin/bash
    echo -e "To: $Nummer\n\nDies ist eine Versuchs-SMS" > /var/spool/sms/outgoing/sms.txt


    Anmerkung: Innerhalb desselben Scriptes funktioniert das bereits mit der Variablen, aber von einer Datei zur anderen kriege ich es nicht hin.


    Vielen Dank


    Gruß Meisengeier


    Hallo thogme,


    habs gerade zufällig gesehen.
    Vorab eins: das Script von meigradf funktioniert 100%ig!
    Es ist wie so oft: Der Teufel steckt im Detail. Daher: Hast du alles genau nach der Anleitung gemacht? Schon ein paar vergessene "" am Ende der case-Anwendung und der Befehl wird nicht ausgeführt! Hast du auch die 1 Zeile unter "bekannte Fehler" korrigiert, also eingerückt?
    Hier mal meine (funktionierende) smsd.conf:


    devices = GSM1
    logfile = /var/log/smsd.log
    loglevel = 5


    eventhandler = /usr/local/bin/smsscript.sh


    [GSM1]
    device = /dev/ttyUSB1
    incoming = yes
    #pin = 1111
    #SMS Zentrale eplus
    smsc = 491770610000
    mode = new


    Mein Vorschlag: Alles andere in deinem Script erstmal auskommentieren, denn mehr ist nicht nötig! Wichtig: Bei mir ist es "ttyUSB1". Bei dir steht "ttyUSB0"; das kann stimmen, muss aber nicht = probieren! Eventuell auch noch mal "sudo /etc/init.d/sms3 restart" ausführen.


    Gruß Meisengeier

    Hallo meigrafd,


    ich wäre die sehr dankbar, wenn du mir kurz mitteilen würdest, ob du dein Script schon mit einem Raspberry Pi 3 (raspbian jessie vom September 2016) ausprobiert hast und ob dieses darauf auch so gut funktioniert?
    Der Hintergrund ist der, dass bei meinen bisherigen Versuchen mit dem Pi 3 z.B. nicht mal "motion" zufriedenstellend läuft.


    Gruß Meisengeier