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. Skripten / Logik
  4. JavaScript
  5. Skript PING

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    989

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

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

Skript PING

Geplant Angeheftet Gesperrt Verschoben JavaScript
15 Beiträge 6 Kommentatoren 1.4k Aufrufe 8 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.
  • Ro75R Online
    Ro75R Online
    Ro75
    schrieb am zuletzt editiert von Ro75
    #1

    Hallo. Heute stelle ich euch einmal mein Skript "PING" vor. Wie der Name schon vermuten lässt, werden Daten zur Erreichbarkeit von (W)LAN-Geräten abgefragt und in atenpunkten gespeichert.

    Ach ja. Da gibt es einen Adapter. Im Grunde genommen, liefert das Skript fast die selben Daten.

    Warum nun aber das Skript? Der Hauptvorteil für mich ist, ich muss nicht einen weiteren Adapter pflegen (Updates). Und von den Ressourcen kann ich mir auch ein paar sparen, da der JS-Adapter sowieso läuft.

    VORAUSSETZUNGEN:

    Im JS-Adapter muss "ping" als zusätzliches NPM-Modul eingetragen sein

    d2cf192f-3d6e-4684-a9d0-347b8b42be98-image.png

    //Version 1.0.0 - 04.10.2024
    //Ersteller Ro75.
    
    //Voraussetzungen (Version 1.0.0 getestet mit)
    //NodeJS: 20.x
    //Javascript-Adapter: 8.7.6
    //Admin-Adapter: 7.0.23
    //JS-Controller: 6.0.11
    
    //"normale" Geräte ("Computer, Router, Switch, HUB, NAS, WLAN-Steckdosen, Android-Smartphone, Android-Tablet, etc.")
    //Amazon Echos, SKY-Geräte und diverse Konsolen (einfach probieren) funktionieren nicht.
    
    const ping          = require('ping');          //Im Javascript-Adapter einzutragen (Zusätzliche NPM-Module)
    const sMainPath     = '0_userdata.0.Ping.';     //zentraler Datenpunkt
    
    //Konfiguration der abzufragenden Geräte. Geräte werden duch "Doppelpunkt" (:) getrennt.
    //Jedes Geräte besteht aus zwei Werten. Die Werte werden durch Komma (,) getrennt.
    //Linksvom Kommadie Bezeichnung und rechts vom Komma die IP-Adresse
    const cDevicePing   = 'Device-1,192.168.XXX.XXX:Device-2,192.168.XXX.XXX:Device-3,192.168.XXX.XXX'; //bitte anpassen
    
    //Datenpunkte anlegen
    function PingInitalisierung(){
        let sDevice = cDevicePing.split(':');
        for (let i = 0; i <= sDevice.length-1; i++) {
            let device_data = sDevice[i].split(',');
            createState(sMainPath+device_data[0], '', {name: device_data[1],read: true, write: true});
            createState(sMainPath+device_data[0]+'.Ping.alive', false, {name: 'Pingstatus' ,type: 'boolean', read: true, write: true});
            createState(sMainPath+device_data[0]+'.Ping.time', 0, {name: 'Zeit' ,type: 'number', read: true, write: true, unit: 'ms'});
            createState(sMainPath+device_data[0]+'.Ping.status', '', {name: 'Status' ,type: 'string', read: true, write: true});
        }
    }
    //START
    PingInitalisierung();
    
    async function pingHost(host,sDesc) {
        try {
            const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
            setState(sMainPath+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
            setState(sMainPath+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
            setState(sMainPath+sDesc+'.Ping.status', 'OK', true);
        } catch (error) {
            setState(sMainPath+sDesc+'.Ping.status', 'ERROR', true);
        }
    }
    
    //Ping aller 10 Sekunden - kann angepasst werden - kleinerer Wert nicht empfohlen
    //damit das Intervall (wenn zu niedrig) nicht "gesprengt" wird: Schleife sperren und am Ende wieder freigeben
    let bPingSperre = false;
    schedule('*/10 * * * * *', async function StartPing() {
        if (bPingSperre == false) {
            bPingSperre = true;
            let sDevice = cDevicePing.split(':');
            for (let i = 0; i <= sDevice.length-1; i++) {
                await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
            }
            bPingSperre = false;
        }
    });
    

    Wünsche Euch viel Erfolg bei der Umsetzung.

    Ro75.

    SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

    MyzerATM E 2 Antworten Letzte Antwort
    3
    • Ro75R Ro75

      Hallo. Heute stelle ich euch einmal mein Skript "PING" vor. Wie der Name schon vermuten lässt, werden Daten zur Erreichbarkeit von (W)LAN-Geräten abgefragt und in atenpunkten gespeichert.

      Ach ja. Da gibt es einen Adapter. Im Grunde genommen, liefert das Skript fast die selben Daten.

      Warum nun aber das Skript? Der Hauptvorteil für mich ist, ich muss nicht einen weiteren Adapter pflegen (Updates). Und von den Ressourcen kann ich mir auch ein paar sparen, da der JS-Adapter sowieso läuft.

      VORAUSSETZUNGEN:

      Im JS-Adapter muss "ping" als zusätzliches NPM-Modul eingetragen sein

      d2cf192f-3d6e-4684-a9d0-347b8b42be98-image.png

      //Version 1.0.0 - 04.10.2024
      //Ersteller Ro75.
      
      //Voraussetzungen (Version 1.0.0 getestet mit)
      //NodeJS: 20.x
      //Javascript-Adapter: 8.7.6
      //Admin-Adapter: 7.0.23
      //JS-Controller: 6.0.11
      
      //"normale" Geräte ("Computer, Router, Switch, HUB, NAS, WLAN-Steckdosen, Android-Smartphone, Android-Tablet, etc.")
      //Amazon Echos, SKY-Geräte und diverse Konsolen (einfach probieren) funktionieren nicht.
      
      const ping          = require('ping');          //Im Javascript-Adapter einzutragen (Zusätzliche NPM-Module)
      const sMainPath     = '0_userdata.0.Ping.';     //zentraler Datenpunkt
      
      //Konfiguration der abzufragenden Geräte. Geräte werden duch "Doppelpunkt" (:) getrennt.
      //Jedes Geräte besteht aus zwei Werten. Die Werte werden durch Komma (,) getrennt.
      //Linksvom Kommadie Bezeichnung und rechts vom Komma die IP-Adresse
      const cDevicePing   = 'Device-1,192.168.XXX.XXX:Device-2,192.168.XXX.XXX:Device-3,192.168.XXX.XXX'; //bitte anpassen
      
      //Datenpunkte anlegen
      function PingInitalisierung(){
          let sDevice = cDevicePing.split(':');
          for (let i = 0; i <= sDevice.length-1; i++) {
              let device_data = sDevice[i].split(',');
              createState(sMainPath+device_data[0], '', {name: device_data[1],read: true, write: true});
              createState(sMainPath+device_data[0]+'.Ping.alive', false, {name: 'Pingstatus' ,type: 'boolean', read: true, write: true});
              createState(sMainPath+device_data[0]+'.Ping.time', 0, {name: 'Zeit' ,type: 'number', read: true, write: true, unit: 'ms'});
              createState(sMainPath+device_data[0]+'.Ping.status', '', {name: 'Status' ,type: 'string', read: true, write: true});
          }
      }
      //START
      PingInitalisierung();
      
      async function pingHost(host,sDesc) {
          try {
              const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
              setState(sMainPath+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
              setState(sMainPath+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
              setState(sMainPath+sDesc+'.Ping.status', 'OK', true);
          } catch (error) {
              setState(sMainPath+sDesc+'.Ping.status', 'ERROR', true);
          }
      }
      
      //Ping aller 10 Sekunden - kann angepasst werden - kleinerer Wert nicht empfohlen
      //damit das Intervall (wenn zu niedrig) nicht "gesprengt" wird: Schleife sperren und am Ende wieder freigeben
      let bPingSperre = false;
      schedule('*/10 * * * * *', async function StartPing() {
          if (bPingSperre == false) {
              bPingSperre = true;
              let sDevice = cDevicePing.split(':');
              for (let i = 0; i <= sDevice.length-1; i++) {
                  await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
              }
              bPingSperre = false;
          }
      });
      

      Wünsche Euch viel Erfolg bei der Umsetzung.

      Ro75.

      MyzerATM Offline
      MyzerATM Offline
      MyzerAT
      schrieb am zuletzt editiert von
      #2

      @ro75
      wärst du so nett und würdest erläutern wie man ping zum js adapter als npm modul hinzufügt, thx

      lg Rudi

      Master Debian 12 (Wien)
      Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8. 7. als VM

      Slave Debian 12. (TULLN) --> OpenVPN to Vienna
      Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8.7. als VM

      Node 20.19.0
      Nodejs 20.19.0
      npm 10.8.2
      js-controller 7.0.6

      Ro75R 1 Antwort Letzte Antwort
      0
      • MyzerATM MyzerAT

        @ro75
        wärst du so nett und würdest erläutern wie man ping zum js adapter als npm modul hinzufügt, thx

        Ro75R Online
        Ro75R Online
        Ro75
        schrieb am zuletzt editiert von
        #3

        @myzerat was möchtest du denn genau wissen? Wie im Bild im ersten Post zu sehen. JS-Adapter >> Allgemeine Einstellungen und dort jeweils das Wort ping eintragen und mit Enter bestätigen.

        Ro75.

        SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

        MyzerATM 1 Antwort Letzte Antwort
        0
        • Ro75R Ro75

          @myzerat was möchtest du denn genau wissen? Wie im Bild im ersten Post zu sehen. JS-Adapter >> Allgemeine Einstellungen und dort jeweils das Wort ping eintragen und mit Enter bestätigen.

          Ro75.

          MyzerATM Offline
          MyzerATM Offline
          MyzerAT
          schrieb am zuletzt editiert von
          #4

          @ro75

          hab ich gemacht, wenn ich enter drücke tut sich nichts

          Screenshot_20241020_131040_Samsung Internet.jpg

          lg Rudi

          Master Debian 12 (Wien)
          Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8. 7. als VM

          Slave Debian 12. (TULLN) --> OpenVPN to Vienna
          Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8.7. als VM

          Node 20.19.0
          Nodejs 20.19.0
          npm 10.8.2
          js-controller 7.0.6

          Thomas BraunT 1 Antwort Letzte Antwort
          0
          • MyzerATM MyzerAT

            @ro75

            hab ich gemacht, wenn ich enter drücke tut sich nichts

            Screenshot_20241020_131040_Samsung Internet.jpg

            Thomas BraunT Online
            Thomas BraunT Online
            Thomas Braun
            Most Active
            schrieb am zuletzt editiert von
            #5

            @myzerat

            Kleinbuchstaben...
            ping also

            Linux-Werkzeugkasten:
            https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
            NodeJS Fixer Skript:
            https://forum.iobroker.net/topic/68035/iob-node-fix-skript
            iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

            MyzerATM 1 Antwort Letzte Antwort
            1
            • Thomas BraunT Thomas Braun

              @myzerat

              Kleinbuchstaben...
              ping also

              MyzerATM Offline
              MyzerATM Offline
              MyzerAT
              schrieb am zuletzt editiert von
              #6

              @thomas-braun

              ja hab ich auch probiert

              lg Rudi

              Master Debian 12 (Wien)
              Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8. 7. als VM

              Slave Debian 12. (TULLN) --> OpenVPN to Vienna
              Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8.7. als VM

              Node 20.19.0
              Nodejs 20.19.0
              npm 10.8.2
              js-controller 7.0.6

              Thomas BraunT 1 Antwort Letzte Antwort
              0
              • MyzerATM MyzerAT

                @thomas-braun

                ja hab ich auch probiert

                Thomas BraunT Online
                Thomas BraunT Online
                Thomas Braun
                Most Active
                schrieb am zuletzt editiert von
                #7

                @myzerat

                Keine Ahnung was du da machst. Geht hier sofort:

                300d275c-9d69-40a9-8882-7d5a21fb263d-grafik.png

                Linux-Werkzeugkasten:
                https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                NodeJS Fixer Skript:
                https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                MyzerATM 1 Antwort Letzte Antwort
                0
                • Thomas BraunT Thomas Braun

                  @myzerat

                  Keine Ahnung was du da machst. Geht hier sofort:

                  300d275c-9d69-40a9-8882-7d5a21fb263d-grafik.png

                  MyzerATM Offline
                  MyzerATM Offline
                  MyzerAT
                  schrieb am zuletzt editiert von MyzerAT
                  #8

                  @thomas-braun

                  ich bin auf eine samsung tablett s9 ultra mit dem samsung browser am probieren gewesen, mit dem firefox browser hat es sofort geklappt, komisch

                  Screenshot_20241020_132134_Samsung Internet.jpg

                  lg Rudi

                  Master Debian 12 (Wien)
                  Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8. 7. als VM

                  Slave Debian 12. (TULLN) --> OpenVPN to Vienna
                  Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8.7. als VM

                  Node 20.19.0
                  Nodejs 20.19.0
                  npm 10.8.2
                  js-controller 7.0.6

                  1 Antwort Letzte Antwort
                  0
                  • B Online
                    B Online
                    BigMike71
                    schrieb am zuletzt editiert von
                    #9

                    vielen dank für dein Script!
                    Funktioniert mit meinem Qnap NAS super :)
                    Schalte damit über ein Blockly zusätzlich ein Festplatten Array was über USB3 damit verbunden ist ein und aus

                    1 Antwort Letzte Antwort
                    0
                    • Ro75R Ro75

                      Hallo. Heute stelle ich euch einmal mein Skript "PING" vor. Wie der Name schon vermuten lässt, werden Daten zur Erreichbarkeit von (W)LAN-Geräten abgefragt und in atenpunkten gespeichert.

                      Ach ja. Da gibt es einen Adapter. Im Grunde genommen, liefert das Skript fast die selben Daten.

                      Warum nun aber das Skript? Der Hauptvorteil für mich ist, ich muss nicht einen weiteren Adapter pflegen (Updates). Und von den Ressourcen kann ich mir auch ein paar sparen, da der JS-Adapter sowieso läuft.

                      VORAUSSETZUNGEN:

                      Im JS-Adapter muss "ping" als zusätzliches NPM-Modul eingetragen sein

                      d2cf192f-3d6e-4684-a9d0-347b8b42be98-image.png

                      //Version 1.0.0 - 04.10.2024
                      //Ersteller Ro75.
                      
                      //Voraussetzungen (Version 1.0.0 getestet mit)
                      //NodeJS: 20.x
                      //Javascript-Adapter: 8.7.6
                      //Admin-Adapter: 7.0.23
                      //JS-Controller: 6.0.11
                      
                      //"normale" Geräte ("Computer, Router, Switch, HUB, NAS, WLAN-Steckdosen, Android-Smartphone, Android-Tablet, etc.")
                      //Amazon Echos, SKY-Geräte und diverse Konsolen (einfach probieren) funktionieren nicht.
                      
                      const ping          = require('ping');          //Im Javascript-Adapter einzutragen (Zusätzliche NPM-Module)
                      const sMainPath     = '0_userdata.0.Ping.';     //zentraler Datenpunkt
                      
                      //Konfiguration der abzufragenden Geräte. Geräte werden duch "Doppelpunkt" (:) getrennt.
                      //Jedes Geräte besteht aus zwei Werten. Die Werte werden durch Komma (,) getrennt.
                      //Linksvom Kommadie Bezeichnung und rechts vom Komma die IP-Adresse
                      const cDevicePing   = 'Device-1,192.168.XXX.XXX:Device-2,192.168.XXX.XXX:Device-3,192.168.XXX.XXX'; //bitte anpassen
                      
                      //Datenpunkte anlegen
                      function PingInitalisierung(){
                          let sDevice = cDevicePing.split(':');
                          for (let i = 0; i <= sDevice.length-1; i++) {
                              let device_data = sDevice[i].split(',');
                              createState(sMainPath+device_data[0], '', {name: device_data[1],read: true, write: true});
                              createState(sMainPath+device_data[0]+'.Ping.alive', false, {name: 'Pingstatus' ,type: 'boolean', read: true, write: true});
                              createState(sMainPath+device_data[0]+'.Ping.time', 0, {name: 'Zeit' ,type: 'number', read: true, write: true, unit: 'ms'});
                              createState(sMainPath+device_data[0]+'.Ping.status', '', {name: 'Status' ,type: 'string', read: true, write: true});
                          }
                      }
                      //START
                      PingInitalisierung();
                      
                      async function pingHost(host,sDesc) {
                          try {
                              const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
                              setState(sMainPath+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
                              setState(sMainPath+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
                              setState(sMainPath+sDesc+'.Ping.status', 'OK', true);
                          } catch (error) {
                              setState(sMainPath+sDesc+'.Ping.status', 'ERROR', true);
                          }
                      }
                      
                      //Ping aller 10 Sekunden - kann angepasst werden - kleinerer Wert nicht empfohlen
                      //damit das Intervall (wenn zu niedrig) nicht "gesprengt" wird: Schleife sperren und am Ende wieder freigeben
                      let bPingSperre = false;
                      schedule('*/10 * * * * *', async function StartPing() {
                          if (bPingSperre == false) {
                              bPingSperre = true;
                              let sDevice = cDevicePing.split(':');
                              for (let i = 0; i <= sDevice.length-1; i++) {
                                  await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
                              }
                              bPingSperre = false;
                          }
                      });
                      

                      Wünsche Euch viel Erfolg bei der Umsetzung.

                      Ro75.

                      E Online
                      E Online
                      emil70
                      schrieb am zuletzt editiert von emil70
                      #10

                      @ro75

                      super script von dir

                      Kann du sagen, warum Amazon Echos nicht gehen?

                      Mein Alexa-Echo-Show2 und FireTVStick wird als "true" angezeigt. Die Dot leider nicht

                      Edit: Was sagt den der Status "OK" aus bei jedem Netzwerkgerät

                      gruss emil70

                      iobroker(V9) und Pi-hole läuft über docker (js-controller 6.0.11 und admin v7.1.15) auf einem synology DS918+ mit DSM 7.1.1-42962 Update 6

                      AsgothianA 1 Antwort Letzte Antwort
                      0
                      • E emil70

                        @ro75

                        super script von dir

                        Kann du sagen, warum Amazon Echos nicht gehen?

                        Mein Alexa-Echo-Show2 und FireTVStick wird als "true" angezeigt. Die Dot leider nicht

                        Edit: Was sagt den der Status "OK" aus bei jedem Netzwerkgerät

                        AsgothianA Offline
                        AsgothianA Offline
                        Asgothian
                        Developer
                        schrieb am zuletzt editiert von Asgothian
                        #11

                        @emil70 sagte in Skript PING:

                        @ro75

                        super script von dir

                        Kann du sagen, warum Amazon Echos nicht gehen?

                        Mein Alexa-Echo-Show2 und FireTVStick wird als "true" angezeigt. Die Dot leider nicht

                        Edit: Was sagt den der Status "OK" aus bei jedem Netzwerkgerät

                        Das kannst du selber ausprobieren:
                        per konsole schickst du mal ein 'ping <IP.DES.ECHO.DOT> ab und schaust dir die Antwort an.

                        Es ist denkbar das die Firmware des EchoDot die Antworten auf ICMP Requests blockiert. Das würdest Du da dann sehen (oder auch andere Fehlermeldungen warum das nicht geht)

                        Das OK sagt aus das der Befehl sauber abgearbeitet wurde. Im Falle eines 'ERROR' ist auf deinem System etwas faul was dazu führt das die Pings nicht ausgeführt werden können.

                        A.

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

                        E 1 Antwort Letzte Antwort
                        1
                        • AsgothianA Asgothian

                          @emil70 sagte in Skript PING:

                          @ro75

                          super script von dir

                          Kann du sagen, warum Amazon Echos nicht gehen?

                          Mein Alexa-Echo-Show2 und FireTVStick wird als "true" angezeigt. Die Dot leider nicht

                          Edit: Was sagt den der Status "OK" aus bei jedem Netzwerkgerät

                          Das kannst du selber ausprobieren:
                          per konsole schickst du mal ein 'ping <IP.DES.ECHO.DOT> ab und schaust dir die Antwort an.

                          Es ist denkbar das die Firmware des EchoDot die Antworten auf ICMP Requests blockiert. Das würdest Du da dann sehen (oder auch andere Fehlermeldungen warum das nicht geht)

                          Das OK sagt aus das der Befehl sauber abgearbeitet wurde. Im Falle eines 'ERROR' ist auf deinem System etwas faul was dazu führt das die Pings nicht ausgeführt werden können.

                          A.

                          E Online
                          E Online
                          emil70
                          schrieb am zuletzt editiert von
                          #12

                          @asgothian

                          hast Recht, hätte ich auch selbst drauf kommen können

                          "Zeitüberschreitung der Anforderung." kommt

                          gruss emil70

                          iobroker(V9) und Pi-hole läuft über docker (js-controller 6.0.11 und admin v7.1.15) auf einem synology DS918+ mit DSM 7.1.1-42962 Update 6

                          1 Antwort Letzte Antwort
                          0
                          • E Online
                            E Online
                            emil70
                            schrieb am zuletzt editiert von
                            #13

                            Hat hier jemand noch eine Idee, wie man

                            1. das man noch einen Datenpunkt bekommen, wieviele Geräte man im Netzwerk hat

                            2. das man noch einen Datenpunkt bekommen, wieviele davon auf "true" stehen

                            gruss emil70

                            iobroker(V9) und Pi-hole läuft über docker (js-controller 6.0.11 und admin v7.1.15) auf einem synology DS918+ mit DSM 7.1.1-42962 Update 6

                            1 Antwort Letzte Antwort
                            0
                            • E Online
                              E Online
                              emil70
                              schrieb am zuletzt editiert von
                              #14

                              Habe das jetzt so gelöst. Für Alle die es brauchen können

                              Habe mir dazu extra Datenpunkte angelegt

                              Screenshot 2025-02-04 at 12-14-15 javascript - f5529c8310eb.png

                              Screenshot 2025-02-04 at 12-14-50 javascript - f5529c8310eb.png

                              Screenshot 2025-02-04 at 12-16-58 objects - f5529c8310eb.png

                              gruss emil70

                              iobroker(V9) und Pi-hole läuft über docker (js-controller 6.0.11 und admin v7.1.15) auf einem synology DS918+ mit DSM 7.1.1-42962 Update 6

                              1 Antwort Letzte Antwort
                              0
                              • E Online
                                E Online
                                emil70
                                schrieb am zuletzt editiert von emil70
                                #15

                                ich habe aber generell noch eine Frage zu dem script. Ich habe daraus jetzt 3 script gemacht. Da ich Kameras, Lan und Wlan einzeln angezeigt bekommen möchte. Die funktionieren auch Alle soweit

                                ich würde gerne daraus ein script machen. Datenpunkte werden dann auch Alle richtig angelegt. Was ich nicht hinbekommen ist die Ping Abfrage

                                Momentan ist da so meine Einstellungen

                                //Version 1.0.0 - 04.10.2024
                                //Ersteller Ro75.
                                //https://forum.iobroker.net/topic/77249/skript-ping 
                                //Voraussetzungen (Version 1.0.0 getestet mit)
                                //NodeJS: 20.x
                                //Javascript-Adapter: 8.7.6
                                //Admin-Adapter: 7.0.23
                                //JS-Controller: 6.0.11
                                //https://forum.iobroker.net/topic/77249/skript-ping
                                 
                                //"normale" Geräte ("Computer, Router, Switch, HUB, NAS, WLAN-Steckdosen, Android-Smartphone, Android-Tablet, etc.")
                                //Amazon Echos, SKY-Geräte und diverse Konsolen (einfach probieren) funktionieren nicht.
                                 
                                const ping          = require('ping');          //Im Javascript-Adapter einzutragen (Zusätzliche NPM-Module)
                                const sMainPathKamera        = '0_userdata.0.Netzwerkgeräte-Test.Kamera.';     //zentraler Datenpunkt
                                const sMainPathKameras       = '0_userdata.0.Netzwerkgeräte-Test.Kameras';
                                const sMainPathLan           = '0_userdata.0.Netzwerkgeräte-Test.Lan.';     //zentraler Datenpunkt
                                const sMainPathLangeraete    = '0_userdata.0.Netzwerkgeräte-Test.Lan-Geräte';
                                const sMainPathWlan          = '0_userdata.0.Netzwerkgeräte-Test.Wlan.';     //zentraler Datenpunkt
                                const sMainPathWlangeraete   = '0_userdata.0.Netzwerkgeräte-Test.Wlan-Geräte';
                                
                                 
                                //Konfiguration der abzufragenden Geräte. Geräte werden duch "Doppelpunkt" (:) getrennt.
                                //Jedes Geräte besteht aus zwei Werten. Die Werte werden durch Komma (,) getrennt.
                                //Links vom Komma die Bezeichnung und rechts vom Komma die IP-Adresse
                                const cDevicePingKamera   = 'Kamera-Garage,192.168.178.50'; //bitte anpassen
                                const cDevicePingLan      = 'Lan-Geraete,192.168.178.60'; //bitte anpassen
                                const cDevicePingWlan     = 'Wlan-Geraete,192.168.178.70'; //bitte anpassen
                                
                                //Kamera Datenpunkte anlegen
                                function PingInitalisierungKamera(){
                                    let sDevice = cDevicePingKamera.split(':');
                                    for (let i = 0; i <= sDevice.length-1; i++) {
                                        let device_data = sDevice[i].split(',');
                                        createState(sMainPathKamera+device_data[0], '', {name: device_data[1],read: true, write: true});
                                        createState(sMainPathKamera+device_data[0]+'.Ping.alive', false, {name: 'Pingstatus' ,type: 'boolean', read: true, write: true});
                                        createState(sMainPathKamera+device_data[0]+'.Ping.time', 0, {name: 'Zeit' ,type: 'number', read: true, write: true, unit: 'ms'});
                                        createState(sMainPathKamera+device_data[0]+'.Ping.status', '', {name: 'Status' ,type: 'string', read: true, write: true});
                                		createState(sMainPathKameras, 0, {name: 'Onlinestatus' ,type: 'number', read: true, write: true});
                                    }
                                }
                                
                                //Lan Datenpunkte anlegen
                                function PingInitalisierungLan(){
                                    let sDevice = cDevicePingLan.split(':');
                                    for (let i = 0; i <= sDevice.length-1; i++) {
                                        let device_data = sDevice[i].split(',');
                                        createState(sMainPathLan+device_data[0], '', {name: device_data[1],read: true, write: true});
                                        createState(sMainPathLan+device_data[0]+'.Ping.alive', false, {name: 'Pingstatus' ,type: 'boolean', read: true, write: true});
                                        createState(sMainPathLan+device_data[0]+'.Ping.time', 0, {name: 'Zeit' ,type: 'number', read: true, write: true, unit: 'ms'});
                                        createState(sMainPathLan+device_data[0]+'.Ping.status', '', {name: 'Status' ,type: 'string', read: true, write: true});
                                		createState(sMainPathLangeraete, 0, {name: 'Onlinestatus' ,type: 'number', read: true, write: true});
                                    }
                                }
                                
                                //Wlan Datenpunkte anlegen
                                function PingInitalisierungWlan(){
                                    let sDevice = cDevicePingWlan.split(':');
                                    for (let i = 0; i <= sDevice.length-1; i++) {
                                        let device_data = sDevice[i].split(',');
                                        createState(sMainPathWlan +device_data[0], '', {name: device_data[1],read: true, write: true});
                                        createState(sMainPathWlan +device_data[0]+'.Ping.alive', false, {name: 'Pingstatus' ,type: 'boolean', read: true, write: true});
                                        createState(sMainPathWlan +device_data[0]+'.Ping.time', 0, {name: 'Zeit' ,type: 'number', read: true, write: true, unit: 'ms'});
                                        createState(sMainPathWlan +device_data[0]+'.Ping.status', '', {name: 'Status' ,type: 'string', read: true, write: true});
                                		createState(sMainPathWlangeraete, 0, {name: 'Onlinestatus' ,type: 'number', read: true, write: true});
                                    }
                                }
                                
                                
                                //START
                                PingInitalisierungKamera();
                                 
                                async function pingHost(host,sDesc) {
                                    try {
                                        const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
                                        setState(sMainPathKamera+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
                                        setState(sMainPathKamera+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
                                        setState(sMainPathKamera+sDesc+'.Ping.status', 'OK', true);
                                    } catch (error) {
                                        setState(sMainPathKamera+sDesc+'.Ping.status', 'ERROR', true);
                                    }
                                }
                                
                                PingInitalisierungLan();
                                 
                                async function pingHost(host,sDesc) {
                                    try {
                                        const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
                                        setState(sMainPathLan+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
                                        setState(sMainPathLan+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
                                        setState(sMainPathLan+sDesc+'.Ping.status', 'OK', true);
                                    } catch (error) {
                                        setState(sMainPathLan+sDesc+'.Ping.status', 'ERROR', true);
                                    }
                                }
                                
                                PingInitalisierungWlan();
                                 
                                async function pingHost(host,sDesc) {
                                    try {
                                        const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
                                        setState(sMainPathWlan+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
                                        setState(sMainPathWlan+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
                                        setState(sMainPathWlan+sDesc+'.Ping.status', 'OK', true);
                                    } catch (error) {
                                        setState(sMainPathWlan+sDesc+'.Ping.status', 'ERROR', true);
                                    }
                                }
                                
                                
                                //Ping aller 10 Sekunden - kann angepasst werden - kleinerer Wert nicht empfohlen
                                //damit das Intervall (wenn zu niedrig) nicht "gesprengt" wird: Schleife sperren und am Ende wieder freigeben
                                let bPingSperreKamera = false;
                                schedule('*/20 * * * * *', async function StartPing() {
                                    if (bPingSperreKamera == false) {
                                        bPingSperreKamera = true;
                                        let sDevice = cDevicePingKamera.split(':');
                                        for (let i = 0; i <= sDevice.length-1; i++) {
                                            await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
                                        }
                                        bPingSperreKamera = false;
                                    }
                                });
                                
                                let bPingSperreLan = false;
                                schedule('*/30 * * * * *', async function StartPing() {
                                    if (bPingSperreLan == false) {
                                        bPingSperreLan = true;
                                        let sDevice = cDevicePingLan.split(':');
                                        for (let i = 0; i <= sDevice.length-1; i++) {
                                            await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
                                        }
                                        bPingSperreLan= false;
                                    }
                                });
                                
                                //Ping aller 10 Sekunden - kann angepasst werden - kleinerer Wert nicht empfohlen
                                //damit das Intervall (wenn zu niedrig) nicht "gesprengt" wird: Schleife sperren und am Ende wieder freigeben
                                let bPingSperreWlan = false;
                                schedule('*/40 * * * * *', async function StartPing() {
                                    if (bPingSperreWlan == false) {
                                        bPingSperreWlan = true;
                                        let sDevice = cDevicePingWlan.split(':');
                                        for (let i = 0; i <= sDevice.length-1; i++) {
                                            await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
                                        }
                                        bPingSperreWlan = false;
                                    }
                                });
                                

                                der Part ist so nicht richtig. Da bräuchte ich Hilfe

                                //START
                                PingInitalisierungKamera();
                                 
                                async function pingHost(host,sDesc) {
                                    try {
                                        const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
                                        setState(sMainPathKamera+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
                                        setState(sMainPathKamera+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
                                        setState(sMainPathKamera+sDesc+'.Ping.status', 'OK', true);
                                    } catch (error) {
                                        setState(sMainPathKamera+sDesc+'.Ping.status', 'ERROR', true);
                                    }
                                }
                                
                                PingInitalisierungLan();
                                 
                                async function pingHost(host,sDesc) {
                                    try {
                                        const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
                                        setState(sMainPathLan+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
                                        setState(sMainPathLan+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
                                        setState(sMainPathLan+sDesc+'.Ping.status', 'OK', true);
                                    } catch (error) {
                                        setState(sMainPathLan+sDesc+'.Ping.status', 'ERROR', true);
                                    }
                                }
                                
                                PingInitalisierungWlan();
                                 
                                async function pingHost(host,sDesc) {
                                    try {
                                        const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
                                        setState(sMainPathWlan+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
                                        setState(sMainPathWlan+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
                                        setState(sMainPathWlan+sDesc+'.Ping.status', 'OK', true);
                                    } catch (error) {
                                        setState(sMainPathWlan+sDesc+'.Ping.status', 'ERROR', true);
                                    }
                                }
                                
                                
                                //Ping aller 10 Sekunden - kann angepasst werden - kleinerer Wert nicht empfohlen
                                //damit das Intervall (wenn zu niedrig) nicht "gesprengt" wird: Schleife sperren und am Ende wieder freigeben
                                let bPingSperreKamera = false;
                                schedule('*/20 * * * * *', async function StartPing() {
                                    if (bPingSperreKamera == false) {
                                        bPingSperreKamera = true;
                                        let sDevice = cDevicePingKamera.split(':');
                                        for (let i = 0; i <= sDevice.length-1; i++) {
                                            await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
                                        }
                                        bPingSperreKamera = false;
                                    }
                                });
                                
                                let bPingSperreLan = false;
                                schedule('*/30 * * * * *', async function StartPing() {
                                    if (bPingSperreLan == false) {
                                        bPingSperreLan = true;
                                        let sDevice = cDevicePingLan.split(':');
                                        for (let i = 0; i <= sDevice.length-1; i++) {
                                            await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
                                        }
                                        bPingSperreLan= false;
                                    }
                                });
                                
                                //Ping aller 10 Sekunden - kann angepasst werden - kleinerer Wert nicht empfohlen
                                //damit das Intervall (wenn zu niedrig) nicht "gesprengt" wird: Schleife sperren und am Ende wieder freigeben
                                let bPingSperreWlan = false;
                                schedule('*/40 * * * * *', async function StartPing() {
                                    if (bPingSperreWlan == false) {
                                        bPingSperreWlan = true;
                                        let sDevice = cDevicePingWlan.split(':');
                                        for (let i = 0; i <= sDevice.length-1; i++) {
                                            await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
                                        }
                                        bPingSperreWlan = false;
                                    }
                                });
                                

                                Edit: nach der ersten Pingabfrage kommt dann das

                                javascript.0	12:35:20.027	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.028	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:105:9)
                                javascript.0	12:35:20.028	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.029	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:106:9)
                                javascript.0	12:35:20.029	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.051	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:104:9)
                                javascript.0	12:35:20.051	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.053	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:105:9)
                                javascript.0	12:35:20.053	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.054	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:106:9)
                                javascript.0	12:35:20.054	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.077	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:104:9)
                                javascript.0	12:35:20.078	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.079	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:105:9)
                                javascript.0	12:35:20.080	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.081	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:106:9)
                                javascript.0	12:35:20.081	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.102	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:104:9)
                                javascript.0	12:35:20.103	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.104	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:105:9)
                                javascript.0	12:35:20.104	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.106	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:106:9)
                                javascript.0	12:35:20.106	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.136	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:104:9)
                                javascript.0	12:35:20.137	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.138	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:105:9)
                                javascript.0	12:35:20.138	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.139	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:106:9)
                                javascript.0	12:35:20.140	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.197	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:104:9)
                                javascript.0	12:35:20.197	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.198	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:105:9)
                                javascript.0	12:35:20.198	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                javascript.0	12:35:20.199	warn	at pingHost (script.js.common.Netzwerkstatus.Test1:106:9)
                                javascript.0	12:35:20.200	warn	at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
                                

                                gruss emil70

                                iobroker(V9) und Pi-hole läuft über docker (js-controller 6.0.11 und admin v7.1.15) auf einem synology DS918+ mit DSM 7.1.1-42962 Update 6

                                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

                                769

                                Online

                                32.5k

                                Benutzer

                                81.6k

                                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