Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Alias Read -> konvertierung [gelöst]

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    961

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Alias Read -> konvertierung [gelöst]

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
13 Beiträge 4 Kommentatoren 915 Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Denis ClaßD 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

    CodierknechtC Offline
    CodierknechtC Offline
    Codierknecht
    Developer Most Active
    schrieb am zuletzt editiert von
    #3

    @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.

    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
    HmIP|ZigBee|Tasmota|Unifi
    Zabbix Certified Specialist
    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

    Denis ClaßD 1 Antwort Letzte Antwort
    1
    • MartinPM MartinP

      @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ßD Offline
      Denis ClaßD Offline
      Denis Claß
      schrieb am zuletzt editiert von
      #4

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

      1 Antwort Letzte Antwort
      0
      • CodierknechtC Codierknecht

        @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ßD Offline
        Denis ClaßD Offline
        Denis Claß
        schrieb am zuletzt editiert von
        #5

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

        1 Antwort Letzte Antwort
        0
        • MartinPM MartinP

          @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ßD Offline
          Denis ClaßD Offline
          Denis Claß
          schrieb am zuletzt editiert von
          #6

          @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)

          paul53P CodierknechtC 2 Antworten Letzte Antwort
          0
          • Denis ClaßD Denis Claß

            @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)

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #7

            @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'
            

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            CodierknechtC 1 Antwort Letzte Antwort
            0
            • Denis ClaßD Denis Claß

              @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)

              CodierknechtC Offline
              CodierknechtC Offline
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von Codierknecht
              #8

              @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.

              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

              Proxmox 9.1.1 LXC|8 GB|Core i7-6700
              HmIP|ZigBee|Tasmota|Unifi
              Zabbix Certified Specialist
              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

              1 Antwort Letzte Antwort
              0
              • paul53P 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'
                
                CodierknechtC Offline
                CodierknechtC Offline
                Codierknecht
                Developer Most Active
                schrieb am zuletzt editiert von Codierknecht
                #9

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

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

                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi
                Zabbix Certified Specialist
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                paul53P Denis ClaßD 2 Antworten Letzte Antwort
                0
                • CodierknechtC Codierknecht

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

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

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von paul53
                  #10

                  @codierknecht sagte: Hast Du das mal getestet?

                  Ja, funktioniert.
                  Browser-Refresh?

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  Denis ClaßD 1 Antwort Letzte Antwort
                  0
                  • CodierknechtC Codierknecht

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

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

                    Denis ClaßD Offline
                    Denis ClaßD Offline
                    Denis Claß
                    schrieb am zuletzt editiert von
                    #11

                    @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 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @codierknecht sagte: Hast Du das mal getestet?

                      Ja, funktioniert.
                      Browser-Refresh?

                      Denis ClaßD Offline
                      Denis ClaßD Offline
                      Denis Claß
                      schrieb am zuletzt editiert von
                      #12

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

                      1 Antwort Letzte Antwort
                      0
                      • CodierknechtC Offline
                        CodierknechtC Offline
                        Codierknecht
                        Developer Most Active
                        schrieb am zuletzt editiert von
                        #13

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

                        val.startsWith('hallo')
                        

                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                        HmIP|ZigBee|Tasmota|Unifi
                        Zabbix Certified Specialist
                        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                        1 Antwort Letzte Antwort
                        0
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

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

                        357

                        Online

                        32.6k

                        Benutzer

                        82.2k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe