Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Widget aktualisiert nicht bei Button

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Widget aktualisiert nicht bei Button

    This topic has been deleted. Only users with topic management privileges can see it.
    • F. M.
      F. M. last edited by

      Hallo zusammen, ich habe in meiner VIS Instanz ein Widget von fancyswitch. So ein klassischer ON/OFF Taster.

      Wenn ich auf das Widget drücke ändert es sich auch von AUS auf EIN
      81071d50-5292-4b72-96e1-7153383c342c-image.png

      5f2d3845-830b-4367-b918-414057e4238b-image.png

      Leider, wenn ich den Hardware_Button drücke (hier Sonoff S20) ändert sich leider die Visualisierung nicht "rückwärts" auf AUS

      Habt ihr mir hier eine Idee ?

      Beste Grüße
      Ferdi

      Glasfaser 1 Reply Last reply Reply Quote 0
      • Glasfaser
        Glasfaser @F. M. last edited by

        @F-M sagte in Widget aktualisiert nicht bei Button:

        Leider, wenn ich den Hardware_Button drücke (hier Sonoff S20) ändert sich leider die Visualisierung nicht "rückwärts" auf AUS

        Ändert sich der Datenpunkt auf true/false , wenn du den Hardware Button drückst !?

        F. M. 1 Reply Last reply Reply Quote 0
        • F. M.
          F. M. @Glasfaser last edited by

          @Glasfaser Ja, das hab ich in der Tasmota Firmware mittels "ButtonTopic 1" hin bekommen

          Glasfaser 1 Reply Last reply Reply Quote 0
          • Glasfaser
            Glasfaser @F. M. last edited by Glasfaser

            @F-M

            Nicht im Log von Tasmota

            .....bei den Datenpunkten im ioBroker ??

            F. M. 1 Reply Last reply Reply Quote 0
            • F. M.
              F. M. @Glasfaser last edited by

              @Glasfaser natürlich switched er im ioBroker 🙂

              BananaJoe 1 Reply Last reply Reply Quote 0
              • BananaJoe
                BananaJoe Most Active @F. M. last edited by

                @F-M
                Und der Datenpunkt ist ein Boolean, true/false - welchen Adapter hast du genommen, den Sonoff?
                Hast du im Widget Werte für "Falsch-Wert" und "Wahr-Wert" eingetragen?
                Versuch es mal dort mit true und false

                VG
                BJ

                F. M. 1 Reply Last reply Reply Quote 0
                • F. M.
                  F. M. @BananaJoe last edited by

                  @BananaJoe Hi BJ, geht über MQTT, daher ist der Datenpunk "gemischt" mit ON&OFF... so ist es auch im Widget hinterlegt.
                  Wenn es hier ein Logikwert braucht, müsste ich den Datenpunkt irgendwie dublizieren bzw. umwandeln... ?
                  BG
                  Ferdi

                  F. M. Glasfaser paul53 3 Replies Last reply Reply Quote 0
                  • F. M.
                    F. M. @F. M. last edited by

                    also es hat tatsächlich mit dem Boolean Feld zu tun... der Datenpunkt muss für das Widget als Logikwert bestehen. -.-
                    also muss ich das jetzt irgendwie basteln 😞
                    oder hat da jemand schon eine Lösung... weil wenn ich den Wert im MQTT Adapter von gemischt->Logikwert drehe, funktioniert es nicht mehr.

                    BananaJoe 1 Reply Last reply Reply Quote 0
                    • BananaJoe
                      BananaJoe Most Active @F. M. last edited by

                      @F-M

                      Ich habe die Tasmota auch alle per MQTT dran und mir deshalb für jeden einen eigenen True/False Datenpunkt gebaut.
                      Das folgende Skript habe ich für jedes Tasmota Gerät einmal laufen
                      oben bei Device-Name ist der Name wie er unter mqtt.0/stat/ erscheint
                      Er legt unter javascript.0 passende Datenpunkte an

                      // Erstellt einen Datenpunkt über welches der Status des Tasmota Gerätes als Boolean true false ausgelesen werden kann
                      // Gleichzeitig kann man den Datenpunkt gezielt setzen um umzuschalten
                      // ####################################################################################################################################################
                      // Setup
                      var s_DeviceName = "K05-Licht-Flur-Keller";
                      
                      // ####################################################################################################################################################
                      // feste Vorgaben
                      // Datenpunkt der gelesen und geschrieben werden kann
                      var s_state_path = "javascript.0.tasmota." + s_DeviceName + ".POWER";
                      // Datenpunkt aus dem der aktuelle Status gelesen werden kann
                      var s_mqtt_path = "mqtt.0.stat." + s_DeviceName + ".POWER";
                      // Datenpunkt den man setzen muss um den Status zu ändern
                      var s_cmnd_path = "mqtt.0.cmnd." + s_DeviceName + ".POWER";
                      // Hilfsvariable damit die die beiden Teile (2 Datenpunkte aboniert) nicht in die Quere kommen
                      var s_running = "nothing";
                      
                      // ####################################################################################################################################################
                      // Zielpunkte anlegen falls noch nicht vorhanden
                      // RSSI
                      createState(s_state_path, false, {
                          read: true, 
                          write: true, 
                          name: 'An (=true) oder AUS (=false)', 
                          type: 'boolean', 
                          def: false
                      });
                      
                      // ####################################################################################################################################################
                      // Beim Start einmal einfach den aktuellen Wert holen und schreiben
                      if ( getState(s_mqtt_path).val = 'ON' ) {
                          setState(s_state_path, true, true);
                      } else {
                          setState(s_state_path, false, true);
                      }
                      // ####################################################################################################################################################
                      // Status einlesen und nach javascript.0 schreiben
                      on({id: s_mqtt_path, change: "ne", ack: true}, function (obj) {
                          var s_value_mqtt = obj.state.val;
                          var s_value_javascript = getState(s_state_path).val;
                          var b_helper_mqtt = false;
                          // Beides nach Boolean bringen
                          if (s_value_mqtt == 'ON') {
                              b_helper_mqtt = true;
                          } else {
                              b_helper_mqtt = false;
                          }
                          // Die Prüfungen sollen verhindern das durch das Setzen des Wertes in der anderen Routine nicht wieder der JavaScript Wert geändert wird
                          // und damit wieder das Setzen des Wertes anstoßen würde (Schleife verhinden)
                          // Prüfen ob nicht das Setzen des javascript.0 Datenpunktes die Ursache war
                          if (s_running != 'SetState') {
                              // Wir übernehmen das Zepter
                              s_running = 'GetState';
                              // prüfen ob die Werte wirklich ungleich sein sind und wir was ändern müssen
                              if (b_helper_mqtt != s_value_javascript) {
                                  if (s_value_mqtt == 'ON') {
                                      setState(s_state_path, true, true);
                                  } else {
                                      setState(s_state_path, false, true);
                                  }
                              }
                              // Zepter wieder abgeben
                              s_running = 'nothing';
                          }
                      });
                      
                      // ####################################################################################################################################################
                      // Status setzen nachdem die JavaScript-Varaiable geändert wurde.
                      on({id: s_state_path, change: "ne", ack: false}, function (obj) {
                          var s_value_mqtt = obj.state.val;
                          var s_value_javascript = getState(s_state_path).val;
                          var b_helper_mqtt = false;
                          // Beides nach Boolean bringen
                          if (s_value_mqtt == 'ON') {
                              b_helper_mqtt = true;
                          } else {
                              b_helper_mqtt = false;
                          }
                          // Prüfen ob nicht GetState der Grund war warum sich der JavaScipt-Datenpunkt geändert hat
                          if (s_running != 'GetState') {
                              // wir übernehmen das Zepter!
                              s_running = 'SetState';
                              if (getState(s_state_path).val == true) {
                                  setState(s_cmnd_path, 'ON');
                              } else {
                                  setState(s_cmnd_path, 'OFF');
                              }
                              // Zepter wieder abgeben
                              s_running = 'nothing';
                          }
                      });
                      
                      
                      1 Reply Last reply Reply Quote 0
                      • Glasfaser
                        Glasfaser @F. M. last edited by

                        @F-M sagte in Widget aktualisiert nicht bei Button:

                        geht über MQTT, daher ist der Datenpunk "gemischt" mit ON&OFF

                        Warum nimmst du nicht den Sonoff Adapter !

                        BananaJoe F. M. 2 Replies Last reply Reply Quote 1
                        • paul53
                          paul53 @F. M. last edited by

                          @F-M sagte:

                          daher ist der Datenpunk "gemischt" mit ON&OFF... so ist es auch im Widget hinterlegt.

                          Bei mir funktioniert es mit "ON" und "OFF" in beiden Richtungen.

                          Vis_Taster.JPG

                          1 Reply Last reply Reply Quote 0
                          • BananaJoe
                            BananaJoe Most Active @Glasfaser last edited by

                            @Glasfaser
                            Ich nehme auch MQTT weil ich eben noch mehr am MQTT außer ioBroker habe, unter anderem diverse Skripte die auf bestimmte Tasmota-Geräte reagieren.
                            Wenn man den Sonoff Adapter nimmt hat man es zwar sehr bequem ... aber eben nur noch im ioBroker als Datenpunkt.
                            Das coole an MQTT ist ja das man da quasi alles dranhängen kann.

                            1 Reply Last reply Reply Quote 0
                            • F. M.
                              F. M. @Glasfaser last edited by

                              @Glasfaser mache ich gleich wie BananaJoe -> ich mag da noch mehr dran hängen außer Sonoff

                              @paul53 , Frage ist ja: Schaltet er bei dir dann auch das Widget um wenn du den Hardware Button z.B. an der Steckdose drückst? Weil das geht bei mir eben nicht.

                              Scheinbar liegt es daran, dass der Datenpunkt als "gemischt" verwendet wird, statt als true/false.

                              @BananaJoe, danke dir! werde ich auf jeden Fall testen, hab das gestern mal kurz mit Blockly und klicky bunty versucht, aber gescheitert 🙂 muss allerdings gestehen, dass javascript nicht meine stärke ist 🙂 Pfade anpassen & Kommentare lesen geht da grad noch so 😉

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @F. M. last edited by

                                @F-M sagte in:

                                Schaltet er bei dir dann auch das Widget um wenn du den Hardware Button z.B. an der Steckdose drückst?

                                Ich habe keine Hardware dran. Wenn ich im Tab "Objekte" zwischen "ON" und "OFF" ändere, schaltet auch das Widget um.

                                @F-M sagte in Widget aktualisiert nicht bei Button:

                                Scheinbar liegt es daran, dass der Datenpunkt als "gemischt" verwendet wird

                                Nein, mein Test-Datenpunkt ist auch vom Typ "mixed".

                                Homoran 1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @paul53 last edited by

                                  @paul53 sagte in Widget aktualisiert nicht bei Button:

                                  Ich habe keine Hardware dran. Wenn ich im Tab "Objekte" zwischen "ON" und "OFF" ändere, schaltet auch das Widget um.

                                  @F-M sagte in Widget aktualisiert nicht bei Button:

                                  Scheinbar liegt es daran, dass der Datenpunkt als "gemischt" verwendet wird, statt als true/false.

                                  Nein, es liegt anscheinend daran, dass der Rückkanal vom Schalter nicht korrekt funktioniert.

                                  F. M. 1 Reply Last reply Reply Quote 0
                                  • F. M.
                                    F. M. @Homoran last edited by

                                    @Homoran said in Widget aktualisiert nicht bei Button:

                                    Nein, es liegt anscheinend daran, dass der Rückkanal vom Schalter nicht korrekt funktioniert

                                    hmmm... guter Punkt, ich probiere es vielleicht mal noch mit einem anderen Widget, vielleicht hat es ja ne Macke
                                    Ich zeige damit halt auf den

                                    mqtt-client.0.$Gerätename.POWER
                                    
                                    Homoran paul53 2 Replies Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @F. M. last edited by

                                      @F-M sagte in Widget aktualisiert nicht bei Button:

                                      ich probiere es vielleicht mal noch mit einem anderen Widget,

                                      nee, das ändert nix.
                                      @paul53 hat es ja getestet, dass es funktioniert, wenn im DP der Wert korrekt geändert wird.
                                      Da musst du meiner Meinung nach ansetzen.

                                      1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @F. M. last edited by

                                        @F-M sagte:

                                        Ich zeige damit halt auf den
                                        mqtt-client.0.$Gerätename.POWER

                                        Kann es sein, dass Kommando und Status verschiedene Datenpunkte sind ? Dann führe sie in einem Alias-Datenpunkt zusammen.

                                        F. M. 1 Reply Last reply Reply Quote 0
                                        • F. M.
                                          F. M. @paul53 last edited by F. M.

                                          @paul53 Uhhhh, schaut interessant aus... werde ich mir anschauen!
                                          Ja es gibt 2 Datenpunkte in dem Baum...

                                          mqtt-client.2.sonoff.cmnd.$Gerätename.Power
                                          mqtt-client.2.sonoff.stat.$Gerätename.Power

                                          ich hatte das mit cmnd und stat unterschlagen... man schaltet den .cmnd.$Gerätename.POWER Schalter um das Relais zu schalten. der .stat.$Gerätename.POWER bzw. .stat.$Gerätename.RESULT bestätigt einem das denke ich nur.

                                          659209a6-7860-4d41-a1c5-989774f5f21c-image.png

                                          EDIT: wenn ich den HW Knopf betätige, schalten beide als cmnd und stat .POWER werte auf ON

                                          BananaJoe 1 Reply Last reply Reply Quote 0
                                          • BananaJoe
                                            BananaJoe Most Active @F. M. last edited by

                                            @F-M sagte in Widget aktualisiert nicht bei Button:

                                            EDIT: wenn ich den HW Knopf betätige, schalten beide als cmnd und stat .POWER werte auf ON

                                            Also bei mir nicht, da wird nur stat befüllt - wie sind denn deine Tasmota Einstellungen (mal abgesehen von dem Server)?

                                            Meine sind

                                            Topic Sonoff194-Garage
                                            MqttClient Sonoff194-Garage
                                            MqttHost 192.168.1.72
                                            MqttPort 1883
                                            MqttUser tasmouser
                                            MqttPassword test1234
                                            

                                            Gibt es eine Option die dein Verhalten aktiviert?

                                            F. M. 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            765
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

                                            vis
                                            5
                                            21
                                            872
                                            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