Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Bedingung in Java für nicht erreichbares Gerät einbauen

    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

    Bedingung in Java für nicht erreichbares Gerät einbauen

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

      Ich habe mir für meinen HP Drucker folgendes Skript erstellt (kopiert). Es läuft auch sauber durch, nur leider nicht wenn der Drucker offline ist (was ja auch klar ist).
      Gibt es eine Möglichkeit die daraus resultierenden Log Einträge rauszufiltern?
      So in der Art: wenn IP nicht erreichbar, dann abbruch, ansonsten weiter mit dem Skript.

      Hier der Link zum original Skript

      Hier mein Skript. (hab eigentlich nur den CRON am Ende angepasst.)

      
      /**
       * Read informations from HP Printers;
       * 2021-04-16 @ TheAlphaGhost;
       */
       
      var printername = '192.168.0.29';
       
      var url = 'http://' + printername + '/DevMgmt/ConsumableConfigDyn.xml';
      var datapointname = 'HP';
      var request = require('request');
      var parseString = require('xml2js').parseString;
       
      // Create datapoints;
       
      createState('0_userdata.0.Drucker.' + datapointname + '.Black.ConsumableLabelCode');
      createState('0_userdata.0.Drucker.' + datapointname + '.Black.ConsumablePercentageLevelRemaining');
      createState('0_userdata.0.Drucker.' + datapointname + '.CMY.ConsumableLabelCode');
      createState('0_userdata.0.Drucker.' + datapointname + '.CMY.ConsumablePercentageLevelRemaining');
       
      function GetData() {
          request(url, function (error, response, body) {
              var xml, result;
              parseString(body, function (err, result) {
                  xml = JSON.stringify(result);
                  var json = JSON.parse(xml);
       
                  for (var i in json['ccdyn:ConsumableConfigDyn']['ccdyn:ConsumableInfo']) {
                      let node = json['ccdyn:ConsumableConfigDyn']['ccdyn:ConsumableInfo'][i];
                      let ConsumableFamilyName = node['dd:ConsumableFamilyName']
                      let ConsumableLabelCode = node['dd:ConsumableLabelCode'];
                      let ConsumablePercentageLevelRemaining = node['dd:ConsumablePercentageLevelRemaining'];
                      let ProductNumber = node['dd:ProductNumber'];
                      var ColorDataPoint = "";
       
                      switch (String(ConsumableLabelCode)) {
                          case "K":
                              ColorDataPoint = "Black";
                              break;
                         
                          case "CMY":
                              ColorDataPoint = "CMY";
                              break;
                         
                          default:
                              continue;
                              log("[ERROR] ColorDataPoint not found for " + ConsumableLabelCode + "!");
                      };
       
                      setState('0_userdata.0.Drucker.' + datapointname + '.' + ColorDataPoint + '.ConsumableLabelCode', String(ConsumableLabelCode).replace((/[^*a-zA-Z0-9]/g), ""));
                      setState('0_userdata.0.Drucker.' + datapointname + '.' + ColorDataPoint + '.ConsumablePercentageLevelRemaining', String(ConsumablePercentageLevelRemaining).replace((/[^*a-zA-Z0-9]/g), ""));
                     
                  };
              });
          });
      };
       
      schedule("0 14,16,18,20,22 * * *", function () {
          GetData();
      })
      
      

      Wäre schön, wenn mir jemand sagen kann wo (Zeilennummer) ich was hinzufügen muss, damit kein Fehler mehr auftaucht, wenn der Drucker offline ist.

      Vielen Dank.

      bahnuhr 1 Reply Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active @rtwl last edited by

        @rtwl

        Nimm den ping Adapter.
        Und dann eine if Abfrage ob ping true ist.

        rtwl 1 Reply Last reply Reply Quote 0
        • rtwl
          rtwl @bahnuhr last edited by

          @bahnuhr
          Gute Idee.
          Den Ping Adapter hab ich sogar für den Drucker schon am laufen.

          Nur kann ich bei Java Skript nur copy&paste...
          Denkst du @bahnuhr du könntest mir dabei helfen?
          Die Object ID des Druckers: radar2.0.Drucker._here

          bahnuhr 2 Replies Last reply Reply Quote 0
          • bahnuhr
            bahnuhr Forum Testing Most Active @rtwl last edited by

            @rtwl

            zeile 59 ändern in:

            if (DP_ping_state) GetData();
            

            so müsste es funktionieren.

            Den DP musst du natürlich ändern!

            rtwl 1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active @rtwl last edited by

              @rtwl sagte in Bedingung in Java für nicht erreichbares Gerät einbauen:

              Die Object ID des Druckers: radar2.0.Drucker._here

              Dies ist aber nicht ping !

              1 Reply Last reply Reply Quote 0
              • rtwl
                rtwl @bahnuhr last edited by

                @bahnuhr sagte in Bedingung in Java für nicht erreichbares Gerät einbauen:

                so müsste es funktionieren.

                Vielen Dank, ich hab deine Lösung mal so eingepflegt.

                if (radar2.0.Drucker._here) GetData();
                

                Nein, das ist der Radar2 adapter, wusste vorhin nicht mehr welchen ich aktuell verwende. Hab mich aus irgendeinem Grund für diesen anstelle des Ping Adapters entschieden.
                Ist das ein Problem, wenn es nicht der Ping Adapter ist, sondern dieser?
                Der DP liefert auch true/false Werte

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

                Support us

                ioBroker
                Community Adapters
                Donate

                841
                Online

                31.9k
                Users

                80.3k
                Topics

                1.3m
                Posts

                2
                6
                146
                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