Ankündigung

Einklappen
Keine Ankündigung bisher.

Whezzy Script EIBD GPIO

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

    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

    #2
    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
    KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

    Kommentar


      #3
      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?

      Kommentar


        #4
        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

        Kommentar


          #5
          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;

          Kommentar


            #6
            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
            KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

            Kommentar


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

              Kommentar


                #8
                (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
                KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                Kommentar


                  #9
                  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

                  Kommentar


                    #10
                    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...

                    Kommentar


                      #11
                      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
                      KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                      Kommentar


                        #12
                        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.

                        Kommentar


                          #13
                          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.
                          Mit freundlichen Grüßen
                          Niko Will

                          Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                          - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                          Kommentar

                          Lädt...
                          X