Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Alias Read -> konvertierung [gelöst]

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Alias Read -> konvertierung [gelöst]

    This topic has been deleted. Only users with topic management privileges can see it.
    • Denis Claß
      Denis Claß last edited by Denis Claß

      Ich habe einige Aliase die ich konvertiere in der Einstellung zum jeweiligen Datenpunkt:
      Alias Read-Function (keyword for value is val)

      val === 'BSH.Common.EnumType.PowerState.On' ? true : (val === 'BSH.Common.EnumType.PowerState.Off' ? false : val)

      Das funktioniert Problemlos, so wie ich das möchte. Da ich in JS nicht so mega fit bin die Frage (Und ich habe über die Suche auch nichts passendes gefunden) -> kann ich auch mehr als 2 Werte konvertieren? Wenn ja, wie müsste das aussehen? den zweiten Wert frage ich ja in der Klammer, müsste ein dritter Wert erneut eingeklammert sein?

      Danke

      MartinP Codierknecht 2 Replies Last reply Reply Quote 0
      • MartinP
        MartinP @Denis Claß last edited by

        @denis-claß Mit "true" und "false" kommt man dann nicht aus...

        Der Ternary-Operator "?:" kann aber durchaus auch mit Klammern und verschachtelt genutzt werden ...

        Füllstandsanzeiger mit Werten von 0 .... 100 %, bei 0...10% soll "Reserve!" zurückgegeben werden, zwischen 10 ... 90% "Normal", und ab 90% "Voll"

        (val>90) ? "Voll" :  ((val < 10) ? "Reserve!" : "Normal")
        

        Bei Klammern bin ich der Meinung, dass sie nicht zu sparsam eingesetzt werden sollten. In manchen Konstrukten helfen mir eigentlich überflüssige Klammern, den Code zu verstehen, wenn ich nach Monaten wieder draufgucke ... Auf die Rechenzeit sollten sie keinen messbaren Einfluss haben...

        Denis Claß 2 Replies Last reply Reply Quote 1
        • Codierknecht
          Codierknecht Developer Most Active @Denis Claß last edited by

          @denis-claß
          Ein Alias kann nur seinen "eigenen" Ziel-DP auswerten. Das ist letztlich das was in val drinsteht.
          Wenn mehrere DP auszuwerten sind, muss das per Script erledigt werden. Das Ergebnis kann dann natürlich nur in DP unterhalb von 0_userdata geschrieben werden.

          Eigentlich sollte Deine Konvertierungsfunktion also lauten:

          val == 'On' 
          

          Das reicht völlig aus.
          Steht im Ziel-DP gerade On, zeigt der Alias true. In allen anderen Fällen false.
          Also auch wenn da mal (warum auch immer) Blubb drinstehen würde.

          Denis Claß 1 Reply Last reply Reply Quote 1
          • Denis Claß
            Denis Claß @MartinP last edited by

            @martinp
            ah super, genau das was ich gefragt hatte. Damit kann ich arbeiten. DANKE!

            1 Reply Last reply Reply Quote 0
            • Denis Claß
              Denis Claß @Codierknecht last edited by

              @codierknecht
              ein alias = 1 Datenpunkt. Also erstmal, für meinen Fall kein Script notwendig.
              Danke für deinen Tipp

              1 Reply Last reply Reply Quote 0
              • Denis Claß
                Denis Claß @MartinP last edited by

                @martinp
                weißt du zufällig auch bei der nächsten Frage die dazu gehört Rat?
                Kann man in der Read Function auch anstatt eindeutige vals zu konvertieren auch Teile davon nur prüfen und ändern?
                Also wenn immer 0 oder 1 kommt diese zu true/false ist ja klar.
                Aber wenn mein original Wert mal hallo1 oder hallo2 sein kann für true und tschüss für false -> gibts hier nicht eine "contains" funktion? also z.B.
                val.contains('hallo') ? true : ((val === 'tschüss') ? false : false)

                paul53 Codierknecht 2 Replies Last reply Reply Quote 0
                • paul53
                  paul53 @Denis Claß last edited by paul53

                  @denis-claß sagte: Wert mal hallo1 oder hallo2 sein kann für true

                  val == 'hallo1' || val == 'hallo2'
                  

                  oder

                  val.startsWith('hallo')
                  

                  oder

                  val != 'tschüss'
                  
                  Codierknecht 1 Reply Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @Denis Claß last edited by Codierknecht

                    @denis-claß
                    Mit z.B. contains oder auch mit indexOf funktioniert das nicht.

                    Aber was hast Du immer mit dem ternären Operator?
                    Wenn da nur true oder false geliefert werden sollen, ist das völlig unnötig. Ein einfacher Vergleich tut's ja auch - so wie @paul53 das zeigt.

                    1 Reply Last reply Reply Quote 0
                    • Codierknecht
                      Codierknecht Developer Most Active @paul53 last edited by Codierknecht

                      @paul53
                      Meine Versuche mit startsWith() funktionieren nicht.
                      Hast Du das mal getestet?

                      75fde545-531f-4975-8413-b1b9cc239835-grafik.png

                      paul53 Denis Claß 2 Replies Last reply Reply Quote 0
                      • paul53
                        paul53 @Codierknecht last edited by paul53

                        @codierknecht sagte: Hast Du das mal getestet?

                        Ja, funktioniert.
                        Browser-Refresh?

                        Denis Claß 1 Reply Last reply Reply Quote 0
                        • Denis Claß
                          Denis Claß @Codierknecht last edited by

                          @codierknecht
                          ich hab jetzt mal ein wenig gegoogelt und getestet. contains geht nicht. aber includes klappt genau wie man es von contains kennt.
                          Mein Problem ist somit gelöst.
                          Vielen Dank für die Denkanstöße

                          1 Reply Last reply Reply Quote 0
                          • Denis Claß
                            Denis Claß @paul53 last edited by

                            @paul53
                            auch danke an dich. du hast mir den finalen Denkanstoß gegeben

                            1 Reply Last reply Reply Quote 0
                            • Codierknecht
                              Codierknecht Developer Most Active last edited by

                              @paul53
                              Mag wohl daran gelegen haben, dass ich einen alten DP "wiederverwertet" habe.
                              Mit einem neuen funzt das einwandfrei:

                              val.startsWith('hallo')
                              
                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

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

                              462
                              Online

                              31.9k
                              Users

                              80.1k
                              Topics

                              1.3m
                              Posts

                              4
                              13
                              459
                              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