Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

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

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[gelöst] Überwachen und schalten

Geplant Angeheftet Gesperrt Verschoben JavaScript
24 Beiträge 3 Kommentatoren 1.4k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • 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.:relaxed:

    O Offline
    O Offline
    ostseeskipper
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
      0
      • O Offline
        O Offline
        ostseeskipper
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • paul53P paul53

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

            Wie sieht die aus?

            O Offline
            O Offline
            ostseeskipper
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
              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
                schrieb am zuletzt editiert von ostseeskipper
                #21

                @paul53
                Cool danke, du bist genial.:+1:

                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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #22

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

                  /^javascript\.0\.Anel\.1\.R\d\.Rel_Status$/
                  
                  1 Antwort Letzte Antwort
                  0
                  • O ostseeskipper

                    @paul53
                    Cool danke, du bist genial.:+1:

                    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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #24

                      @paul53 said in Überwachen und schalten:

                      Paul, vielen Dank für eine so tolle Hilfe:+1: :relaxed:

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      643

                      Online

                      32.6k

                      Benutzer

                      82.2k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe