Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. invalid pattern

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    invalid pattern

    This topic has been deleted. Only users with topic management privileges can see it.
    • ?
      A Former User @Malz1902 last edited by

      @malz1902 nö Datenpunkt ist als string hinterlegt, da ist es egal was drin steht. Und ID ist lastCheck wüsste nicht was er da anmeckern könnte.

      1 Reply Last reply Reply Quote 0
      • H
        hacki11 last edited by

        Es werden einige Sonderzeichen ausgefiltert, ß und ° gehört scheinbar nicht dazu. Generell bin ich gerade dabei, die IDs des Adapters auf Nummer-only umzustellen, dann ergibt sich das Problem nicht mehr. Ich melde mich die Tage mit einer Testversion.

        T 1 Reply Last reply Reply Quote 1
        • T
          ticaki Developer @hacki11 last edited by

          @hacki11

          function name2id(pName) {
              return (pName || '').replace(adapter.FORBIDDEN_CHARS, '_');
          }
          

          von Martin kopiert

          H 1 Reply Last reply Reply Quote 0
          • H
            hacki11 @ticaki last edited by hacki11

            @ticaki sagte in invalid pattern:

            @hacki11

            function name2id(pName) {
                return (pName || '').replace(adapter.FORBIDDEN_CHARS, '_');
            }
            

            von Martin kopiert

            Solch eine Funktion ist bereits enthalten nur haben sich die invalid chars erweitert oder waren nicht bekannt. Es ist aber ein grundsätzlicheres Problem, da sich diese Namen auch zwischen BSB_lan Releases ändern. Daher werden diese IDs auf die Herstellernummern umgestellt. Dann gibt es auch keine Invaliden Zeichen mehr.

            T 1 Reply Last reply Reply Quote 0
            • T
              ticaki Developer @hacki11 last edited by ticaki

              @hacki11
              Ich lese das so, dass du eine eigene Filterfunktion verwendet, falls ich das falsch verstanden habe vergiss den Beitrag:

              FORBIDDEN_CHARS ist eine Regex-Konstante aus dem js-controller (Konstante von class adapter) und diese definiert erlaubte Zeichen und negiert dieses so das alle verbotenen gefunden werden. Darin sind aber auch noch einige Zeichen die aus Kompatibilitätsgründe erlaubt sind. Die tatsächlichen erwünschten Zeichen filter man mit dieser:

              str = str.replace(/[^0-9A-Za-z\._-]/gu, '_');
              
              H 1 Reply Last reply Reply Quote 0
              • H
                hacki11 @ticaki last edited by hacki11

                @ticaki sagte in invalid pattern:

                @hacki11
                Ich lese das so, dass du eine eigene Filterfunktion verwendet, falls ich das falsch verstanden habe vergiss den Beitrag:

                FORBIDDEN_CHARS ist eine Regex-Konstante aus dem js-controller (Konstante von class adapter) und diese definiert erlaubte Zeichen und negiert dieses so das alle verbotenen gefunden werden. Darin sind aber auch noch einige Zeichen die aus Kompatibilitätsgründe erlaubt sind. Die tatsächlichen erwünschten Zeichen filter man mit dieser:

                str = str.replace(/[^0-9A-Za-z\._-]/gu, '_');
                

                Ah gut zu Wissen, afaik gabs die damals noch nicht. Die Verwendung dieses Regex würde aber auch dazu führen, dass sich bei jedem die bestehenden IDs ändern. Und da ich plane alle auf „echte“ IDS umzustellen werde ich diesen Schritt nicht zusätzlich machen. So einen großen Breaking Change will ich nur einmal machen müssen.

                Beispiel:
                Außentemperatur_(1111) veränderte sich in der neuen BSB_lan Firmware zu Aussentemperatur_(1111) was zu einem Breaking Change für jeden führt, der diesen Parameter abonniert. Künftig wird die ID nur aus der, vom Hersteller definierten Nummer bestehen: 1111

                Dann erübrigen sich auch ungültige Character.

                T mcm1957 2 Replies Last reply Reply Quote 1
                • T
                  ticaki Developer @hacki11 last edited by

                  @hacki11

                  Die Definition von forbidden_chars findest du hier, Verwendung wird afaik empfohlen.

                  https://github.com/ioBroker/ioBroker.js-controller/blob/a115ba28d936f9c746de49df806df95dd6ca2db4/packages/common/src/lib/common/tools.ts#L123

                  H 1 Reply Last reply Reply Quote 0
                  • H
                    hacki11 @ticaki last edited by

                    Welche BSB Adapter Version wird eigentlich eingesetzt?

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      Malz1902 @hacki11 last edited by

                      @hacki11 0.3.1

                      1 Reply Last reply Reply Quote 0
                      • mcm1957
                        mcm1957 @hacki11 last edited by mcm1957

                        @hacki11 said in invalid pattern:

                        Die tatsächlichen erwünschten Zeichen filter man mit dieser:

                        str = str.replace(/[^0-9A-Za-z\._-]/gu, '_');
                        

                        Bei NEUEN Adaptern sollte man darauf achten nur Zahlen, Groß- und Kleinbuchstaben sowie - und _ in Ids zu verwenden. Damit ist man auf der sicheren Seite.

                        ABER es ist NICHT sinnvoll bei existierenden Adaptern auf einmal alle Zeichen außer den eben genannten zu ersetzen. Das würde einen unnötigen breaking Change auslösen.

                        Was aber auch bei existierneden Adapten notwendig ist, ist die FORBIDDEN chars lt. Kontante zu ersetzen. Wenn das im Einzelfall breaking ist, ist es nicht zu vermeiden. Die Zeichen in FORBIDDEN_CHARS sind definitiv verboten, lösen Probleme aus bzw. werden intern ggF sogar bereits jetzt ersetzt.

                        Und ja - Ids sollen soweit wie möglich KONSTANT bleiben. Einstellbare Texte oder Text der vom Gerät kommt sind eher zu vermeiden. Ids müssen NICHT leicht lesbar / merkbar sein. Dazu ginbts das name attribut.

                        1 Reply Last reply Reply Quote 0
                        • H
                          hacki11 last edited by

                          @mcm57
                          Absolut, dass ist auch der Grund für die grundlegende Änderung auf Nummern. Wenn ich jetzt nur die Forbidden Chars ersetze (bzw. Nur erlaubte zulasse) wird das für alle Parameter des Adapters bei allen User ein Breaking Change, da in jedem Parameter solch ein Zeichen ist. Deshalb mache ich dafür kein Update sondern gehe direkt den Weg alle Ids einmalig auf Nummern umzustellen. Ein Breaking Change ist unumgänglich aber zwei mache ich nicht.
                          Natürlich kann ich dann auch auf gültige IDs gemäß deinem Vorschlag prüfen.

                          1 Reply Last reply Reply Quote 2
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate
                          FAQ Cloud / IOT
                          HowTo: Node.js-Update
                          HowTo: Backup/Restore
                          Downloads
                          BLOG

                          796
                          Online

                          31.6k
                          Users

                          79.6k
                          Topics

                          1.3m
                          Posts

                          6
                          14
                          778
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo