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. [gelöst] Datenpunkt aktualisieren ohne aktion

NEWS

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

  • 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] Datenpunkt aktualisieren ohne aktion

Scheduled Pinned Locked Moved Skripten / Logik
11 Posts 4 Posters 2.2k 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.
  • D Offline
    D Offline
    doctorultra
    wrote on last edited by
    #1

    Hallo,

    ich möchte gern wissen, wie ich einen Datenpunkt/ Zustand verändern kann ohne das ein Script reagiert, welcher diesen Zustand überwachen soll?

    1 Reply Last reply
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      wrote on last edited by
      #2

      Erstmal gar nicht - bzw nur über tricks.

      Dur könntest ein zweites State (oder eine Variable wenn es das gleiche Skript ist) haben der sich merkt das dein Skript einmalig die Änderung ignorieren soll und das im Trigger prüfen.

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Reply Last reply
      0
      • paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #3

        @doctorultra:

        wie ich einen Datenpunkt/ Zustand verändern kann ohne das ein Script reagiert, welcher diesen Zustand überwachen soll? `
        Welcher Zustand soll verändert werden ?

        Aus welchem Grund soll das überwachende Script nicht reagieren ?

        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
          doctorultra
          wrote on last edited by
          #4

          Ich habe einen Schalter gebaut, auf den ein Script reagieren soll. An- und ausschalten eines Receivers.

          Nur wenn der Receiver manuell angeschaltet wird, dann steht der Schalter natürlich immer noch auf aus.

          Deshalb habe ich mir ein Abfrage per parser gebaut um den Status des Receivers abzufragen .

          Meine Frage, ich würde gern aller 5 Sekunden den Schalter aktualisieren mit den tatsächlichen Status ohne etwas auszulösen.

          Ich hoffe ich konnte es verständlich rüber bringen?

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

            @doctorultra:

            …ein Abfrage per parser gebaut um den Status des Receivers abzufragen .

            Meine Frage, ich würde gern aller 5 Sekunden den Schalter aktualisieren mit den tatsächlichen Status ohne etwas auszulösen. `
            Du meinst sicherlich, dass der Receiver alle 5 s abgefragt wird ?

            Den Schalter muss man nur setzen, wenn dessen Zustand nicht dem des Receivers entspricht. Um den Ein-Befehl nicht zu senden, wenn der Receiver manuell eingeschaltet wurde, schickt man eine Bestätigung mit.

            setState(idSwi, true, true); // Receiver läuft (manuell), Schalteranzeige wird angepasst
            setState(idSwi, true);  // Receiver wird über Schalter eingeschaltet
            

            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
            • paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #6

              Beispielscript:

              const idSwi = '...'; // Datenpunkt-ID des Schalters
              const idRcv = '...'; // Datenpunkt-ID des Receivers (vom Parser)
              
              var swi = getState(idSwi).val;
              
              on({id: idSwi, ack: true}, function(dp) {
                 swi = dp.state.val;
              }
              
              on(idRcv, function(dp) { // Triggert bei Wertänderung
                 if(dp.state.val != swi) setState(idSwi, dp.state.val, true); // Wertänderung des Schalters ohne zu senden
              });
              

              EDIT: Der tatsächliche Schalterzustand entspricht bei dieser Version nicht dem Wert im Datenpunkt. Besser ist es, es wird an den Schalter gesendet, falls es nicht eine unerwünschte Reaktion auslöst:

                 if(dp.state.val != swi) setState(idSwi, dp.state.val); // Senden des manuellen Receiver-Zustands an den Schalter
              
              

              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
                doctorultra
                wrote on last edited by
                #7

                Das funktioniert nicht, wenn ich den Schalter aktualisiere reagiert der andere Script immer drauf?

                Script für check des Datenpunktes

                var Intervall;
                
                Intervall = setInterval(function () {
                  if (getState("parser.0.Dreambox_Standby").val == ('' + getState("javascript.0.myStates.Dreambox8000_switch").val)) {
                    if (getState("parser.0.Dreambox_Standby").val == 'true') {
                      setState("javascript.0.myStates.Dreambox8000_switch"/*Dreambox8000_switch*/, false, true);
                    } else {
                      setState("javascript.0.myStates.Dreambox8000_switch"/*Dreambox8000_switch*/, true, true);
                    }
                  }
                }, 3000);
                

                Logik für anschalten

                on({id: "javascript.0.myStates.Dreambox8000_switch"/*Dreambox8000_switch*/, change: "any"}, function (obj) {
                  var value = obj.state.val;
                  var oldValue = obj.oldState.val;
                  if (getState("parser.0.Dreambox_Standby").val == 'true') {
                    try {
                      require("request")('http://192.168.10.21/web/powerstate?newstate=4').on("error", function (e) {console.error(e);});
                    } catch (e) { console.error(e); }
                  } else {
                    try {
                      require("request")('http://192.168.10.21/web/powerstate?newstate=5').on("error", function (e) {console.error(e);});
                    } catch (e) { console.error(e); }
                  }
                });
                
                1 Reply Last reply
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #8

                  Beide Funktionen (Reaktion auf Parser / Reaktion auf Schalter) sollten in ein gemeinsames Script, um eine gemeinsame Variable (Ist-Zustand Receiver) verwenden zu können. Die zyklische Abfrage des Parser-Datenpunktes ist unnötig, da der Parser-Adapter die zyklische Abfrage vornimmt (zu jedem Datenpunkt einstellbar). Versuche es mal mit folgendem Script:

                  const idSwi = "javascript.0.myStates.Dreambox8000_switch"; // Datenpunkt-ID des Schalters
                  const idStandby = "parser.0.Dreambox_Standby"; // Datenpunkt-ID Standby (vom Parser)
                  const urlOn = 'http://192.168.10.21/web/powerstate?newstate=4';
                  const urlOff = 'http://192.168.10.21/web/powerstate?newstate=5';
                  const request = require("request");
                  
                  var rcv = true;  // Receiver ist Ein
                  if(getState(idStandby).val == 'true') rcv = false;
                  setState(idSwi, rcv, true);  // Scriptstart
                  
                  on(idStandby, function(dp) { // Triggert bei Wertänderung Standby
                     if(dp.state.val == 'true') rcv = false;
                     else rcv = true;
                     setState(idSwi, rcv, true);
                  });
                  
                  on(idSwi, function(dp) {
                     if(dp.state.val != rcv) {  // Soll ungleich Ist
                        if(dp.state.val) {  // Soll: Ein
                           try {
                               request(urlOn).on("error", function (e) {console.error(e);});
                           } catch (e) { console.error(e); }
                        } else {  // Soll: Aus
                           try {
                               request(urlOff).on("error", function (e) {console.error(e);});
                           } catch (e) { console.error(e); }
                        }
                     }
                  });
                  
                  

                  Entscheidend ist die Abfrage Sollzustand != Istzustand,

                     if(dp.state.val != rcv) {  // Soll ungleich Ist
                  
                  

                  die verhindert, dass eine Aktion erfolgt, wenn Sollzustand == Istzustand, also der Trigger die Folge von setState(idSwi, rcv, true) ist.

                  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
                    doctorultra
                    wrote on last edited by
                    #9

                    Super hat funktioniert, aber noch eine kurze Frage

                    was bedeutet das dp in function ist, damit das Object gemeint?

                    function(dp)

                    1 Reply Last reply
                    0
                    • modmaxM Offline
                      modmaxM Offline
                      modmax
                      wrote on last edited by
                      #10

                      Genau so ist es:

                      Manche schreiben "function(obj)", andere "function(dp)".

                      Ist nur die Benamselung einer variable oder objekts … die an die Funktion als Parameter übergeben wird.

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

                        @doctorultra:

                        was bedeutet das dp in function ist, damit das Object gemeint? `
                        Ja, das ist das Datenpunkt-Objekt, das mit dem Namen dp an die Funktion übergeben wird. Datenpunkte unterscheiden sich von anderen Objekten, da sie zusätzlich noch einen Zustand (state und oldState) enthalten.
                        @doctorultra:

                        Super hat funktioniert `
                        Dann markiere bitte das Thema als gelöst (im Betreff des ersten Beitrags).

                        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

                        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

                        572

                        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