Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - LinKNX-Rule gleich beim Start von LinKNX?

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

    - √ - LinKNX-Rule gleich beim Start von LinKNX?

    Hi allerseits,

    nachdem ich weder in der Doku zu LinKNX noch hier im Forum eine passende Antwort gefunden habe, formulier ich das mal an die LinKNX-Profis:

    Ich möchte bei der Initialisierung von LinKNX gleich eine Rule ausführen, geht das?

    Das einzige, was mir eingefallen ist, wäre eine Timer-Condition, die jede Sekunde feuert, und ich werte die Regel nur einmal aus - aber dann feuert der Timer ja weiterhin jede Sekunde - das ist ziemlich blöd.

    Hab ich in der Doku was übersehen oder ist das wirklich nicht vorgesehen?
    Bin für jeden Tip dankbar,
    Waldemar
    OpenKNX www.openknx.de

    #2
    Hmm ich denke nicht dass das geht.

    Workaround:
    Mit der rule eine Merker GA auf 1 setzen. Und das persistance file in einer RAM disk (so wie /tmp/) dann existiert es beim Start nicht.
    Mit einer not 1 condition würde es ausgeführt werden.

    Edit:
    Wenn du kein persistance file angibst und als condition eine not 1 auf das Merker object, und ihn in der Action ne 1 schicken lässt, dann würde die rule möglicherweise auch nur 1 mal ausgeführt werden? Aber das wäre zu testen... Soll ich dass mal in einer rule verfassen wie ich dass meine?


    Gesendet von meinem HTC Sensation Z710e mit Tapatalk

    Kommentar


      #3
      Zitat von vlamers Beitrag anzeigen
      Soll ich dass mal in einer rule verfassen wie ich dass meine?
      Das wäre nett - ich hab ehrlich gesagt nicht verstanden, was Du meinst - vielleicht liegt es auch an der fortgeschrittenen Zeit.

      Danke und gute Nacht,
      Waldemar
      OpenKNX www.openknx.de

      Kommentar


        #4
        So die rule:

        Code:
        <rule id="test">
        <condition type="and">
        <condition type="timer" trigger="true">
            <every min="1">
        </condition>
        <condition type="not">
        <condition type="object" id="merker-GA" value="1"/>
        </condition>
        </condition>
        <actionlist>
        <action type="set-value" id="merker-GA" value="1"/>
        <action type="das was du am anfang ausführen willst"/>
        </actionlist>
        </rule>
        Und dann gibts 2 möglichkeiten

        entweder:
        Code:
        <object id="merker-GA" gad="x/y/z" init="persist" flags="cwtu">Merker-GA</object>
        hier wird der Status in ein Persistance File geschrieben
        und du müsstest per Cron bei jedem Start das Persistance File löschen.(bzw. evtl geht das auch im init script von linknx)

        oder:
        Code:
        <object id="merker-GA" gad="x/y/z" flags="cwtu">Merker-GA</object>
        hier wird der Status nicht geschrieben, aber ich meine er wird "gemerkt" bis zum nächsten neustart von linknx. Dann würde die Rule einmal ausgeführt und die conditions sind nicht mehr erfüllt für ein zweites mal...

        sind beides nur Überlegungen, müsstest du mal testen.


        Gruß vlamers

        Gesendet von meinem HTC Z710E via Tapatalk

        Kommentar


          #5
          Hi,

          vielen Dank für Deine Lösung. Das war allerdings das, was mir bereits eingefallen ist, ich hatte es nur mit einer Sekunde statt einer Minute. Das blöde ist, dass der Timer dann ja immer weiter feuert - ich sehe es zwar nur im Log, aber es stört mich trotzdem.

          Nichtdestotrotz hast Du mir den "richtigen" Tip gegeben. Ich werde im LinKNX Startscript mit groupwrite ein "Initialisierungsobjekt" setzen, nachdem LinKNX gestartet ist und in LinKNX dann eine Condition auf dieses Objekt machen. Das scheint mir die beste und zuverlässigste Lösung zu sein.

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar

          Lädt...
          X