Ankündigung

Einklappen
Keine Ankündigung bisher.

Whezzy Script EIBD GPIO

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 2ndsky
    antwortet
    Zitat von Nighthawk777 Beitrag anzeigen
    Das Hauptaugenmerk galt ehr der Situation ein Script alle 10 - 30 sekunden auszuführen, was mit dem crontab nicht möglich ist.
    Dafür solltest du dann wirklich cycle verwenden, crontab ist dafür nicht gedacht.

    Einen Kommentar schreiben:


  • Nighthawk777
    antwortet
    mir ist der eibd Dienst noch nie abgeschmiert oder Sonstiges.
    Hab ich auch nie behauptet, drum kann man sich das Gerede sparen.
    Ich hätte auch anstatt den eibd was anderes reinschreiben können.

    Das Hauptaugenmerk galt ehr der Situation ein Script alle 10 - 30 sekunden auszuführen, was mit dem crontab nicht möglich ist.

    Einen Kommentar schreiben:


  • JNK
    antwortet
    Hallo,

    ich sehe das im wesentlichen wie Robert: lös das Problem, warum der eibd so oft abkachelt, normalerweise läuft der ewig durch. Und für das Restrisiko würde ich wirklich monit nehmen, der kann dann auch gleich noch sh.py oder was auch immer an Diensten läuft überwachen, neustarten und entsprechende Infos produzieren.

    Gruss,

    der Jan

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Warum?

    Wenn du Angst haben musst, dass dein eibd im 10sec Takt die Grätsche macht solltest du die Ursache fixen und nicht das Symptom kitten. Du hast Angst wegen der paar verpassten Nachrichten? Denk lieber an die möglichen 9sec die auch noch bei deiner "Lösung" bleiben...

    Einen Kommentar schreiben:


  • Nighthawk777
    antwortet
    hallo,
    funktioniert nun wunder bar, jedoch möchte ich dieses Script nicht jede Minute ausführen, eher alle 10 Sekunden

    ich habe gelesen dass der crontab nur eine Minute macht und man müsste das Script mit einer Schleife ausstatten. Das habe ich so gemacht,
    doch leider funktioniert es dann nicht mehr.


    #!/bin/sh

    while [ true ]; do

    if [ $(pgrep eibd) ];
    then
    echo "[Online] eibd"
    gpio -g mode 18 out
    gpio -g write 18 1
    else
    echo "[Offline / Fehler] eibd (Starte Programm)"
    /usr/local/bin/eibd -D -S -T -i --eibaddr=0.0.1 --daemon=/var/log/eibd.log --no-tunnel-client-queuing ipt:192.168.77.198

    sleep 10

    done

    Einen Kommentar schreiben:


  • JNK
    antwortet
    (Der System-)cron kann meiner Meinung nach nur minütlich,

    dann wäre es wohl

    Code:
    crontab -e
    und da dann

    Code:
    * * * * * <name des skripts>
    dann wird das Skript jede Minute ausgefürt. Alle 30s ging in sh.py mit

    Code:
    cycle = 30
    in der Logikdefinition.

    NB: Du solltest Dir vielleicht mal "monit" angucken, das scheint mir für Deine Anwendung die bessere Wahl zu sein, denn wenn ich das richtig verstehe, willst Du den eibd automatisch starten, falls er aus welchem Grund auch immer gerade nicht läuft und über die LED den aktuellen Status anzeigen. Der kann Dir dann gleich auch noch ne Mail schicken, wenn der eibd abgekachelt ist oder sowas.

    Gruss,

    der Jan

    Einen Kommentar schreiben:


  • Nighthawk777
    antwortet
    alles klaro dankeschön.
    Nur eins noch,
    wie baue ich das Script in die inittab ein damit dies alle 30 sekunden durchläuft?

    Einen Kommentar schreiben:


  • JNK
    antwortet
    Ob die eibd Optionen so richtig sind kann ich nicht sagen, das Script sieht aber gut aus.

    Ich hatte das auch nicht verstanden, dass es ein Shell-Script sein soll, ich dachte du wolltest das in sh.py erledigen. Da ginge es übrigens (als Logik) so:

    Code:
    #!/usr/bin/env python
    #
    from subprocess import call
    
    if call("pidof eibd > /dev/null", shell=True)==0:
        print "Running"
    else:
        print "Not Running"
    und statt print dann auch immer man mit der info machen möchte.

    Gruss,

    der Jan

    Einen Kommentar schreiben:


  • Nighthawk777
    antwortet
    würde das so funktioieren?

    #!/bin/sh

    if [ $(pgrep eibd) ];
    then
    echo "[Online] eibd"
    gpio -g mode 18 out
    gpio -g write 18 1
    else
    echo "[Offline / Fehler] eibd (Starte Programm)"
    /usr/local/bin/eibd -D -S -T -i --eibaddr=0.0.1 --daemon=/var/log/eibd.log --no-tunnel-client-queuing ipt:192.168.77.198
    fi;

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Zitat von Nighthawk777 Beitrag anzeigen
    whezzy heisst ein Raspberry image auf debian Basis.
    ne Egal, das script soll unter Linux allgemein laufen.

    Wie packe ich das zu einem Script zusammen bzw, wie kann ich dies
    alle 30 Sekunden zum Beispiel ausführen lassen?
    Nein, das heißt - wie es JNK sicher auch weiß - Wheezy! Und kein "Raspberry Image", sondern ein Debian Release...

    Zum Rest: smarthome.py Doku - cron

    Einen Kommentar schreiben:


  • Nighthawk777
    antwortet
    whezzy heisst ein Raspberry image auf debian Basis.
    ne Egal, das script soll unter Linux allgemein laufen.

    Wie packe ich das zu einem Script zusammen bzw, wie kann ich dies
    alle 30 Sekunden zum Beispiel ausführen lassen?

    Einen Kommentar schreiben:


  • JNK
    antwortet
    Ich hab keine Ahnung, was "Whezzy" ist, aber "top" halte ich mal für ne ganz schlechte Idee. Besser

    Code:
    pidof eibd || echo -1
    Wenn ne Zahl > 0 kommt, ist es die PID vom eibd (läuft also), sonst liefert -1.

    Wie man sh.py jetzt dazu bekommt das auszuwerten weiss ich allerdings nicht.

    Gruss,

    der Jan

    Einen Kommentar schreiben:


  • Nighthawk777
    hat ein Thema erstellt Whezzy Script EIBD GPIO

    Whezzy Script EIBD GPIO

    Hallo,

    ich möchte folgendes umsetzen.
    Sobald der EIBD Dienst gestartet ist, soll per Befehl:

    gpio -g mode 18 out
    gpio -g write 18 1

    eine LED geschalten werden.
    Das Script soll automatisch alle 30 sekunden kontrollieren, ob der Dienst gestartet ist und somit den Zustand der LED steuern

    mit dem Befehl top kann man die gestarteten Dienste sehen.
    Weiss nur nicht wie ich das umsetzen muss.

    Danke schon im Voraus.

    MfG
Lädt...
X