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. socket io - state lesen und setzen

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    18
    1
    639

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

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

socket io - state lesen und setzen

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
36 Beiträge 5 Kommentatoren 5.4k Aufrufe 12 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.
  • ? Ein ehemaliger Benutzer

    @GiuseppeS said in socket io - state lesen und setzen:

    Hier wurde die grundsätzliche Vorgehensweise diskutiert. Den Text für den Button kann man ja individuell ergänzen.

    Das ist schon klar, mir ging es darum, ob dies vom Konzept schon gehen sollte oder ich dafür sorgen muss.

    Bei der Zeile mit setState einfach darunter noch einmal setState Funktion aufrufen. Dort dann den gewünschten Text in eine objID schreiben. True / False Anzeige klappt wie das togglen an sich. Aber richtige freie Texte, da wirst du wohl noch eine Bedingung einfügen müssen.

    Gut, dann steuere ich die Buttonbeschriftung passend dynamisch

    Wenn ich je Button einen anderen DP antriggern will und nicht nur den einen DP setzen will, muss ich dann das Skript duplizieren?

    Danke

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

    @HeinrichB ich denke nicht - man sollte den datenpunkt als variable in das script übergeben können und nicht erst im scipt definieren - wie erwähnt wir waren erst beim grundsätzlichen - jetzt kommt die umsetzung

    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

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

      @HeinrichB ich denke nicht - man sollte den datenpunkt als variable in das script übergeben können und nicht erst im scipt definieren - wie erwähnt wir waren erst beim grundsätzlichen - jetzt kommt die umsetzung

      ? Offline
      ? Offline
      Ein ehemaliger Benutzer
      schrieb am zuletzt editiert von
      #26

      @liv-in-sky Alles klar. Ich bin schon "ruhig" und lese/lerne. Danke

      liv-in-skyL 1 Antwort Letzte Antwort
      0
      • ? Ein ehemaliger Benutzer

        @liv-in-sky Alles klar. Ich bin schon "ruhig" und lese/lerne. Danke

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

        @HeinrichB momentan wird ein "this,value" an das script übergeben

        <button value="true" onClick="setOnClickCustom(this.value)">BtnDevice</button>
        

        in der function dann (val)

        function setOnClickCustom(val) {
        

        so kann auch der datenpunkt übergeben werden, der ja in der tabelle auch verwendet wird

        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

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

          @HeinrichB momentan wird ein "this,value" an das script übergeben

          <button value="true" onClick="setOnClickCustom(this.value)">BtnDevice</button>
          

          in der function dann (val)

          function setOnClickCustom(val) {
          

          so kann auch der datenpunkt übergeben werden, der ja in der tabelle auch verwendet wird

          ? Offline
          ? Offline
          Ein ehemaliger Benutzer
          schrieb am zuletzt editiert von
          #28

          @liv-in-sky

          Hallo

          also this.value ist ja der Wert value (oben value=true) und der wird in der setOnClick.... auf einen DP gesetzt. Soweit ja auch verstanden.

          Wenn ich nun zwei Geräte habe und dann immer nur value=true übergeben, dann habe ich eine 2:1 Zuordnung und nicht auflösbar.

          Aber wie gesagt:Das sind nur fragen und ich will Eure Umsetzung nicht stören. Ich werde jetzt erstmal passiv weiter mitlesen, wie Eure Umsetzungen laufen

          Danke

          liv-in-skyL 1 Antwort Letzte Antwort
          0
          • ? Ein ehemaliger Benutzer

            @liv-in-sky

            Hallo

            also this.value ist ja der Wert value (oben value=true) und der wird in der setOnClick.... auf einen DP gesetzt. Soweit ja auch verstanden.

            Wenn ich nun zwei Geräte habe und dann immer nur value=true übergeben, dann habe ich eine 2:1 Zuordnung und nicht auflösbar.

            Aber wie gesagt:Das sind nur fragen und ich will Eure Umsetzung nicht stören. Ich werde jetzt erstmal passiv weiter mitlesen, wie Eure Umsetzungen laufen

            Danke

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

            @HeinrichB ich habe das this.value nicht mehr drin - brauche ich momentan nicht

            wie der wert momentan ist, wird im script ja gelesen (getStates) und dann getoggelt (setState)
            bei mir steht meist ON OFF drin in der tabelle und nicht true /false

            ein problemchen ist noch, dass die eigentliche tabelle erst den geschalteten wert anzeigt, wenn das schedule wieder läuft, was die tabelle erzeugt

            ich habe ein iobroker- java-script - das erzeugt eine tabelle - diese tabelle beinhaltet unser neues script mit dem button - wenn ich nun den button drücke, bleibt der wert in der tabelle unverändert - erst wenn das iobroker script wieder durch den schedule eine neue tabelle erzeugt, wird der neue wert angezeigt

            damit das aber sofort angezeigt wird, müßte man wohl einen triggerpunkt auf true setzen , damit das iobroker javascript sofort läuft und eine neue tabelle erstellt
            @GiuseppeS siehst du das ähnlich ?

            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

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

              @HeinrichB ich habe das this.value nicht mehr drin - brauche ich momentan nicht

              wie der wert momentan ist, wird im script ja gelesen (getStates) und dann getoggelt (setState)
              bei mir steht meist ON OFF drin in der tabelle und nicht true /false

              ein problemchen ist noch, dass die eigentliche tabelle erst den geschalteten wert anzeigt, wenn das schedule wieder läuft, was die tabelle erzeugt

              ich habe ein iobroker- java-script - das erzeugt eine tabelle - diese tabelle beinhaltet unser neues script mit dem button - wenn ich nun den button drücke, bleibt der wert in der tabelle unverändert - erst wenn das iobroker script wieder durch den schedule eine neue tabelle erzeugt, wird der neue wert angezeigt

              damit das aber sofort angezeigt wird, müßte man wohl einen triggerpunkt auf true setzen , damit das iobroker javascript sofort läuft und eine neue tabelle erstellt
              @GiuseppeS siehst du das ähnlich ?

              ? Offline
              ? Offline
              Ein ehemaliger Benutzer
              schrieb am zuletzt editiert von
              #30

              @liv-in-sky Mir geht es nicht um den Text als solches, mir geht es darum, wenn ich eine Tabelle mit N Geräten habe und die alle mit dem Button an/aus (on/off etc) geschaltet werden sollen. In der Skriptfunktion steht aber genau EIN statischer DP drin, auf den alles dann geht: also N:1 Zuordnung

              Oder ich kapiere es nicht :-D

              liv-in-skyL 1 Antwort Letzte Antwort
              0
              • ? Ein ehemaliger Benutzer

                @liv-in-sky Mir geht es nicht um den Text als solches, mir geht es darum, wenn ich eine Tabelle mit N Geräten habe und die alle mit dem Button an/aus (on/off etc) geschaltet werden sollen. In der Skriptfunktion steht aber genau EIN statischer DP drin, auf den alles dann geht: also N:1 Zuordnung

                Oder ich kapiere es nicht :-D

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

                @HeinrichB die statische var des datenpunktes löscht du raus und statt dessen kommt er über eine variable

                nur zur veranschaulichung:

                ....	<button style="border:none; background-color:transparent; color:white; font-size:1em; text-align:left" value="toggle" onclick="setOnDblClickCustom("0_userdata.0.Tasker_Bool")">{toggle}</button>
                	</td>
                  </tr>  
                
                </table>
                 
                <script>
                function setOnDblClickCustom(objID) {
                  //  var objID = "0_userdata.0.Tasker_Bool";
                    servConn.getStates(objID, (error, states) => {
                        console.log(states);
                        servConn.setState(objID, !states[objID].val);
                    });
                }
                
                
                </script>
                

                oben beim aufruf ist jetzt der datenpunkt drin und wird übergeben an setOnDblClickCustom
                unten im script gibt es keine statische def der variablen objID mehr

                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

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

                  @HeinrichB die statische var des datenpunktes löscht du raus und statt dessen kommt er über eine variable

                  nur zur veranschaulichung:

                  ....	<button style="border:none; background-color:transparent; color:white; font-size:1em; text-align:left" value="toggle" onclick="setOnDblClickCustom("0_userdata.0.Tasker_Bool")">{toggle}</button>
                  	</td>
                    </tr>  
                  
                  </table>
                   
                  <script>
                  function setOnDblClickCustom(objID) {
                    //  var objID = "0_userdata.0.Tasker_Bool";
                      servConn.getStates(objID, (error, states) => {
                          console.log(states);
                          servConn.setState(objID, !states[objID].val);
                      });
                  }
                  
                  
                  </script>
                  

                  oben beim aufruf ist jetzt der datenpunkt drin und wird übergeben an setOnDblClickCustom
                  unten im script gibt es keine statische def der variablen objID mehr

                  ? Offline
                  ? Offline
                  Ein ehemaliger Benutzer
                  schrieb am zuletzt editiert von
                  #32

                  @liv-in-sky

                  Danke:-)
                  Ich arbeite mich da durch :)

                  ? 1 Antwort Letzte Antwort
                  0
                  • ? Ein ehemaliger Benutzer

                    @liv-in-sky

                    Danke:-)
                    Ich arbeite mich da durch :)

                    ? Offline
                    ? Offline
                    Ein ehemaliger Benutzer
                    schrieb am zuletzt editiert von
                    #33

                    So, ich habe mal bisschen was ausprobiert und nun etwas entwickelt, dass xakt macht,
                    was ich brauche. Mag etwas handfest sein und unelegant, aber ich kann alles aus dem
                    Skript in der HTML-Tabelle ansprechen.
                    Geht alles sicher alles eleganter, aber ich weiss halt nun, wo ich selbst was anpassen kann :)

                    Danke an @liv-in-sky und @GiuseppeS

                    <table border="1">
                      <tr>
                        <td class="HeaderFormat" align="center">Gerät</td>      
                        <td class="HeaderFormat" align="center"><b>Heute</b></td>
                        <td class="HeaderFormat" align="center"><b>Gestern</b></td>    
                        <td class="HeaderFormat" align="center"><b>Gesamt</b></td>
                        <td>
                        <button value="true" onClick="setOnClickCustom(value, 'unit')">{v:0_userdata.0.TestDPUnit;v == "true" ? "An":"Aus"}</button>
                    	</td>
                      </tr>  
                      <tr>
                        <td class="LineFormat" align="center"><b>SolarHaus</b></td>
                        <td class="LineFormat" align="center"><b>{hs100.0.192_168_2_112.totalNow}kWh</b></td>
                        <td class="LineFormat" align="center"><b>{0_userdata.0.daily_earning_solar_house}kWh</b></td>
                        <td class="LineFormat" align="center"><b>{0_userdata.0.total_earning_solar_house}kWh</b></td>
                        <td>
                        <button value="true" onClick="setOnClickCustom(value, 'solar')">{v:0_userdata.0.TestDPSolar;v == "true" ? "An":"Aus"}</button>
                    	</td> 
                      </tr>
                    </table>
                     
                    <script>
                    function setOnClickCustom(val, device) {
                        var objID;
                        if (device == "unit") {
                            objID = "0_userdata.0.TestDPUnit";
                        }
                        if (device == "solar") {
                            objID = "0_userdata.0.TestDPSolar";
                        }
                        servConn.getStates(objID, (error, states) => {
                            console.log(states);
                            servConn.setState(objID, !states[objID].val);
                        });
                    }
                    </script>
                    
                    G 1 Antwort Letzte Antwort
                    0
                    • ? Ein ehemaliger Benutzer

                      So, ich habe mal bisschen was ausprobiert und nun etwas entwickelt, dass xakt macht,
                      was ich brauche. Mag etwas handfest sein und unelegant, aber ich kann alles aus dem
                      Skript in der HTML-Tabelle ansprechen.
                      Geht alles sicher alles eleganter, aber ich weiss halt nun, wo ich selbst was anpassen kann :)

                      Danke an @liv-in-sky und @GiuseppeS

                      <table border="1">
                        <tr>
                          <td class="HeaderFormat" align="center">Gerät</td>      
                          <td class="HeaderFormat" align="center"><b>Heute</b></td>
                          <td class="HeaderFormat" align="center"><b>Gestern</b></td>    
                          <td class="HeaderFormat" align="center"><b>Gesamt</b></td>
                          <td>
                          <button value="true" onClick="setOnClickCustom(value, 'unit')">{v:0_userdata.0.TestDPUnit;v == "true" ? "An":"Aus"}</button>
                      	</td>
                        </tr>  
                        <tr>
                          <td class="LineFormat" align="center"><b>SolarHaus</b></td>
                          <td class="LineFormat" align="center"><b>{hs100.0.192_168_2_112.totalNow}kWh</b></td>
                          <td class="LineFormat" align="center"><b>{0_userdata.0.daily_earning_solar_house}kWh</b></td>
                          <td class="LineFormat" align="center"><b>{0_userdata.0.total_earning_solar_house}kWh</b></td>
                          <td>
                          <button value="true" onClick="setOnClickCustom(value, 'solar')">{v:0_userdata.0.TestDPSolar;v == "true" ? "An":"Aus"}</button>
                      	</td> 
                        </tr>
                      </table>
                       
                      <script>
                      function setOnClickCustom(val, device) {
                          var objID;
                          if (device == "unit") {
                              objID = "0_userdata.0.TestDPUnit";
                          }
                          if (device == "solar") {
                              objID = "0_userdata.0.TestDPSolar";
                          }
                          servConn.getStates(objID, (error, states) => {
                              console.log(states);
                              servConn.setState(objID, !states[objID].val);
                          });
                      }
                      </script>
                      
                      G Offline
                      G Offline
                      GiuseppeS
                      schrieb am zuletzt editiert von
                      #34

                      @HeinrichB
                      Deine Buttons übergeben den Wert "true". Ist aber unnötig, da unten in der Funktion nicht weiter verarbeitet.
                      Stattdessen kannst du den value der Buttons auf "unit" bzw. "solar" ändern, und diesen übergeben.

                      @liv-in-sky
                      Weil ich mit dynamischen Tabellen arbeite und viele Buttons darin nutze habe ich es anders gelöst:
                      Buttons übergeben als value eine eindeutige "ID". Diese ID wird innerhalb der Tabelle mit der dblClick-Function inkl. setState in einer objID geschrieben.
                      In meinem Javascript (nicht VIS), dass die dynamische Tabelle erzeugt, reagiere ich auf die Aktualisierung der objID und führe entsprechend Aktionen aus (z.B.: wenn ID == Btn-Row1-Col2 dann toggle objID_XY und generiere Tabelle).

                      • Auf diese Art stehen mir alle Javascript-Funktionen unkompliziert zur Verfügung (außerhalb VIS in Scrip-Engine Adapter)
                      • Mein HTML-Code beinhaltet bei X Buttons nicht X Funktionen sondern immer nur eine Funktion
                      • Ich benötige nur eine objID, in die der Button-Value (= Button-ID) geschrieben wird

                      Was eleganteres ist mir nicht eingefallen.

                      Aber in diesem Thread wurde die Fragestellung des Eröffnungspost geklärt. Im Thread, in dem wir gestern gestartet waren, hatte ich meinen Tabellenaufbau grob dargestellt.

                      ? 1 Antwort Letzte Antwort
                      0
                      • G GiuseppeS

                        @HeinrichB
                        Deine Buttons übergeben den Wert "true". Ist aber unnötig, da unten in der Funktion nicht weiter verarbeitet.
                        Stattdessen kannst du den value der Buttons auf "unit" bzw. "solar" ändern, und diesen übergeben.

                        @liv-in-sky
                        Weil ich mit dynamischen Tabellen arbeite und viele Buttons darin nutze habe ich es anders gelöst:
                        Buttons übergeben als value eine eindeutige "ID". Diese ID wird innerhalb der Tabelle mit der dblClick-Function inkl. setState in einer objID geschrieben.
                        In meinem Javascript (nicht VIS), dass die dynamische Tabelle erzeugt, reagiere ich auf die Aktualisierung der objID und führe entsprechend Aktionen aus (z.B.: wenn ID == Btn-Row1-Col2 dann toggle objID_XY und generiere Tabelle).

                        • Auf diese Art stehen mir alle Javascript-Funktionen unkompliziert zur Verfügung (außerhalb VIS in Scrip-Engine Adapter)
                        • Mein HTML-Code beinhaltet bei X Buttons nicht X Funktionen sondern immer nur eine Funktion
                        • Ich benötige nur eine objID, in die der Button-Value (= Button-ID) geschrieben wird

                        Was eleganteres ist mir nicht eingefallen.

                        Aber in diesem Thread wurde die Fragestellung des Eröffnungspost geklärt. Im Thread, in dem wir gestern gestartet waren, hatte ich meinen Tabellenaufbau grob dargestellt.

                        ? Offline
                        ? Offline
                        Ein ehemaliger Benutzer
                        schrieb am zuletzt editiert von
                        #35

                        @GiuseppeS said in socket io - state lesen und setzen:

                        Deine Buttons übergeben den Wert "true". Ist aber unnötig, da unten in der Funktion nicht weiter verarbeitet.
                        Stattdessen kannst du den value der Buttons auf "unit" bzw. "solar" ändern, und diesen übergeben.

                        Danke. Läuft :)

                        1 Antwort Letzte Antwort
                        0
                        • MicM Offline
                          MicM Offline
                          Mic
                          Developer
                          schrieb am zuletzt editiert von
                          #36

                          Danke für die Infos hier.
                          Hier ein Anwendungsbeispiel: https://forum.iobroker.net/topic/30552/tipp-in-vis-in-html-widget-getstate-nutzen-zur-anzeige

                          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

                          368

                          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