Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Einsteigerfragen
  4. Bedingung in Java für nicht erreichbares Gerät einbauen

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    14
    1
    2.1k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    2.5k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    1.3k

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

Geplant Angeheftet Gesperrt Verschoben Einsteigerfragen
6 Beiträge 2 Kommentatoren 263 Aufrufe 2 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • rtwlR Offline
    rtwlR Offline
    rtwl
    schrieb am zuletzt editiert von
    #1

    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.

    -Peter

    bahnuhrB 1 Antwort Letzte Antwort
    0
    • rtwlR rtwl

      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.

      bahnuhrB Online
      bahnuhrB Online
      bahnuhr
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #2

      @rtwl

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


      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
      Danke.
      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
      ScreenToGif :https://www.screentogif.com/downloads.html

      rtwlR 1 Antwort Letzte Antwort
      0
      • bahnuhrB bahnuhr

        @rtwl

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

        rtwlR Offline
        rtwlR Offline
        rtwl
        schrieb am zuletzt editiert von
        #3

        @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

        -Peter

        bahnuhrB 2 Antworten Letzte Antwort
        0
        • rtwlR rtwl

          @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

          bahnuhrB Online
          bahnuhrB Online
          bahnuhr
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #4

          @rtwl

          zeile 59 ändern in:

          if (DP_ping_state) GetData();
          

          so müsste es funktionieren.

          Den DP musst du natürlich ändern!


          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
          Danke.
          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
          ScreenToGif :https://www.screentogif.com/downloads.html

          rtwlR 1 Antwort Letzte Antwort
          0
          • rtwlR rtwl

            @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

            bahnuhrB Online
            bahnuhrB Online
            bahnuhr
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #5

            @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 !


            Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
            Danke.
            gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
            ScreenToGif :https://www.screentogif.com/downloads.html

            1 Antwort Letzte Antwort
            0
            • bahnuhrB bahnuhr

              @rtwl

              zeile 59 ändern in:

              if (DP_ping_state) GetData();
              

              so müsste es funktionieren.

              Den DP musst du natürlich ändern!

              rtwlR Offline
              rtwlR Offline
              rtwl
              schrieb am zuletzt editiert von
              #6

              @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

              -Peter

              1 Antwort Letzte Antwort
              0

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              286

              Online

              32.9k

              Benutzer

              83.2k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2026
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe