Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Geht das überhaupt mit iobroker??

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

Geht das überhaupt mit iobroker??

Geht das überhaupt mit iobroker??

Scheduled Pinned Locked Moved Skripten / Logik
16 Posts 2 Posters 1.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by
    #2

    Es geht (fast) alles. Mit fromNe kann man Javascript als Trigger-Quelle ausschließen.

    const idVis = 'javascript.0.lmair.szenenr.01'; // ID des Datenpunktes, der auf Vis reagiert (false/true)
    const idMarker = 'javascript.0.lmair.marker.01';
    const request = require('request');
    const url = 'http://192.168.10.71/control?key=';
    const js = 'system.adapter.javascript.' + instance;
    
    on({id: idVis, change: 'ne', fromNe: js}, function(dp) { // Triggern bei Wertänderung durch Vis
       var key = '2'; // aus
       if(dp.state.val) key = '1'; //ein
       request(url + key, function(error, response, body) {
          if(error) log('Fehler Request Steckdose', 'error');
       });
    });
    
    on(idMarker, function(dp) { // Triggern bei Wertänderung
       setState(idVis, dp.state.val, true);
    });
    

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    1 Reply Last reply
    0
    • D Offline
      D Offline
      dos1973
      wrote on last edited by
      #3

      wow, das ging aber schnell - dafür dass ich gefühlt eine stunde für den Text gebraucht habe :lol:

      Muss das script an einer bestimmten stelle liegen? also irgendwo in

      global/common

      1 Reply Last reply
      0
      • paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #4

        @dos1973:

        Muss das script an einer bestimmten stelle liegen? also irgendwo in

        global/common `
        Überall, nur <u>nicht unter global</u> !

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Reply Last reply
        0
        • D Offline
          D Offline
          dos1973
          wrote on last edited by
          #5

          Nee, klappt nicht

          ich sehe nur wenn ich die Lampe ausserhalb iobroker schaltet, dann wechselt der wert auf true/false

          javascript.0.lmair.marker.04

          aber da mein Vis Button auf die Werte

          javascript.0.lmair.szenenr.04 - hört ändert sich der Vis Button nicht… der steht weiterhin auf false

          das script habe ich so ergänzt

          const idVis = 'javascript.0.lmair.szenenr.04'; // ID des Datenpunktes, der auf Vis reagiert (false/true)
          const idMarker = 'javascript.0.lmair.marker.04';
          const request = require('request');
          const url = 'http://192.168.10.71/control?key=12';
          const js = 'system.adapter.javascript.' + instance;
          
          on({id: idVis, change: 'ne', fromNe: js}, function(dp) { // Triggern bei Wertänderung durch Vis
             var key = 'false'; // aus
             if(dp.state.val) key = 'true'; //ein
             request(url + key, function(error, response, body) {
                if(error) log('Fehler Request Steckdose', 'error');
             });
          });
          

          *edit, hatte die DP vertauscht jetzt ists richtig

          1 Reply Last reply
          0
          • paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by
            #6

            In dem Skript fehlt der Trigger auf idMarker (unten in meinem Skript).

               var key = 'false'; // aus
               if(dp.state.val) key = 'true'; //ein
            
            

            Bist Du sicher das dies richtig ist ? Es widerspricht den Angaben in Deinem ersten Beitrag.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Reply Last reply
            0
            • D Offline
              D Offline
              dos1973
              wrote on last edited by
              #7

              :oops:

              ?? kann dir nicht folgen

              1 Reply Last reply
              0
              • D Offline
                D Offline
                dos1973
                wrote on last edited by
                #8

                Ich möchte nicht anzweifeln, dass ich nicht alles richtig bedenke/ beschreibe …

                javascript.0.lmair.marker.04

                wird von aussen geschaltet - das zeigt den wirklichen Status an

                javascript.0.lmair.szenenr.04

                Ist auf mein Vis Button gemappt.

                wenn dieser Status sich verändert

                javascript.0.lmair.marker.04

                dann soll dieser Status den Wert annehmen

                javascript.0.lmair.szenenr.04

                und dabei aber dann keine Befehle

                http://192.168.10.71/control?key=xx

                ausführen, das soll nur passieren dmit der VIS Button in der Oberfläche eben als "ein" angezeigt wird (oder aus, was eben vom Marker kommt)

                Der weg soll sein

                LM->javascript.0.lmair.marker.04 -> javascript.0.lmair.szenenr.04 -> VIS Buttun ändern nur Darstellung, keine Aktion

                Aus IOBroker

                VISButton -> javascript.0.lmair.szenenr.04 - http://192.168.10.71/control?key=xx ( ab hier übernimmt der LM die Funktion licht ein und Visualisierung der Schaltzustände

                *Edit

                diese beiden müssen synchron sein,

                javascript.0.lmair.marker.04

                javascript.0.lmair.szenenr.04

                ausgehen nur von javascript.0.lmair.marker.04 , der gibt den zustand vor.

                1 Reply Last reply
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #9

                  @dos1973:

                  Der weg soll sein

                  LM->javascript.0.lmair.marker.04 -> javascript.0.lmair.szenenr.04 -> VIS Buttun ändern nur Darstellung, keine Aktion

                  Aus IOBroker

                  VISButton -> javascript.0.lmair.szenenr.04 - http://192.168.10.71/control?key=xx ( ab hier übernimmt der LM die Funktion licht ein und Visualisierung der Schaltzustände `
                  Genau das macht das Skript in meinem ersten Post (mit Szene 01). Du musst also nur in den ersten zwei Zeilen .01 –> .04 ändern.

                  EDIT: Und vermutlich den Key für aus und ein anpassen, z.B. (die richtigen Werte kenne ich nicht)

                     var key = '12'; // aus
                     if(dp.state.val) key = '11'; //ein
                  
                  

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Reply Last reply
                  0
                  • D Offline
                    D Offline
                    dos1973
                    wrote on last edited by
                    #10

                    ich probiere das morgen Abend sofort aus…

                    und poste dann wieder.

                    1 Reply Last reply
                    0
                    • D Offline
                      D Offline
                      dos1973
                      wrote on last edited by
                      #11

                      klappt zum Teil,

                      ich kann über den VIS Button Lampen ein und ausschalten.

                      • Der Schalter zeigt ON an

                      • Durch die ausgeführte Szene zeigt auch der Lightmanager ON an

                      Abschalten der gleiche weg - funktioniert.

                      Was geht nicht.

                      Beispiel: ich schalte via VIS das Licht ein, alle Visualisierung sind gesetzt.

                      = beide DP haben den gleichen Wert (TRUE)

                      const idVis = 'javascript.0.lmair.szenenr.xx';

                      const idMarker = 'javascript.0.lmair.marker.x'

                      jezt schalte das Licht am <u>Lightmanager</u> aus - und das bekommt Vis nicht mehr mit.

                      jetzt steht "const idMarker = 'javascript.0.lmair.marker.x" auf "FALSE" weil Lampe aus

                      der DP

                      const idVis = 'javascript.0.lmair.szenenr.xx'; steht weiterhin auf TRUE

                      hier fehlt ein Sync der beiden Werte und immer nur ausgehend aus Richtung des DP "javascript.0.lmair.marker.x""

                      wie bereits gesagt, wenn auf diese Art der DP umgesetzt wird, dann darf nicht der Szenenaufruf kommen (http://192.168.10.71/control?key=xx)

                      da sonst eine Dauerschleife aufkommt …

                      ich hoffe es ist einigermaßen verständlich 😉

                      1 Reply Last reply
                      0
                      • paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by
                        #12

                        Poste bitte das Skript, so wie Du es jetzt verwendest.

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        1 Reply Last reply
                        0
                        • D Offline
                          D Offline
                          dos1973
                          wrote on last edited by
                          #13
                          const idVis = 'javascript.0.lmair.szenenr.03'; // ID des Datenpunktes, der auf Vis reagiert (false/true)
                          const idMarker = 'javascript.0.lmair.marker.03';
                          const request = require('request');
                          const url = 'http://192.168.10.71/control?key=';
                          const js = 'system.adapter.javascript.' + instance;
                          
                          on({id: idVis, change: 'ne', fromNe: js}, function(dp) { // Triggern bei Wertänderung durch Vis
                             var key = '5'; // aus
                             if(dp.state.val) key = '4'; //ein
                             request(url + key, function(error, response, body) {
                                if(error) log('Fehler Request Steckdose', 'error');
                             });
                          });
                          

                          noch ein Hinweis - eine Szene und eine Marker haben keine 1:1 Beziehung.

                          d.h ich kann in einer Szene z.b 1 Lampe schalte und x Marker ein/auschalten. oder auch mixen, zB 3 marker ein/ und 3 marker aus…

                          daher ist es mir wichtig die Szenen via "lmair.szenenr" auszulösen, Aber die VIS Darstellung der On/off zustände via "lmair.marker" abzubilden.

                          1 Reply Last reply
                          0
                          • paul53P Offline
                            paul53P Offline
                            paul53
                            wrote on last edited by
                            #14

                            @dos1973:

                            hier fehlt ein Sync der beiden Werte `
                            Ja, der fehlt immer noch, obwohl ich geschrieben habe
                            @paul53:

                            In dem Skript fehlt der Trigger auf idMarker (unten in meinem Skript). `
                            Richtig:

                            const idVis = 'javascript.0.lmair.szenenr.03'; // ID des Datenpunktes, der auf Vis reagiert (false/true)
                            const idMarker = 'javascript.0.lmair.marker.03';
                            const request = require('request');
                            const url = 'http://192.168.10.71/control?key=';
                            const js = 'system.adapter.javascript.' + instance;
                            
                            on(idMarker, function(dp) { // Triggern bei Wertänderung
                               setState(idVis, dp.state.val, true);
                            });
                            
                            on({id: idVis, change: 'ne', fromNe: js}, function(dp) { // Triggern bei Wertänderung durch Vis
                               var key = '5'; // aus
                               if(dp.state.val) key = '4'; //ein
                               request(url + key, function(error, response, body) {
                                  if(error) log('Fehler Request Steckdose', 'error');
                               });
                            });
                            

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                            1 Reply Last reply
                            0
                            • D Offline
                              D Offline
                              dos1973
                              wrote on last edited by
                              #15

                              ach du Schande, ich habe ja das halbe Script vergessen… war das schon die ganze Zeit da :lol:

                              Aber hey, es sieht gut aus... ich muss zugeben, es sieht sehr sehr gut aus. :mrgreen:

                              ich konnte jetzt in meinen ersten Tests keinen Fehler finden. ich habe sogar, mit einer Szene mehrer Lampen und Marker aktualisiert.

                              auch der auf LM einschalten und auf Vis abschalten hat funktioniert.(das synchrone

                              ich muss jetzt die nächsten Tage mal etwas komplexere Szenen einbinden.

                              Am Wochenende werde ich leider nicht dazu kommen, aber ich gebe auf jedenfalls nochmals Feedback, spät. Anfang nächster Woche.

                              Bis hierher erstmal ein Riesen Dankeschön, habe um ehrlich zu sein nicht dran geglaubt... :oops:

                              1 Reply Last reply
                              0
                              • D Offline
                                D Offline
                                dos1973
                                wrote on last edited by
                                #16

                                Hallo,

                                ich habe getestet und auch etwas verändert.

                                ich spare mir den DP: 'javascript.0.lmair.szenenr.01'

                                Fazit:bisher läuft gut

                                const idVis = 'javascript.0.lmair.marker.01'; // ID des Datenpunktes, der auf Vis reagiert (false/true)
                                const idMarker = 'javascript.0.lmair.marker.01';
                                const request = require('request');
                                const url = 'http://192.168.10.71/control?key=';
                                const js = 'system.adapter.javascript.' + instance;
                                
                                on({id: idVis, change: 'ne', fromNe: js}, function(dp) { // Triggern bei Wertänderung durch Vis
                                   var key = '08'; // aus
                                   if(dp.state.val) key = '07'; //ein
                                   request(url + key, function(error, response, body) {
                                      if(error) log('Fehler Request Steckdose', 'error');
                                   });
                                });
                                

                                ich reagiere jetzt nur auf den Markerpunkt, für den VIS Button und die Visualisierung

                                const idVis = 'javascript.0.lmair.marker.01'; // ID des Datenpunktes, der auf Vis reagiert (false/true)
                                const idMarker = 'javascript.0.lmair.marker.01';
                                

                                das brauche ich nicht mehr (glaube ich)

                                /*on(idMarker, function(dp) { // Triggern bei Wertänderung
                                   setState(idMarker, dp.state.val, true);
                                });*/
                                

                                MARKER HOL Script

                                Um den Lightmanager nicht unnötig zu belasten, gibt es denn die Möglichkeit, dass Script welches sich die Marker zustände holt nicht permanent laufe zu lassen, sondern nur wenn die VIS Button gedrückt werden, bzw. nur alle Minute etc.

                                Das Script holt sich alle Marker Daten

                                javascript.0.scriptEnabled.Lightmanager.params_json
                                

                                aktuell steht das im Script

                                // Start und Intervall:sekunden 
                                // --------------------------------------------------------------------------
                                setTimeout(DatenAuslesen, 1000);        // 
                                schedule('*/15 * * * * *', DatenAuslesen);  // 
                                

                                das scheint für den LM schon etwas viel, oder was bedeutet das - ich interpretiere 15 Sekunden. wenn es weniger wird, dann dauert es zu lange bis die buttons ihre status ändern.

                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                600

                                Online

                                32.4k

                                Users

                                81.3k

                                Topics

                                1.3m

                                Posts
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                ioBroker Community 2014-2025
                                logo
                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Recent
                                • Tags
                                • Unread 0
                                • Categories
                                • Unreplied
                                • Popular
                                • GitHub
                                • Docu
                                • Hilfe