Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. String teilen - split-Befehl

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    String teilen - split-Befehl

    This topic has been deleted. Only users with topic management privileges can see it.
    • ub.privat
      ub.privat last edited by

      Guten Morgen,

      bin ein wenig am Kaoitulieren, bekomme einfach den Datenstring nicht geteilt.
      Was habe ich vor:
      In den Datenpunkten der Hausgeräte, welche über den Adapter HomeConnect ausgelsen werden, erfolgt diese Wertangabe
      20e027ce-8161-411a-b927-62d98ac3a5be-grafik.png
      Von dem ersten benötige ich z.Bsp. nur "Closed" oder bei dem nächsten nur "Inactive"
      Habe dazu im CSS wie folgt hinterlegt:

      .string-set{result.split("\(")[0];}

      ce9b4cc3-2b6e-4591-be3c-c5d4f21dcfbd-grafik.png
      Es soll quasi alles nach der ( weg gelassen werden. Ich benötige nur das Closed oder Inactive...

      Aber so wirklich will es nicht funktionieren, könnt ihr mir bitte einen Tipp geben?

      Danke schon mal vorab und einen guten Start ins Neue Jahr!

      Uwe

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @ub.privat last edited by

        @ub-privat

        result.split('(')[0];
        
        ub.privat 1 Reply Last reply Reply Quote 0
        • ub.privat
          ub.privat @paul53 last edited by ub.privat

          @paul53 said in String teilen - split-Befehl:

          result.split('(')[0];

          Danke für die Antwort, so wirklich will es nicht funktionieren:
          61eca4b8-990e-4170-89ed-cae04968419c-grafik.png

          immer noch die Fehlermeldung:
          00695866-9490-483a-9732-71ed6719821f-grafik.png

          Irgendwie muss anderswo ein Denkfehler stecken...

          ub.privat 1 Reply Last reply Reply Quote 0
          • ub.privat
            ub.privat @ub.privat last edited by

            Guten Morgen,

            möchte mein Problem bitte nocheinmal nach "oben" holen.
            Es wäre schön, wenn ein versierter Programmierer mir hier bitte helfen könnte...

            Herzlichen Dank im voraus!

            Uwe

            1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO last edited by

              das da oben ist doch der CSS-Reiter in VIS.
              Sollte da drin dein Javascript funktionieren?
              ich denke nicht das das so geht.
              Das CSS wird auch nur genau einmal beim Aufbau der HTML-Seite interpretiert.
              Dynamische Änderungen sind an dieser Stelle nur bedingt möglich.
              Deine CSS-Eigenschaft string-set ist auch falsch notiert (muss gestehen hab das selbst noch nie verwendet. Bei MDN find ich den auch nicht und mein Chrome kennt das auch nicht. Allerdings finde ich die auf andere Artikelseiten. Ich bezweifle das das mal ein Vorschlag war, der aber nicht in alle Browser so eingeflossen ist. Hat das bei dir schon mal ohne Javascript funktioniert?

              Beschreib bitte nochmal kurz wann was passieren soll und woher die 'Daten genau kommen.
              Evtl gibt es einen anderen einfacheren Weg.

              ub.privat 1 Reply Last reply Reply Quote 0
              • ub.privat
                ub.privat @OliverIO last edited by

                @OliverIO

                Hallo Oliver,

                so richtig hat es ehrlich gesagt nicht funktioniert.
                Die Daten kommen aus dem HomeConnect-Adapter (BOSCH/SIEMENS). Damit werden Zustände der Hausgeräte ausgelesen. Also welches Programm läuft, wie ist der Zustand des Gerätes.
                Die Datenpunkte sehen wie folgt aus:
                Geschirrspüler (arbeitet gerade)
                eac8f8eb-4854-4ba5-9a0c-9ce750a6e82a-grafik.png
                Backofen:
                b16c147c-5289-4778-9aa0-1e79512b75e5-grafik.png
                usw.

                Der aktuelle Zustand wird in einem String ausgegeben, welcher zum eigentlichen Inhalt noch "Müll" mit liefert.
                ea275f9b-306a-4c9a-8b24-64bed520ad40-grafik.png

                Ich benötige nur den Inhalt vor der Klammer!
                Ist dies so verständlicher?

                dslraser OliverIO 2 Replies Last reply Reply Quote 0
                • dslraser
                  dslraser Forum Testing Most Active @ub.privat last edited by

                  @ub-privat

                  vielleicht hilft Dir das.

                  https://forum.iobroker.net/post/349203

                  dslraser 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @ub.privat last edited by

                    @ub-privat soweit hab ich das schon verstanden, aber was möchtest du mit dem Ergebnis anfangen?
                    Du hast immer noch deinen bisherigen Lösungsweg im Kopf.
                    Willst du dann einen Text anzeigen, ein Icon aufleuchten lassen?

                    ub.privat 1 Reply Last reply Reply Quote 0
                    • ub.privat
                      ub.privat @OliverIO last edited by

                      @OliverIO

                      Eigentlich ganz simpel "nur" den Text anzeigen.
                      Eine Art Statusanzeige, mehr nicht. Simpel, einfach, schlank....

                      1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO last edited by OliverIO

                        @ub-privat

                        ok, dann nimmst du ein ganz normales basic-string widget
                        bei HTML voranstellen trägst du folgendes ein:

                        {s:Datenpunkt;s.slice(0,s.indexOf('('))}
                        

                        Das Wort Datenpunkt (und genau nur das) ersetzen mit dem Namen deines Datenpunktes

                        Das nennt sich Binding wenn du da nach Dokumentation suchst und ist eine VIS-Funktionalität

                        ub.privat 1 Reply Last reply Reply Quote 0
                        • ub.privat
                          ub.privat @OliverIO last edited by

                          @OliverIO said in String teilen - split-Befehl:

                          {s:Datenpunkt;s.slice(0,s.indexOf('('))}

                          Ok, danke für deine Antwort. Leider will es nicht wirklich funktionieren.

                          So heißt der Datenpunkt: homeconnect.0.SIEMENS-HS858GXB6-68A40E060A0C.status.BSH_Common_Status_OperationState

                          Diesen in das basic-string Widget unter HTML-voranstellen eingefügt:
                          {s:homeconnect.0.SIEMENS-HS858GXB6-68A40E060A0C.status.BSH_Common_Status_OperationState;s.slice(0,s.indexOf('('))}
                          fca6945c-29dc-4dad-95d1-ea485c5aa0f5-grafik.png
                          Das Event im Datenpunkt lautet:
                          Inactive(BSH.Common.EnumType.OperationState.Inactive)
                          e5ec88c7-82af-43e0-ad07-805a62bd9687-grafik.png
                          Wovon eigentlich nur das "Inactive" als Ergebnis heraus extrahiert werden soll.

                          Aber im Ergebnis der VIS steht: 😠
                          4a022379-144f-4add-b537-419df2da1ddb-grafik.png

                          Die geplante Card:
                          b8289ebc-2115-4508-bb53-bbe501fe07e7-grafik.png
                          Unter Status soll dann jeweils der aktuelle Zustand z.Bsp. "inaktiv" ausgeführt werden.

                          Bin aktiv am suchen und Lesen zum Thema "Binding VIS-Funktionalität"...

                          OliverIO 1 Reply Last reply Reply Quote 0
                          • OliverIO
                            OliverIO @ub.privat last edited by

                            @ub-privat
                            Also mehrere Probleme:

                            1. du hast in das Feld ObjectID (bei dir lustigerweise als Schalter bezeichnet) ebenfalls den Datenpunkt ausgewählt. Das bitte wieder rausnehmen. Hatte ich ja auch nicht geschrieben
                            2. oben hast du mehrfach geschrieben, das alles nach der ( abgeschnitten werden soll.
                              Im jetzigen Ergebnis sehe ich aber keine (
                              Deswegen wird auch nichts abgeschnitten.
                              Bitte liste alle Möglichkeiten der Ergebnisse, die der Datenpunkt so enthalten kann auf.
                              Daraus kann man eine Regel ableiten, die man in Befehle umsetzen kann.
                            3. Verstehst du das was du da eingetragen hast? Kannst du den Weg nachvollziehen?
                              Bei IObroker ist wichtig, die Dinge nachzuvollziehen und ggfs. auch mal noch weitere Doku zu lesen, da man aus der Ferndiagnose nur mit den Informationen arbeiten kann, wass der TE einem gibt. Wenn da auch schon Fehler oder Ungenauigkeiten entstehen, dann kann sich das ewig hinziehen.
                            ub.privat 1 Reply Last reply Reply Quote 1
                            • dslraser
                              dslraser Forum Testing Most Active @dslraser last edited by dslraser

                              @dslraser sagte in String teilen - split-Befehl:

                              @ub-privat

                              vielleicht hilft Dir das.

                              https://forum.iobroker.net/post/349203

                              ich zitiere mich mal selbst...
                              Ich habe zwar diesen Adapter nicht, aber ich denke auf Grund des Datenpunktes (siehe Link zu meinem Beitrag) handelt es sich bei diesem Datenpunkt um den Wert aus einer Werteliste, kann das sein ?
                              Ich meine den Wert den Du anzeigen willst...

                              Edit: zeige am besten mal den RAW von Deinem Datenpunkt.

                              ub.privat 1 Reply Last reply Reply Quote 0
                              • ub.privat
                                ub.privat @OliverIO last edited by

                                @OliverIO said in String teilen - split-Befehl:

                                Moin.moin

                                du hast in das Feld ObjectID (bei dir lustigerweise als Schalter bezeichnet) ebenfalls den Datenpunkt ausgewählt. Das bitte wieder rausnehmen. Hatte ich ja auch nicht geschrieben

                                Habe den Datenpunkt wieder aus dem Feld "Schalter" entfernt.
                                Das Ergebnis sieht wie folgt aus:
                                c3c5c84e-af77-4017-9c58-84d4888d66a1-grafik.png
                                Von dieser Zeichenfolge benötige ich nur das "Inactiv".

                                oben hast du mehrfach geschrieben, das alles nach der ( abgeschnitten werden soll.
                                Im jetzigen Ergebnis sehe ich aber keine (
                                Deswegen wird auch nichts abgeschnitten.
                                Bitte liste alle Möglichkeiten der Ergebnisse, die der Datenpunkt so enthalten kann auf.
                                Daraus kann man eine Regel ableiten, die man in Befehle umsetzen kann.

                                Die Ergebnisse aus den Datenpunkten können wie folgt aussehen:
                                {
                                "BSH.Common.EnumType.OperationState.Ready": "Ready",
                                "BSH.Common.EnumType.OperationState.Inactive": "Inactive",
                                "BSH.Common.EnumType.OperationState.Run": "Run",
                                "BSH.Common.EnumType.OperationState.Finished": "Finished",
                                "BSH.Common.EnumType.OperationState.Pause": "Pause",
                                "BSH.Common.EnumType.OperationState.ActionRequired": "ActionRequired"
                                }

                                anderer Datenpunkt, aber identische Struktur:
                                {
                                "BSH.Common.EnumType.DoorState.Closed": "Closed",
                                "BSH.Common.EnumType.DoorState.Open": "Open"
                                }

                                Dies sind die Daten direkt aus dem Adapter. Zu jedem Hausgerät gibt es untershiedliche Stati.

                                Gerät1:
                                a0ed8718-d4b6-4948-a3a5-0538f88c992c-grafik.png

                                Gerät2:
                                deb77270-928d-4c9b-8ea8-29514603e899-grafik.png

                                Gerät3:
                                3648b2c0-1f39-442d-8fc5-6bacbd8a9856-grafik.png

                                Ich gehe davon aus, dass der String in der letzten Spalte der aktuelle Wert des Datenpunktes ist.
                                Deshalb komme ich auf "alles nach der (".
                                Wenn ich mir nun die Werte (siehe oben) ansehe, muss ich umdenken.
                                Die Struktur lautet "blablabla": "Das Ergebnis möchte ich haben!" --> also alles nach dem Doppelpunkt!?

                                Verstehst du das was du da eingetragen hast? Kannst du den Weg nachvollziehen?
                                Bei IObroker ist wichtig, die Dinge nachzuvollziehen und ggfs. auch mal noch weitere Doku zu lesen, da man aus der Ferndiagnose nur mit den Informationen arbeiten kann, wass der TE einem gibt. Wenn da auch schon Fehler oder Ungenauigkeiten entstehen, dann kann sich das ewig hinziehen.

                                Ich versuche zu verstehen, deshalb bin ich ja ursprünglich mit split-string gestartet.
                                Aber wie gesagt, ich VERSUCHE zu verstehn, was nicht ganz einfach ist...

                                1 Reply Last reply Reply Quote 0
                                • ub.privat
                                  ub.privat @dslraser last edited by

                                  @dslraser

                                  je mehr ich mich damit beschäftige, hast du recht.
                                  Die Werte entsprechen einer Werteliste.

                                  so z.Bsp.

                                  {
                                  "BSH.Common.EnumType.OperationState.Ready": "Ready",
                                  "BSH.Common.EnumType.OperationState.Inactive": "Inactive",
                                  "BSH.Common.EnumType.OperationState.Run": "Run",
                                  "BSH.Common.EnumType.OperationState.Finished": "Finished",
                                  "BSH.Common.EnumType.OperationState.Pause": "Pause",
                                  "BSH.Common.EnumType.OperationState.ActionRequired": "ActionRequired"
                                  }

                                  anderer Datenpunkt, aber identische Struktur:
                                  {
                                  "BSH.Common.EnumType.DoorState.Closed": "Closed",
                                  "BSH.Common.EnumType.DoorState.Open": "Open"
                                  }

                                  Verfolge deinen von die verlinkten Beitrag parallel.
                                  Da gibt es eine Menge Gemeinsamkeiten.
                                  Nur wenn ich noch nicht einmal den reinen Text extrahiert bekomme, dann ist es mit Sprache sicher noch schwieriger...?

                                  Ihr bastelt an einer "ähnlichen" Lösung...

                                  dslraser 1 Reply Last reply Reply Quote 0
                                  • dslraser
                                    dslraser Forum Testing Most Active @ub.privat last edited by

                                    @ub-privat
                                    die Lösung steht in dem Beitrag drinn, weil der Zustand, den Du auch haben möchtest, ausgegeben wird. Nur das hier das Ergebnis als Sprachausgabe benutzt wird.

                                    ub.privat 1 Reply Last reply Reply Quote 0
                                    • ub.privat
                                      ub.privat @dslraser last edited by

                                      @dslraser

                                      ok, dann muss ich noch einmal aufmerksam lesen!

                                      1 Reply Last reply Reply Quote 0
                                      • OliverIO
                                        OliverIO last edited by

                                        ok, dann füge in das basic string widget genau wie oben folgendes ein

                                        {s:Datenpunkt;s.split('.')[s.split('.').length-1]}
                                        

                                        Ich habe eine Vermutung, warum die Anzeige des Wertes im iobroker und der Ausgabe in vis
                                        differiert. Es scheint mit den Enums zu tun zu haben, mit denen ich selbst noch nicht gearbeitet habe.
                                        Der Datenpunkt enthält nur den Enumtyp. Die Anzeige in iobroker ermittelt dir aber auch gleich den Wert dazu.
                                        Um es Einfach zu machen ist im obigen Befehl jetzt folgendes drin:
                                        splitte den Wert mittels dem Punkt und nehme aus dem erzeugten Array immer das letzte Element. der Zustand ist ja immer der Text nach dem letzten Punkt.

                                        ub.privat dslraser 3 Replies Last reply Reply Quote 1
                                        • ub.privat
                                          ub.privat @OliverIO last edited by

                                          @OliverIO said in String teilen - split-Befehl:

                                          {s:Datenpunkt;s.split('.')[s.split('.').length-1]}

                                          Tata: ES FUNKTIONIERT!!!

                                          3d1612d0-e3e2-499b-bbd7-a3878d8d638f-grafik.png

                                          Jetzt muss ich mich aber noch intensiv mit dem Split-Befehl auseinander setzen.
                                          Erst einmal vielen DANK.

                                          Das chöne daran ist, dass man immer wieder dazu lernt! Mein persönliches ioBroker-Kompendium wächst und wächst.

                                          1 Reply Last reply Reply Quote 0
                                          • ub.privat
                                            ub.privat last edited by

                                            Lerne gerad hier https://www.w3schools.com/jsreF/jsref_slice_string.asp
                                            Java für Einsteiger 😊

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            913
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            7
                                            46
                                            3549
                                            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