Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Weiterverarbeiten der Stati des Ping Adapters

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Weiterverarbeiten der Stati des Ping Adapters

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

      Hi,

      ich möchte verschiedene Ip-Adressen bzw. deren Stati via Script auswerten und in Abhängigkeit des Status eine Variable setzen. Das ganze wollte ich mit folgendem Script machen, doch unabhängig vom hinterlegten Status (true/false) des Ping-Adapters im Objekte Baum wird die Variable immer auf false gesetzt.

      Vielleicht kann mir einer sagen wo mein Fehler ist.

      Danke Peoples

      createState('Netzwerk.GesamtStatus', false, {
          type: 'boolean',
          name: 'Netzwerkstatus',
          desc: 'Gesamtstatus Netzwerk'
      });
      var idState = 'javascript.0.Netzwerk.GesamtStatus'; // auf richtige Instanz achten
      
      schedule("* * * * *", function () {
      
          if(("ping.0.ioBroker-RasPi.192_168_1_1" === true) &&
             ("ping.0.ioBroker-RasPi.192_168_1_2" === true) &&
              ("ping.0.ioBroker-RasPi.192_168_1_3" === true)
          ){
              setState(idState, true);
              log ("a");
          }
          else{
              setState(idState, false);
              log ("b");
          }
      });
      
      
      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

            if(("ping.0.ioBroker-RasPi.192_168_1_1" === true) &&
               ("ping.0.ioBroker-RasPi.192_168_1_2" === true) &&
                ("ping.0.ioBroker-RasPi.192_168_1_3" === true)
                ) {
        

        –>

            if(getState("ping.0.ioBroker-RasPi.192_168_1_1").val === true && getState("ping.0.ioBroker-RasPi.192_168_1_2").val === true && getState("ping.0.ioBroker-RasPi.192_168_1_3").val === true) {
        
        
        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 last edited by

          Da der Ping-Adapter ohnehin zyklisch arbeitet, sollte man nicht mit einem weiteren Zyklus (schedule) abfragen, sondern besser auf Änderung triggern:

          var idState = 'javascript.0.Netzwerk.GesamtStatus'; // auf richtige Instanz achten
          
          var ping1 = getState("ping.0.ioBroker-RasPi.192_168_1_1").val;
          var ping2 = getState("ping.0.ioBroker-RasPi.192_168_1_2").val;
          var ping3 = getState("ping.0.ioBroker-RasPi.192_168_1_3").val;
          
          function check() {
              if(ping1 && ping2 && ping3) {
                  setState(idState, true);
                  log ("a");
              } else { 
                  setState(idState, false);
                  log ("b");
              }
          }
          
          check();  // script start
          
          on("ping.0.ioBroker-RasPi.192_168_1_1", function(dp) {
              ping1 = dp.state.val;
              check();
          });
          
          on("ping.0.ioBroker-RasPi.192_168_1_2", function(dp) {
              ping2 = dp.state.val;
              check();
          });
          
          on("ping.0.ioBroker-RasPi.192_168_1_3", function(dp) {
              ping3 = dp.state.val;
              check();
          });
          
          
          1 Reply Last reply Reply Quote 0
          • Peoples
            Peoples last edited by

            Perfekt! Danke!

            Eine weitere Frage habe ich jedoch dazu noch:

            Kann man auch die "Inhalte / Unterpunkte" eines "Channels" sprich die einzelnen Einträge von "ping.0.ioBroker-RasPi" auslesen?

            So könnte ich das dann in einer foreach - Schleife automatisieren und bräuchte nicht bei jedem neuen Eintrag im Ping-Adapter das Script anpassen.

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

              Das müsste mit einem Selektor gehen:

              var idState = 'javascript.0.Netzwerk.GesamtStatus'; // auf richtige Instanz achten
              
              schedule("* * * * *", function () {
                  var allpings = true;
                  $('channel[id=ping.0.ioBroker-RasPi*]').each(function(id, i) {
                      if(!getState(id).val) allpings = false;
                      log(id + ': ' + allpings);
                  });
                  setState(idState, allpings);
              });
              
              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              488
              Online

              31.7k
              Users

              79.8k
              Topics

              1.3m
              Posts

              2
              5
              1391
              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