Ankündigung

Einklappen
Keine Ankündigung bisher.

executeCommandLine machts nicht

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

    executeCommandLine machts nicht

    Hallo,

    ich wollte ein Binding stündlich neu starten lassen. Beim ausühren der Rule kommt immer die Fehlermeldung, das die Datei Stop bzw. Start nicht gefunden wird. Was mach ich falsch ?

    rule "VBUS neu starten"
    when
    Time cron "0 * * * * ?"
    then
    executeCommandLine("stop 224")
    Thread::sleep(800)
    executeCommandLine("start 224")
    end
    - openHAB 3.4.4 auf WIN11/64

    #2
    Also erstmal wird Deine Rule minütlich ausgeführt, da hier quartz cron zum Einsatz kommt, für stündlichen Aufruf müsstest Du Time cron "0 0 * * * ?" schreiben.
    Für Dein eigentliches Problem rate ich Dir, den kompletten Pfad zu den Dateien startund stop anzugeben, dann sollte es funktionieren.

    Kommentar


      #3
      ich weiß nicht ob das Dateien sind. wenn ich sie direkt über die Kommandozeile starte geht es ja auch ohne einen Pfad anzugeben.
      - openHAB 3.4.4 auf WIN11/64

      Kommentar


        #4
        Das spielt keine Rolle, wenn Du in der Konsole einen Befehl tippst, gibt es eine Standardumgebung mit gesetzten Umgebungsvariablen (z.B. den Suchpfad), das hast Du mit executeCommandLine so nicht (oder es sind andere Werte gesetzt).

        Falls Du mit Linux unterwegs bist, reicht in der Konsole ein find / -name start dann werden Dir die Fundstellen ausgegeben.
        Unter Windows funktioniert das ähnlich, da kann es allerdings sein, dass start in Wirklichkeit start.bat oder start.com oder start.exe heißt.

        Weiter spielt unter Linux Groß/Kleinschreibung eine Rolle, Start ist etwas anderes als start, darauf musst Du dann auch bei executeCommandLine achten.


        Mit fällt grade auf, dass Du ja vermutlich von der OSGi-Console sprichst. executeCommandLine bezieht sich nicht auf die OSGi-Console!
        Zuletzt geändert von udo1toni; 25.04.2015, 11:54.

        Kommentar


          #5
          Danke für Deine Antwort

          Mit fällt grade auf, dass Du ja vermutlich von der OSGi-Console sprichst. executeCommandLine bezieht sich nicht auf die OSGi-Console!
          Genau das ist der Fehler, da hatte ich das mit der Commandline falsch verstanden. Was mich gleich zur nächsten Frage führt, wie kann ich denn von einer Rule auf der OSGi-Console was ausgeben ?

          Gruß Talli
          Zuletzt geändert von tallman; 25.04.2015, 15:12.
          - openHAB 3.4.4 auf WIN11/64

          Kommentar


            #6
            Hi,

            Zitat von tallman Beitrag anzeigen
            Was mich gleich zur nächsten Frage führt, wie kann ich denn von einer Rule auf der OSGi-Console was ausgeben ?
            mit

            Code:
            logDebug("special.rules", "log message die im DebugLevel geschrieben werden soll")
            es gibt auch noch logInfo, logWarn und logError.

            Gruß,

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

            Kommentar


              #7
              Nee, es ging ihm darum, einen OSGi-Befehl abzusetzen, um ein Binding neu zu starten, und das möchte er gerne per Rule machen.

              Kommentar


                #8
                Das Problem dürfte sein dass "stop 224" kein Executable in Deinem Pfad ist. Das Executable, welches Du suchst, heißt "cmd.exe".

                Leider bin ich mit der Syntax in den Regeln nicht ganz so vertraut und weiß nicht genau wie man dort Anführungszeichen escapen kann aber es könnte so ähnlich wie das hier aussehen:

                executeCommandLine(" cmd.exe /c \"net stop 224\" ")

                Du rufst eigentlich die Kommandozeile cmd.exe /c "net stop 224" auf. Das "/c" lässt den Kommandozeileninterpreter cmd.exe das Kmmando dahinter ausführen und dann beenden. Eventuell hat hier noch ein andere Windowsanwender mehr Infos (nutze Linux als System darunter und kann es daher nicht ausprobieren).
                Zuletzt geändert von Reddick; 27.04.2015, 10:57.

                Kommentar


                  #9
                  udo1toni hat es erfasst, genau darum geht es. In meinem 3.Posting habe ich mich etwas unglücklich ausgedrückt, dachte aber es wäre durch Posting 1 klar.

                  Wenn es halt nicht vorgesehen ist, durch openHAB einen OSGi-Befehl abzusetzen, dann muss ich mir eben was anderes überlegen.

                  Danke Euch trotzdem für die Antworten
                  Gruß Talli
                  - openHAB 3.4.4 auf WIN11/64

                  Kommentar


                    #10
                    Auf die Kürze, meine Shell-Lösung myopenhab Binding neu starten:
                    Code:
                     [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]#!/bin/bash[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px] [/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]touch /tmp/myohid[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px] [/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px](/usr/bin/expect - << EOF[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]set timeout 5[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]spawn telnet lo 5555[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px] [/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]expect "osgi> "[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]send "ss io.myopenhab\n"[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]expect "osgi> "[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]exit[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]EOF[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]) | while read line[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]do[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]  if [[ "$line" =~ "org.openhab.io.myopenhab" ]][/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]  then[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]    echo $line | awk '{print $1}' > /tmp/myohid[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]  fi[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]done[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]id=$(cat /tmp/myohid)[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]echo $id[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px] [/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px](/usr/bin/expect - $id << EOF[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]set timeout 5[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]set id [lindex $argv 0][/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]spawn telnet lo 5555[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px] [/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]expect "osgi> "[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]send "refresh $id\n"[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]expect "osgi> "[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]exit[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]EOF[/SIZE][/FONT][/COLOR]
                      [COLOR=#FFFFFF][FONT=Andale Mono][SIZE=18px]) | while read line; do echo $line; done[/SIZE][/FONT][/COLOR]

                    Kommentar


                      #11
                      Openhab läuft bei mir unter Win7.
                      - openHAB 3.4.4 auf WIN11/64

                      Kommentar

                      Lädt...
                      X