IP Adresse

  • Hallo Community,

    ich stehe mal wieder auf dem Schlauch!

    Eigentlich möchte ich nur die IP-Adresse überwachen.

    Aber selbst das einfachste Script bekomme ich nicht ans laufen:

    (111.111 ist nur ein Beispiel!)

    ________________________________________________________________

    >D

    ff="192.168.111.111"

    hh="192.168.111.111"

    >S

    if %ff%==%hh%

    then

    print Hier sollte ja nun etwas herauskommen

    endif

    print ff Adresse: %ff%

    print hh Adresse: %hh%

    print lip Adresse: %lip% ;echte IP-Adresse!

    ________________________________________________________________

    ff Adresse; hh Adresse und lip Adresse wird mir exakt gleich angezeigt.

    Aber die If Abfrage wird nicht ausgeführt obwohl ff = hh

    Wahrscheinlich sehe ich vor lauter Bäumen den Wald nicht mehr! :rolleyes:

    Dankeschön

    HG

  • Hallo Crusher606,

    vielen Dank für diese Info. :)

    Den Unterschied von == und = wusste ich bisher noch nicht.

    Hörte sich auch gut an.

    habe jetzt:

    if %ff%=%hh%

    then

    print Richtig: %lip%

    endif

    Aber leider kommt immer noch kein "Richtig: 192.168.111.111" ;(


    Gruß

    HG

  • Vielleicht noch die zu vergleichenden Strings in Anführungszeichen setzen?

    Was macht er, wenn du das probierst:

    if “192.168.178.100“ = “192.168.178.100“

    then

    print Richtig: %lip%

    endif

    Dann wüsstest du schon mal das er einen Vergleich machen kann.

    Dann müsste “%ff%“ = “%hh%“ ja auch gehen.

    Ansonsten findet sich hier bestimmt ein schlauer Kopf der eine Lösung parat hat.

  • Crusher606

    guter Tip.

    siehe da: es findet kein Vergleich statt!

    auch bei:

    if “192.168.178.100“=“192.168.178.100“

    then

    print Richtig: %lip%

    endif

    wird NICHT der Printbefehl ausgeführt.

    Auch nicht:

    if “192.168.178.100“==“192.168.178.100"

    Bei

    :thumbup: if 192.168.178.100==192.168.178.100 :thumbup:

    kommt endlich ein Ergebniss

    deshalb weiß ich aber immer noch nicht wie ich %lip% vergleiche? ;(


  • Nun ja, zumindest ist etwas „Erkenntnis“ aufgekommen.

    Die Frage bleibt nun weiterhin, wie man die IP Adressen in die Variablen bekommt,

    damit sie verglichen werden können.

    Das weiß ich aber leider nicht :/

    Eigentlich würde ich erwarten das in den Variablen auch die IP so steht, das du sie

    mit == vergleichen könntest.

    Zumal der Versuch mit if 192.168.178.100==192.168.178.100 ja funktioniert hat.

  • Lass hier doch mal die Anführungszeichen weg.

    Dannn ist das doch ein Zahlenwert, oder?

    >D

    ff=192.168.111.111

    hh=192.168.111.111

    Dann muss %ff%==%hh% ja auch gehen, weil da nix andere drin

    steht als 192.168.111.111==192.168.111.111

    Einmal editiert, zuletzt von Crusher606 (14. März 2023 um 15:16)

  • 1. Vergleiche auf Gleichheit brauchen unbedingt ein doppeltes Gleichheitszeichen

    2. die IP ist immer ein String, also braucht es Anführungszeichen.

    3. lip ist eine Systemvariable und ist ebenfalls ein String

    4. Prozentzeichen braucht man nur wenn man z.B. im Webdisplay (HTML) oder bei der Tasmota Befehlen eine script Variable in text umwandeln will-

    also z.B.

    if lip=="192.168.111.111"

    then

    print lokale ip = 192.168.111.111

    endif

    die lokale ip im Webdisplay anzeigen (das {m} ist eine spezielles Zeichen das in einen Tabulator umgewandelt wird)

    >W

    lokale IP: {m}%lip%

    Einmal editiert, zuletzt von gemu2015 (15. März 2023 um 18:28)

  • Prima, auch wieder was gelernt.

    Auch von mir Danke

    Geht dann auch sein Vorhaben mit der Zuweisung auf diese Art?

    >D

    ff="192.168.111.111"

    hh="192.168.111.111"

    >S

    if ff=hh

    then

    print Hier sollte ja nun etwas herauskommen

    endif

  • Hallo Gemu2015,

    vielen Dank für die Ausführliche Erklärung.

    Wieder etwas dazugelernt :thumbup:

    aber:

    >D

    >S

    if lip="192.168.111.111" (NATÜRLICH MIT DER RICHTIGEN IP!)

    then

    print lokale ip = 192.168.111.111

    endif

    Ergibt keine Ausgabe.

    Gruß

    HG

  • Sorry,

    ich habe aber dein Beispiel kopiert.

    Obwohl du vorher noch betontest, daß immer zwei Gleichheitszeichen eingesetzt werden

    haben wir beide nicht den Fehler gesehen ;)

    Mit: if lip=="192.168.111.111" funktionierts!! :)

    P.S.

    ich habe immer zur Anzeige der IP die Setoption53 auf 1 gesetzt.

    Dein:

    >W

    lokale IP: {m}%lip%

    sieht aber viel besser aus!!

    wieder mal vielen Dank :) :)