Ankündigung

Einklappen
Keine Ankündigung bisher.

rule group changed -> geänderted Item rausfinden

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

    rule group changed -> geänderted Item rausfinden

    Hallo zusammen,

    ich würde gerne meine Rollläden rauffahren, wenn ein Fensterkontakt geöffnet wird. Dazu habe ich mir eine Map angelegt, die die Fensterkontakt items auf den entsprechenden Rollladen mappt.

    Dann kann ich mit doch durch folgende Rule auslösen, ob irgendein Fensterkontakt ausgelöst hat und den entsprechenden Rollladen fahren:

    Code:
    rule "window contact changed"
    when
        Item gWindow changed
    then
    	var shutter = contactShutterMap.get(changedItem)
    gWindow ist eine Gruppe, die alle Fensterkontakte enthält.

    Wie finde ich nun raus, welcher Kontakt sich tatsächlich verändert hat (changedItem funktioniert natürlich nicht)?

    Danke und Gruß
    Matthias

    #2
    Hallo
    Die Fensterkontakte mit Goup Item versehen.
    Und dann bei changed alle Group Items mit einer Schleife durchlaufen und abfragen.
    Das Group Item ist hier test.
    Habe das so nicht getestet, mit Copy u. Paste erstellt.

    Code:
    import org.openhab.core.library.types.*
    import org.openhab.core.persistence.*
    import org.openhab.model.script.actions.*
    var Number values
    
    rule "testen"
    when
    Item test changed
    then
     logInfo("FILE", "------ change test -----  ")
    test?.members.forEach[element2,index2|
        values = Math::round((element2.state as DecimalType).floatValue * 10)/10.0 /10  
    ]
    end
    Gruß NetFritz
    KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
    WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
    PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP

    Kommentar


      #3
      Ja, aber wie teste ich, welches Item sich tatsächlich verändert hat? Ich kann halt prüfen, ob ein Kontakt auf OPEN steht, aber das können ja mehrere sein...

      Kommentar


        #4
        Hallo
        Füge das mal hinter forEach ein.
        Vielleicht ist das die Lösung ?
        Code:
            My_Status2 = element2.name.toString
            val statusToChange2 = test.members.findFirst(item|item.name == My_Status2)
        Gruß NetFritz
        KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
        WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
        PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP

        Kommentar


          #5
          Aber da bekomm ich doch auch nicht das veränderte Item raus.

          statusToChange2 ist doch gleich element2

          Kommentar


            #6
            guck mal da:

            https://groups.google.com/forum/#!se...4/FTPS9ATl13AJ

            da ist auch ein Beispiel.
            Grüsse
            Karsten

            Kommentar


              #7
              ja, mit Maps den Zustand merken funktioniert natürlich, ist aber nicht gerade schön...
              Aber Danke für die Lösung!

              Ich hab noch was anderes entdeckt, das ich mal versuchen werde:

              https://github.com/openhab/openhab/w...-via-Functions

              Kommentar

              Lädt...
              X