Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Welches Schalter Widget für unterschiedliche An-Aus Befehl

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Welches Schalter Widget für unterschiedliche An-Aus Befehl

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

      Wenn die zwei Buttons übereinander liegen und über den jeweiligen Schaltzustand sichtbar/unsichtbar gemacht werden, sollte das gehen.

      Einer stellt den Zustand "ein" dar und schaltet beim Betätigen aus, der andere umgekehrt.

      Gruß

      Manfred

      und wie oder wo stell ich den Schaltzustand ein?

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hallo,

        ich würde aus VIS Performance-Gründen für solche eine Anwendung nicht so viele Widgets übereinanderlegen und per Sichtbarkeit steuern. Da kriegt man im Editor irgendwann die Krise.

        Besser: Skript!

        Javascript erstellt Boolean-State. Dieser State wird mit dem Widget geschaltet. Das Skript reagiert auf die Änderung und sendet den Befehl.

        var idEin = "hm-rpc.1.CUX4000001.1.PRESS_SHORT",
            idAus =  "hm-rpc.1.CUX4000001.2.PRESS_SHORT";
        var idSchalter = "javascript.0.Schalter"; // Instanz anpassen
        
        createState(idSchalter, false, {
            type: "boolean",
            name: "Intertechno schalten",
            desc: "Variable, um mit VIS zu schalten"
        });
        
        // Variable setzt Intertechno
        on(idSchalter, function (obj) {
            if (obj.state.val) setState(idEin, true, false); // ack false = Wert setzen
            else setState(idAus, false, false);
        });
        
        // Intertechno setzt Variable (falls Intertechno woanders geschaltet wird)
        on(id: idEin, val: true, function(obj) {
            setState(idSchalter, true);
            log('intertechno wurde eingeschaltet");
        });
        on(id: idAus, val: true, function(obj) {
            setState(idSchalter, false);
            log('intertechno wurde ausgeschaltet");
        });
        
        

        Im Widget dann die id javascript.0.Schalter angeben

        Ob ack zu setzen nötig ist, habe ich nicht getestet.

        Frage: Was passiert, wenn man die (vermutlich) CUxD Datenpunkte auf false setzt?

        Gruß

        Pix

        1 Reply Last reply Reply Quote 0
        • J
          jensus11 last edited by

          Wenn man die CuXD states ändert wird die Steckdose auch geschaltet. Aber nur bei der Änderung auf false, ändert man danach auf true passiert nix mehr.

          1 Reply Last reply Reply Quote 0
          • J
            jensus11 last edited by

            Ich habe jetzt das Script angelegt.

            Es wird dieses rote Kreuz angezeigt und die Meldung kommt.
            1024_bildschirmfoto_2017-01-09_um_19.22.45.png

            Ein Objekt habe ich auch angelegt.

            Wenn ich ein Bulb on/off Widget in Vis erstelle und da Javascript.0.Schalter auswähle wird der Status im Objekt auch geändert.

            Nur die Steckdose schaltet nicht.
            1024_bildschirmfoto_2017-01-09_um_19.24.43.png

            1 Reply Last reply Reply Quote 0
            • Bluefox
              Bluefox last edited by

              > on(****{****id: idEin, val: true****}****, function (obj) {

              1 Reply Last reply Reply Quote 0
              • J
                jensus11 last edited by

                1024_bildschirmfoto_2017-01-09_um_20.02.10.png

                jetzt sieht es so aus.

                1 Reply Last reply Reply Quote 0
                • J
                  jensus11 last edited by

                  So jetzt klappt es. Echt klasse! Danke dafür.

                  var idEin = "hm-rpc.1.CUX4000001.1.PRESS_SHORT",
                      idAus =  "hm-rpc.1.CUX4000001.2.PRESS_SHORT";
                  var idSchalter = "javascript.0.Schalter"; // Instanz anpassen
                  
                  createState(idSchalter, false, {
                      type: "boolean",
                      name: "Intertechno schalten",
                      desc: "1999"
                  });
                  
                  // Variable setzt Intertechno
                  on(idSchalter, function (obj) {
                      if (obj.state.val) setState(idEin, true, false); // ack false = Wert setzen
                      else setState(idAus, false, false);
                  });
                  
                  // Intertechno setzt Variable (falls Intertechno woanders geschaltet wird)
                  on(idEin, val= true, function (obj) {
                      setState(idSchalter, true);
                      log("intertechno wurde eingeschaltet");
                  });
                  on(idAus, val= true, function(obj) {
                      setState(idSchalter, false);
                      log("intertechno wurde ausgeschaltet");
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • S
                    schubi82 last edited by

                    Hallo zusammen,

                    vorweg, ich kenne mich nicht wirklich mit Skripten aus, ist auch mein erster Versuch in VIS etwas zu realisieren. Habe aber versucht es wie hier erläutert zu übernehmen. Leider passiert nichts, wenn ich auf den Schalter drücke. Ein Objekt habe ich angelegt und im Widget auch ausgewählt…

                    Hier der Inhalt meines Skripts:

                    var idEin = "hm-rpc.1.CUX4000002.1.PRESS_SHORT",
                        idAus =  "hm-rpc.1.CUX4000002.2.PRESS_SHORT";
                    var idSchalter = "hm-rpc.1.CUX4000002.Intertechno_schalten"; // Instanz anpassen
                    
                    createState(idSchalter, false, {
                        type: "boolean",
                        name: "Intertechno schalten",
                        desc: "1999"
                    });
                    
                    // Variable setzt Intertechno
                    on(idSchalter, function (obj) {
                        if (obj.state.val) setState(idEin, true, false); // ack false = Wert setzen
                        else setState(idAus, false, false);
                    });
                    
                    // Intertechno setzt Variable (falls Intertechno woanders geschaltet wird)
                    on(idEin, val= true, function (obj) {
                        setState(idSchalter, true);
                        log("intertechno wurde eingeschaltet");
                    });
                    on(idAus, val= true, function(obj) {
                        setState(idSchalter, false);
                        log("intertechno wurde ausgeschaltet");
                    });
                    

                    Im Anhang noch die Screenshots. Was mache ich falsch? Über Homematic kann ich die Dosen schalten.

                    Viele Grüße

                    geändert: Code in Code-Tags; Homoran (Mod)
                    1964_objekt.jpg
                    1964_vis.jpg

                    1 Reply Last reply Reply Quote 0
                    • Y
                      ykuendig last edited by

                      Warum hast Du die dritte Zeile verändert? Gem. Muster war das doch ein 'lokaler' Datenpunkt im JavaScript Adapter.

                      Und heissen Deine PRESS_SHORT Ziele zufällig gleich wie die des Kollegen weiter oben?

                      1 Reply Last reply Reply Quote 0
                      • S
                        schubi82 last edited by

                        Ja, die PRESS_SHORT-Adresse ist gleich 🙂

                        Ich dachte in die dritte Zeile muss die Adresse rein, wo ich das Objekt erstellt habe!? Und das hab ich unter hm-rpc-1 gemacht… Aber wenn ich Dich richtig verstehe, muss das gar nicht darunter, sondern unter dem JavaScrip Adapter, den ich gar nicht installiert habe, erstellt werden!? Dann ist das wohl der Fehler, ich habe das Skript einfach nur im Widget unter "Skripte" eingetragen.

                        Brauch ich den Javascript/Coffescript Engine-Adapter?

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        452
                        Online

                        32.1k
                        Users

                        80.6k
                        Topics

                        1.3m
                        Posts

                        8
                        19
                        6255
                        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