Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Binding in Vis-2

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Binding in Vis-2

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

      Ich habe folgendes:

      Bildschirmfoto 2024-03-24 um 18.51.18.png

      wie kann ich nun dieses Binding so schreiben, dass es den Wert von Objekt ID nimmt ohne dass man den Datenpunkt noch einmal angeben muss?

      {a:alias.0.PV.Batterie_kW; a <= 0 ? 'Entladung' : 'Ladung'}
      
      arteck Codierknecht Trqb3 3 Replies Last reply Reply Quote 0
      • arteck
        arteck Developer Most Active @peterk34 last edited by arteck

        @peterk34 versteh ich nicht was du willst ... kannst du deine Frage umformulieren oder das erwartete Endergebniss zeigen ?

        peterk34 1 Reply Last reply Reply Quote 0
        • SBorg
          SBorg Forum Testing Most Active last edited by

          Ich vermute mal es soll eine Anzeige werden die dann bspw. 13 kW Ladung anzeigt?

          In "a" hast du den Wert gespeichert, somit kannst du innerhalb des Bindings auch darauf zugreifen:

          {a:alias.0.PV.Batterie_kW; a <= 0 ? a+' kW Entladung' : a+' kW Ladung'}
          

          Die "kW" sind natürlich Geschmackssache, beim "anhängen" sieht das IMO aber komisch aus: 13 Ladung kW

          1 Reply Last reply Reply Quote 0
          • peterk34
            peterk34 @arteck last edited by

            @arteck @SBorg

            sorry, war wohl etwas zu vereinfacht ...

            das dargestellte Binding funktiobniert so prima. Ich mache dieses widget aber so ca 20x, ändern tut sich jedes mal die Objekt ID. Somit muss ich dann bei jedem widget die Objekt ID des widgets einstellen und dann noch im HTML das a:alias.0.PV.Batterie_kW durch das jeweilige, ohnehin im Objekt ID des widget stehende ersetzen.

            Mein Frage wäre nun, wie und ob ich das Binding a:alias.0.PV.Batterie_kW so verändern kann, dass es den Objekt ID des widgets nimmt. Ich hätte rausgelesen, dass das widgetOid sei - also müsste in meinem Beispiel

            {a:alias.0.PV.Batterie_kW; a <= 0 ? 'Entladung' : 'Ladung'}
            
            {a:widgetOid; a <= 0 ? 'Entladung' : 'Ladung'}
            

            das gleiche Ergebnis bringen. Tuts aber nicht.

            Ich hoffe jetzt ists verstehbar.

            Dankeschöööön

            C 1 Reply Last reply Reply Quote 0
            • C
              Chrunchy @peterk34 last edited by

              @peterk34 Ist jetzt zwar nicht unbedingt das, wonach du fragst, aber warum setzt du nicht einen zusätzlichen Alias, der je nach Zustand von alias.0.PV.Batterie_kW mit Entladung oder Ladung gesetzt wird.

              peterk34 2 Replies Last reply Reply Quote 0
              • peterk34
                peterk34 @Chrunchy last edited by peterk34

                @chrunchy
                genau beantwortet die Frage nicht, ist aber definitiv ein guter anderer Weg. Mein HTML ist allerdings viel komplexer. Es stellt auch noch hach Wert Hintergrundfarbe usw. ein. Das geht mit dem alias nicht. Ich hatte das schon so ähnlich und einfach 2 widgets übereinandergelegt und dann je nach Zustand das eine oder andere ausgeblendet ... brauch ich doppelt soviele Ressourcen und auch zum Warten ein Wahnsinn. So schauts dann schon eher aus:

                <div style="width: 100px; height: 40px; background-color: {a:alias.0.PV.Batterie_kW; a <= 0 ? 'black' : 'green'}; display: flex; justify-content: center; align-items: center;">       
                    <span>         
                        {a:alias.0.PV.Batterie_kW; a <= 0 ? 'Entladung' : 'Ladung'}:<br>         
                        {a:alias.0.PV.Batterie_kW; b:alias.0.PV.Batterie_W; (a < 1 && a > -1) ? b + ' W' : a + ' kW'}   
                    </span> 
                </div>
                
                1 Reply Last reply Reply Quote 0
                • Codierknecht
                  Codierknecht Developer Most Active @peterk34 last edited by

                  @peterk34

                  wie kann ich nun dieses Binding so schreiben, dass es den Wert von Objekt ID nimmt ohne dass man den Datenpunkt noch einmal angeben muss?

                  Gar nicht. Ist nicht vorgesehen.

                  peterk34 1 Reply Last reply Reply Quote 0
                  • peterk34
                    peterk34 @Codierknecht last edited by

                    @codierknecht

                    ok, danke

                    1 Reply Last reply Reply Quote 0
                    • peterk34
                      peterk34 @Chrunchy last edited by

                      @chrunchy
                      ich hab deine Idee mal weiterverfolgt und einfach im alias den ganzen html erzeugt:

                          "alias": {
                            "id": "e3dc-rscp.0.EMS.POWER_BAT",
                            "read": "'<div style=\"width: 100px; height: 40px; background-color: ' + (val <= 0 ? \"black\" : \"green\") + '; display: flex; justify-content: center; align-items: center;\"><span>' + (val <= 0 ? 'Entladung: <br>' : 'Ladung: <br>') + ((val < 1000 && val > -1000) ? Math.round(val) + 'W' : (Math.round(val / 100) / 10) + 'kW') + '</span> </div>'"
                          }
                      

                      und verwende dann im html widget einfach nur {alias.0.VIS.Ladung_Entladung1} ... und schon gehts.

                      Danke für den Tip!

                      Wahrscheinlich werde ich es aber nicht mit einem alias sondern einem JS lösen. Damit wird dann einiges mehr konfigurierbar.

                      1 Reply Last reply Reply Quote 0
                      • Trqb3
                        Trqb3 @peterk34 last edited by

                        @peterk34 ist zwar etwas late, aber hier, das wonach du fragtest:

                        {a: {a:;widget.data.oid}; a <= 0 ? 'Entladung' : 'Ladung'}:

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

                        Support us

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

                        944
                        Online

                        32.0k
                        Users

                        80.6k
                        Topics

                        1.3m
                        Posts

                        6
                        10
                        765
                        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