Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. socket io - state lesen und setzen

    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

    socket io - state lesen und setzen

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky @Guest last edited by

      @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

      ? 1 Reply Last reply Reply Quote 0
      • ?
        A Former User @liv-in-sky last edited by

        @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-sky 1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky @Guest last edited by 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 ?

          ? 1 Reply Last reply Reply Quote 0
          • ?
            A Former User @liv-in-sky last edited by

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

            liv-in-sky 1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @Guest last edited by 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

              ? 1 Reply Last reply Reply Quote 0
              • ?
                A Former User @liv-in-sky last edited by

                @liv-in-sky

                Danke:-)
                Ich arbeite mich da durch 🙂

                ? 1 Reply Last reply Reply Quote 0
                • ?
                  A Former User @Guest last edited by

                  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 Reply Last reply Reply Quote 0
                  • G
                    GiuseppeS @Guest last edited by

                    @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 Reply Last reply Reply Quote 0
                    • ?
                      A Former User @GiuseppeS last edited by

                      @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 Reply Last reply Reply Quote 0
                      • Mic
                        Mic Developer last edited by

                        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 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        798
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        javascript
                        5
                        36
                        3918
                        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