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. Skripten / Logik
  4. JavaScript
  5. Script in vis HTML Widget einbinden

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Script in vis HTML Widget einbinden

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
6 Beiträge 4 Kommentatoren 566 Aufrufe 3 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.
  • D Offline
    D Offline
    Delphinis
    schrieb am zuletzt editiert von Delphinis
    #1

    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();
    }
    
    GlasfaserG OliverIOO D 3 Antworten Letzte Antwort
    0
    • ofri2607O Online
      ofri2607O Online
      ofri2607
      schrieb am zuletzt editiert von
      #2

      @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 Antwort Letzte Antwort
      1
      • D 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();
        }
        
        GlasfaserG Offline
        GlasfaserG Offline
        Glasfaser
        schrieb am zuletzt editiert von
        #3

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

        Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

        1 Antwort Letzte Antwort
        1
        • D 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();
          }
          
          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von OliverIO
          #4

          @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

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          1 Antwort Letzte Antwort
          1
          • D 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();
            }
            
            D Offline
            D Offline
            Delphinis
            schrieb am zuletzt editiert von Delphinis
            #5

            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 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              Delphinis
              schrieb am zuletzt editiert von Delphinis
              #6

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

              715

              Online

              32.5k

              Benutzer

              81.6k

              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