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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    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

      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
                                    • paul53
                                      paul53 @Elektroniker86 last edited by

                                      @Elektroniker86 sagte:

                                      muss das cript so aussehen?

                                      Fast - es fehlt noch der Punkt hinter s70

                                      const idVis = 'Logo.s70.' + common.name.replace(' ', '_');
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • Elektroniker86
                                        Elektroniker86 last edited by Elektroniker86

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

                                                                                                                                                                    // 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);                                                                                                        });                                                                                                                                 
                                        

                                        Alles klar ja den Punkt hatte ich vergessen.
                                        So, ich habe eben das Script getestet soweit alles in Ordnung.
                                        Allerdings kann ich die Aktoren nicht über den neuen Datenpunkt schalten.
                                        Wenn sich der Status vom Aktor ändert dann wechselt der neue Datenpunkt entsprechend mit, passt ja.
                                        Aber ich muss von dem neuen Datenpunkt auch den "Aktor" /Button ansteuern können.

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

                                          So habe ich das jetzt eingetragen, sollte doch so passen?

                                          Unbenannt.png

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

                                            @Elektroniker86 sagte:

                                            kann ich die Aktoren nicht über den neuen Datenpunkt schalten.

                                            Das soll in Zeilen 13 bis 15 passieren: Tastendruck, wenn sich der Wert ändert, außer die Änderung erfolgt aus dem Skript. Füge mal vor Zeile 14 ein Log ein:

                                            on({id: idVis, change: 'ne', fromNe: js}, function() {
                                                log('Tastendruck');
                                                setState(idButton, true);
                                            });
                                            
                                            Elektroniker86 2 Replies 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

                                            881
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

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