Ankündigung

Einklappen
Keine Ankündigung bisher.

LinKNX shell-cmd

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

    LinKNX shell-cmd

    Hallo,

    über den HS bekomme ich auf meinen Linux über Gruppenadressen Daten an den LinKNX geliefert.

    Auf dem Linux möchte ich nun ein Perlscript starten und diesem die Parameter übergeben.

    Meine Paramter sind die
    id="Weckzeit_Std"
    id="Weckzeit_Min"

    Mein Perlscript braucht den Aufruf wecker.pl Weckzeit_Std Weckzeit_Min

    Im linknx.xml habe ich eine rule definiert

    <action type="shell-cmd" cmd="/var/lib/asterisk/agi-bin/wecker.pl"/>

    Wie kann ich hier die Parameter anhängen?
    Gruß Hartwig

    #2
    Zitat von hartwigm Beitrag anzeigen
    Wie kann ich hier die Parameter anhängen?
    Hoi Hartwig

    Ich denke der Reihe nach, wie sie im Script nummeriert sind oder auftauchen:
    Code:
    <action type="shell-cmd" cmd="/var/lib/asterisk/agi-bin/wecker.pl Weckzeit_Std Weckzeit_Min" />
    Grüsse Bodo
    Fragen gehören ins Forum, und nicht in mein Postfach;
    EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

    Kommentar


      #3
      Hallo Bodo,

      geht leider so nicht. Wenn ich die Variablen so übergebe erkennt wird der Name der Variable übergeben nicht aber deren Wert.

      Ich habe auch mal mit $weckzeit probiert, aber leide erfolglos. Im linknx wiki ist da auch nicht wirklich was zu finden.
      Gruß Hartwig

      Kommentar


        #4
        Zitat von hartwigm Beitrag anzeigen
        Hallo Bodo,

        Code:
        <action type="shell-cmd" cmd="/var/lib/asterisk/agi-bin/wecker.pl Weckzeit_Std Weckzeit_Min" />
        geht leider so nicht. Wenn ich die Variablen so übergebe erkennt wird der Name der Variable übergeben nicht aber deren Wert.

        Ich habe auch mal mit $weckzeit probiert, aber leide erfolglos. Im linknx wiki ist da auch nicht wirklich was zu finden.
        Korrekt.
        Ist auch nicht implementiert. Aktuell wird der complette Text also cmd="..." als Kommando ausgeführt. Dabei werden keine Variablennamen mehr ersetzt. Evtl. kannst du das gewünschte mit einem Lua script erreichen.

        Gruß,
        Dirk

        Kommentar


          #5
          Code:
          <action  type="[B]script[/B]">os.execute("/var/lib/asterisk/agi-bin/wecker.pl 'Weckzeit_Std' 'Weckzeit_Min'");</action>
          So könnte es funktionieren.

          Kommentar


            #6
            Hallo Franzler,

            muss ich da noch etwas einbinden?

            2010-10-20 13:44:09 [ERROR] main: Error in config: Action type not supported: '*script*'

            Ich habe die linknx 0.0.1.27 am laufen.
            Gruß Hartwig

            Kommentar


              #7
              Zitat von hartwigm Beitrag anzeigen
              muss ich da noch etwas einbinden?.
              Hoi

              Tipp mal linknx -V

              Code:
              linknx 0.0.1.27
              - Clickatell SMS gateway enabled
              - E-mail gateway enabled (with pthread support)
              - MySQL support enabled
              [B]- LUA scripting support enabled[/B]
              - Log4cpp logging enabled
              Grüsse Bodo
              Fragen gehören ins Forum, und nicht in mein Postfach;
              EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

              Kommentar


                #8
                Da kommt nur

                linknx 0.0.1.27
                Gruß Hartwig

                Kommentar


                  #9
                  Zitat von hartwigm Beitrag anzeigen
                  Da kommt nur

                  linknx 0.0.1.27
                  Also sind keine weiteren Features eincompiliert. Hast du linknx selbst aus den Sourcen compiliert? Wenn ja rufe configure mit "--with-lua" auf.
                  Ansonsten wo hast du das Paket her?

                  Gruß
                  Dirk

                  Kommentar


                    #10
                    Zitat von do13 Beitrag anzeigen
                    Ansonsten wo hast du das Paket her?
                    Hoi

                    Freundlicherweise hat makki hier aus dem Forum es erlaubt, aus seinem Repository die OSS Sachen zu beziehen.
                    Code:
                    http://repo.wiregate.de/wiregate/pool/main/l/linknx_0.0.1.27+nmu1.tar.gz
                    Grüsse Bodo
                    Fragen gehören ins Forum, und nicht in mein Postfach;
                    EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                    Kommentar


                      #11
                      Hallo,

                      nun bin ich nochmals an das Problem.

                      linux-bv0m:/etc/linknx # linknx -V
                      linknx 0.0.1.27
                      - Clickatell SMS gateway enabled
                      - E-mail gateway enabled
                      - LUA scripting support enabled
                      - Log4cpp logging enabled
                      linux-bv0m:/etc/linknx #


                      liefert zwischenzeitlich das gewünschte Ergebnis.

                      Allerdings werden die Variablen im Scriptaufruf beim Ausführen nicht durch die aktuellen Werte ersetzt.

                      -meine linknx.xml sieht wie folgt aus:

                      l<config>
                      <objects>

                      <object type="6.xxx" id="bewohner1_status" gad="2/5/10">Hartwig da</object>
                      <object type="1.001" id="licht_schreibtisch" gad="1/2/48">Licht Schreibtisch</object>
                      <object type="1.001" id="wecker_aktiv" gad="2/6/1">Wecker aktiv</object>
                      <object type="5.xxx" id="weckzeit_std" gad="2/6/2">Weckzeit Std.</object>
                      <object type="5.xxx" id="weckzeit_min" gad="2/6/3">Weckzeit min.</object>
                      </objects>


                      <rules>

                      <rule id="benutzer1_status_kommt">
                      <------><condition type="object" id="bewohner1_status" value="1" trigger="true"/>
                      <------><actionlist>
                      <------><action type="shell-cmd" cmd="/etc/linknx/hartwig-kommt.sh"/>
                      <------></actionlist>
                      </rule>
                      ....
                      <rule id="benutzer1_status_geht">
                      <------><condition type="object" id="bewohner1_status" value="2" trigger="true"/>
                      <------><actionlist>
                      <------><------><action type="shell-cmd" cmd="/etc/linknx/hartwig-geht.sh"/>
                      <------></actionlist>
                      </rule>


                      <rule id="Weckalarm_setzen">
                      <------><condition type="object" id="wecker_aktiv" value="1" trigger="true"/>
                      <------><actionlist>
                      <------><------><action type="set-value" id="licht_schreibtisch" value="0"/>
                      <------><------><action type="script">os.execute("/var/lib/asterisk/agi-bin/wecker.pl 42 'weckzeit_std' 'weckzeit_min' add");</action>
                      <------></actionlist>
                      </rule>


                      <------>
                      </rules>
                      <services>
                      <xmlserver type="inet" port="1028" />
                      <knxconnection url="ip:127.0.0.1" />
                      <logging format="info" level="WARN"/>
                      </services>
                      </config>


                      Wenn ich das Event auslöse zeigt mir das Logfile:


                      File: /var/spool/asterisk/wakeups/weckzeit_stdweckzeit_min.temp.1.42.call
                      1290333262 INFO Object : New value 20 for object weckzeit_std (type: 5.xxx)
                      1290333273 INFO Object : New value 20 for object weckzeit_min (type: 5.xxx)
                      1290333279 INFO Object : New value off for object wecker_aktiv (type: 1.001)
                      1290333279 INFO SwitchingObject : SwitchingObject (id=wecker_aktiv): Compare value_m='0' to value='1'
                      1290333279 INFO Condition : ObjectCondition (id='wecker_aktiv') evaluated as '0'
                      1290333287 INFO Object : New value on for object wecker_aktiv (type: 1.001)
                      1290333287 INFO SwitchingObject : SwitchingObject (id=wecker_aktiv): Compare value_m='1' to value='1'
                      1290333287 INFO Condition : ObjectCondition (id='wecker_aktiv') evaluated as '1'
                      1290333287 INFO Action : Execute SetValueAction with value off
                      1290333287 INFO Action : Execute LuaScriptAction
                      Number of Arguments: 4
                      File: /var/spool/asterisk/wakeups/weckzeit_stdweckzeit_min.temp.1.42.call
                      Gruß Hartwig

                      Kommentar


                        #12
                        Hallo,

                        Versucht mal mit:
                        HTML-Code:
                        <action type="script">os.execute("/var/lib/asterisk/agi-bin/wecker.pl 42 '"..obj("weckzeit_std").."' '"..obj("weckzeit_min").."' add");</action>
                        MfG,

                        Jean-François

                        Kommentar

                        Lädt...
                        X