2016-09-17 5 views
0

私はNodeMCU(ESP8266)を使用してロボットをコーディングしており、リモートコントロールしたいと考えています。私の現在の解決策は、近くのルータに接続し、インターネットに接続し、TCP HTTPサーバーを作成しています。データは、モバイルデバイス(リモート)からHTTPリクエストを介してNodeMCU(ロボット)にストリーミングされます。リモートは、HTML/CSS/JavaScriptのブラウザを介してモバイルデバイスにロードされます。 NodeMCUは独自のホットスポットを作成するためボードによって作成されたアクセスポイント経由でNodeMCUにHTTPサーバーを作成する

私が代わりにしたいがために、次のとおりです。ルータは

  • を必要とされていない

    • 接続が

    より直接的である私は、同じTCPをしたいですHTTPソリューションを使用してWebページを提供する方法はわかりません。

    これは私のコードです:

    -- Connect to router 
    wifi.sta.config("ssid","password") 
    wifi.sta.connect() 
    
    -- Code for waiting for connection 
    
    -- Create server 
    srv = net.createServer(net.TCP) 
    srv:listen(80,function(conn)  
    conn:on("receive",function(conn,payload) 
        for line in string.gmatch(payload,'[^\r\n]+') do 
         s = string.find(line, "GET /&") 
         -- If query is there, control robot 
         if s ~= nil then 
          -- Do stuff with query 
          break; 
         -- If no query, serve webpage 
         else 
          file.open("index.html", "r") 
          while true do 
           s = file.read(1460) 
           if s == nil then 
            break 
           end 
           conn:send(s) 
          end 
          file.close() 
         end 
         break 
        end 
        conn:on("sent", function(conn) conn:close() end) 
    end) 
    end) 
    

    は、カスタムホットスポットの作成:

    wifi.setmode(wifi.STATIONAP) 
    cfg={} 
    cfg.ssid="custom_ssid" 
    cfg.pwd="custom_password" 
    wifi.ap.config(cfg) 
    

    をモバイルには、サーバーにアクセスできるように、どのように私はそれを作るのですか?サーバーのIPを取得/設定するにはどうすればよいですか?基本的に、私はそれが動作するために必要です。ありがとう!

  • 答えて

    1

    私は完全に理解していますが、私はあなたが本当に近いと信じています。 APの機能については、http://nodemcu.readthedocs.io/en/latest/en/modules/wifi/#wifiap-moduleのマニュアルを参照してください。

    wifi.ap.config(cfg)は、指定したとおりにSSIDとpwdを設定します。クライアントは、ネットワークに参加してこのAPに接続します。

    wifi.ap.getip()を印刷すると、デフォルトではデバイスのIPアドレスは192.168.1.4です。したがって、このネットワークに参加しているクライアントの場合、カスタムIPを明示的に設定しない限り、サーバーは192.168.1.4:80に到達可能です。

    ただし、データの送信が壊れているようです。複数のconn:send(s)(ループ内)がありますが、conn:on("sent", function(conn) conn:close() end)もあります。つまり、の後に接続が終了します。conn:sendhttp://nodemcu.readthedocs.io/en/latest/en/modules/net/#netsocketsendのドキュメントをチェックして、適切に行う方法の例を参照してください。

    +0

    あなたが何を意味するか分かりませんが、私はそれを動作させました。 upvoteを取る。 –

    関連する問題