Ankündigung

Einklappen
Keine Ankündigung bisher.

Logic Konfiguration watch_item regex

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

    Logic Konfiguration watch_item regex

    Hallo zusammen,

    eine Frage bitte.
    In der Doku steht:

    Code:
    logicnamehere:
        watch_item:
        - house.alarm
        - garage.alarm
    sowie, man könne beides auch durch:
    Code:
    watch_item: '*.door'
    erschlagen, das es "ähnlich" Regex fkt würde.

    Wie könnte ich nun aber:
    - garage1.tür.alarm
    - og.fenster.alarm
    beides auswerten?
    Regex wäre mit '.*alarm' einverstanden. Geht aber irgendwie nicht.

    Grüße
    Derzeit zwischen Kistenauspacken und Garten anlegen.
    Baublog im Profil.

    #2
    Hi,

    soviel ich weiß, wird hier nicht regex verwendet, sondern eine einfache generische Suche, in der * für 'beliebige Zeichen' steht. Somit müsste '*.alarm' gehen.

    Gruß, Waldemar

    P.S.: ich würde für einen item-Namen keine Sonderzeichen verwenden und lieber 'garage1.tuer.alarm' schreiben.

    Kommentar


      #3
      Danke, aber leider steht auf der Dokuseite im Beispiel auch:

      Code:
      Eine Änderung von [B]garage.door[/B] oder auch [B]house.door[/B] wird die Ausführung der Logik auslösen aber [B]nicht[/B] eine Änderung von [B]house.hallway.door[/B]
      Bezieht sich auf die zweite Zeile oben. Die erste ist eigentlich irrelevant merke ich gerade.

      Ich möchte einfach nur die beiden Items:

      Code:
      - garage1.tür.alarm
      - og.fenster.alarm
      einfacher erfassen. Sonst sind das viele Items, die darein müssen...

      Das Beispiel ist nur ein Beispiel. Sonst schreibe ich alles klein und ohne Umlaute
      Derzeit zwischen Kistenauspacken und Garten anlegen.
      Baublog im Profil.

      Kommentar


        #4
        Code:
        *.*.alarm
        hast Du ausprobiert?

        Kommentar


          #5
          Nein, ich wollte verstehen, was geht Dann fehlen wir ja wieder die "aussen.alarm". Das wären dann aber nur noch zwei "Items". Aber vl. können wir die Doku ja schärfen, so das in Zukunft es eindeutig ist. Fraglich ist nur: Wie wird es ausgewertet?
          Derzeit zwischen Kistenauspacken und Garten anlegen.
          Baublog im Profil.

          Kommentar


            #6
            Hallo greentux ,

            wenn ich den Code richtig verstanden hab werden die watch-items über die Funktion "match_items" in ./lib/items.py gelesen.

            Code:
            def match_items(self, regex):
                    """
                    Function to match items against a regular expression
            
                    :param regex: Regular expression to match items against
                    :type regex: str
            
                    :return: List of matching items
                    :rtype: list
                    """
            
                    regex, __, attr = regex.partition(':')
                    regex = regex.replace('.', '\.').replace('*', '.*') + '$'
                    regex = re.compile(regex)
                    attr, __, val = attr.partition('[')
                    val = val.rstrip(']')
                    if attr != '' and val != '':
                        return [self.__item_dict[item] for item in self.__items if regex.match(item) and attr in self.__item_dict[item].conf and ((type(self.__item_dict[item].conf[attr]) in[list,dict] and val in self.__item_dict[item].conf[attr]) or (val == self.__item_dict[item].conf[attr]))]
                    elif attr != '':
                        return [self.__item_dict[item] for item in self.__items if regex.match(item) and attr in self.__item_dict[item].conf]
                    else:
                        return [self.__item_dict[item] for item in self.__items if regex.match(item)]
            Gruss Andre

            Kommentar


              #7
              Ist ü nicht ein unzulässiges Zeichen in Item Namen?
              Viele Grüße
              Martin

              There is no cloud. It's only someone else's computer.

              Kommentar


                #8
                Er schrieb ja weiter oben
                Das Beispiel ist nur ein Beispiel. Sonst schreibe ich alles klein und ohne Umlaute

                Kommentar


                  #9
                  Damit müsste also *.*.alarm gehen. Zusammen mit *.alarm hätte ich dann alle erschlagen.
                  Probiere das mal aus.
                  Derzeit zwischen Kistenauspacken und Garten anlegen.
                  Baublog im Profil.

                  Kommentar

                  Lädt...
                  X