Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. ping Objekt - regex möglich ?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

ping Objekt - regex möglich ?

Scheduled Pinned Locked Moved Skripten / Logik
javascript
4 Posts 3 Posters 243 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • bahnuhrB Online
    bahnuhrB Online
    bahnuhr
    Forum Testing Most Active
    wrote on last edited by
    #1

    Hallo,
    die Objekte bei ping heißen ja z.B. so:
    ping.0.NUC-Buero(Home).192_168_243_170

    In der Mitte steht also der PC und hinten die IP
    Mit getState bekommt man den Wert, z.B. so.
    var test1 = getState("ping.0.NUC-Buero(Home).192_168_243_170").val;

    Ändert sich aber nun der PC, dann wird der mittlere Teil automatisch auch geändert.
    Soll heißen, meine Scripte holen mit getState nicht mehr den Wert, weil der mittlere Teil ja nicht mehr stimmt.

    Nun bekam ich die Idee, den mittleren Teil durch regex zu ersetzen.
    Vorteil wäre, man müsste dann bei einem PC Wechsel nicht mehr sämtliche Scripte ändern.

    Geht das ?

    @Homoran
    Rainer, du bist doch ein regex Spezialist. Hast mir schon öfters geholfen.
    Wäre sowas möglich ?

    mfg
    Dieter


    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

    F AsgothianA 2 Replies Last reply
    0
    • bahnuhrB bahnuhr

      Hallo,
      die Objekte bei ping heißen ja z.B. so:
      ping.0.NUC-Buero(Home).192_168_243_170

      In der Mitte steht also der PC und hinten die IP
      Mit getState bekommt man den Wert, z.B. so.
      var test1 = getState("ping.0.NUC-Buero(Home).192_168_243_170").val;

      Ändert sich aber nun der PC, dann wird der mittlere Teil automatisch auch geändert.
      Soll heißen, meine Scripte holen mit getState nicht mehr den Wert, weil der mittlere Teil ja nicht mehr stimmt.

      Nun bekam ich die Idee, den mittleren Teil durch regex zu ersetzen.
      Vorteil wäre, man müsste dann bei einem PC Wechsel nicht mehr sämtliche Scripte ändern.

      Geht das ?

      @Homoran
      Rainer, du bist doch ein regex Spezialist. Hast mir schon öfters geholfen.
      Wäre sowas möglich ?

      mfg
      Dieter

      F Offline
      F Offline
      fastfoot
      wrote on last edited by
      #2

      @bahnuhr sagte in ping Objekt - regex möglich ?:

      ping.0.NUC-Buero(Home).192_168_243_170

      so?

      let x = new RegExp(/ping\.0\.([a-zA-Z\(\)-]+)\.192/);
      let state = 'ping.0.NUC-Buero(Home).192_168_243_170';
      let pcname = x.exec(state)[1];
      log(pcname);
      

      iobroker läuft unter Docker auf QNAP TS-451+
      SkriptRecovery: https://forum.iobroker.net/post/930558

      1 Reply Last reply
      1
      • bahnuhrB bahnuhr

        Hallo,
        die Objekte bei ping heißen ja z.B. so:
        ping.0.NUC-Buero(Home).192_168_243_170

        In der Mitte steht also der PC und hinten die IP
        Mit getState bekommt man den Wert, z.B. so.
        var test1 = getState("ping.0.NUC-Buero(Home).192_168_243_170").val;

        Ändert sich aber nun der PC, dann wird der mittlere Teil automatisch auch geändert.
        Soll heißen, meine Scripte holen mit getState nicht mehr den Wert, weil der mittlere Teil ja nicht mehr stimmt.

        Nun bekam ich die Idee, den mittleren Teil durch regex zu ersetzen.
        Vorteil wäre, man müsste dann bei einem PC Wechsel nicht mehr sämtliche Scripte ändern.

        Geht das ?

        @Homoran
        Rainer, du bist doch ein regex Spezialist. Hast mir schon öfters geholfen.
        Wäre sowas möglich ?

        mfg
        Dieter

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        wrote on last edited by
        #3

        @bahnuhr

        • Wodurch ändern sich die Objektnamen im Ping adapter ?
        • Kannst du darauf Triggern ?
        • Wenn ja, Kannst du Dir eine Liste von Objekten bauen in denen du die IP der jeweiligen Rechner eintragen lässt (automatisch) ?
        • Hast Du ggf. schon so eine Liste von Objekten mit IP Adressen ?

        Wenn du so weit bist, dann kannst du den Namen der abzufragenden Objekte vor der eigentlichen Abfrage zusammen bauen - du weisst ja welchen Rechner du abfragen willst, und kannst aus der Liste die IP herauslesen, und damit den Namen des abzufragenden Objektes zusammen bauen. Keine Skript Anpassung mehr nötig.

        Ansonsten solltest Du dir das Thema "Selektor" genauer anschauen - darüber kannst du dir Werte von einem (oder mehreren) Objekten holen deren Namen eine bestimmte Regel einhalten, zum Beispiel "beginn mit 'ping.0.NUC-Buero(Home)."

        A.

        ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
        "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

        1 Reply Last reply
        1
        • bahnuhrB Online
          bahnuhrB Online
          bahnuhr
          Forum Testing Most Active
          wrote on last edited by
          #4

          Mensch klasse,

          ein Kombination aus euren Antworten hab ich jetzt gebastelt.

          Und zwar so:

          cacheSelectorState = $("[id=ping.0.*.192*]").each(function (id) { });
          let x = new RegExp(/ping\.0\.([a-zA-Z\(\)-]+)\.192/);
          let state = cacheSelectorState[0];
          let pcname = x.exec(state)[1];
          log(pcname);
          
          

          Damit kann ich dann weiterarbeiten.

          Super.
          Nochmals Danke.


          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 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          Support us

          ioBroker
          Community Adapters
          Donate

          604

          Online

          32.4k

          Users

          81.4k

          Topics

          1.3m

          Posts
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          ioBroker Community 2014-2025
          logo
          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Recent
          • Tags
          • Unread 0
          • Categories
          • Unreplied
          • Popular
          • GitHub
          • Docu
          • Hilfe