Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Datenpunkte zusammenführen switch + state

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    SOLVED Datenpunkte zusammenführen switch + state

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

      Hallo,

      ich habe da mal eine Frage bezüglich der Datenpunkte in Verbindung mit Vis und den Aufzählungen.
      Und zwar, da ich ja meine gesamte Haussteuerung über eine Siemens LOGO realisiert habe, bekomme ich im s7 Adapter 2 Datenpunkte für eine Leuchte oder was ich sonst so schalte.

      Es gibt ein Datenpunkt zum ansteuern der Leuchte quasi ein Taster (toggle)
      Und ein zweiten für den Ausgang der LOGO ( Status der leuchte selbst.)

      Jetzt ist es schon schwierig das in der Vis zu realisieren da man mit Signalbilder arbeiten muss.
      Da man bei allen Widgets ja nur ein Datenpunkt zum schalten und für den Status angeben kann.

      Für die Alexa Geräte habe ich schon mit dem Scenes Adapter getrickst was auch nicht die beste Lösung ist.
      Wenn ich jetzt z.B die Aufzählungen nutzen möchte würde das so auch nicht funktionieren.

      Jetzt meine Frage: Gibt es irgend eine Möglichkeit die Datenpunkte zusammenzuführen außer alles manuell zu scripten?

      Hier noch ein Ausschnitt zum besseren Verständnis.

      Unbenannt.png

      Bin um jeden Rat dankbar.

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Elektroniker86 last edited by

        @Elektroniker86 sagte:

        kann man dieses Script auch so umschreiben das dass auch für die Rolladen funktioniert?

        Kann man.

        // IDs anpassen
        const idCmd = 's7.1.DBs.DB1.NAI01';
        const idStat = 's7.1.DBs.DB1.AM01';
         
        const js = 'system.adapter.javascript.' + instance;
        const common = getObject(idCmd).common;
        const idVis = 'LOGO.s7-1.' + common.name.replace(/\s/g, '_');
         
        common.read = true;
        createState(idVis, getState(idStat).val, common);
         
        on({id: 'javascript.0.' + idVis, change: 'ne', fromNe: js}, function(dp) {
            setState(idCmd, dp.state.val);
        });
         
        on(idStat, function(dp) {
            setState(idVis, dp.state.val, true);
        });
        
        Elektroniker86 2 Replies Last reply Reply Quote 1
        • paul53
          paul53 @Elektroniker86 last edited by paul53

          @Elektroniker86 sagte:

          Es gibt ein Datenpunkt zum ansteuern der Leuchte quasi ein Taster (toggle)
          Und ein zweiten für den Ausgang der LOGO ( Status der leuchte selbst.)

          Wie will man zwei unterschiedliche Funktionen zusammenführen ? Taster liefert einen Impuls für Toggle und der Ausgang benötigt einen Zustand (Aus/Ein). Liefert die Leuchte keine Rückmeldung des Zustands ?

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

            Der State (Ausgang) läst sich nicht ansteuern das ist nur ein Status.
            Um Die Leuchten zu schalten muss ich den NI19 togglen damit Q19 von false auf true wechselt und umgekehrt.

            Problem: Wenn ich jetzt den Datenpunkt NI19 z.B als Gerät zu Alexa hinzufüge (dann muss allerdings bei Rolle switch stehen, als button geht ja nicht) dann kann ich zwar die Leuchte einschalten aber nicht mehr aus da ja für aus false gesendet wird aber ich benötige ja true zum togglen.

            Oder wenn ich im Vis zum Beispiel ein Leuchten Widget nehme dann kann ich zwar den Datenpunkt NI19 zum ansteuern eingeben aber den Status der Leuchte (Q19) leider nicht.

            Ich hoffe ich konnte es einigermaßen verständlich erklären.

            BBTown 1 Reply Last reply Reply Quote 0
            • BBTown
              BBTown @Elektroniker86 last edited by BBTown

              @Elektroniker86 sagte in Datenpunkte zusammenführen switch + state:

              Alexa hinzufüge (dann muss allerdings bei Rolle switch stehen, als button geht ja nicht

              Du könntest einen Switch-Datenpunkt "LichtTerrasse" anlegen den Du per Alexa ansprichst.
              Dazu kommt dann ein Script, welches sowohl bei true als auch bei false den "Button" auslöst

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

                Genau das meine ich!
                Jetzt war meine Frage ob es mittlerweile eine einfachere Lösung gibt außer alles einzeln zu scripten.
                Ich habe ja die Ganze Bude in dieser Konstellation. Das sind schon ein paar Datenpunkte.....

                paul53 BBTown 2 Replies Last reply Reply Quote 0
                • paul53
                  paul53 @Elektroniker86 last edited by

                  @Elektroniker86 sagte:

                  eine einfachere Lösung gibt außer alles einzeln zu scripten.

                  Da wirst Du um Skripte nicht herum kommen. Mit copy & paste ist es schnell erledigt.

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

                    Ich meine das betrifft ja nicht nur Alexa, sondern auch die Aufzählungen....
                    Wenn ich jetzt z.B iQontrol testen / nutzen möchte wird das in dieser Konstellation ja auch nicht funktionieren .

                    1 Reply Last reply Reply Quote 0
                    • BBTown
                      BBTown @Elektroniker86 last edited by BBTown

                      @Elektroniker86 das liegt ja maßgeblich an der Funktionsweise vom Siemens LOGO, würde ich meinen.

                      Gerade in Verbindung mit Alexa wird das sonst "holprig"
                      Du müsstes sonst ja immer auf "true" kommen, also nach meinem Verständnis sowohl beim Ein- als auch beim Ausschalten sagen: "Alexa, schalte die Lampe auf der Terrasse ein" damit der Button ohne Script schaltet

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

                        Richtig genau!
                        Momentan habe ich das mit dem Szenen Adapter hinbekommen.
                        Damit funktioniert zumindest Alexa.

                        BBTown 1 Reply Last reply Reply Quote 0
                        • BBTown
                          BBTown @Elektroniker86 last edited by

                          @Elektroniker86 der Aufwand ist ja der gleiche wie bei einem Script

                          Elektroniker86 1 Reply Last reply Reply Quote 0
                          • Elektroniker86
                            Elektroniker86 @BBTown last edited by

                            @BBTown sagte in Datenpunkte zusammenführen switch + state:

                            @Elektroniker86 der Aufwand ist ja der gleiche wie bei einem Script

                            Ja genau, deswegen hier ja die Frage an die Profis ob es da ne elegantere Lösung gibt.

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

                              Ich habe mal gezählt, es wären ca. 55 neue Datenpunkte/ Scripte. Wie wirkt sich das denn auf die Performance aus?

                              paul53 BBTown 2 Replies Last reply Reply Quote 0
                              • paul53
                                paul53 @Elektroniker86 last edited by paul53

                                @Elektroniker86 sagte:

                                Wie wirkt sich das denn auf die Performance aus?

                                Kaum. Beim RAM-Verbrauch schon etwas mehr, aber wenn dadurch der Szenen-Adapter eingespart wird, sogar weniger.

                                1 Reply Last reply Reply Quote 0
                                • BBTown
                                  BBTown @Elektroniker86 last edited by

                                  @Elektroniker86 ob das überhaupt eine Auswirkung hat, dass musst Du schon ausprobieren.
                                  Ich sehe dazu aber überhaupt keine Alternative, also ist das sowieso nebensächlich .... denke ich zumindest mal 😎

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

                                    Ok, trotzdem vielen Dank für eure Hilfe!!!

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

                                      So, ich habe mal ein Blockly für oben beschriebenes Problem gebaut.
                                      Es funktioniert, aber würdet ihr vielleicht nochmal drüber schauen ob man das eventuell noch optimieren könnte?

                                      Vielen Dank im vorraus!

                                      test blockly.png

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @Elektroniker86 last edited by paul53

                                        @Elektroniker86 sagte:

                                        Es funktioniert,

                                        Genügt es, den Taster-Datenpunkt auf true zu aktualisieren oder muss er nach kurzer Zeit auf false gesetzt werden ?
                                        Dann schlage ich folgendes Skript vor, das beliebig kopiert werden kann und in dem jeweils nur die IDs in Zeilen 2 und 3 angepasst werden müssen. Die Datenpunkte für Vis usw. werden automatisch unter Verwendung des Taster-Namens erzeugt.

                                        // IDs anpassen
                                        const idButton = 's7.0.abc.NI19';
                                        const idActor = 's7.0.xyz.Q19';
                                        
                                        const js = 'system.adapter.javascript.' + instance;
                                        const common = getObject(idButton).common;
                                        const idVis = 'Logo.' + common.name.replace(' ', '_');
                                        
                                        common.read = true;
                                        createState(idVis, getState(idActor).val, common);
                                        
                                        on({id: idVis, change: 'ne', fromNe: js}, function() {
                                            setState(idButton, true);
                                        });
                                        
                                        on(idActor, function(dp) {
                                            setState(idVis, dp.state.val, true);
                                        });
                                        
                                        Elektroniker86 1 Reply Last reply Reply Quote 0
                                        • Elektroniker86
                                          Elektroniker86 @paul53 last edited by

                                          @paul53

                                          Ja genau, es reicht den Taster Datenpunkt einmal auf true zu setzen.
                                          Danach springt er nach einer Sekunde automatisch wieder auf false.

                                          Cool, vielen Dank für deine Mühe. Werde das Script morgen testen.
                                          Wo werden dann die Datenpunkte angelegt ?
                                          Hätte da schon gerne ein Ordner unter Javascript.0/LOGO/s7.0........s7.1.........s7.2 usw.

                                          Damit das soweit geordnet ist wie beim s7 Adapter unter Objekte.

                                          paul53 2 Replies Last reply Reply Quote 0
                                          • paul53
                                            paul53 @Elektroniker86 last edited by

                                            @Elektroniker86 sagte:

                                            Wo werden dann die Datenpunkte angelegt ?

                                            Unter javascript.0.Logo.
                                            Beispiel: "javascript.0.Logo.Wandleuchten_Terasse"

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

                                              Ah ja, das heißt wenn ein Datenpunkt unter "javascript.0.Logo.s70.Wandleuchten_Terasse" landen soll dann muss das cript so aussehen?

                                              // IDs anpassen
                                              const idButton = 's7.0.abc.NI19';
                                              const idActor = 's7.0.xyz.Q19';
                                               
                                              const js = 'system.adapter.javascript.' + instance;
                                              const common = getObject(idButton).common;
                                              const idVis = 'Logo.s70' + common.name.replace(' ', '_');
                                               
                                              common.read = true;
                                              createState(idVis, getState(idActor).val, common);
                                               
                                              on({id: idVis, change: 'ne', fromNe: js}, function() {
                                                  setState(idButton, true);
                                              });
                                               
                                              on(idActor, function(dp) {
                                                  setState(idVis, dp.state.val, true);
                                              });
                                              
                                              
                                              paul53 1 Reply Last reply Reply Quote 0
                                              • First post
                                                Last post

                                              Support us

                                              ioBroker
                                              Community Adapters
                                              Donate
                                              FAQ Cloud / IOT
                                              HowTo: Node.js-Update
                                              HowTo: Backup/Restore
                                              Downloads
                                              BLOG

                                              894
                                              Online

                                              31.7k
                                              Users

                                              79.7k
                                              Topics

                                              1.3m
                                              Posts

                                              datenpunkte objekte s7.0
                                              3
                                              55
                                              3450
                                              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