Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Funktion um Datenpunkt-Namen "aufzuräumen"?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Funktion um Datenpunkt-Namen "aufzuräumen"?

    This topic has been deleted. Only users with topic management privileges can see it.
    • haus-automatisierung
      haus-automatisierung Developer Most Active last edited by

      Hallo zusammen,

      ich habe beim Trashschedule Adapter aktuell das Problem, dass ich als Datenpunkt den Text nehme, welchen der Nutzer selbst eingibt.

      Jetzt wünsche ich mir eine Funktion vom Adapter, mit welcher ich Strings so bereinigen kann, dass diese für Datenpunkte geeignet sind. Gibt es soetwas?

      Also

      • Leerzeichen / Whitespaces raus
      • Sonderzeichen raus
      • Punkte raus
      • Umlaute umwandeln
      • ...

      Damit ich praktisch genau weiß, dass es am Ende keine Probleme mit diesem Datenpunkt gibt. Theoretisch könnte das ja auch direkt in setObjectNotExists und co eingebaut werden, aber der Break wäre wahrscheinlich zu hart 😄

      Gibt es da was? Oder eine Vorlage, welche man nutzen könnte? Wahrscheinlich machen das viele Adapter-Entwickler schon selbst auf die unterschiedlichsten Arten.

      UncleSam 1 Reply Last reply Reply Quote 0
      • UncleSam
        UncleSam Developer @haus-automatisierung last edited by UncleSam

        @haus-automatisierung Die Buchstaben finden sich in der Regex FORBIDDEN_CHARS. Du solltest es wie folgt machen können (ich habe es allerdings nicht versucht):

        const cleanName = input.replace(this.FORBIDDEN_CHARS, '_');
        

        this bezieht sich auf die Adapter Instanz.

        Ich weiss allerdings nicht, welche Version von js-controller dies voraussetzt.

        haus-automatisierung 1 Reply Last reply Reply Quote 0
        • haus-automatisierung
          haus-automatisierung Developer Most Active @UncleSam last edited by

          @unclesam Danke Dir!

          Danach ist aber total viel erlaubt (auch Leerzeichen).

          const FORBIDDEN_CHARS = /[^._\-/ :!#$%&()+=@^{}|~\p{Ll}\p{Lu}\p{Nd}]+/gu;

          Aber gut, das ist dann wohl die offizielle Variante 🙂

          UncleSam 1 Reply Last reply Reply Quote 0
          • UncleSam
            UncleSam Developer @haus-automatisierung last edited by

            @haus-automatisierung sagte in Funktion um Datenpunkt-Namen "aufzuräumen"?:

            ist aber total viel erlaubt

            Ja, absolut. Ist auch gut so. Das wichtigste ist eigentlich wirklich nur der Punkt.

            haus-automatisierung 1 Reply Last reply Reply Quote 0
            • haus-automatisierung
              haus-automatisierung Developer Most Active @UncleSam last edited by

              @unclesam sagte in Funktion um Datenpunkt-Namen "aufzuräumen"?:

              Das wichtigste ist eigentlich wirklich nur der Punkt.

              Selbst der Punkt ist doch aber erlaubt 🙂
              Am Ende werden da nur komische Unicode-Zeichen wirklich rausgeworfen.

              So richtig happy bin ich mit dem Ergebnis nicht (erlaubt zu viel) - werde wohl doch einen eigenen RegEx bauen für meinen Fall.

              UncleSam 1 Reply Last reply Reply Quote 0
              • UncleSam
                UncleSam Developer @haus-automatisierung last edited by

                @haus-automatisierung sagte in Funktion um Datenpunkt-Namen "aufzuräumen"?:

                Selbst der Punkt ist doch aber erlaubt

                Richtig, das ist ja die Regex für ganze Objekt IDs. Für ein einzelnes Unterobjekt wäre natürlich ein Punkt nicht erlaubt.

                Aber ich gebe dir recht, ich schliesse auch mehr aus: https://github.com/UncleSamSwiss/ioBroker.loxone/blob/e1cf009eea6eb661c57b1362c944b8ddd59400b6/src/loxone-handler-base.ts#L227

                haus-automatisierung 1 Reply Last reply Reply Quote 1
                • haus-automatisierung
                  haus-automatisierung Developer Most Active @UncleSam last edited by

                  @unclesam sagte in Funktion um Datenpunkt-Namen "aufzuräumen"?:

                  Aber ich gebe dir recht, ich schliesse auch mehr aus:

                  Genau das meine ich, es baut sich jeder Entwickler eine eigene Funktion um Namen für Datenpunkte aufzubereiten. Ich würde sogar soweit gehen, dass man nur a-zA-Z0-9_- zulässt.

                  UncleSam 1 Reply Last reply Reply Quote 0
                  • UncleSam
                    UncleSam Developer @haus-automatisierung last edited by

                    @haus-automatisierung sagte in Funktion um Datenpunkt-Namen "aufzuräumen"?:

                    Genau das meine ich, es baut sich jeder Entwickler eine eigene Funktion um Namen für Datenpunkte aufzubereiten.

                    Ja, aber jeder hat andere Anforderungen. Man kann nicht einfach eine Einschränkung machen, die nicht für alle passt. Genau das hatten wir mit States mit einem Punkt am Schluss: das ist neu nicht mehr erlaubt und es gab zahlreiche Leute, die sowas noch in ihren JS-States hatten und diese (kurzfristig) nicht einmal mehr in Admin löschen konnten.

                    Niemand hat ein Problem, wenn du die möglichen Werte mehr einschränkst als ioBroker dies tut, aber alle Adapter kann man nicht dazu zwingen - das gäbe ganz viele (unnötige) Anpassungen in den bestehenden Objektbäumen - und damit Anpassungen in zahllosen Skripten.

                    haus-automatisierung 1 Reply Last reply Reply Quote 0
                    • haus-automatisierung
                      haus-automatisierung Developer Most Active @UncleSam last edited by

                      @unclesam sagte in Funktion um Datenpunkt-Namen "aufzuräumen"?:

                      aber alle Adapter kann man nicht dazu zwingen

                      Das war ja auch nicht die Idee. Sondern eher ein allgemeine Funktion mit in die adapter.js aufzunehmen, welche man nutzen kann, aber nicht muss. Problematisch wird natürlich, wenn man diese nachträglich anpasst und sich dann in allen Projekten die Datenpunkte ändern... Man müsste also im ersten Wurf die perfekte Definition hinbekommen.

                      Also nicht so einfach.

                      jpgorganizer 1 Reply Last reply Reply Quote 0
                      • jpgorganizer
                        jpgorganizer @haus-automatisierung last edited by

                        ich nutze encodeURIComponent(str) mit einer daran anschließenden Sonderbehandlung für die dann ggfs. enthaltenen %-Zeichen

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        914
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

                        datenpunkt erstellen
                        3
                        10
                        533
                        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