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. IP Adresse einlesen

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    21
    1
    832

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

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

IP Adresse einlesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
20 Beiträge 7 Kommentatoren 4.1k Aufrufe 4 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.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von pix
    #1

    Hallo,

    einer der http://forum.iobroker.org/viewtopic.php?f=32&t=615&p=4258&hilit=IP+node+red#p4248 war damals das Einlesen der externen IP über Wieistmeineip.de Im Zuge der Umstellung meiner node-red-flows auf Javascript poste ich hier mal mein Ergebnis. Im Grunde nicht viel anders, als die anderen Skript, nur das man nicht viel Parsen muss, da http://bot.whatismyipaddress.com/ nur die relevante IP und sonst nix zurückliefert. Ich habe Bluefox' Trigger zum Aktualisieren via VIS mal beigefügt. Sonst aktualisiert das Skript stündlich.

    /* IP Adresse einlesen 
    Quelle: whatismyipaddress.com
    
    erstellt: 27.08.2015 von pix
    */
    
    var logging = true; // (true;false) Logausgabe zentral schalten, ob stündlich geloggt werden soll
    
    // Objekt erstellen (mit Struktur)
    createState('IP.public', {name: 'Öffentliche IP-Adresse'});
    
    var url = 'http://bot.whatismyipaddress.com/'; 
    
    // Daten einlesen
    var request = require('request');
    function ip_einlesen() {
        request(url, function (error, response, body) {
            if (!error && response.statusCode == 200) {
                try{
                    if (logging) log('IP Adresse: ' + body);
                    setState('IP.public', body);
                } catch (e) {
                    log('IP-Adresse einlesen - Parse Fehler: ' + e);
                }
            } else {
                log('IP-Adresse einlesen - Fehler: ' + error);
            }
        });   // Ende request 
    }
    
    // Manuelles Einlesen der IP (über VIS Taster)
    createState('IP.aktualisieren', {name: 'Taster zum Aktualisieren'});
    on('IP.aktualisieren', function (obj) {
        if (!obj.newState.ack && obj.newState.val) {
            ip_einlesen(); // Daten sofort einlesen
            log('IP-Adresse einlesen - manuell gestartet');
        }
    });
    
    // Ausführung
    ip_einlesen();
    schedule("9 * * * *", ip_einlesen); // jede Stunde um 9min nach
    

    EDIT 14.11.2021
    Habe das Skript modernisiert und die Beiträge von weiter unten einbezogen:

    /* IP Adresse einlesen 
    Quelle: http://ipecho.net/plain
    
    erstellt: 27.08.2015 von pix
    03.01.2016 ID erstellt
    16.01.2018 Code optimiert
    22.07.2020 WAN IP kommt jetzt erstmal aus Unifi Adapter
    14.11.2021 bessere Quelle ohne Schnickschnack http://ipecho.net/plain
               Danke @wildbill und @crunchip https://forum.iobroker.net/post/702174      
    */
    
    const fC = false;
    const logging = true; // (true;false) Logausgabe zentral schalten, ob stündlich geloggt werden soll
    const idIP_Adresse = "IP.public";
    const idIP_aktualisieren = "IP.aktualisieren";
    
    let url = "http://ipecho.net/plain"; 
    
    // Objekte erstellen
    createState(idIP_Adresse, " ", fC, {
        name: "Öffentliche IP-Adresse",
        desc: "WAN Internet Protokoll Adresse",
        type: "string",
        role: "url"
    });
    
    createState(idIP_aktualisieren, false, fC, {
        name: "Taster zum Aktualisieren der IP Adresse",
        desc: "IP wird neu eingelesen",
        type: "boolean",
        role: "switch"
    });
    
    // Daten einlesen
    function ip_einlesen() {
        
        request(url, function (error, response, body) {
            if (!error && response.statusCode == 200) {
                try {
                    if (logging) log("IP-Adresse (ausgelesen von " + url + "): " + body);
                    setState(idIP_Adresse, body);
                } catch (e) {
                    log("IP-Adresse einlesen - Parse Fehler: " + e, "warn");
                }
            } else log("IP-Adresse einlesen - Fehler/" + error);
        });   // Ende request 
        
        /*
        setState(idIP_Adresse, getState("unifi.0.default.health.wan.wan_ip").val, function () {
            log("WAN IP aus Unifi-Adapter ausgelesen");
        });
        */
    }
    
    // Manuelles Einlesen der IP (über VIS Taster)
    on(idIP_aktualisieren, function (obj) {
        if (!obj.state.ack && obj.state.val) {
            ip_einlesen(); // Daten sofort einlesen
            log("IP-Adresse einlesen - manuell gestartet");
            setState(idIP_aktualisieren, false, false); // zurücksetzen des Tasters
        }
    });
    
    // Ausführung
    ip_einlesen();
    schedule("16 * * * *", ip_einlesen); // jede Stunde um 16min nach
    

    Viele Grüße
    Pix

    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

    OliverIOO 1 Antwort Letzte Antwort
    0
    • derAugeD Offline
      derAugeD Offline
      derAuge
      schrieb am zuletzt editiert von
      #2

      Leider hier auch kein Eintrag unter Zustände

      javascript-0	2015-08-27 20:06:54	warn	State "IP.public" not found
      javascript-0	2015-08-27 20:06:54	info	script.js.IP_Adresse_einlesen: IP Adresse: xxx.xxx.xxx.xxx
      javascript-0	2015-08-27 20:06:54	info	script.js.IP_Adresse_einlesen: registered 1 subscription and 1 schedule
      javascript-0	2015-08-27 20:06:54	info	Start javascript script.js.IP_Adresse_einlesen
      
      1 Antwort Letzte Antwort
      0
      • G Offline
        G Offline
        googie
        schrieb am zuletzt editiert von
        #3

        Vielen dank für dein Script:

        Wenn man die IPv4 möchte: "ipv4bot.whatismyipaddress.com" nutzen für IPv6 "ipv6bot.whatismyipaddress.com"

        bei bot.whatismyipaddress.com habe ich immer nur eine IPv6 bekommen

        Grüße

        1 Antwort Letzte Antwort
        0
        • W Online
          W Online
          Wildbill
          schrieb am zuletzt editiert von
          #4

          Hallo zusammen,
          hat jemand zufällig einen Ersatz für whatismyipaddress.com? Die API ist laut Link Text seit gestern deaktiviert, Aufrufe an ipv4bot.whatismyipaddress.com laufen somit ins Leere. Ich bin auf der Suche nach einer Site/Adresse, die nur die aktuelle IP ohne weiteren Schnickschnack zurückgibt bislang nicht fündig geworden.
          Gruss, Jürgen

          haselchenH 1 Antwort Letzte Antwort
          1
          • W Wildbill

            Hallo zusammen,
            hat jemand zufällig einen Ersatz für whatismyipaddress.com? Die API ist laut Link Text seit gestern deaktiviert, Aufrufe an ipv4bot.whatismyipaddress.com laufen somit ins Leere. Ich bin auf der Suche nach einer Site/Adresse, die nur die aktuelle IP ohne weiteren Schnickschnack zurückgibt bislang nicht fündig geworden.
            Gruss, Jürgen

            haselchenH Offline
            haselchenH Offline
            haselchen
            Most Active
            schrieb am zuletzt editiert von haselchen
            #5

            @wildbill

            Muss es denn ne Website sein?
            Ich meine der TR064 Adapter zeigt auch die externe IP Adresse an als Datenpunkt.

            Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

            W crunchipC 2 Antworten Letzte Antwort
            1
            • haselchenH haselchen

              @wildbill

              Muss es denn ne Website sein?
              Ich meine der TR064 Adapter zeigt auch die externe IP Adresse an als Datenpunkt.

              W Online
              W Online
              Wildbill
              schrieb am zuletzt editiert von
              #6

              @haselchen UPNP-Adapter? Da müsste ich mir wohl eine Fritzbox kaufen?! Never ever! :flushed:
              Ich habe aber durch Zufall eine Site gefunden, die einach die IP ausgibt. Im o.g. Script einfach als url https://v4.ident.me/ eintragen und schon läuft es wieder.

              Trotzdem Danke.
              Gruss, Jürgen

              1 Antwort Letzte Antwort
              0
              • haselchenH haselchen

                @wildbill

                Muss es denn ne Website sein?
                Ich meine der TR064 Adapter zeigt auch die externe IP Adresse an als Datenpunkt.

                crunchipC Abwesend
                crunchipC Abwesend
                crunchip
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #7

                @haselchen ich verwende auch das Script, weil
                A) der tr064 mir damals keine ext. Ip mehr angezeigt hat(ab einer bestimmten Firmeware Version)
                B) auf Unifi umgestellt habe

                umgestiegen von Proxmox auf Unraid

                haselchenH 1 Antwort Letzte Antwort
                0
                • crunchipC crunchip

                  @haselchen ich verwende auch das Script, weil
                  A) der tr064 mir damals keine ext. Ip mehr angezeigt hat(ab einer bestimmten Firmeware Version)
                  B) auf Unifi umgestellt habe

                  haselchenH Offline
                  haselchenH Offline
                  haselchen
                  Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @crunchip
                  @Wildbill

                  Hatte mich zuerst verschrieben.
                  Meinte den TR064 (hatte eben nochmal nachgeguckt).
                  Die externe IP wird dort angezeigt.

                  Adapter Version 4.2.14
                  FB 7590 mit 7.29 Software

                  Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

                  1 Antwort Letzte Antwort
                  0
                  • W Online
                    W Online
                    Wildbill
                    schrieb am zuletzt editiert von
                    #9

                    @haselchen sagte in IP Adresse einlesen:

                    TR064

                    @haselchen @crunchip Siehe mein Post oben, mit https://v4.ident.me/ im Script läuft es wieder, ohne UPNP- oder TR064-Adapter und vor Allem ohne Fritzbox.
                    Gruss, Jürgen

                    1 Antwort Letzte Antwort
                    1
                    • P pix

                      Hallo,

                      einer der http://forum.iobroker.org/viewtopic.php?f=32&t=615&p=4258&hilit=IP+node+red#p4248 war damals das Einlesen der externen IP über Wieistmeineip.de Im Zuge der Umstellung meiner node-red-flows auf Javascript poste ich hier mal mein Ergebnis. Im Grunde nicht viel anders, als die anderen Skript, nur das man nicht viel Parsen muss, da http://bot.whatismyipaddress.com/ nur die relevante IP und sonst nix zurückliefert. Ich habe Bluefox' Trigger zum Aktualisieren via VIS mal beigefügt. Sonst aktualisiert das Skript stündlich.

                      /* IP Adresse einlesen 
                      Quelle: whatismyipaddress.com
                      
                      erstellt: 27.08.2015 von pix
                      */
                      
                      var logging = true; // (true;false) Logausgabe zentral schalten, ob stündlich geloggt werden soll
                      
                      // Objekt erstellen (mit Struktur)
                      createState('IP.public', {name: 'Öffentliche IP-Adresse'});
                      
                      var url = 'http://bot.whatismyipaddress.com/'; 
                      
                      // Daten einlesen
                      var request = require('request');
                      function ip_einlesen() {
                          request(url, function (error, response, body) {
                              if (!error && response.statusCode == 200) {
                                  try{
                                      if (logging) log('IP Adresse: ' + body);
                                      setState('IP.public', body);
                                  } catch (e) {
                                      log('IP-Adresse einlesen - Parse Fehler: ' + e);
                                  }
                              } else {
                                  log('IP-Adresse einlesen - Fehler: ' + error);
                              }
                          });   // Ende request 
                      }
                      
                      // Manuelles Einlesen der IP (über VIS Taster)
                      createState('IP.aktualisieren', {name: 'Taster zum Aktualisieren'});
                      on('IP.aktualisieren', function (obj) {
                          if (!obj.newState.ack && obj.newState.val) {
                              ip_einlesen(); // Daten sofort einlesen
                              log('IP-Adresse einlesen - manuell gestartet');
                          }
                      });
                      
                      // Ausführung
                      ip_einlesen();
                      schedule("9 * * * *", ip_einlesen); // jede Stunde um 9min nach
                      

                      EDIT 14.11.2021
                      Habe das Skript modernisiert und die Beiträge von weiter unten einbezogen:

                      /* IP Adresse einlesen 
                      Quelle: http://ipecho.net/plain
                      
                      erstellt: 27.08.2015 von pix
                      03.01.2016 ID erstellt
                      16.01.2018 Code optimiert
                      22.07.2020 WAN IP kommt jetzt erstmal aus Unifi Adapter
                      14.11.2021 bessere Quelle ohne Schnickschnack http://ipecho.net/plain
                                 Danke @wildbill und @crunchip https://forum.iobroker.net/post/702174      
                      */
                      
                      const fC = false;
                      const logging = true; // (true;false) Logausgabe zentral schalten, ob stündlich geloggt werden soll
                      const idIP_Adresse = "IP.public";
                      const idIP_aktualisieren = "IP.aktualisieren";
                      
                      let url = "http://ipecho.net/plain"; 
                      
                      // Objekte erstellen
                      createState(idIP_Adresse, " ", fC, {
                          name: "Öffentliche IP-Adresse",
                          desc: "WAN Internet Protokoll Adresse",
                          type: "string",
                          role: "url"
                      });
                      
                      createState(idIP_aktualisieren, false, fC, {
                          name: "Taster zum Aktualisieren der IP Adresse",
                          desc: "IP wird neu eingelesen",
                          type: "boolean",
                          role: "switch"
                      });
                      
                      // Daten einlesen
                      function ip_einlesen() {
                          
                          request(url, function (error, response, body) {
                              if (!error && response.statusCode == 200) {
                                  try {
                                      if (logging) log("IP-Adresse (ausgelesen von " + url + "): " + body);
                                      setState(idIP_Adresse, body);
                                  } catch (e) {
                                      log("IP-Adresse einlesen - Parse Fehler: " + e, "warn");
                                  }
                              } else log("IP-Adresse einlesen - Fehler/" + error);
                          });   // Ende request 
                          
                          /*
                          setState(idIP_Adresse, getState("unifi.0.default.health.wan.wan_ip").val, function () {
                              log("WAN IP aus Unifi-Adapter ausgelesen");
                          });
                          */
                      }
                      
                      // Manuelles Einlesen der IP (über VIS Taster)
                      on(idIP_aktualisieren, function (obj) {
                          if (!obj.state.ack && obj.state.val) {
                              ip_einlesen(); // Daten sofort einlesen
                              log("IP-Adresse einlesen - manuell gestartet");
                              setState(idIP_aktualisieren, false, false); // zurücksetzen des Tasters
                          }
                      });
                      
                      // Ausführung
                      ip_einlesen();
                      schedule("16 * * * *", ip_einlesen); // jede Stunde um 16min nach
                      

                      Viele Grüße
                      Pix

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

                      @pix

                      wie wäre es mit
                      https://www.myip.com/api-docs/

                      ein einfacher request an
                      https://api.myip.com/
                      und schon kommt json formatiert die antwort
                      mit ip, land ausgeschrieben und kurz zurück,
                      bei mir halt als ipv6

                      {
                      "ip": "0000:00:0000:0000:0000:0000:0000",
                      "country": "Germany",
                      "cc": "DE"
                      }

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

                      W 1 Antwort Letzte Antwort
                      0
                      • OliverIOO OliverIO

                        @pix

                        wie wäre es mit
                        https://www.myip.com/api-docs/

                        ein einfacher request an
                        https://api.myip.com/
                        und schon kommt json formatiert die antwort
                        mit ip, land ausgeschrieben und kurz zurück,
                        bei mir halt als ipv6

                        {
                        "ip": "0000:00:0000:0000:0000:0000:0000",
                        "country": "Germany",
                        "cc": "DE"
                        }

                        W Online
                        W Online
                        Wildbill
                        schrieb am zuletzt editiert von
                        #11

                        @oliverio
                        Aus zwei Gründen ist das, zumindest für mich, weniger geeignet :

                        • Ich brauche die IPv4, die bringt die Site aber anscheinend nicht bei Dual stack
                        • Ich müsste den string der kommt erst noch zerpflücken, um die IP sauber in einen Datenpunkt zu schreiben.

                        Die von mir genannte Site bringt direkt den string mit der IPv4, der sich so in einen Datenpunkt schreiben und weiter verarbeiten lässt.
                        Aber Danke

                        Gruß, Jürgen

                        crunchipC OliverIOO 2 Antworten Letzte Antwort
                        0
                        • W Wildbill

                          @oliverio
                          Aus zwei Gründen ist das, zumindest für mich, weniger geeignet :

                          • Ich brauche die IPv4, die bringt die Site aber anscheinend nicht bei Dual stack
                          • Ich müsste den string der kommt erst noch zerpflücken, um die IP sauber in einen Datenpunkt zu schreiben.

                          Die von mir genannte Site bringt direkt den string mit der IPv4, der sich so in einen Datenpunkt schreiben und weiter verarbeiten lässt.
                          Aber Danke

                          Gruß, Jürgen

                          crunchipC Abwesend
                          crunchipC Abwesend
                          crunchip
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von
                          #12

                          @wildbill hab noch was anderes gefunden

                          http://ipecho.net/plain
                          

                          gibt dir direkt deine ip aus

                          umgestiegen von Proxmox auf Unraid

                          1 Antwort Letzte Antwort
                          1
                          • W Wildbill

                            @oliverio
                            Aus zwei Gründen ist das, zumindest für mich, weniger geeignet :

                            • Ich brauche die IPv4, die bringt die Site aber anscheinend nicht bei Dual stack
                            • Ich müsste den string der kommt erst noch zerpflücken, um die IP sauber in einen Datenpunkt zu schreiben.

                            Die von mir genannte Site bringt direkt den string mit der IPv4, der sich so in einen Datenpunkt schreiben und weiter verarbeiten lässt.
                            Aber Danke

                            Gruß, Jürgen

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

                            @wildbill

                            gibt ja noch mehr ähnliche dienste wie crunchip geschrieben hat
                            https://api.ipify.org/?format=json

                            was meinst du mit zerplücken? es ist json

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

                            W 1 Antwort Letzte Antwort
                            0
                            • OliverIOO OliverIO

                              @wildbill

                              gibt ja noch mehr ähnliche dienste wie crunchip geschrieben hat
                              https://api.ipify.org/?format=json

                              was meinst du mit zerplücken? es ist json

                              W Online
                              W Online
                              Wildbill
                              schrieb am zuletzt editiert von
                              #14

                              @oliverio Eben. Ein JSON muss ich erst per Script oder Node red "zerpflücken" um die reine IP sauber in einem Datenpunkt zu haben. Wenn die Site nur die reine IP direkt ausgibt und sonst nix, spare ich das.
                              Gruß, Jürgen

                              OliverIOO 1 Antwort Letzte Antwort
                              0
                              • W Wildbill

                                @oliverio Eben. Ein JSON muss ich erst per Script oder Node red "zerpflücken" um die reine IP sauber in einem Datenpunkt zu haben. Wenn die Site nur die reine IP direkt ausgibt und sonst nix, spare ich das.
                                Gruß, Jürgen

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

                                @wildbill

                                ah verstehe, ich sag dazu immer JSON.parse. aber jeder hat so seine terminologie
                                wobei axios macht das sogar vollautomatisch, wenn die response-header stimmen.
                                https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

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

                                W 1 Antwort Letzte Antwort
                                0
                                • OliverIOO OliverIO

                                  @wildbill

                                  ah verstehe, ich sag dazu immer JSON.parse. aber jeder hat so seine terminologie
                                  wobei axios macht das sogar vollautomatisch, wenn die response-header stimmen.
                                  https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

                                  W Online
                                  W Online
                                  Wildbill
                                  schrieb am zuletzt editiert von Wildbill
                                  #16

                                  @oliverio Ich denke, es war klar, was ich mit zerpflücken gemeinte habe. Und ja, ich kenne JSON.parse und habe ein paar Skripte und auch was in Node red laufen, um einige Dinge aus MQTT aufzudröseln ("zerpflücken"), aber ich sehe keinen Grund, warum ich das für die IP-Adresse machen sollte, wenn es auch direkt ohne geht...

                                  Gruss, Jürgen

                                  EDIT: Vielleicht noch aus Entwicklersicht: Dort sollte man immer so ressourcenschonend wie möglich arbeiten. Wenn das System eine Funktion bereits bietet (in diesem Fall eben eine Website), so nutzt man die und schreibt sich keine neu oder nutzt eine andere Site, die die Daten nicht so bringt, wie man sie will. Das ist sonst fehleranfälliger und bedeutet mehr Aufwand. Wenn Daten übertragen werden, dann so wenig wie möglich, aber so fehlerresistent, wie es geht. Bei der Site von Dir kommt erst einmal nicht das richtige (IPv6 statt IPv4). Dann kommt 2/3 Daten als Ballast mit, die ich nicht brauche. Dann muss ich den JSON Parsen, was möglicherweise fehlerbehaftet ist, wenn ich nen schlechten Tag habe und nicht alle Eventualitäten abdecke. Im Idealfall sendet Dir ein Gerät, ein Sensor, ein wasauchimmer die Daten direkt so, wie Du sie brauchst, ohne dass Du sie verarbeiten, umwandeln oder dergleichen musst. Genau das macht die von mir genannte Site (und einige mehr, wie ich mittlerweile weiss). Wenn ich an einem Sensor, der an einem ESP hängt, nur einen einzigen Wert brauche, dann lasse ich mir doch auch nicht sämtliche Betriebszustände in einem JSON schicken und parse den danach, nur weil ich es kann?! Dann sendet mir der ESP genau den einen Wert den ich brauche in genau dem Format, das ich brauche und gut ist. Nicht alles was machbar scheint oder ist macht auch immer Sinn...

                                  OliverIOO 1 Antwort Letzte Antwort
                                  1
                                  • W Wildbill

                                    @oliverio Ich denke, es war klar, was ich mit zerpflücken gemeinte habe. Und ja, ich kenne JSON.parse und habe ein paar Skripte und auch was in Node red laufen, um einige Dinge aus MQTT aufzudröseln ("zerpflücken"), aber ich sehe keinen Grund, warum ich das für die IP-Adresse machen sollte, wenn es auch direkt ohne geht...

                                    Gruss, Jürgen

                                    EDIT: Vielleicht noch aus Entwicklersicht: Dort sollte man immer so ressourcenschonend wie möglich arbeiten. Wenn das System eine Funktion bereits bietet (in diesem Fall eben eine Website), so nutzt man die und schreibt sich keine neu oder nutzt eine andere Site, die die Daten nicht so bringt, wie man sie will. Das ist sonst fehleranfälliger und bedeutet mehr Aufwand. Wenn Daten übertragen werden, dann so wenig wie möglich, aber so fehlerresistent, wie es geht. Bei der Site von Dir kommt erst einmal nicht das richtige (IPv6 statt IPv4). Dann kommt 2/3 Daten als Ballast mit, die ich nicht brauche. Dann muss ich den JSON Parsen, was möglicherweise fehlerbehaftet ist, wenn ich nen schlechten Tag habe und nicht alle Eventualitäten abdecke. Im Idealfall sendet Dir ein Gerät, ein Sensor, ein wasauchimmer die Daten direkt so, wie Du sie brauchst, ohne dass Du sie verarbeiten, umwandeln oder dergleichen musst. Genau das macht die von mir genannte Site (und einige mehr, wie ich mittlerweile weiss). Wenn ich an einem Sensor, der an einem ESP hängt, nur einen einzigen Wert brauche, dann lasse ich mir doch auch nicht sämtliche Betriebszustände in einem JSON schicken und parse den danach, nur weil ich es kann?! Dann sendet mir der ESP genau den einen Wert den ich brauche in genau dem Format, das ich brauche und gut ist. Nicht alles was machbar scheint oder ist macht auch immer Sinn...

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

                                    @wildbill

                                    ich seh du kennst dich aus.
                                    keinen weiteren kommentar

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

                                    P 1 Antwort Letzte Antwort
                                    0
                                    • OliverIOO OliverIO

                                      @wildbill

                                      ich seh du kennst dich aus.
                                      keinen weiteren kommentar

                                      P Offline
                                      P Offline
                                      pix
                                      schrieb am zuletzt editiert von
                                      #18

                                      Eröffnungsthread angepasst, danke an alle.

                                      https://forum.iobroker.net/post/1017

                                      Gruß
                                      Pix

                                      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                      1 Antwort Letzte Antwort
                                      3
                                      • crunchipC Abwesend
                                        crunchipC Abwesend
                                        crunchip
                                        Forum Testing Most Active
                                        schrieb am zuletzt editiert von
                                        #19

                                        angepasst zwecks request

                                        /* IP Adresse einlesen https://forum.iobroker.net/topic/1017/ip-adresse-einlesen?_=1636891604452
                                        Quelle: http://ipecho.net/plain
                                        {1}
                                        erstellt: 27.08.2015 von pix
                                        03.01.2016 ID erstellt
                                        16.01.2018 Code optimiert
                                        22.07.2020 WAN IP kommt jetzt erstmal aus Unifi Adapter
                                        14.11.2021 bessere Quelle ohne Schnickschnack http://ipecho.net/plain
                                                   Danke @wildbill und @crunchip https://forum.iobroker.net/post/702174      
                                        */
                                         
                                        const fC = false;
                                        const logging = true; // (true;false) Logausgabe zentral schalten, ob stündlich geloggt werden soll
                                        const idIP_Adresse = "IP.public";
                                        const idIP_aktualisieren = "IP.aktualisieren";
                                         
                                        let url = "http://ipecho.net/plain"; 
                                         
                                        // Objekte erstellen
                                        createState(idIP_Adresse, " ", fC, {
                                            name: "Öffentliche IP-Adresse",
                                            desc: "WAN Internet Protokoll Adresse",
                                            type: "string",
                                            role: "url"
                                        });
                                         
                                        createState(idIP_aktualisieren, false, fC, {
                                            name: "Taster zum Aktualisieren der IP Adresse",
                                            desc: "IP wird neu eingelesen",
                                            type: "boolean",
                                            role: "switch"
                                        });
                                         
                                        // Daten einlesen
                                        function ip_einlesen() {
                                            
                                            httpGet(url, (err, response) => {
                                                if(!err && response.statusCode == 200) {
                                                    const body = response.data;
                                                    try {
                                                        if (logging) log("IP-Adresse (ausgelesen von " + url + "): " + body);
                                                        setState(idIP_Adresse, body);
                                                    } catch (e) {
                                                        log("IP-Adresse einlesen - Parse Fehler: " + e, "warn");
                                                    }
                                                } else log("IP-Adresse einlesen - Fehler/" + error);
                                            });   // Ende request 
                                            
                                            /*
                                            setState(idIP_Adresse, getState("unifi.0.default.health.wan.wan_ip").val, function () {
                                                log("WAN IP aus Unifi-Adapter ausgelesen");
                                            });
                                            */
                                        }
                                         
                                        // Manuelles Einlesen der IP (über VIS Taster)
                                        on(idIP_aktualisieren, function (obj) {
                                            if (!obj.state.ack && obj.state.val) {
                                                ip_einlesen(); // Daten sofort einlesen
                                                log("IP-Adresse einlesen - manuell gestartet");
                                                setState(idIP_aktualisieren, false, false); // zurücksetzen des Tasters
                                            }
                                        });
                                         
                                        // Ausführung
                                        ip_einlesen();
                                        schedule("16 * * * *", ip_einlesen); // jede Stunde um 16min nach
                                        

                                        umgestiegen von Proxmox auf Unraid

                                        W 1 Antwort Letzte Antwort
                                        1
                                        • crunchipC crunchip

                                          angepasst zwecks request

                                          /* IP Adresse einlesen https://forum.iobroker.net/topic/1017/ip-adresse-einlesen?_=1636891604452
                                          Quelle: http://ipecho.net/plain
                                          {1}
                                          erstellt: 27.08.2015 von pix
                                          03.01.2016 ID erstellt
                                          16.01.2018 Code optimiert
                                          22.07.2020 WAN IP kommt jetzt erstmal aus Unifi Adapter
                                          14.11.2021 bessere Quelle ohne Schnickschnack http://ipecho.net/plain
                                                     Danke @wildbill und @crunchip https://forum.iobroker.net/post/702174      
                                          */
                                           
                                          const fC = false;
                                          const logging = true; // (true;false) Logausgabe zentral schalten, ob stündlich geloggt werden soll
                                          const idIP_Adresse = "IP.public";
                                          const idIP_aktualisieren = "IP.aktualisieren";
                                           
                                          let url = "http://ipecho.net/plain"; 
                                           
                                          // Objekte erstellen
                                          createState(idIP_Adresse, " ", fC, {
                                              name: "Öffentliche IP-Adresse",
                                              desc: "WAN Internet Protokoll Adresse",
                                              type: "string",
                                              role: "url"
                                          });
                                           
                                          createState(idIP_aktualisieren, false, fC, {
                                              name: "Taster zum Aktualisieren der IP Adresse",
                                              desc: "IP wird neu eingelesen",
                                              type: "boolean",
                                              role: "switch"
                                          });
                                           
                                          // Daten einlesen
                                          function ip_einlesen() {
                                              
                                              httpGet(url, (err, response) => {
                                                  if(!err && response.statusCode == 200) {
                                                      const body = response.data;
                                                      try {
                                                          if (logging) log("IP-Adresse (ausgelesen von " + url + "): " + body);
                                                          setState(idIP_Adresse, body);
                                                      } catch (e) {
                                                          log("IP-Adresse einlesen - Parse Fehler: " + e, "warn");
                                                      }
                                                  } else log("IP-Adresse einlesen - Fehler/" + error);
                                              });   // Ende request 
                                              
                                              /*
                                              setState(idIP_Adresse, getState("unifi.0.default.health.wan.wan_ip").val, function () {
                                                  log("WAN IP aus Unifi-Adapter ausgelesen");
                                              });
                                              */
                                          }
                                           
                                          // Manuelles Einlesen der IP (über VIS Taster)
                                          on(idIP_aktualisieren, function (obj) {
                                              if (!obj.state.ack && obj.state.val) {
                                                  ip_einlesen(); // Daten sofort einlesen
                                                  log("IP-Adresse einlesen - manuell gestartet");
                                                  setState(idIP_aktualisieren, false, false); // zurücksetzen des Tasters
                                              }
                                          });
                                           
                                          // Ausführung
                                          ip_einlesen();
                                          schedule("16 * * * *", ip_einlesen); // jede Stunde um 16min nach
                                          
                                          W Online
                                          W Online
                                          Wildbill
                                          schrieb am zuletzt editiert von Wildbill
                                          #20

                                          @crunchip Hättest Du ja gestern schon hier einstellen können. :grinning:
                                          Ich habe mir jetzt eben ein Blockly gebastelt, macht aber das gleiche, nur ohne Taster:

                                          
                                          <xml xmlns="https://developers.google.com/blockly/xml">
                                            <block type="on_ext" id="wu+=d3FSm7!EP9bGuz}+" x="88" y="38">
                                              <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                              <field name="CONDITION">ne</field>
                                              <field name="ACK_CONDITION"></field>
                                              <value name="OID0">
                                                <shadow type="field_oid" id="CP)F@J~.WrNshNe8^j@-">
                                                  <field name="oid">javascript.0.IP.public</field>
                                                </shadow>
                                              </value>
                                              <statement name="STATEMENT">
                                                <block type="email" id="P0+MV?vsb;+eM.qRJU^5">
                                                  <field name="INSTANCE"></field>
                                                  <field name="IS_HTML">FALSE</field>
                                                  <field name="LOG"></field>
                                                  <value name="TO">
                                                    <shadow type="text" id="KI~ORHiOlb#xW;c:9W(m">
                                                      <field name="TEXT">juergen@xxxxxx.net</field>
                                                    </shadow>
                                                  </value>
                                                  <value name="TEXT">
                                                    <shadow type="text" id="U~l)Zi~A3Eid%//!@(ll">
                                                      <field name="TEXT"></field>
                                                    </shadow>
                                                    <block type="text_join" id="sX~Mmo1!DucqYfX|BS)W">
                                                      <mutation items="2"></mutation>
                                                      <value name="ADD0">
                                                        <block type="text" id="/r2aD~vZ:B|:gPH7n#*u">
                                                          <field name="TEXT">IP-Adresse hat sich am </field>
                                                        </block>
                                                      </value>
                                                      <value name="ADD1">
                                                        <block type="text_join" id="8l~5z).,pYq[2E%Bmbl7">
                                                          <mutation items="2"></mutation>
                                                          <value name="ADD0">
                                                            <block type="convert_from_date" id="#Kb^2P.IqTBxb[_5*Ep1">
                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                              <field name="OPTION">DD.MM.YYYY</field>
                                                              <value name="VALUE">
                                                                <block type="get_value" id="w!AcPGJL[eb}@E^7!{+h">
                                                                  <field name="ATTR">lc</field>
                                                                  <field name="OID">javascript.0.IP.public</field>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                          <value name="ADD1">
                                                            <block type="text_join" id="/Q1!];m1%c5[XSgObLCV">
                                                              <mutation items="2"></mutation>
                                                              <value name="ADD0">
                                                                <block type="text" id="w~~sjln47Rslqo,#eCnA">
                                                                  <field name="TEXT"> um </field>
                                                                </block>
                                                              </value>
                                                              <value name="ADD1">
                                                                <block type="text_join" id="v{+[m.D0c=ULB0GkCcGx">
                                                                  <mutation items="2"></mutation>
                                                                  <value name="ADD0">
                                                                    <block type="convert_from_date" id="2E9b6yx[ac{3+bgb`@MS">
                                                                      <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                                      <field name="OPTION">hh:mm</field>
                                                                      <value name="VALUE">
                                                                        <block type="get_value" id="W-B,S(,Vq8e0}X1dvcAU">
                                                                          <field name="ATTR">lc</field>
                                                                          <field name="OID">javascript.0.IP.public</field>
                                                                        </block>
                                                                      </value>
                                                                    </block>
                                                                  </value>
                                                                  <value name="ADD1">
                                                                    <block type="text_join" id="?(%~hV*[tk2/pbidDj+s">
                                                                      <mutation items="2"></mutation>
                                                                      <value name="ADD0">
                                                                        <block type="text" id="/^J7DcU@7W%NoSUX(qqz">
                                                                          <field name="TEXT"> Uhr geändert. Letzte Änderung erfolgte am </field>
                                                                        </block>
                                                                      </value>
                                                                      <value name="ADD1">
                                                                        <block type="text_join" id="@IPtq,WhN#oi`d#aDBP9">
                                                                          <mutation items="2"></mutation>
                                                                          <value name="ADD0">
                                                                            <block type="convert_from_date" id="^L_7r^)c(3z*`5L~fum6">
                                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                                              <field name="OPTION">DD.MM.YYYY</field>
                                                                              <value name="VALUE">
                                                                                <block type="get_value" id="?8-6vS{X;~@3m!C~cwSK">
                                                                                  <field name="ATTR">lc</field>
                                                                                  <field name="OID">javascript.0.IP.IP_alt</field>
                                                                                </block>
                                                                              </value>
                                                                            </block>
                                                                          </value>
                                                                          <value name="ADD1">
                                                                            <block type="text_join" id="{U52#iPn-qj],gNt-kzw">
                                                                              <mutation items="2"></mutation>
                                                                              <value name="ADD0">
                                                                                <block type="text" id="4pZSt;ozH=qVKvFl/wHw">
                                                                                  <field name="TEXT"> um </field>
                                                                                </block>
                                                                              </value>
                                                                              <value name="ADD1">
                                                                                <block type="text_join" id="P.Rh71Fpum6D)S6MzstV">
                                                                                  <mutation items="2"></mutation>
                                                                                  <value name="ADD0">
                                                                                    <block type="convert_from_date" id="7ws*9uzEGa3{%mQ~i7DW">
                                                                                      <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                                                      <field name="OPTION">hh:mm</field>
                                                                                      <value name="VALUE">
                                                                                        <block type="get_value" id="If=yqQ3j([.`tq~^LI/W">
                                                                                          <field name="ATTR">lc</field>
                                                                                          <field name="OID">javascript.0.IP.IP_alt</field>
                                                                                        </block>
                                                                                      </value>
                                                                                    </block>
                                                                                  </value>
                                                                                  <value name="ADD1">
                                                                                    <block type="text_join" id="yWS|YU/L?1{{10c=(X]8">
                                                                                      <mutation items="2"></mutation>
                                                                                      <value name="ADD0">
                                                                                        <block type="text" id="xG-cGlyGtk}|;r-iPa`I">
                                                                                          <field name="TEXT"> Uhr. </field>
                                                                                        </block>
                                                                                      </value>
                                                                                      <value name="ADD1">
                                                                                        <block type="text_join" id="Y;iF6ZQBl6}8G5y)@}Cb">
                                                                                          <mutation items="2"></mutation>
                                                                                          <value name="ADD0">
                                                                                            <block type="text" id="eA4*#QE=y2A#lKy?gmZs">
                                                                                              <field name="TEXT">Neue IP lautet: </field>
                                                                                            </block>
                                                                                          </value>
                                                                                          <value name="ADD1">
                                                                                            <block type="get_value" id="I3cL%z{/+{1[]2+{UVIh">
                                                                                              <field name="ATTR">val</field>
                                                                                              <field name="OID">javascript.0.IP.public</field>
                                                                                            </block>
                                                                                          </value>
                                                                                        </block>
                                                                                      </value>
                                                                                    </block>
                                                                                  </value>
                                                                                </block>
                                                                              </value>
                                                                            </block>
                                                                          </value>
                                                                        </block>
                                                                      </value>
                                                                    </block>
                                                                  </value>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                  <value name="SUBJECT">
                                                    <shadow type="text" id="QvaUTb+Ce|.jF4iqF]vd">
                                                      <field name="TEXT">Internet war getrennt</field>
                                                    </shadow>
                                                  </value>
                                                  <next>
                                                    <block type="update" id="+G$F/H_gtDeqZz[T8,,p">
                                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                      <field name="OID">javascript.0.IP.IP_alt</field>
                                                      <field name="WITH_DELAY">TRUE</field>
                                                      <field name="DELAY_MS">1</field>
                                                      <field name="UNIT">min</field>
                                                      <field name="CLEAR_RUNNING">FALSE</field>
                                                      <value name="VALUE">
                                                        <block type="on_source" id="-9^HI`CB!P12M)8jp2%Y">
                                                          <field name="ATTR">state.val</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </next>
                                                </block>
                                              </statement>
                                            </block>
                                          </xml>
                                          
                                          

                                          Gruss, Jürgen

                                          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

                                          576

                                          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