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. Visualisierung
  4. [gelöst] VIS - JSON-Wert anklicken und an DP übergeben

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

[gelöst] VIS - JSON-Wert anklicken und an DP übergeben

Geplant Angeheftet Gesperrt Verschoben Visualisierung
17 Beiträge 5 Kommentatoren 692 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.
  • DJMarc75D DJMarc75

    Tag,
    heutiges Projekt soll folgendes sein:

    Ich zeichne den Verlauf der Musiktitel (TuneIn) auf und schreibe diese in eine JSON Tabelle:

    Screenshot 2023-02-15 082802.png

    Nun würde ich gerne auf einen Titel klicken so dass dieser Wert automatisch in einen bestimmten DP geschrieben wird.

    Jetzt ist so die Frage ob ich da eine Möglichkeit habe schon beim Erstellen der JSON (mach ich per Blockly) etwas zu berücksichtigen oder/und ob dies auch rein per VIS zu lösen ist.

    Merci schon mal

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

    @djmarc75
    du könntest für die titelspalte direkt einen link tag reinschreiben, der bei klick den datenpunkt mit simple api beschreibt.
    beim erstellen der daten für die tabelle musst du die strings so zusammenbauen, das die dann passen

    <a href='#' onclick='jquery.get("http://ipaddress:8087/set/javascript.0.test?value='+encodeURIComponent('titel des aktuellen lied oder anderen Wert, den du in datenpunkt schreiben willst')+'");'>Titel des aktuellen Lieds zur Anzeige in Tabelle</a>
    

    Aufpassen bei den anführungsstrichen.
    Der Befehl encodeURIComponent wandelt einen Text so um, das er als url-Parameter auch übertragen werden kann, da direkte Leerzeichen da nicht vorkommen können.
    Beispiel aus
    "eins zwei"
    wird dann
    "eins%20zwei"
    andere Zeichen werden ähnlich kodiert.
    Aber das sollte dann auch richtig beim Datenpunkt ankommen

    Nachtrag, da ich mit Blockly nicht gut auskenne, hier der Block für encodeURIcomponent

    https://www.smarthome-tricks.de/software-iobroker/blockly-url-encode-mit-blockly/

    Das Beispiel im Link kannst du adaptieren um an den String zu kommen, den du dann in die Spalte schreibst. Das macht etwas ähnliches. Dein Ergebnis-Blockly dürfte dann etwas komplexer werden wie jetzt

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

    DJMarc75D 1 Antwort Letzte Antwort
    1
    • DJMarc75D DJMarc75

      @liv-in-sky bin jetzt nach folgendem Beitrag vorgegangen:

      https://forum.iobroker.net/post/932657

      in meinem Testdatenpunkt wird dann 0 bei Klick auf Zeile 1, 1 bei Klick auf Zeile 2 , usw ausgegeben...

      Brauche aber den Wert im Datenpunkt :)
      Was muss ich im Skript ändern?

      function waitForElement(parent, elementPath, wid, widgetName, callBack, counter = 0, debug = false) {
              if (counter < 30) {
                  setTimeout(function () {
                      if (parent.find(elementPath).length > 0) {
                          if (debug) console.log(`[${widgetName} ${wid}] it took ${counter}ms to wait for the element '${elementPath}'`);
                          callBack();
                      } else {
      
                          if (debug) console.log(`[${widgetName} ${wid}] wait for element '${elementPath}'`);
                          counter++
                          waitForElement(parent, elementPath, wid, widgetName, callBack, counter, debug);
                      }
                  }, 1000);
              } else {
                 if (debug) console.warn(`[${widgetName} ${wid}] stop waiting after ${counter} retries`);
                  callBack();
             }
         }
        waitForElement($('body'),'#w00565', 'dummy', 'dummy', function () {
        // Widget ist geladen, auf das Widget klicken, w02705 ist die ID von meinem basic - Screen Resolution Widget
       console.log("jetzt")
      
       $("[id$='col1']").click(function() {
           var matches = this.id; 
         /*  console.log(this.id)
             var newId=matches.replace("col0","col2");newId="#"+newId;
           var matches3=$(newId).text();
            var matches2 = $(this).text(); */
      
           /* alert(matches+matches2+matches3);*/
            vis.setValue('0_userdata.0.Testobjekte.MusiktitelTEST',(matches.split('-')[1]).replace(/...(.)/,"$1")); 
          /*  vis.setValue('0_userdata.0.CONTROL-OWN.AAATEST.whiskey-id',matches2.trim());*/
       });  
      }, 0, true);
      
      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      schrieb am zuletzt editiert von
      #8

      @djmarc75 Wenn Du ein Array mit Objekten hast und Du mit einem Klick die Zeile bekommst, dann kannst Du doch direkt auf das Arrayelement zugreifen?

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        @djmarc75
        du könntest für die titelspalte direkt einen link tag reinschreiben, der bei klick den datenpunkt mit simple api beschreibt.
        beim erstellen der daten für die tabelle musst du die strings so zusammenbauen, das die dann passen

        <a href='#' onclick='jquery.get("http://ipaddress:8087/set/javascript.0.test?value='+encodeURIComponent('titel des aktuellen lied oder anderen Wert, den du in datenpunkt schreiben willst')+'");'>Titel des aktuellen Lieds zur Anzeige in Tabelle</a>
        

        Aufpassen bei den anführungsstrichen.
        Der Befehl encodeURIComponent wandelt einen Text so um, das er als url-Parameter auch übertragen werden kann, da direkte Leerzeichen da nicht vorkommen können.
        Beispiel aus
        "eins zwei"
        wird dann
        "eins%20zwei"
        andere Zeichen werden ähnlich kodiert.
        Aber das sollte dann auch richtig beim Datenpunkt ankommen

        Nachtrag, da ich mit Blockly nicht gut auskenne, hier der Block für encodeURIcomponent

        https://www.smarthome-tricks.de/software-iobroker/blockly-url-encode-mit-blockly/

        Das Beispiel im Link kannst du adaptieren um an den String zu kommen, den du dann in die Spalte schreibst. Das macht etwas ähnliches. Dein Ergebnis-Blockly dürfte dann etwas komplexer werden wie jetzt

        DJMarc75D Offline
        DJMarc75D Offline
        DJMarc75
        schrieb am zuletzt editiert von
        #9

        @oliverio sagte in VIS - JSON-Wert anklicken und an DP übergeben:

        du könntest für die titelspalte direkt einen link tag reinschreiben, der bei klick den datenpunkt mit simple api beschreibt.

        Die Idee ist schonmal sehr gut !

        Habe mir ein Blockly geschrieben welches mal "Testweise" ein JSON erstellt.

        ABER da scheint noch was nicht ganz so rund zu sein (Thema Anführungsstrichen oder sowas):

        Screenshot 2023-02-15 180907.png

        [{"name":"<a href='#' onclick='jquery.get("http://192.168.178.2:8087/set/0_userdata.0.Testobjekte.MusiktitelTEST?value=EMELI%20SANDE%20-%20READ%20ALL%20ABOUT%20IT%20(PART%203)");'>EMELI SANDE - READ ALL ABOUT IT (PART 3)</a>"}]
        

        Ob Du da was sehen kannst was noch nicht stimmt?

        Merci

        Lehrling seit 1975 !!!
        Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
        https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

        OliverIOO 1 Antwort Letzte Antwort
        0
        • DJMarc75D DJMarc75

          @liv-in-sky bin jetzt nach folgendem Beitrag vorgegangen:

          https://forum.iobroker.net/post/932657

          in meinem Testdatenpunkt wird dann 0 bei Klick auf Zeile 1, 1 bei Klick auf Zeile 2 , usw ausgegeben...

          Brauche aber den Wert im Datenpunkt :)
          Was muss ich im Skript ändern?

          function waitForElement(parent, elementPath, wid, widgetName, callBack, counter = 0, debug = false) {
                  if (counter < 30) {
                      setTimeout(function () {
                          if (parent.find(elementPath).length > 0) {
                              if (debug) console.log(`[${widgetName} ${wid}] it took ${counter}ms to wait for the element '${elementPath}'`);
                              callBack();
                          } else {
          
                              if (debug) console.log(`[${widgetName} ${wid}] wait for element '${elementPath}'`);
                              counter++
                              waitForElement(parent, elementPath, wid, widgetName, callBack, counter, debug);
                          }
                      }, 1000);
                  } else {
                     if (debug) console.warn(`[${widgetName} ${wid}] stop waiting after ${counter} retries`);
                      callBack();
                 }
             }
            waitForElement($('body'),'#w00565', 'dummy', 'dummy', function () {
            // Widget ist geladen, auf das Widget klicken, w02705 ist die ID von meinem basic - Screen Resolution Widget
           console.log("jetzt")
          
           $("[id$='col1']").click(function() {
               var matches = this.id; 
             /*  console.log(this.id)
                 var newId=matches.replace("col0","col2");newId="#"+newId;
               var matches3=$(newId).text();
                var matches2 = $(this).text(); */
          
               /* alert(matches+matches2+matches3);*/
                vis.setValue('0_userdata.0.Testobjekte.MusiktitelTEST',(matches.split('-')[1]).replace(/...(.)/,"$1")); 
              /*  vis.setValue('0_userdata.0.CONTROL-OWN.AAATEST.whiskey-id',matches2.trim());*/
           });  
          }, 0, true);
          
          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          schrieb am zuletzt editiert von
          #10

          @djmarc75 sagte in VIS - JSON-Wert anklicken und an DP übergeben:

          matches.split('-')[1]).replace(/...(.)/,"$1")

          zeile 1 oder 2 oder 3 - also der index beginnend bei 1 !

          Number(matches.replace(/cell-row(.*?)\-col.*/,"$1"))+1
          

          der inhalt der zelle:

          $(this).text(); 
          

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          DJMarc75D 1 Antwort Letzte Antwort
          0
          • liv-in-skyL liv-in-sky

            @djmarc75 sagte in VIS - JSON-Wert anklicken und an DP übergeben:

            matches.split('-')[1]).replace(/...(.)/,"$1")

            zeile 1 oder 2 oder 3 - also der index beginnend bei 1 !

            Number(matches.replace(/cell-row(.*?)\-col.*/,"$1"))+1
            

            der inhalt der zelle:

            $(this).text(); 
            
            DJMarc75D Offline
            DJMarc75D Offline
            DJMarc75
            schrieb am zuletzt editiert von
            #11

            @liv-in-sky sagte in VIS - JSON-Wert anklicken und an DP übergeben:

            der inhalt der zelle:

            puh, wo muss ich das denn im Skript eintragen ?
            Bin da voll der Honk wenns um so Skripte geht :dizzy_face:

            Lehrling seit 1975 !!!
            Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
            https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

            liv-in-skyL 1 Antwort Letzte Antwort
            0
            • DJMarc75D DJMarc75

              @liv-in-sky sagte in VIS - JSON-Wert anklicken und an DP übergeben:

              der inhalt der zelle:

              puh, wo muss ich das denn im Skript eintragen ?
              Bin da voll der Honk wenns um so Skripte geht :dizzy_face:

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von
              #12

              @djmarc75

              zeile 31: natürlich mit deinem datenpunkt

              vis.setValue('0_userdata.0.Testobjekte.MusiktitelTEST',Number(matches.replace(/cell-row(.*?)\-col.*/,"$1"))+1 ); 
              

              und in zeile 19 muss die widget id deines widgets drinstehen (#w00565)

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              DJMarc75D 1 Antwort Letzte Antwort
              0
              • liv-in-skyL liv-in-sky

                @djmarc75

                zeile 31: natürlich mit deinem datenpunkt

                vis.setValue('0_userdata.0.Testobjekte.MusiktitelTEST',Number(matches.replace(/cell-row(.*?)\-col.*/,"$1"))+1 ); 
                

                und in zeile 19 muss die widget id deines widgets drinstehen (#w00565)

                DJMarc75D Offline
                DJMarc75D Offline
                DJMarc75
                schrieb am zuletzt editiert von
                #13

                @liv-in-sky sagte in VIS - JSON-Wert anklicken und an DP übergeben:

                zeile 31: natürlich mit deinem datenpunkt

                hatte ich schon gemacht aber wo muss ich

                $(this).text(); 
                

                im Skript einfügen um den Wert in meinen DP zu schreiben ?

                Lehrling seit 1975 !!!
                Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
                https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

                liv-in-skyL 1 Antwort Letzte Antwort
                0
                • DJMarc75D DJMarc75

                  @liv-in-sky sagte in VIS - JSON-Wert anklicken und an DP übergeben:

                  zeile 31: natürlich mit deinem datenpunkt

                  hatte ich schon gemacht aber wo muss ich

                  $(this).text(); 
                  

                  im Skript einfügen um den Wert in meinen DP zu schreiben ?

                  liv-in-skyL Offline
                  liv-in-skyL Offline
                  liv-in-sky
                  schrieb am zuletzt editiert von liv-in-sky
                  #14

                  @djmarc75 das wäre dann ein extra dp in dem der titel stehen soll - also einfache eine neue zeile

                  vis.setValue('0_userdata.0.Testobjekte.MusiktitelTEST2',$(this).text() ); 
                  

                  nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                  DJMarc75D 1 Antwort Letzte Antwort
                  1
                  • liv-in-skyL liv-in-sky

                    @djmarc75 das wäre dann ein extra dp in dem der titel stehen soll - also einfache eine neue zeile

                    vis.setValue('0_userdata.0.Testobjekte.MusiktitelTEST2',$(this).text() ); 
                    
                    DJMarc75D Offline
                    DJMarc75D Offline
                    DJMarc75
                    schrieb am zuletzt editiert von
                    #15

                    @liv-in-sky sagte in VIS - JSON-Wert anklicken und an DP übergeben:

                    also einfache eine neue zeile

                    Jepp, funktioniert ! Danke und da werd ich mich morgen mal damit intensiver beschäftigen !

                    Lehrling seit 1975 !!!
                    Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
                    https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

                    1 Antwort Letzte Antwort
                    1
                    • DJMarc75D DJMarc75

                      @oliverio sagte in VIS - JSON-Wert anklicken und an DP übergeben:

                      du könntest für die titelspalte direkt einen link tag reinschreiben, der bei klick den datenpunkt mit simple api beschreibt.

                      Die Idee ist schonmal sehr gut !

                      Habe mir ein Blockly geschrieben welches mal "Testweise" ein JSON erstellt.

                      ABER da scheint noch was nicht ganz so rund zu sein (Thema Anführungsstrichen oder sowas):

                      Screenshot 2023-02-15 180907.png

                      [{"name":"<a href='#' onclick='jquery.get("http://192.168.178.2:8087/set/0_userdata.0.Testobjekte.MusiktitelTEST?value=EMELI%20SANDE%20-%20READ%20ALL%20ABOUT%20IT%20(PART%203)");'>EMELI SANDE - READ ALL ABOUT IT (PART 3)</a>"}]
                      

                      Ob Du da was sehen kannst was noch nicht stimmt?

                      Merci

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

                      @djmarc75 sagte in VIS - JSON-Wert anklicken und an DP übergeben:

                      [{"name":"<a href='#' onclick='jquery.get("http://192.168.178.2:8087/set/0_userdata.0.Testobjekte.MusiktitelTEST?value=EMELI SANDE - READ ALL ABOUT IT (PART 3)");'>EMELI SANDE - READ ALL ABOUT IT (PART 3)</a>"}]

                      ja, das json-attribut ist ebenfalls in " eingeschlossen, daher müssen alle " innerhalb escaped werden, also ein \ davor hinzugefügt 2x

                      "<a href='#' onclick='jquery.get(\"http://192.168.178.2:8087/set/0_userdata.0.Testobjekte.MusiktitelTEST?value=EMELI%20SANDE%20-%20READ%20ALL%20ABOUT%20IT%20(PART%203)\");'>EMELI SANDE - READ ALL ABOUT IT (PART 3)</a>"
                      

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

                      DJMarc75D 1 Antwort Letzte Antwort
                      1
                      • OliverIOO OliverIO

                        @djmarc75 sagte in VIS - JSON-Wert anklicken und an DP übergeben:

                        [{"name":"<a href='#' onclick='jquery.get("http://192.168.178.2:8087/set/0_userdata.0.Testobjekte.MusiktitelTEST?value=EMELI SANDE - READ ALL ABOUT IT (PART 3)");'>EMELI SANDE - READ ALL ABOUT IT (PART 3)</a>"}]

                        ja, das json-attribut ist ebenfalls in " eingeschlossen, daher müssen alle " innerhalb escaped werden, also ein \ davor hinzugefügt 2x

                        "<a href='#' onclick='jquery.get(\"http://192.168.178.2:8087/set/0_userdata.0.Testobjekte.MusiktitelTEST?value=EMELI%20SANDE%20-%20READ%20ALL%20ABOUT%20IT%20(PART%203)\");'>EMELI SANDE - READ ALL ABOUT IT (PART 3)</a>"
                        
                        DJMarc75D Offline
                        DJMarc75D Offline
                        DJMarc75
                        schrieb am zuletzt editiert von
                        #17

                        @oliverio sagte in VIS - JSON-Wert anklicken und an DP übergeben:

                        also ein \ davor hinzugefügt 2x

                        wahnsinn ... es funktioniert blendend !
                        Danke dafür :+1:

                        Lehrling seit 1975 !!!
                        Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
                        https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

                        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

                        423

                        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