Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Visualisierung
  4. [gelöst]iFrame Widget mit HTML/js-Datenaustausch zu iob

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    723

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

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

[gelöst]iFrame Widget mit HTML/js-Datenaustausch zu iob

Geplant Angeheftet Gesperrt Verschoben Visualisierung
12 Beiträge 2 Kommentatoren 425 Aufrufe 2 Beobachtet
  • Ä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.
  • OliverIOO OliverIO

    @willyiobrok

    ist die html seite separat?

    ich würde mir in vis eine view bauen
    in der dann deine daten, die regelmäßig aus dem iobroker aktualisiert werden sollen, enthalten sind.

    diese view würde ich dann per iframe in deiner html seite "einblenden".
    dadurch wird der ganze mechanismus bereitgestellt, der vollautomatisch dann die daten aktualisiert ohne das du die html seite neu laden musst.

    die daten direkt aus der html seite abzurufen ist leider etwas aufwändiger, da du mehr oder weniger den mechanismus aus vis nachbauen musst (websocket erzeugen, mit iobroker verbinden, datenpunkte abonnieren, dann auf gemeldete ereignisse reagieren, html in deiner webseite aktualisieren mit den gemeldeten daten)

    die andere möglichkeit wäre, die daten regelmäßig zu pollen, also automatisch einen reload der seite zu initieren, was aber dann entsprechende last auf den client und den server/iobroker erzeugt.

    W Offline
    W Offline
    WillyIobrok
    schrieb am zuletzt editiert von WillyIobrok
    #3

    @oliverio
    hmmm, HTML-Seite separat? kann ich jetzt nicht beurteilen, da kenne ich mich viel zu wenig aus.
    Ich vermute ja. Ich kann die webseite auf meinem Windows-PC unter Firefox anschauen (und debuggen):

    Screenshot 2025-07-29 181723.jpg

    Die View, in der diese HTML-Seite per iFrame Widget eingebettet ist, sieht dann so aus:

    Screenshot 2025-07-29 182051.jpg

    Jetzt möchte ich abhängig von dem inhalt des iobroker-Objekts "SP" (boolean) in der HTML-Karte etwas modifizieren: die Farbe der Linie zwischen dem blauen und dem roten Marker.

    Das habe ich mit dem o.g. Code auch geschafft. Aber wenn ich auf "SP" drücke und das Objekt von true <->false umschalte passiert (verständlicherweise) nichts in dem getrennt programmierten HTML/js System.

    @OliverIO :

    • websocket erzeugen, etc. ... das kriege ich mit meinem rudimentären Grundwissen nicht hin
    • regelmässig pollen fällt m.M. wegen der zusätzlichen Rechenlast aus (nur Raspi 4!)

    Deshalb kam ich auf die Idee, daß es vielleicht einen Weg über die Systemgrenzen hinweg gibt, über den ich vom ioBroker in's HTML/js System eingreifen kann.

    in ioBroker skripten habe ich ja sowas zur Verfügung (und schon erfolgreich benutzt) z.B.

    // Trigger bei Wertänderung des Verbrauchs
    on("solarlog.0.status.conspac", function(dp) {
       update_solar_p_netz();
    });
    
    

    meine Idee war jetzt "solarlog.0.status.conspac" durch "http://192.168.27.147:8087/mqtt.0.rot_LP" o.Ä. zu ersetzen und das script im HTML/js System laufen zu lassen
    oder eben ein ioBroker script zu schreiben das die Info in's HTML/js System pushed

    Ihr merkt an meiner Ausdrucksweise, daß ich an dieser Stelle so gut wie keine Ahnung habe ... wenn das nicht geht dann dann sagt's mir bitte und ich lasse es ... ich kann gut mit dem bisher erreichten leben ;-)

    Bin gespannt auf eure Kommentare, vielen Dank im Voraus

    WillyIoBrok

    OliverIOO 1 Antwort Letzte Antwort
    0
    • W WillyIobrok

      @oliverio
      hmmm, HTML-Seite separat? kann ich jetzt nicht beurteilen, da kenne ich mich viel zu wenig aus.
      Ich vermute ja. Ich kann die webseite auf meinem Windows-PC unter Firefox anschauen (und debuggen):

      Screenshot 2025-07-29 181723.jpg

      Die View, in der diese HTML-Seite per iFrame Widget eingebettet ist, sieht dann so aus:

      Screenshot 2025-07-29 182051.jpg

      Jetzt möchte ich abhängig von dem inhalt des iobroker-Objekts "SP" (boolean) in der HTML-Karte etwas modifizieren: die Farbe der Linie zwischen dem blauen und dem roten Marker.

      Das habe ich mit dem o.g. Code auch geschafft. Aber wenn ich auf "SP" drücke und das Objekt von true <->false umschalte passiert (verständlicherweise) nichts in dem getrennt programmierten HTML/js System.

      @OliverIO :

      • websocket erzeugen, etc. ... das kriege ich mit meinem rudimentären Grundwissen nicht hin
      • regelmässig pollen fällt m.M. wegen der zusätzlichen Rechenlast aus (nur Raspi 4!)

      Deshalb kam ich auf die Idee, daß es vielleicht einen Weg über die Systemgrenzen hinweg gibt, über den ich vom ioBroker in's HTML/js System eingreifen kann.

      in ioBroker skripten habe ich ja sowas zur Verfügung (und schon erfolgreich benutzt) z.B.

      // Trigger bei Wertänderung des Verbrauchs
      on("solarlog.0.status.conspac", function(dp) {
         update_solar_p_netz();
      });
      
      

      meine Idee war jetzt "solarlog.0.status.conspac" durch "http://192.168.27.147:8087/mqtt.0.rot_LP" o.Ä. zu ersetzen und das script im HTML/js System laufen zu lassen
      oder eben ein ioBroker script zu schreiben das die Info in's HTML/js System pushed

      Ihr merkt an meiner Ausdrucksweise, daß ich an dieser Stelle so gut wie keine Ahnung habe ... wenn das nicht geht dann dann sagt's mir bitte und ich lasse es ... ich kann gut mit dem bisher erreichten leben ;-)

      Bin gespannt auf eure Kommentare, vielen Dank im Voraus

      WillyIoBrok

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von OliverIO
      #4

      so habe ich dich verstanden

      ich habe eine funktionierende HTML-Seite aus den ioBroker Benutzerdaten in einem iFrame Widget visualisiert.

      @willyiobrok sagte in iFrame Widget mit HTML/js - Datenaustausch zu iob objekten:
      @oliverio
      hmmm, HTML-Seite separat? kann ich jetzt nicht beurteilen, da kenne ich mich viel zu wenig aus.

      und hast du hier ja auch erklärt

      Das habe ich mit dem o.g. Code auch geschafft. Aber wenn ich auf "SP" drücke und das Objekt von true <->false umschalte passiert (verständlicherweise) nichts in dem getrennt programmierten HTML/js System.

      dann musst du dein aktuelles setting genauer erklären. dann habe ich es noch nicht verstanden.
      wenn jemand von einer html-seite spricht, dann verstehe ich da etwas ausserhalb von iobroker
      wenn du etwas in iobroker bspw mit vis visualisiert, dann hätte ich das schlüsselwort vis oder view erwartet.

      also welche seite, hast du wo eingebunden. welche visualisierung verwendest du?

      Gerne kannst du das was du hast exportierte view oder html hier posten, dann kann man sich das besser vorstellen

      Deshalb kam ich auf die Idee, daß es vielleicht einen Weg über die Systemgrenzen hinweg gibt, über den ich vom ioBroker in's HTML/js System eingreifen kann.

      ja das gibt es
      aber halt so wie oben geschrieben

      der on befehl im javascript adapter macht das genau so, websocket zum iobroker und dann informiert der aktiv, wenn der javascript adapter was machen soll.

      das polling könnte man relativ klein halten indem immer alle paar sekunden die api für den datenpunkt abgefragt und verglichen wird ob sich da etwas geändert hat.

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

      W 1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        so habe ich dich verstanden

        ich habe eine funktionierende HTML-Seite aus den ioBroker Benutzerdaten in einem iFrame Widget visualisiert.

        @willyiobrok sagte in iFrame Widget mit HTML/js - Datenaustausch zu iob objekten:
        @oliverio
        hmmm, HTML-Seite separat? kann ich jetzt nicht beurteilen, da kenne ich mich viel zu wenig aus.

        und hast du hier ja auch erklärt

        Das habe ich mit dem o.g. Code auch geschafft. Aber wenn ich auf "SP" drücke und das Objekt von true <->false umschalte passiert (verständlicherweise) nichts in dem getrennt programmierten HTML/js System.

        dann musst du dein aktuelles setting genauer erklären. dann habe ich es noch nicht verstanden.
        wenn jemand von einer html-seite spricht, dann verstehe ich da etwas ausserhalb von iobroker
        wenn du etwas in iobroker bspw mit vis visualisiert, dann hätte ich das schlüsselwort vis oder view erwartet.

        also welche seite, hast du wo eingebunden. welche visualisierung verwendest du?

        Gerne kannst du das was du hast exportierte view oder html hier posten, dann kann man sich das besser vorstellen

        Deshalb kam ich auf die Idee, daß es vielleicht einen Weg über die Systemgrenzen hinweg gibt, über den ich vom ioBroker in's HTML/js System eingreifen kann.

        ja das gibt es
        aber halt so wie oben geschrieben

        der on befehl im javascript adapter macht das genau so, websocket zum iobroker und dann informiert der aktiv, wenn der javascript adapter was machen soll.

        das polling könnte man relativ klein halten indem immer alle paar sekunden die api für den datenpunkt abgefragt und verglichen wird ob sich da etwas geändert hat.

        W Offline
        W Offline
        WillyIobrok
        schrieb am zuletzt editiert von
        #5

        @oliverio

        ok, ich versuch's nochmal mit meinen laienhaften Worten (bin C/C++ Microcontroller-Programmierer, habe nur sehr wenig mit html und js gemacht) ;-)

        ja, ich habe eine getrennte und unabhängige HTML - Webseite, bestehend aus den beiden Files
        "Rotor.html" und "distDir2.js"
        Diese Files habe ich mit Hilfe der ioBroker "Dateien"-Funktion auf den ioBroker Raspberry 4 in den Benutzerdaten-Bereich geladen

        Zum Anzeigen des Ganzen habe ich über den vis editor ein View gebaut, in dem das Widget iFrame benutzt wird.
        Darüberhinaus werden hier noch einige andere ioBroker Objekte mit Hilfe verschiedener Widgets angezeigt.

        Wenn ich jetzt in die Weltkarte tippe (mit Maus oder Touchscreen) dann wird ein zweiter Marker gesetzt und zwischen den beiden Markern eine Linie gezogen.
        Darüberhinaus wird eine Richtung von Marker1 zu Marker2 errechnet, die an das iobrokersystem zur Weiterverarbeitung übergeben wird (HTML/js System -> ioBroker System):

        // Rückmeldung der Ergebnisse an ioBroker ------------------------------------------	
        		function reportResult(distance, direction) {
        
        			if (distance!=0) {
        
        
        				fetch(`http://192.168.27.147:8087/set/0_userdata.0.distance?value = ${encodeURIComponent(distance)}`, {
        					method: "GET"
        				});
        
        
        				fetch(`http://192.168.27.147:8087/set/0_userdata.0.direction?value = ${encodeURIComponent(direction)}`, {
        					method: "GET"
        				})
        				;	// muß gelöscht werden, wenn die response Zeilen aktiviert werden ...
        				/*
        				.then(response => response.json()) // Antwort als JSON parsen
        				.then(data => console.log(data)) // Daten verarbeiten
        				.catch(error => console.error('Fehler:', error))
        				;
        				*/
        			}
        
        

        Die Weiterverarbeitung in ioBroker funktioniert in diesem Falle (gefühlt) sofort, alles gut.

        Was ich jetzt zusätzlich wollte ist halt die Gegenrichtung (ioBroker System -> HTML/js System), die ich jetzt irgendwie recht kompliziert wegen Timingproblemen (siehe 1.Post) hingekriegt habe.

        Das was noch fehlt werde ich wohl oder übel per polling einmal pro ? sekunden realisieren müssen, das sehe ich jetzt auch so - danke für die "Meinungsbildung" ;-)

        Hoffe, das war jetzt verständlicher...

        OliverIOO 1 Antwort Letzte Antwort
        0
        • W WillyIobrok

          @oliverio

          ok, ich versuch's nochmal mit meinen laienhaften Worten (bin C/C++ Microcontroller-Programmierer, habe nur sehr wenig mit html und js gemacht) ;-)

          ja, ich habe eine getrennte und unabhängige HTML - Webseite, bestehend aus den beiden Files
          "Rotor.html" und "distDir2.js"
          Diese Files habe ich mit Hilfe der ioBroker "Dateien"-Funktion auf den ioBroker Raspberry 4 in den Benutzerdaten-Bereich geladen

          Zum Anzeigen des Ganzen habe ich über den vis editor ein View gebaut, in dem das Widget iFrame benutzt wird.
          Darüberhinaus werden hier noch einige andere ioBroker Objekte mit Hilfe verschiedener Widgets angezeigt.

          Wenn ich jetzt in die Weltkarte tippe (mit Maus oder Touchscreen) dann wird ein zweiter Marker gesetzt und zwischen den beiden Markern eine Linie gezogen.
          Darüberhinaus wird eine Richtung von Marker1 zu Marker2 errechnet, die an das iobrokersystem zur Weiterverarbeitung übergeben wird (HTML/js System -> ioBroker System):

          // Rückmeldung der Ergebnisse an ioBroker ------------------------------------------	
          		function reportResult(distance, direction) {
          
          			if (distance!=0) {
          
          
          				fetch(`http://192.168.27.147:8087/set/0_userdata.0.distance?value = ${encodeURIComponent(distance)}`, {
          					method: "GET"
          				});
          
          
          				fetch(`http://192.168.27.147:8087/set/0_userdata.0.direction?value = ${encodeURIComponent(direction)}`, {
          					method: "GET"
          				})
          				;	// muß gelöscht werden, wenn die response Zeilen aktiviert werden ...
          				/*
          				.then(response => response.json()) // Antwort als JSON parsen
          				.then(data => console.log(data)) // Daten verarbeiten
          				.catch(error => console.error('Fehler:', error))
          				;
          				*/
          			}
          
          

          Die Weiterverarbeitung in ioBroker funktioniert in diesem Falle (gefühlt) sofort, alles gut.

          Was ich jetzt zusätzlich wollte ist halt die Gegenrichtung (ioBroker System -> HTML/js System), die ich jetzt irgendwie recht kompliziert wegen Timingproblemen (siehe 1.Post) hingekriegt habe.

          Das was noch fehlt werde ich wohl oder übel per polling einmal pro ? sekunden realisieren müssen, das sehe ich jetzt auch so - danke für die "Meinungsbildung" ;-)

          Hoffe, das war jetzt verständlicher...

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von
          #6

          @willyiobrok

          ja, danke, viel verständlicher.

          probier mal einmal die sekunde und schau auf die systemlast.
          ich denke das wird schon gehen.

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

          W 1 Antwort Letzte Antwort
          0
          • OliverIOO OliverIO

            @willyiobrok

            ja, danke, viel verständlicher.

            probier mal einmal die sekunde und schau auf die systemlast.
            ich denke das wird schon gehen.

            W Offline
            W Offline
            WillyIobrok
            schrieb am zuletzt editiert von
            #7

            @oliverio
            Das mit dem Pollen hat prima geklappt!
            Danke für die Hilfe! :-)

            1 Antwort Letzte Antwort
            0
            • W Offline
              W Offline
              WillyIobrok
              schrieb am zuletzt editiert von WillyIobrok
              #8

              Hallo zusammen,

              meine SW hat bis heute gut funktioniert.

              Aber jetzt bekomme ich folgende Fehlermeldung:

              Object { error: 'error: no value found for "0_userdata.0.direction". Use /set/id?value=1 or /set/id?value=1&wait=1000' }

              Ich vermute, daß der HTML-Call nicht mehr funktioniert:

              	fetch(`http://192.168.27.147:8087/set/0_userdata.0.direction?value = ${encodeURIComponent(direction)}`, {
              		method: "GET"
              	})
              	.then(response => response.json()) // Antwort als JSON parsen
              	.then(data => console.log(data)) // Daten verarbeiten
              	.catch(error => console.error('Fehler:', error));
              

              Ich habe gestern mehrere Adapter (welche?) auf den neuesten Stand gebracht, vielleicht ist da irgendetwas in der Verbindung zwischen ioBroker und meinem HTML-File kaputtgegangen?
              kann das mit dem Update des web-adapters zu tun haben?

              bin im Moment ratlos ...

              1 Antwort Letzte Antwort
              0
              • W Offline
                W Offline
                WillyIobrok
                schrieb am zuletzt editiert von WillyIobrok
                #9

                Noch eine Zusatzinfo: Habe das Ganze wieder zum Laufen gebracht, indem ich ein ioBroker-Backup von vorgestern eingespielt habe.
                Empirisch habe ich herausgefunden, daß es wohl an dem Simple-Api Adapter liegt:

                Screenshot 2026-03-29 173545.jpg

                Ich konnte leider mit der Warnung nichts anfangen ...

                Screenshot 2026-03-29 155551.jpg

                Weiss jemand, was ich machen muß, nachdem ich auf eine Version >3 upgedated habe?

                Wie kriege ich meinen "own local port" wieder?

                OliverIOO 1 Antwort Letzte Antwort
                0
                • W WillyIobrok

                  Noch eine Zusatzinfo: Habe das Ganze wieder zum Laufen gebracht, indem ich ein ioBroker-Backup von vorgestern eingespielt habe.
                  Empirisch habe ich herausgefunden, daß es wohl an dem Simple-Api Adapter liegt:

                  Screenshot 2026-03-29 173545.jpg

                  Ich konnte leider mit der Warnung nichts anfangen ...

                  Screenshot 2026-03-29 155551.jpg

                  Weiss jemand, was ich machen muß, nachdem ich auf eine Version >3 upgedated habe?

                  Wie kriege ich meinen "own local port" wieder?

                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  schrieb am zuletzt editiert von
                  #10

                  @WillyIobrok

                  kann die fehlermeldung leider auch nicht interpretieren.
                  Schau mal hier noch.
                  zwischen 2.8.0 und 3.0.7 sind noch ein paar mehr Änderungen
                  https://github.com/ioBroker/ioBroker.simple-api?tab=readme-ov-file#changelog

                  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
                  0
                  • W Offline
                    W Offline
                    WillyIobrok
                    schrieb am zuletzt editiert von
                    #11

                    ok, danke für den Link.
                    sofern "web extension" dasselbe bedeutet wie "Web-Adapter-Erweiterung" dann habe ich die web extension nicht aktiviert, das kann also nicht die Ursache sein.

                    Screenshot 2026-03-29 203346.jpg

                    Ich habe die Versionen durchprobiert - beim Übergang von 2.8.0 auf 3.0.0 passiert's.
                    mit 2.8.0 geht's noch, mit >3.0.0 nicht mehr.

                    Screenshot 2026-03-29 210542.jpg

                    ich glaube, da muß ich anders rangehen ... aber wie ?

                    1 Antwort Letzte Antwort
                    0
                    • W Offline
                      W Offline
                      WillyIobrok
                      schrieb am zuletzt editiert von
                      #12

                      konnte es in einem anderen Thread lösen:

                      Es waren beim Fetch-Aufruf 2 spaces zuviel, hier ist der korrekte Aufruf, der auch mit den neueren simple-Api-Versionen funktioniert:

                      	// sende die Himmelsrichtung an den ioBroker/mqtt-Server, um den Rotor entsprechend anzusteuern
                      	fetch(`http://192.168.xx.xx:8087/set/0_userdata.0.direction?value=${encodeURIComponent(direction)}`, {
                      		method: "GET"
                      	})
                      	.then(response => response.json()) // Antwort als JSON parsen
                      	.then(data => console.log(data)) // Daten verarbeiten
                      	.catch(error => console.error('Fehler:', error));
                      

                      Vielen Dank für die Hilfe!

                      Gruß

                      WillyIoBrok

                      1 Antwort Letzte Antwort
                      0

                      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                      Registrieren Anmelden
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      571

                      Online

                      32.7k

                      Benutzer

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