Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Überwachen und schalten

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    813

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.6k

[gelöst] Überwachen und schalten

Scheduled Pinned Locked Moved JavaScript
24 Posts 3 Posters 1.4k Views 2 Watching
  • 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.
  • O ostseeskipper

    @ostseeskipper
    Um eine Endlosschleife zu vermeiden, überprüft man, ob die Quelle des Triggers nicht ein Skript ist:

    on({id: id, fromNe: 'system.adapter.javascript.0'}, function(dp) {});
    

    @paul53 besten Dank.
    muss den tollen Input von dir und @mickym nun erst mal verarbeiten.👍
    fromNe: heisst also "nicht von"?

    paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by
    #13

    @ostseeskipper sagte: fromNe: heisst also "nicht von"?

    Ja, siehe Doku.

    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
    1
    • O Offline
      O Offline
      ostseeskipper
      wrote on last edited by
      #14

      @mickym said in Überwachen und schalten:

      Du wirst ja auch feststellen, dass wenn Du über Javascript im iobroker mit ack=true setzt eigentlich kein Schaltvorgang erfolgt.

      Hab mit den Schaltern (erst mal noch ohne Funktion) rumgespielt und denke das hilft zum erkennen.

      @paul53 auf dich komm ich bestimmt noch mal zu da es nicht nur 1 Schalter ist sondern 8 wollte ich nur mit einem Trigger arbeiten. "enums" heisst glaub ich das Zauberwort. Dann müsste ich aber in der Trigger Funktion auswerten welcher der 8 nun welchen Wert haben soll.

      Aber nun bau ich das erst mal nur für einen Schalter bis der funktioniert.

      Schönen Abend noch.☺

      O 1 Reply Last reply
      0
      • O ostseeskipper

        @mickym said in Überwachen und schalten:

        Du wirst ja auch feststellen, dass wenn Du über Javascript im iobroker mit ack=true setzt eigentlich kein Schaltvorgang erfolgt.

        Hab mit den Schaltern (erst mal noch ohne Funktion) rumgespielt und denke das hilft zum erkennen.

        @paul53 auf dich komm ich bestimmt noch mal zu da es nicht nur 1 Schalter ist sondern 8 wollte ich nur mit einem Trigger arbeiten. "enums" heisst glaub ich das Zauberwort. Dann müsste ich aber in der Trigger Funktion auswerten welcher der 8 nun welchen Wert haben soll.

        Aber nun bau ich das erst mal nur für einen Schalter bis der funktioniert.

        Schönen Abend noch.☺

        O Offline
        O Offline
        ostseeskipper
        wrote on last edited by
        #15

        @paul53 @mickym
        Dank Eurer Hilfe bin ich soweit das der Trigger über die Funktion den Datenpunkt schaltet.

        on({id: idVar, fromNe: 'system.adapter.javascript.0', change: 'ne', ack:false}, function (obj) { //nur unbestätigte Änderungen und nicht durch ein javascript geändert
                log("AUSGELÖST: Datenpunkt unbestätigt nicht aus Script geändert" ,"info");
            setRelais(1)// Hier der Code, der aber nur ausgeführt wird, falls aktiv im VIS etc. ausgeführt. ACK ist da standardmäßig immer false.
        });
        

        Da es 8 Relais gibt würde ich gern alle 8 gleichzeitig in einem Script überwachen lassen.
        Dafür habe ich schon mal die 8 Datenpunkte in ein Enum zusammengefasst.
        Wie muss ich varID (Datenpunktvariable) ändern um enum.functions.relaisschalter zu triggern?
        Wie kann ich dann auslesen welcher der Datenpunkte ausgelöst hat damit ich das in setRelais(x) übergeben kann.

        (wenn man auf enum nicht triggern kann, meine so was gelesen zu haben, leg ich halt 8 x varID1-8 als Array an) oder gibt ne schlankere Variante

        paul53P 1 Reply Last reply
        0
        • O ostseeskipper

          @paul53 @mickym
          Dank Eurer Hilfe bin ich soweit das der Trigger über die Funktion den Datenpunkt schaltet.

          on({id: idVar, fromNe: 'system.adapter.javascript.0', change: 'ne', ack:false}, function (obj) { //nur unbestätigte Änderungen und nicht durch ein javascript geändert
                  log("AUSGELÖST: Datenpunkt unbestätigt nicht aus Script geändert" ,"info");
              setRelais(1)// Hier der Code, der aber nur ausgeführt wird, falls aktiv im VIS etc. ausgeführt. ACK ist da standardmäßig immer false.
          });
          

          Da es 8 Relais gibt würde ich gern alle 8 gleichzeitig in einem Script überwachen lassen.
          Dafür habe ich schon mal die 8 Datenpunkte in ein Enum zusammengefasst.
          Wie muss ich varID (Datenpunktvariable) ändern um enum.functions.relaisschalter zu triggern?
          Wie kann ich dann auslesen welcher der Datenpunkte ausgelöst hat damit ich das in setRelais(x) übergeben kann.

          (wenn man auf enum nicht triggern kann, meine so was gelesen zu haben, leg ich halt 8 x varID1-8 als Array an) oder gibt ne schlankere Variante

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #16

          @ostseeskipper sagte: Wie muss ich varID (Datenpunktvariable) ändern um enum.functions.relaisschalter zu triggern?

          Mit dem $Selector:

          $('*(functions=relaisschalter)').on(function(dp) {
              log('Auslöser: ' + dp.id + ', Wert: ' + dp.state.val);
          });
          

          oder mit RegExp im on(), da die 8 IDs sicherlich eine einheitliche Struktur haben, die sich von anderen Datenpunkt-IDs unterscheidet.

          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
          • O Offline
            O Offline
            ostseeskipper
            wrote on last edited by
            #17

            @paul53
            Danke.
            Hab das rüberkopiert aber es löst nicht aus.
            Es sieht auch so komisch aus als ob es Text ist
            efc3f419-f135-4a8b-a256-bc6096fe5872-grafik.png

            Allerdings ehrlich gesagt ist mir leider grad 1 Schritt zu weit. Ist schwer grad, da ich auch keinen Bezug zu meiner enum Liste enum.functions.relaisschalter finde.

            Ja die 8 ID's haben eine einheitliche Struktur
            Hatte sgrad mit on und dem Array probiert, hab allerdings aktuell die Herausforderung das ich noch nicht weiss wie ich ermitteln kann welches der 8 der Auslöser war.

            on({id: [idVar1,idVar2,idVar3,idVar4,idVar5,idVar6,idVar7,idVar8], fromNe: 'system.adapter.javascript.0', change: 'ne', ack:false}, function (obj) { //nur unbestätigte Änderungen und nicht durch ein javascript geändert
                    log("AUSGELÖST: Datenpunkt unbestätigt nicht aus Script geändert" ,"info");
                setRelais(1)// Hier der Code, der aber nur ausgeführt wird, falls aktiv im VIS etc. ausgeführt. ACK ist da standardmäßig immer false.
            });
            
            paul53P 1 Reply Last reply
            0
            • O ostseeskipper

              @paul53
              Danke.
              Hab das rüberkopiert aber es löst nicht aus.
              Es sieht auch so komisch aus als ob es Text ist
              efc3f419-f135-4a8b-a256-bc6096fe5872-grafik.png

              Allerdings ehrlich gesagt ist mir leider grad 1 Schritt zu weit. Ist schwer grad, da ich auch keinen Bezug zu meiner enum Liste enum.functions.relaisschalter finde.

              Ja die 8 ID's haben eine einheitliche Struktur
              Hatte sgrad mit on und dem Array probiert, hab allerdings aktuell die Herausforderung das ich noch nicht weiss wie ich ermitteln kann welches der 8 der Auslöser war.

              on({id: [idVar1,idVar2,idVar3,idVar4,idVar5,idVar6,idVar7,idVar8], fromNe: 'system.adapter.javascript.0', change: 'ne', ack:false}, function (obj) { //nur unbestätigte Änderungen und nicht durch ein javascript geändert
                      log("AUSGELÖST: Datenpunkt unbestätigt nicht aus Script geändert" ,"info");
                  setRelais(1)// Hier der Code, der aber nur ausgeführt wird, falls aktiv im VIS etc. ausgeführt. ACK ist da standardmäßig immer false.
              });
              
              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #18

              @ostseeskipper sagte: Ja die 8 ID's haben eine einheitliche Struktur

              Wie sieht die aus?

              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

              O 1 Reply Last reply
              0
              • paul53P paul53

                @ostseeskipper sagte: Ja die 8 ID's haben eine einheitliche Struktur

                Wie sieht die aus?

                O Offline
                O Offline
                ostseeskipper
                wrote on last edited by
                #19

                @paul53

                const idVar1 = 'javascript.0.Anel.1.R1.Rel_Status'; // Datenpunkt-ID 
                const idVar2 = 'javascript.0.Anel.1.R2.Rel_Status'; // Datenpunkt-ID 
                const idVar3 = 'javascript.0.Anel.1.R3.Rel_Status'; // Datenpunkt-ID 
                const idVar4 = 'javascript.0.Anel.1.R4.Rel_Status'; // Datenpunkt-ID 
                const idVar5 = 'javascript.0.Anel.1.R5.Rel_Status'; // Datenpunkt-ID 
                const idVar6 = 'javascript.0.Anel.1.R6.Rel_Status'; // Datenpunkt-ID 
                const idVar7 = 'javascript.0.Anel.1.R7.Rel_Status'; // Datenpunkt-ID 
                const idVar8 = 'javascript.0.Anel.1.R8.Rel_Status'; // Datenpunkt-ID 
                
                paul53P 1 Reply Last reply
                0
                • O ostseeskipper

                  @paul53

                  const idVar1 = 'javascript.0.Anel.1.R1.Rel_Status'; // Datenpunkt-ID 
                  const idVar2 = 'javascript.0.Anel.1.R2.Rel_Status'; // Datenpunkt-ID 
                  const idVar3 = 'javascript.0.Anel.1.R3.Rel_Status'; // Datenpunkt-ID 
                  const idVar4 = 'javascript.0.Anel.1.R4.Rel_Status'; // Datenpunkt-ID 
                  const idVar5 = 'javascript.0.Anel.1.R5.Rel_Status'; // Datenpunkt-ID 
                  const idVar6 = 'javascript.0.Anel.1.R6.Rel_Status'; // Datenpunkt-ID 
                  const idVar7 = 'javascript.0.Anel.1.R7.Rel_Status'; // Datenpunkt-ID 
                  const idVar8 = 'javascript.0.Anel.1.R8.Rel_Status'; // Datenpunkt-ID 
                  
                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by paul53
                  #20

                  @ostseeskipper
                  Dann mit RegExp z.B. so:

                  on({id: /^javascript\.0\.Anel\.1\.R\d\.Rel_Status$/, fromNe: 'system.adapter.javascript.0', change: 'ne', ack:false}, function (obj) { //nur unbestätigte Änderungen und nicht durch ein javascript geändert
                      log('Auslöser: ' + obj.id);
                      log("AUSGELÖST: Datenpunkt unbestätigt nicht aus Script geändert" ,"info");
                      setRelais(1)// Hier der Code, der aber nur ausgeführt wird, falls aktiv im VIS etc. ausgeführt. ACK ist da standardmäßig immer false.
                  })
                  

                  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

                  O 2 Replies Last reply
                  1
                  • paul53P paul53

                    @ostseeskipper
                    Dann mit RegExp z.B. so:

                    on({id: /^javascript\.0\.Anel\.1\.R\d\.Rel_Status$/, fromNe: 'system.adapter.javascript.0', change: 'ne', ack:false}, function (obj) { //nur unbestätigte Änderungen und nicht durch ein javascript geändert
                        log('Auslöser: ' + obj.id);
                        log("AUSGELÖST: Datenpunkt unbestätigt nicht aus Script geändert" ,"info");
                        setRelais(1)// Hier der Code, der aber nur ausgeführt wird, falls aktiv im VIS etc. ausgeführt. ACK ist da standardmäßig immer false.
                    })
                    
                    O Offline
                    O Offline
                    ostseeskipper
                    wrote on last edited by ostseeskipper
                    #21

                    @paul53
                    Cool danke, du bist genial.👍

                    Nun muss ich mir die obj.id nur noch zerlegen da ich einfach nur die Zahl von 1-8 brauche.
                    Das würde ich per Text und parseInt oder so machen. Oder gibts da noch nen schlankeren Trick? (Sorry ich komm aus der SQL Ecke)

                    paul53P 1 Reply Last reply
                    0
                    • paul53P paul53

                      @ostseeskipper
                      Dann mit RegExp z.B. so:

                      on({id: /^javascript\.0\.Anel\.1\.R\d\.Rel_Status$/, fromNe: 'system.adapter.javascript.0', change: 'ne', ack:false}, function (obj) { //nur unbestätigte Änderungen und nicht durch ein javascript geändert
                          log('Auslöser: ' + obj.id);
                          log("AUSGELÖST: Datenpunkt unbestätigt nicht aus Script geändert" ,"info");
                          setRelais(1)// Hier der Code, der aber nur ausgeführt wird, falls aktiv im VIS etc. ausgeführt. ACK ist da standardmäßig immer false.
                      })
                      
                      O Offline
                      O Offline
                      ostseeskipper
                      wrote on last edited by
                      #22

                      @paul53
                      Paul, kann ich mir irgendwie einfach das \d\ in eine variable holen?

                      /^javascript\.0\.Anel\.1\.R\d\.Rel_Status$/
                      
                      1 Reply Last reply
                      0
                      • O ostseeskipper

                        @paul53
                        Cool danke, du bist genial.👍

                        Nun muss ich mir die obj.id nur noch zerlegen da ich einfach nur die Zahl von 1-8 brauche.
                        Das würde ich per Text und parseInt oder so machen. Oder gibts da noch nen schlankeren Trick? (Sorry ich komm aus der SQL Ecke)

                        paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by
                        #23

                        @ostseeskipper sagte: Nun muss ich mir die obj.id nur noch zerlegen

                            let id = obj.id.split('.');
                            let relais = parseInt(id[4].substr(1,1));
                        

                        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

                        O 1 Reply Last reply
                        1
                        • paul53P paul53

                          @ostseeskipper sagte: Nun muss ich mir die obj.id nur noch zerlegen

                              let id = obj.id.split('.');
                              let relais = parseInt(id[4].substr(1,1));
                          
                          O Offline
                          O Offline
                          ostseeskipper
                          wrote on last edited by
                          #24

                          @paul53 said in Überwachen und schalten:

                          Paul, vielen Dank für eine so tolle Hilfe👍 ☺

                          1 Reply Last reply
                          0

                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                          With your input, this post could be even better 💗

                          Register Login
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          795

                          Online

                          32.8k

                          Users

                          82.7k

                          Topics

                          1.3m

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

                          • Don't have an account? Register

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