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. ioBroker Allgemein
  4. Ping via Javascript Adapter um den Ping-Adapter zu sparen

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Ping via Javascript Adapter um den Ping-Adapter zu sparen

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
14 Beiträge 5 Kommentatoren 1.0k Aufrufe 6 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.
  • L loverz

    @haus-automatisierung kann dir leider keine Antwort auf diese fragen geben, da ich selbst kein Entwickler bin ;)

    Finde die Lösung praktisch, weil ich sowieso schon sehr viele Adapter habe und dadurch einen sparen kann :D

    Ein Vorteil fällt mir aber ein: Man kann bei dieser Lösung hier das Intervall für jeden Ping einzeln festlegen, beim Ping Adapter geht das nicht.

    haus-automatisierungH Online
    haus-automatisierungH Online
    haus-automatisierung
    Developer Most Active
    schrieb am zuletzt editiert von haus-automatisierung
    #4

    @loverz sagte in Ping via Javascript Adapter um den Ping-Adapter zu sparen:

    Man kann bei dieser Lösung hier das Intervall für jeden Ping einzeln festlegen

    Dafür müsste man (in der aktuellen Variante) aber das Script x-fach kopieren. Also müsste man es noch so umbauen, dass man mehrere IP-Adressen + Intervall pflegen kann.

    🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
    🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
    📚 Meine inoffizielle ioBroker Dokumentation

    L 1 Antwort Letzte Antwort
    0
    • haus-automatisierungH haus-automatisierung

      @loverz sagte in Ping via Javascript Adapter um den Ping-Adapter zu sparen:

      Man kann bei dieser Lösung hier das Intervall für jeden Ping einzeln festlegen

      Dafür müsste man (in der aktuellen Variante) aber das Script x-fach kopieren. Also müsste man es noch so umbauen, dass man mehrere IP-Adressen + Intervall pflegen kann.

      L Offline
      L Offline
      loverz
      schrieb am zuletzt editiert von
      #5

      @haus-automatisierung kann man aber auch als Vorteil sehen.
      Ich mag diese Modularität und habe unzählige Scripts in verschiedene Ordner gepackt.

      So weiß ich gleich was Sache ist und kann sie einzeln stoppen bei Bedarf.

      haus-automatisierungH 1 Antwort Letzte Antwort
      0
      • L loverz

        @haus-automatisierung kann man aber auch als Vorteil sehen.
        Ich mag diese Modularität und habe unzählige Scripts in verschiedene Ordner gepackt.

        So weiß ich gleich was Sache ist und kann sie einzeln stoppen bei Bedarf.

        haus-automatisierungH Online
        haus-automatisierungH Online
        haus-automatisierung
        Developer Most Active
        schrieb am zuletzt editiert von
        #6

        @loverz Jedes Script startet eine NodeVM, jedes dieser Scripts startet dann ständig einen zusätzlichen Prozess…

        Und jede Menge duplicate Code.
        Muss man wollen.

        🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
        🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
        📚 Meine inoffizielle ioBroker Dokumentation

        1 Antwort Letzte Antwort
        1
        • L loverz

          Hallo zusammen,

          ich habe mal den Microsoft Copilot bemüht, da ich selbst kein Javascript kann.

          Er hat mir ein nettes Script gebastelt, mit dem ich den Ping Adapter überflüssig mache.

          Einstellen kann man:
          -Pingintervall bei erfolgreichen Pings
          -Pingintervall bei fehlgeschlagenen Pings
          -Anzupingende IP-Adresse
          -Ziel-Datenpunkt

          const { exec } = require('child_process');
          
          // Konfigurationsvariablen
          const intervalSeconds = 30; // Zeit in Sekunden für erfolgreiche Pings
          const failIntervalSeconds = 5; // Zeit in Sekunden für fehlgeschlagene Pings
          const ipAddress = '192.168.1.1'; // IP-Adresse
          const datapoint = 'javascript.0.Variablen.Temp.Testvariable'; // Datenpunkt
          
          // Funktion zum Schreiben in den Datenpunkt
          function writeState(id, value) {
              setState(id, value, true);
          }
          
          let deviceStatus = {};
          let currentInterval = intervalSeconds * 1000;
          
          function ping(ip, datapoint) {
              exec(`ping -c 1 ${ip}`, (error, stdout, stderr) => {
                  if (error || stderr) {
                      // Fehlerausgabe unterdrücken
                      deviceStatus[ip] = false;
                      writeState(datapoint, false);
                      currentInterval = failIntervalSeconds * 1000; // Intervall auf 30 Sekunden erhöhen
                      return;
                  }
                  const isAlive = stdout.includes('1 received');
                  deviceStatus[ip] = isAlive;
                  writeState(datapoint, isAlive);
                  currentInterval = intervalSeconds * 1000; // Intervall auf 5 Sekunden zurücksetzen
              });
          }
          
          // Funktion zum periodischen Pingen
          function startPinging() {
              ping(ipAddress, datapoint);
              setTimeout(startPinging, currentInterval);
          }
          
          // Start des Pings
          startPinging();
          
          // Ausgabe des Status-Objekts alle intervalSeconds Sekunden (optional)
          // setInterval(() => console.log(deviceStatus), intervalSeconds * 1000);
          
          
          

          Viel Spaß damit ;)

          BananaJoeB Online
          BananaJoeB Online
          BananaJoe
          Most Active
          schrieb am zuletzt editiert von BananaJoe
          #7

          @loverz die meisten Monitoringtools verwenden fping statt ping da es als performanter gilt. Zudem kann es mehrere IP-Adressen gleichzeitig anpingen. Die Antwort kommt auch quasi sofort, die anderen Parameter kennt es auch.

          Wenn man also z.B. 30 Adressen überwachen will kann man die in einem Schritt anpingen und braucht nicht 30x ping aufrufen

          Ansonsten, ja, warum nicht direkt in nodeJS: https://hackernoon.com/building-ping-command-in-nodejs-practical-guide-to-buffers-sockets-and-bit-manipulation

          ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

          1 Antwort Letzte Antwort
          0
          • BananaJoeB Online
            BananaJoeB Online
            BananaJoe
            Most Active
            schrieb am zuletzt editiert von BananaJoe
            #8

            Nachtrag: mit fping + jq kannst du dir das auch gleich als JSON zurück geben lassen:

            fping -r 1 192.168.0.199 192.168.1.198 192.168.0.198| jq -R 'split(" ")|{ip:.[0],status:.[2]}' | jq -n '[inputs]'
            

            Ergebnis:

            [
              {
                "ip": "192.168.0.199",
                "status": "alive"
              },
              {
                "ip": "192.168.1.198",
                "status": "alive"
              },
              {
                "ip": "192.168.0.198",
                "status": "unreachable"
              }
            ]
            

            Edit: Parameter -r 1 aufgenommen, sonst gibt es ein fehlerhaftes JSON wenn ein Host nicht erreichbar ist

            Edit 2: nur das es kein richtiger JSON ist, ich arbeite dran. Zumindest , ,müssten da noch zwischen und [ ... ] umzu

            Edit 3: Nun funktioniert es richtig, musste ein zweiter jq Aufruf dahinter um die Objekte zu verbinden und ein valides JSON zu erzeugen

            ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

            1 Antwort Letzte Antwort
            1
            • BananaJoeB Online
              BananaJoeB Online
              BananaJoe
              Most Active
              schrieb am zuletzt editiert von
              #9

              Und weil es mich gerade gepackt hatte, hier eine "True/False" Version die man in ioBroker dann quasi so wegschreiben könnte:

              fping -r 1 192.168.0.199 192.168.1.198 192.168.0.198 | jq -R 'split(" ")|{ip:.[0],online:.[2]}' | sed -e 's/"alive"/true/g' -e 's/"unreachable"/false/g' | jq -r -n '[inputs]'
              

              Ausgabe:

              [
                {
                  "ip": "192.168.0.199",
                  "online": true
                },
                {
                  "ip": "192.168.1.198",
                  "online": true
                },
                {
                  "ip": "192.168.0.198",
                  "online": false
                }
              ]
              

              ja, schöner als das mit sed zu ersetzen habe ich nicht hinbekommen.

              ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

              OliverIOO 1 Antwort Letzte Antwort
              1
              • BananaJoeB BananaJoe

                Und weil es mich gerade gepackt hatte, hier eine "True/False" Version die man in ioBroker dann quasi so wegschreiben könnte:

                fping -r 1 192.168.0.199 192.168.1.198 192.168.0.198 | jq -R 'split(" ")|{ip:.[0],online:.[2]}' | sed -e 's/"alive"/true/g' -e 's/"unreachable"/false/g' | jq -r -n '[inputs]'
                

                Ausgabe:

                [
                  {
                    "ip": "192.168.0.199",
                    "online": true
                  },
                  {
                    "ip": "192.168.1.198",
                    "online": true
                  },
                  {
                    "ip": "192.168.0.198",
                    "online": false
                  }
                ]
                

                ja, schöner als das mit sed zu ersetzen habe ich nicht hinbekommen.

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von OliverIO
                #10

                @loverz

                Hm, Ich weiß nicht so richtig.
                Lösungen zu Problemen nach denen keiner gefragt hat.
                Klar kann man alles selbst programmieren, aber auf dieser Schöpfungsebene setzen die, die programmieren können es selbst um.
                Diejenigen die nicht programmieren können nehmen die Adapter oder blockly oder dann wie du chatgpt

                Support kannst du aber dafür nicht bieten, bzw Erweiterungen einbauen. Nur dann wenn chatgpt weiterhelfen kann.

                Ich verwende selbst chatgpt bzw codemium. Hauptsächlich um mir grundgerüste zu erstellen, die dann verfeinert werden. Das ist aber meist nur aus zeitspargründen.

                Stackoverflow hat mittlerweile Lösungen aus chatgpt und ähnlichem verboten. Was sich aber oft nicht so kontrollieren lässt.

                Was du gerne machen kannst, meiner Meinung nach, ist diese beschreiben, wie du mit ChatGPT vorgegangen bist und welche Probleme du hattest und wie du die gelöst hast
                Das würde auch anderen helfen, diese Plattform richtig einzusetzen

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                BananaJoeB 1 Antwort Letzte Antwort
                0
                • L loverz

                  @haus-automatisierung kann dir leider keine Antwort auf diese fragen geben, da ich selbst kein Entwickler bin ;)

                  Finde die Lösung praktisch, weil ich sowieso schon sehr viele Adapter habe und dadurch einen sparen kann :D

                  Ein Vorteil fällt mir aber ein: Man kann bei dieser Lösung hier das Intervall für jeden Ping einzeln festlegen, beim Ping Adapter geht das nicht.

                  Jey CeeJ Online
                  Jey CeeJ Online
                  Jey Cee
                  Developer
                  schrieb am zuletzt editiert von
                  #11

                  @loverz sagte in Ping via Javascript Adapter um den Ping-Adapter zu sparen:

                  Ein Vorteil fällt mir aber ein: Man kann bei dieser Lösung hier das Intervall für jeden Ping einzeln festlegen, beim Ping Adapter geht das nicht.

                  Im Net-Tools Adapter geht das, außerdem kann man auch einstellen nach wievielen Pings ein Gerät als Offline angezeigt wird.

                  Persönlicher Support
                  Spenden -> paypal.me/J3YC33

                  1 Antwort Letzte Antwort
                  0
                  • OliverIOO OliverIO

                    @loverz

                    Hm, Ich weiß nicht so richtig.
                    Lösungen zu Problemen nach denen keiner gefragt hat.
                    Klar kann man alles selbst programmieren, aber auf dieser Schöpfungsebene setzen die, die programmieren können es selbst um.
                    Diejenigen die nicht programmieren können nehmen die Adapter oder blockly oder dann wie du chatgpt

                    Support kannst du aber dafür nicht bieten, bzw Erweiterungen einbauen. Nur dann wenn chatgpt weiterhelfen kann.

                    Ich verwende selbst chatgpt bzw codemium. Hauptsächlich um mir grundgerüste zu erstellen, die dann verfeinert werden. Das ist aber meist nur aus zeitspargründen.

                    Stackoverflow hat mittlerweile Lösungen aus chatgpt und ähnlichem verboten. Was sich aber oft nicht so kontrollieren lässt.

                    Was du gerne machen kannst, meiner Meinung nach, ist diese beschreiben, wie du mit ChatGPT vorgegangen bist und welche Probleme du hattest und wie du die gelöst hast
                    Das würde auch anderen helfen, diese Plattform richtig einzusetzen

                    BananaJoeB Online
                    BananaJoeB Online
                    BananaJoe
                    Most Active
                    schrieb am zuletzt editiert von BananaJoe
                    #12

                    @oliverio sagte in Ping via Javascript Adapter um den Ping-Adapter zu sparen:

                    Was du gerne machen kannst, meiner Meinung nach, ist diese beschreiben, wie du mit ChatGPT vorgegangen bist und welche Probleme du hattest und wie du die gelöst hast

                    Öhm, ist das schlimm das ich ChatGPT dazu NICHT benutzt habe sondern klassisch die Hilfe / man-pages von jq und sed? Und natürlich habe ich viel gegoogelt um dann aus verschiedenen Beispielen zu lernen. So "Programmiere" ich eigentlich immer.
                    Den Erfahrungsgewinn in Sachen jq habe ich auch gleich zu Verbesserung meines Zabbix-Monitorings genutzt.

                    Mein einziger bisheriger erfolgreicher Einsatz von ChatGPT war für eine JSON-Pfad-Abfrage basierend auf einem Wert innerhalb eines Objektes um unabhängig von der Reihenfolge der Objekte zu werden.

                    Ich gebe ja zu das mir da ein wenig die Pferde durchgegangen sind. Aber Beschwerden über ein zu viel an Lösungen erhalte ich sonst eher nie.

                    Drauf gekommen bin ich ja auch nur über fping, weil ich das sonst auch einsetze (Zabbix nutzt es). Und dann dachte "wäre doch cool wenn da gleich ein JSON käme" da man diese ja sowohl in ioBroker als auch in Zabbix super weiter verarbeiten kann.

                    ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                    OliverIOO 1 Antwort Letzte Antwort
                    2
                    • BananaJoeB BananaJoe

                      @oliverio sagte in Ping via Javascript Adapter um den Ping-Adapter zu sparen:

                      Was du gerne machen kannst, meiner Meinung nach, ist diese beschreiben, wie du mit ChatGPT vorgegangen bist und welche Probleme du hattest und wie du die gelöst hast

                      Öhm, ist das schlimm das ich ChatGPT dazu NICHT benutzt habe sondern klassisch die Hilfe / man-pages von jq und sed? Und natürlich habe ich viel gegoogelt um dann aus verschiedenen Beispielen zu lernen. So "Programmiere" ich eigentlich immer.
                      Den Erfahrungsgewinn in Sachen jq habe ich auch gleich zu Verbesserung meines Zabbix-Monitorings genutzt.

                      Mein einziger bisheriger erfolgreicher Einsatz von ChatGPT war für eine JSON-Pfad-Abfrage basierend auf einem Wert innerhalb eines Objektes um unabhängig von der Reihenfolge der Objekte zu werden.

                      Ich gebe ja zu das mir da ein wenig die Pferde durchgegangen sind. Aber Beschwerden über ein zu viel an Lösungen erhalte ich sonst eher nie.

                      Drauf gekommen bin ich ja auch nur über fping, weil ich das sonst auch einsetze (Zabbix nutzt es). Und dann dachte "wäre doch cool wenn da gleich ein JSON käme" da man diese ja sowohl in ioBroker als auch in Zabbix super weiter verarbeiten kann.

                      OliverIOO Offline
                      OliverIOO Offline
                      OliverIO
                      schrieb am zuletzt editiert von
                      #13

                      @bananajoe

                      Sorry, du warst nicht der TE. Der hat chatgpt verwendet

                      Meine Adapter und Widgets
                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                      Links im Profil

                      1 Antwort Letzte Antwort
                      0
                      • L Offline
                        L Offline
                        loverz
                        schrieb am zuletzt editiert von
                        #14

                        @oliverio sagte in Ping via Javascript Adapter um den Ping-Adapter zu sparen:

                        Lösungen zu Problemen nach denen keiner gefragt hat.

                        Es geht ja nicht um eine Problemlösung, sondern ein möglicher Weg, wenn man sich den Adapter sparen möchte.

                        Hab das nun so umgesetzt und funktioniert tadellos.

                        Erwarte hier auch keinen Support dafür.

                        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
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        799

                        Online

                        32.5k

                        Benutzer

                        81.7k

                        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