Ankündigung

Einklappen
Keine Ankündigung bisher.

Script Frage

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

    Script Frage

    Hi ,

    hab ne Frage kann ich wenn ein Anruf reinkommt ein shell script aufrufen und dann per Parameter die Nummer mitgeben ?

    Gruß und danke

    #2
    Kann mir jemand ein Tipp geben ?

    Hab auch im SourceCode nicht gefunden wie ich direkt von einer Rules z.b ein andere O/S Script aufrufen kann , nur was für send Email usw ...


    Würde auch selber dafür was schreiben , finden aber leider im Source Code kein geeigneten Einstiegspunkt ...

    Gruß

    Daniel

    Kommentar


      #3
      Ist das nicht was für das Exec-Binding:

      ExecBinding - openhab - Documentation of the Exec binding Bundle - empowering the smart home - Google Project Hosting

      Gruß

      Kommentar


        #4
        Das wollte ich auch schon vorschlagen, allerdings scheint es beim Exec-Binding ja keine Möglichkeit zu geben, den Parameter des auszuführenden Kommandos in einer Regel zu ändern.

        Kommentar


          #5
          Hi Daniel,

          aktuell unterstützt das Exec-Binding keine dynamische Erweiterung des Commands, wie das bspw. beim HttpOutBinding der Fall ist (siehe HttpBinding - openhab - Documentation of the HTTP binding Bundle - empowering the smart home - Google Project Hosting unter Dynamic URL enhancement).

          Das selber zu implementieren ist nicht soooooo aufwändig. Wie es funktioniert kannst Du Dir in HttpOutBinding.formatAndExecute() anschauen. Es wird letztlich nur auf die String.format() Funktionalität zurückgegriffen. Für das Exec-Binding wäre das in der Klasse ExecBinding bspw. in der Methode executeCommand() einzusetzen (Test dafür nicht vergessen).

          Interessant wird es allerdings speziell beim CallItem, weil das ein ComplexType ist, also einer, der mehrere einzelne atomare Types enthält. Man müsste vermutlich über die einzelnen Komponenten des CallTypes iterieren und die einzeln als Parameter in die .format()-Methode stopfen.

          Einigermaßen klar geworden?

          Gruß,

          Thomas E.-E.
          Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

          Kommentar


            #6
            Hallo Thomas ,

            ok danke . Werd mich dann mal ans Coding machen . Erstmal mit einem einfachen String Item und dann mit dem CallItem.

            Ich finde wenn openhab ein einfaches Exec wie das HTTP im Standard zur Verfügung stellen würde , könnte man mit openhab noch mehr machen ....

            ich schau es mir mal an

            Gruß und Danke

            Kommentar


              #7
              alles klar ... wenn Du Code in deinem Clone eincheckst, könnte man zwischendurch auch mal drüberschauen.

              Gruß,

              Thomas E.-E.
              Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

              Kommentar


                #8
                Hi ,

                hab mir gerade das ganze incl. http binding angeschaut.

                War anstatt das Binding nicht eine Action das richtige ?

                Actions - openhab - Overview of avaialble actions - empowering the smart home - Google Project Hosting

                etwas in die richtung :

                sendMail(String to, String subject, String message): Sends an email via SMTP

                nur halt eine command.

                also eine eigene Klasse in org.openhab.io.net.actions

                Was meinst du Thomas ?

                Kommentar


                  #9
                  Wenn Du eine Möglichkeit suchst, Kommandozeilenskripts aus Regeln heraus aufzurufen, brauchst Du gar keine eigene Action implementieren, sondern kannst einfach das hier nutzen:
                  Code:
                  Runtime::getRuntime().exec("/opt/myscript.sh")
                  Viele Grüße,
                  Kai

                  Kommentar


                    #10
                    Super danke Kai ! ,


                    das ist genau das was ich brauch, kann ich da auch noch ein Parameter mitgeben ? ITEM Value ?

                    Kommentar


                      #11
                      Ja, es handelt sich hier um die normale Javamethode, welche auch ein String-Array akzeptiert (siehe Runtime (Java 2 Platform SE 5.0)).

                      In Xtend müsste man das dann vermutlich wie folgt schreiben:
                      Code:
                      val cmdline = newArrayList("/opt/script", MyItem.state.toString)
                      Runtime::getRuntime().exec(cmdline.toArray(cmdline))

                      Kommentar

                      Lädt...
                      X