Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. wie subscribe ?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    wie subscribe ?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Z
      Zamanis last edited by

      Hallo liebe Programmergemeinde,

      wie mache ich am Besten einen subscribe richtig, wenn ich möchte daß erst ausgelöst wird, wenn sich der neue Werte um mehr als 200 vom vorherigen unterscheidet ?

      on({id: 'hm-rpc.0.xxx.1.LUX', ??? , change: 'ne', logic: 'and' }, 
      function (obj) 
      {
          ...
      });
      

      Danke im Voraus für die Antwort !
      und LG
      Andreas

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Zamanis last edited by paul53

        @Zamanis sagte:

        wenn sich der neue Werte um mehr als 200 vom vorherigen unterscheidet ?

        on('hm-rpc.0.xxx.1.LUX', function (dp) { // triggert bei Wertänderung
            if(Math.abs(dp.state.val - dp.oldState.val) > 200) {
                ...
            }
        });
        
        1 Reply Last reply Reply Quote 0
        • Z
          Zamanis last edited by

          Das geht natürlich, aber jetzt wird bei jeder Änderung ausgelöst und dann erst geprüft, ober der Wert mehr als 200 unterscheidlich ist. Das möchte ich nicht, sondern dass er erst auslöst, wenn Wert unterschiedlich 200 zu altem Wert...

          paul53 AlCalzone 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @Zamanis last edited by paul53

            @Zamanis sagte in wie subscribe ?:

            dass er erst auslöst, wenn Wert unterschiedlich 200 zu altem Wert...

            Du erwartest zu viel von der Trigger-Funktion. Außerdem bedeutet es, dass ein Sprung von > 200 Lux erfolgen muss, damit getriggert wird.
            Wenn allerdings die Aktion ausgeführt werden soll, wenn die Wertdifferenz zur letzten Aktion > 200 Lux beträgt, kann man ohnehin nicht auf die Trigger-Werte zurückgreifen.

            var lux = getState('hm-rpc.0.xxx.1.LUX').val;
            
            on('hm-rpc.0.xxx.1.LUX', function (dp) { // triggert bei Wertänderung
                if(Math.abs(dp.state.val - lux) > 200) {
                    lux = dp.state.val;
                    ...
                }
            });
            
            1 Reply Last reply Reply Quote 0
            • AlCalzone
              AlCalzone Developer @Zamanis last edited by

              @Zamanis sagte in wie subscribe ?:

              Das geht natürlich, aber jetzt wird bei jeder Änderung ausgelöst und dann erst geprüft, ober der Wert mehr als 200 unterscheidlich ist. Das möchte ich nicht

              Aber genau das macht der Adapter hinter den Kulissen für die anderen Trigger-Bedingungen auch. Wenn du Logik möchtest, die der Adapter nicht selbst kann, musst du dich also selbst drum kümmern.

              1 Reply Last reply Reply Quote 0
              • Z
                Zamanis last edited by

                @ AlCalzone : Mir geht es um resourcenschonende Programmierung. Wenn letztendlich der Adapter hinter den Kulissen das Gleiche tut, gebe ich Dir recht, dann macht es keinen Unterschied, ob der Adapter dies prüft oder ich in der Programmierung...

                1 Reply Last reply Reply Quote 0
                • Z
                  Zamanis last edited by

                  @paul53 :
                  Danke Dir für die Antworten. So wie Dein code-Beispiel ist, hattee ich es im Vorfeld auch schon gelöst. Ich wollte nur wissen, ob es einen 'besseren' Weg gibt, da mir nicht klar ist, wie die Datenbanktrigger ablaufen...
                  LG

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  881
                  Online

                  31.8k
                  Users

                  80.0k
                  Topics

                  1.3m
                  Posts

                  javascript
                  3
                  7
                  335
                  Loading More Posts
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes
                  Reply
                  • Reply as topic
                  Log in to reply
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  The ioBroker Community 2014-2023
                  logo