Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst]Datenpunkt auf true setzen

    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

    [gelöst]Datenpunkt auf true setzen

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

      Hallo zusammen,

      ich möchte einen Datenpunkt auf true setzen lassen, wenn verschiedene Bedingungen anderer Datenpunkte erfüllt sind.
      Ich möchte z,B, wenn ein Datenpunkt den Wert >=1 hat, dass der Datenpunkt auf true gesetzt wird, ist er =0 dann soll der Datenpunkt auf false gesetzt werden.

      Habe dazu ein Skript geschrieben, dass allerdings nicht funktioniert. Bin da noch anfänger daher bin ich da überfragt.
      Kann mir da jemand weiterhelfen?

      on({id: 'Systemvariable.0.Meldungen_Übersicht'/*Anzahl GESAMT*/, change: 'ne'} , function (obj) {
      
      var CCU_Meldungen = getState('Systemvariable.0.Servicemeldungen.Anzahl_GESAMT'/*Anzahl GESAMT*/).val;
      
      if (CCU_Meldungen >= 1) {   
              setState('Systemvariable.0.Meldungen_Übersicht'/*Meldungen Übersicht*/, true);
      }
        else if (CCU_Meldungen == 0) {
              setState('Systemvariable.0.Meldungen_Übersicht'/*Meldungen Übersicht*/, false);
      }
      });
      
      paul53 1 Reply Last reply Reply Quote 0
      • Dominik F.
        Dominik F. last edited by

        achja, vielleicht zum weiteren Verständnis.
        ich möchte den Datenpunkt nutzen, um ein Icon, wenn der Wert true ist, zum Blinken zu bringen.

        Gibt es vielleicht auch die Möglichkeit, wenn ich auf das Icon geklickt habe, den Datenpunkt wieder auf False zu setzen und nur bei einer neuen Änderung dieser wieder auf True geht?

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @Dominik F. last edited by paul53

          @Dominik-F
          Weshalb ist der Trigger-Datenpunkt ein anderer als der Datenpunkt, dessen Wert ausgewertet wird ? Versuche es mal so:

          on('Systemvariable.0.Servicemeldungen.Anzahl_GESAMT'/*Anzahl GESAMT*/, function (obj) {
             setState('Systemvariable.0.Meldungen_Übersicht'/*Meldungen Übersicht*/, !!obj.state.val);
          });
          
          Dominik F. 2 Replies Last reply Reply Quote 0
          • Dominik F.
            Dominik F. @paul53 last edited by

            @paul53

            weil ich keine große Ahnung habe von javascript 😞 Ehrlich gesagt wusste ich nur das was da rein muss, aber nicht was ^^

            1 Reply Last reply Reply Quote 0
            • Dominik F.
              Dominik F. @paul53 last edited by

              @paul53

              Jetzt funktioniert es, danke 🙂
              Wie kann ich denn mehrere Datenpunkte erfassen? Sollte ich den kompletten Block für jeden Datenpunkt neu schreiben oder geht das auch einfacher?

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Dominik F. last edited by

                @Dominik-F sagte:

                Wie kann ich denn mehrere Datenpunkte erfassen?

                Was für Datenpunkte sollen erfasst werden und wie soll das Ergebnis in Abhängigkeit der Datenpunkt-Werte aussehen ? Es gibt unendlich viele Möglichkeiten.

                Dominik F. 1 Reply Last reply Reply Quote 0
                • Dominik F.
                  Dominik F. @paul53 last edited by

                  @paul53

                  Ich würde gerne z.B, den Datenpunkt admin.0.info.updatesNumber mit einbinden. Wenn dieser >=1 ist, soll der Datenpunkt Systemvariable.0.Meldungen_Übersicht ebenfalls auf true sein. Das ganze soll eine Oder Funktion sein, also wenn der eine oder andere Datenpunkt >=1 ist, soll Meldungen_Übersicht auf true sein, sind beide auf 0, dann soll Meldungen_Übersicht auf false sein.

                  Mein oberstes Ziel ist, dass ich mehrere für mich wichtige Datenpunkte überwachen möchte. Falls ein Update, Servicemeldung etc auftritt, möchte ich das der Datenpunkt true ist, um in meiner Vis ein Icon zum Blinken zu bringen um in der Vis darauf aufmerksam gemacht zu werden.

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @Dominik F. last edited by paul53

                    @Dominik-F sagte:

                    wenn der eine oder andere Datenpunkt >=1 ist, soll Meldungen_Übersicht auf true sein, sind beide auf 0, dann soll Meldungen_Übersicht auf false sein.

                    const idService = 'Systemvariable.0.Servicemeldungen.Anzahl_GESAMT';
                    const idUpdates = 'admin.0.info.updatesNumber';
                    
                    var service = getState(idService).val;
                    var updates = getState(idUpdates).val;
                    
                    function sammelmeldung() {
                        var summe = service + updates;
                        setState('Systemvariable.0.Meldungen_Übersicht'/*Meldungen Übersicht*/, !!summe);
                    }
                    
                    sammelmeldung(); // Skriptstart
                    
                    on(idService, function(dp) {
                        service = dp.state.val;
                        sammelmeldung();
                    });
                    
                    on(idUpdates, function(dp) {
                        updates = dp.state.val;
                        sammelmeldung();
                    });
                    
                    Dominik F. 1 Reply Last reply Reply Quote 1
                    • Dominik F.
                      Dominik F. @paul53 last edited by

                      @paul53

                      Das Script scheint zu funktionieren, mir raucht nur gerade der Kopf damit ich es verstehe 😄

                      Also als ersten werden die 2 Variablen deklariert und der Wert des Datenpunktes wird in die Variable z.B. service geschrieben. In der Funktion Sammlung werden die Datenpunkte addiert und der Wert wird in den Datenpunkt Meldungen_Service geschrieben. Dort wird die Zahl in True oder False umgewandelt richtig? Ist es generell so, dass dabei 0=false und >=1 = true bedeutet?

                      Den Teil nach Skriptstart verstehe ich nicht so ganz. Besonders :

                      service = dp.state.val;
                          sammelmeldung();
                      

                      ist mir nicht ganz klar. Wird dort erst der Wert aus dem Datenpunkt in die Variable geschrieben? Sorry für die vielen Fragen. Ich stelle sie, damit ich sowas irgendwann selber schreiben kann.

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @Dominik F. last edited by paul53

                        @Dominik-F sagte :

                        der Wert wird in den Datenpunkt Meldungen_Service geschrieben. Dort wird die Zahl in True oder False umgewandelt richtig? Ist es generell so, dass dabei 0=false und >=1 = true bedeutet?

                        !!summe wandelt eine Zahl in einen boolschen Wert, wobei gilt: 0 --> false, != 0 --> true.

                        @Dominik-F sagte:

                        ist mir nicht ganz klar. Wird dort erst der Wert aus dem Datenpunkt in die Variable geschrieben?

                        dp.state.val enthält den Wert des Triggerdatenpunktes, der bei jeder Wertänderung in die Variable service geschrieben wird, um anschließend in der Funktion sammelmeldung() ausgewertet zu werden.

                        Dominik F. 1 Reply Last reply Reply Quote 1
                        • Dominik F.
                          Dominik F. @paul53 last edited by

                          @paul53

                          vielen Dank für deine Erklärung 🙂

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          871
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

                          javascript
                          2
                          11
                          743
                          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