Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script in vis HTML Widget einbinden

    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

    Script in vis HTML Widget einbinden

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

      Hallo,
      ich habe es geschafft die Spannungen der drei Phasen meines Wechselrichters in einer View als Tabelle (HTML) darzustellen. Code siehe unten. Dann wollte ich die auszugebenden Daten runden. Das geht ja wohl nur mit Scripten?
      Also hab ich eine "runden" funktion geschrieben und wollte diese im HTML-Code für den ersten Eintrag benutzen.
      Da muss man ja die Scripte in ein separates Tab eintragen, wie das HTML
      Leider ist das Ergebnis "Null".
      Ich nehme an, dass das Zusammenspiel zwischen Javascript und HTML nicht funktioniert, oder liegt es daran, dass die Übergabe an die funktion nicht korrekt ist, (dass ich den Datenpunkt nicht einfach so der Funktion übergeben kann)?

      HTML:

      <table>
        <tr>
          <td>Phase 1:</td>      
          <td align="right"><b>{runden(modbus.0.inputRegisters.31253_Netzspannung_Phase_L1)} V</b></td>
        </tr>      
        <tr>
          <td>Phase 2:</td>      
          <td align="right"><b>{modbus.0.inputRegisters.31255_Netzspannung_Phase_L2} V</b></td>
        </tr>   
        <tr>
          <td>Phase 3:</td>      
          <td align="right"><b>{modbus.0.inputRegisters.31257_Netzspannung_Phase_L3} V</b></td>
        </tr>     
      </table>
      

      Javascript: (getestet)

      function runden(x) {
        return (Math.round(x)).toString();
      }
      
      Glasfaser OliverIO D 3 Replies Last reply Reply Quote 0
      • ofri2607
        ofri2607 last edited by

        @delphinis
        Servus,
        versuche es so, als Binding, ohne eine eigene Funktion:

        {modbus.0.inputRegisters.31255_Netzspannung_Phase_L2;round(2)}
        

        Sollte auf 2 Nachkommastellen runden.

        1 Reply Last reply Reply Quote 1
        • Glasfaser
          Glasfaser @Delphinis last edited by

          @delphinis sagte in Script in vis HTML Widget einbinden:

          {modbus.0.inputRegisters.31255_Netzspannung_Phase_L2}

          wäre so

          {a:modbus.0.inputRegisters.31255_Netzspannung_Phase_L2;parseFloat(a).toFixed(2)}

          1 Reply Last reply Reply Quote 1
          • OliverIO
            OliverIO @Delphinis last edited by OliverIO

            @delphinis

            leider muss man hier ein wenig tricksen.
            Bindings haben zwei verschiedene Modi.
            Im ersten Modus, so wie du es notiert hast, gehen nur bestimmte vordefinierte Befehle. Siehe Doku von vis
            im zweiten Modi, werden alle Befehle als echte Javascript Befehle umgesetzt.
            Der wird allerdings nur aktiviert, wenn du als erstes einen Datenpunkt einer variable zu weist. Welche ist vollkommen egal

            1 Reply Last reply Reply Quote 1
            • D
              Delphinis @Delphinis last edited by Delphinis

              Alle Versionen funktionieren. Die Frage war vor allem zum Verständnis, wie man Javascript einbindet. Habe es also jetzt so realisiert:

              {a:modbus.0.inputRegisters.31253_Netzspannung_Phase_L1;runden(a)
              

              So kann ich meine eigene Funktion nutzen (auch wenn es offenbar auch ohne gienge).
              Ich fasse zusammen:

              1. ich muss den Datenpunkt erst einer Variable zuordnen:
                a:<Datenpunkt>
              2. Die Variable der Funktion übergeben

              Danke allen.

              1 Reply Last reply Reply Quote 0
              • D
                Delphinis last edited by Delphinis

                @glasfaser said in Script in vis HTML Widget einbinden:

                a:modbus.0.inputRegisters.31255_Netzspannung_Phase

                Kurze Frage: Es ist wohl so, dass wenn ich einen Wert hier der Variablen a zuordne, dass dieser gleich in einen String gewandelt wird. Meist will man diese Werte weiterverrechnen und muss sie dann eben mit parseX() wieder in eine Zahl wandeln. Parsen ist aber eine teure funktion. Kann man die Werte nicht gleich als Zahl weiterverarbeiten, oder kommen die schon mit dem Parameter als Datenpunkt (modbus.0.inputRegisters.31253_Netzspannung_Phase_L1) rein?

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

                Support us

                ioBroker
                Community Adapters
                Donate

                982
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                javascript
                4
                6
                414
                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