Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. vis: Lampen mit Taster einschalten

    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

    vis: Lampen mit Taster einschalten

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

      Hallo,

      ich mache meine ersten Gehversuche mit vis - daher mag es sein, dass ich eine läppische Frage stelle, ich komme aber mit Herumprobieren nicht weiter. Szenario: ioBroker, dahinter Homematic-wired.

      Ich will in Gartenlampen ein- und ausschalten, aber nicht direkt mit dem Schaltaktor, sondern über den zugeordneten Taster. Der Grund ist, dass in HM programmiert ist, dass die Taster für Gartenbeleuchtung bei Tageslicht funktionslos sind.

      Jetzt habe ich in vis mit hqwidgets Schalter herumprobiert. Wenn ich da statt dem Aktor den Taster.PRESS_SHORT unter "Object ID" eintrage, geht alles wie es soll. Ich habe aber keine Rückmeldung, ob die Lampe an oder aus ist. Wie kriege ich das hin?

      (Eine erste Idee, aber auch noch nicht ausgereift: Wenn ich bei "In Arbeit Zusand ID" den Aktor.STATE hinzufüge, sehe ich sogar ein kleines Zahnrad für "working", wenn die Lampe an ist. Ich habe aber nicht gefunden, wo ich das Zahnrad gegen eine andere grafik.png austauschen könnte, das das "Lampensymbol aus" mit einem "Lampensymbol ein" übermalt. Vielleicht gibt es aber ohnehin eine einfachere Lösung)

      (Eine zweite Idee, die tatsächlich geht, aber sehr umständlich ist:
      Ich stelle den hqwidgets Schalter auf "ObjectID Aktor.STATE", aber nur lesend. Dann lege ich ihn nochmal in gleicher Größe genau drüber, aber mit ObjectID "Taster.PRESS_SHORT", und stelle da die opacity auf 0.0 und höherem z-index als bei der Unterlage. Das geht nun genau wie es soll. Der Taster wird bedient, nicht der Aktor direkt, der meldet aber seinen Zustand durch den durchsichtigen Taster.
      Das wird nun nur ein furchtbares Gebastel für all die vielen Lichttaster. Gibt es denn eine Möglichkeit, das in einem Widget zu vereinen, oder ist das dann nichts mehr für vis-Anfänger?)

      Grüße, EckartS

      1 Reply Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active last edited by bahnuhr

        Aufbau:
        Lampe mit HM Schaltaktor (dieser schaltet die Lampe an/aus)
        HM Taster per direktverknüpfung schaltet den HM Schaltaktor (was dann wiederum die Lampe an/aus schaltet)

        In vis widget:
        hq widget on/off mit objekt HM Schaltaktor

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

          @bahnuhr
          Das will er aber nicht.
          Die Taster sind zu bestimmten Zeiten deaktiviert.
          Das soll in dem View dann auch so sein.

          wenn er dann den Schaltaktor direkt steuert, kann man trotz geplanter Sperre schalten

          1 Reply Last reply Reply Quote 0
          • bahnuhr
            bahnuhr Forum Testing Most Active last edited by

            ok, überlesen

            dann per manueller variable und script schreiben.

            1 Reply Last reply Reply Quote 0
            • E
              EckartS last edited by

              Hallo,

              mit meiner zweiten Lösung bin ich schon vorangekommen.
              Das Prinzip ist: Ein Button (nur lesend) zeigt an, ob der Aktor an ist; er liest den Aktor.STATE
              Drüber liegt ein zweiter, unsichtbarer Button gleicher Größe, der den Datenpunkt Taster.PRESS_SHORT bedient.
              Das geht so.

              Meine Frage aber: Wie mache ich daraus ein Widget, dass ich einfach aufrufen und konfigurieren kann, damit ich so etwas nicht immer neu zusammenbasteln muss?

              Grüße, EckartS

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

                @EckartS
                Mein Vorschlag wäre ähnlich gewesen.
                Doch den Aktor schalten, und über Sichtbarkeit duesen nur aktivieren wenn er schaltbar sein soll.

                Deine Idee müsste doch mit der Gruppieren Funktion klappen

                1 Reply Last reply Reply Quote 0
                • E
                  EckartS last edited by

                  Hallo,

                  mein Problem: "Außenlampen per vis nur nachts schaltbar machen" habe ich jetzt gelöst, aber umständlichst: ein Button, nur lesend, zeigt den Zustand der Lampe, ein weiterer mit opacity=0.0 liegt genau darüber und ist mit einer Bedingung Sichtbarkeit == Nacht ausgestattet. Das ist aber ein ziemliches Gefrickel und muss doch wohl besser lösbar sein.

                  Leider bin ich ioBroker-Novize und will daher die Profis hier erneut fragen:

                  (Wie) kann ich ein hq widget on/off direkt mit einer Bedingung, z.B. in einem Mini-Skript verbinden, dass als Schaltbedingung einen Datenpunkt (in meinem Fall eine boolesche Homematic-Systemvariable Tag/Nacht) abfragt? Und dann nachts schaltet und tags nichts tut?

                  Viele Grüße, EckartS

                  1 Reply Last reply Reply Quote 0
                  • Asgothian
                    Asgothian Developer last edited by Asgothian

                    Das ist schlussendlich ganz einfach:

                    Du benötigst einen Datenpunkt (manuell angelegt, ich mach das immer im JS adapter (Bsp. javascript.0.SwitchObject, typ bool)
                    Weitere Annahme: die Lampe die du steuern willst sei
                    deconz.0.Light_5_on
                    und die Tag Nacht variable ist
                    HMDay - hier müsstest du per getState den Status der Variablen von HM holen - ich hab kein HM 🙂

                    Den verknüpfst du mit dem Punkt Object ID am on/off widget

                    dann nimmst du folgendes Script

                    var HMDay = true;
                    
                    on({id: "javascript.0.SwitchObject", change: "ne"}, function(obj) {
                        if (HMDay === true) {
                          // if it is daytime
                          if (obj.newState.ack === false) 
                          {
                              if (obj.oldState.val) setState(obj.id, true, true); else setState(obj.id, false, true); 
                          }
                          return;
                        }
                        console.log('Object ' + JSON.stringify(obj) + ' was reset');
                        if (obj.newState.val) { setState("deconz.0.Light_5.on", true); } 
                        else { setState("deconz.0.Light_5.on", false); }
                    });
                    
                    on({id: "deconz.0.Light_5.on", change: "ne"}, function (obj) {
                        if (obj.newState.val === getState("javascript.0.SwitchObject")) { return; }
                        if (obj.newState.val) setState("javascript.0.SwitchObject", true, true); else setState("javascript.0.SwitchObject", false, true); 
                    });
                    

                    Zur Funktionsweise:

                    Der Script Datenpunkt dient als Zwischenspeicher für den Schalter der im VIS dargestellt wird. Nur nachts wird der mit der eigentlichen Lampe synchronisiert.
                    Tagsüber wird an Hand des "acknowledge" geprüft ob die Änderung vom Script oder vom Vis kommt. Wenn eine Änderung mit "acknowledge" = true kommt, dann wird diese so akzeptiert und erhalten, wenn nicht wird sie sofort rückgängig gemacht (setstate, aber dann mit acknowledge).

                    Damit zeigt der Button den Status der Lampe auch tagsüber an - man kann sie halt nur damit nicht schalten.

                    A.

                    1 Reply Last reply Reply Quote 0
                    • E
                      EckartS last edited by

                      Hallo Asgothian,

                      besten Dank, das habe ich so nachgebaut und es geht. Wird gemerkt für künftige Fälle mit einzelnen Aktoren.

                      Jetzt habe ich mein Problem doch auch unaufwendiger gelöst: Über die ganze Fläche mit Tastern für Außenlampen eine große grau monochrome Tastfläche im Vordergrund mit opacity==0.5 gelegt, die nur bei Tag sichtbar ist. Tagsüber ist also diese Fläche zu sehen und schattet die darunterliegenen Taster für die Außenlampen ab. Wird sie betätigt, gibt es einen Hinweis, dass die Außenlamen nur nachts einschaltbar sind. Nachts ist sie unsichtbar und die Taster für die Lampen sind zugänglich.

                      Viele Grüße, EckartS

                      Asgothian 1 Reply Last reply Reply Quote 0
                      • Asgothian
                        Asgothian Developer @EckartS last edited by

                        @EckartS
                        Fein.

                        A.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        666
                        Online

                        32.1k
                        Users

                        80.7k
                        Topics

                        1.3m
                        Posts

                        vis
                        4
                        10
                        2033
                        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