Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

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

Geplant Angeheftet Gesperrt Verschoben Einsteigerfragen
6 Beiträge 2 Kommentatoren 214 Aufrufe 2 Watching
  • Ä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 Online
    rtwlR Online
    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 Online
        rtwlR Online
        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 Online
              rtwlR Online
              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
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              439

              Online

              32.7k

              Benutzer

              82.4k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              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