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. Frage zu on Funktion

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.7k

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

Frage zu on Funktion

Frage zu on Funktion

Scheduled Pinned Locked Moved Skripten / Logik
3 Posts 2 Posters 353 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.
  • T Offline
    T Offline
    TOBO
    wrote on last edited by
    #1

    Hallo,

    ich habe eine Verständnisfrage zur on Funktion

    Diese Funktion wird immmer dann ausgeführt, wenn sich der Zustand vom Datenpunkt ändert. Würde sie dann in meinem Beispiel zweimal durchlaufen, wenn "Datenpunkt" Bool true irgendwo in der Vis gesetzt würde und durch das Script wieder gelöscht. Also hier im Beispiel wäre das Script selbst für die zweite Änderung verantwortlich und "Datenpunkt" würde zwei mal auf false gesetzt? Verstehe ich das richtig ?

    on("Datenpunkt", function(dp) { 
       setState(Datenpunkt, false);
    });
    

    Jetzt das gleiche, nur mit Bedingung "gt" . New value must be greater than old value (state.val > oldState.val) steht in der Doku über on. Hier würde setState nur ausgefürht, wenn "Datenpunkt" von false auf true wechselt. Ist das richtig ?

    on({id: "Datenpunkt", change: "gt"}, function (obj) {
       setState(Datenpunkt, false);
    });
    

    Und hier würde setState nur ausgefürht, wenn "Datenpunkt" von true auf false wechselt. Ist das richtig ?

    on({id: "Datenpunkt", change: "lt"}, function (obj) {
       setState(Datenpunkt, false);
    });
    

    Hoffe ich konnte mir klar genug ausdrücken.

    Beste Grüße.

    Tobo

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

      @TOBO:

      Würde sie dann in meinem Beispiel zweimal durchlaufen, wenn "Datenpunkt" Bool true irgendwo in der Vis gesetzt würde und durch das Script wieder gelöscht `
      Ja.
      @TOBO:

      Also hier im Beispiel wäre das Script selbst für die zweite Änderung verantwortlich und "Datenpunkt" würde zwei mal auf false gesetzt? Verstehe ich das richtig ? `
      Nein. Erst auf true, dann gleich wieder auf false. Es wird ja nur bei Wertänderung ausgelöst. Teste selbst:

      on("Datenpunkt", function(dp) {
         setState(Datenpunkt, false);
         log('ne ' + dp.state.val);
      });
      

      @TOBO:

      Jetzt das gleiche, nur mit Bedingung "gt". Hier würde setState nur ausgefürht, wenn "Datenpunkt" von false auf true wechselt. Ist das richtig ? `
      Ja.

      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
      • T Offline
        T Offline
        TOBO
        wrote on last edited by
        #3

        @paul53:

        Nein. Erst auf true, dann gleich wieder auf false. Es wird ja nur bei Wertänderung ausgelöst. Teste selbst:

        on("Datenpunkt", function(dp) {
           setState(Datenpunkt, false);
           log('ne ' + dp.state.val);
        });
        ```` `  
        

        Doch, weil ja die Funktion einmal auf Wertänderung reagiert und dann selbst den Wert von true auf false ändert und sich quasi somit seblst noch mal aufruft.

        Habe nun alle drei Möglichkeiten getestet und es ist genauso, wie ich es vermutet habe. Ich hatte nämlich bei einigen Funktionen ganz komische Ergebnisse, weil sie

        eben immer auf Wertänderung reagieren und dann zwei mal durchlaufen wurden. Nun verstehe ich das auch und kann das ändern.

        Gruß.

        Tobo

        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

        274

        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