2016-10-11 12 views
1

nodeMCU ESP8266 12Eボードを使用しているため、Wi-Fiネットワークに接続してIPをテストできます。問題は、IPが必ずしも利用可能な帯域幅があることを意味するとは限らない。 ISPがダウンしていて、私のルータがまだESP8266に有効なIPを与えているかもしれません。有効なIPを使用しても帯域幅をテストしない

どうすればこの問題に対処できますか?

私は「NO-帯域幅」の状況をシミュレートするために、私のモデムからルーターにワイヤーを抜いたときに、それはをどのように応答するかを確認するには、以下のコードで遊んでてきました。私はSTA_DHCP_TIMEOUTがそれを自動的に解決してくれると思っていましたが、それは私が思うように動作しません。私がルアとNodeMCU APIの完全な初心者であることを忘れて、私の無知を許してください。

 wifi.eventmon.register(wifi.eventmon.STA_CONNECTED, function(T) 
    print("wIfI Connected") 
    end) 

    wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T) 
    print("wIfI Disconnected") 
    end) 

    wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T) 
    print("wIfI Got an IP") 
    end) 

    wifi.eventmon.register(wifi.eventmon.STA_DHCP_TIMEOUT, function() 
    print("DHCP TIMEOUT") 
    end) 

    wifi.setmode(wifi.STATION) 
    wifi.sta.config("mySSID","myPassword") 
    print(wifi.sta.getip()) 

以下の画像は出力を示しています。私は有効なIPを持っている間誰かが "NO - 帯域幅"を感じる方法をアドバイスできますか? enter image description here

答えて

3

私はあなたが正しい、ないインターネット接続を意味しないように見える「ノー帯域幅」とはLuaの中に完全な初心者とNodeMCUのAPI

のですか?もしそうなら、この質問は2つのどちらともかなり関係していないようです。 IMOそれは基本的なネットワーキングの質問の多くです。

  • 「DHCPタイムアウト」は、IPアドレスを取得するデバイスのタイムアウトを意味します。
  • "Got IP"は、ネットワークインフラストラクチャ(DHCPサーバー)のコンポーネントの1つに到達可能で、デバイスにIPアドレスを割り当てたことを意味します。

これは必ずしもデバイスが実際にインターネットに接続できるとは限りません。ルーターがDHCPサーバーとして機能し、ルーターに接続されたモデムがインターネットアクセスを提供する場合、2つを切り離すとデバイスにインターネットアクセスがないことがわかります。

インターネットからの接続が可能かどうかを検出するには、サーバーに接続する必要があります。 NodeMCUを使用すると、既知のリソースにGET requestを送信し、応答が得られるかどうかを確認するのが最も簡単です。明らかに、HTTPモジュールが必要です。

http.get("http://httpbin.org/ip", nil, function(code, data) 
    if (code < 0) then 
     print("HTTP request failed") 
    else 
     print(code, data) 
    end 
    end) 
+0

ありがとう、私は今どこに私の研究に焦点を当てるか知っています。私のウェブサイトホスティングサーバーでは、このテストを行うための特別なURLを作成し、ESP8266が直接呼び出すことができます。どうもありがとう – Binaryrespawn

関連する問題