1

Web サーバーからワイヤレス クライアントへの出力を取得できません。私が使用している正確なスクリプト(逐語的に) は、私が試した他のどのスクリプトよりも適切に動作し、安定しているようです。

上記のリンクからの 3 つのスクリプトが NodeMCU Dev (ESP8266-12E) にアップロードされ、リセットを押すと、スクリプトは期待どおりにシリアル ポートを介してステータスを出力します。

Communication with MCU...
Got answer! AutoDetect firmware...

NodeMCU firmware detected.
=node.hStatus = 0 (Idle)
eap()
36936
> Status = 0 (Idle)
Status = 0 (Idle)
Status = 0 (Idle)

  { repeats for 30 seconds ... }

Status = 0 (Idle)
Status = 0 (Idle)
network not found, switching to AP mode
Starting up AP with SSID: Unconfigured-2c:36
GET received

上記の出力は、この AP に別のクライアント (GET を受信) で接続していることを示していますが、クライアントには何も出力されません。ブラウザのページが空白です。

HTML ページを出力するために呼び出される関数は、configServer.lua にあります。

function sendPage(conn)
  conn:send('HTTP/1.1 200 OK\n\n')
  ...

conn:send()クライアントで出力を生成するステートメントはありません。複数のクライアントと複数のブラウザーで試しました。また、このルーチン内にいくつかのステートメントを設定しましprint()たが、完全に実行されていることがわかります。

これを引き起こす可能性のある問題の種類や、トラブルシューティングの方法を知っている人はいますか? これらのスクリプトは、それらを試した他の人にとってはうまくいったようです。

http://nodemcu-build.comを使用してビルドされた NodeMCU を実行します。SDK v1.4.0 に基づいています。それはうまくいくようです:

NodeMCU custom build by frightanic.com
    branch: master
    commit: c8037568571edb5c568c2f8231e4f8ce0683b883
    SSL: false
    modules: adc,bit,cjson,coap,crypto,dht,enduser_setup,file,gpio,i2c,mqtt,net,node,pwm,rtctime,spi,tmr,u8g,uart,wifi
 build  built on: 2016-02-03 23:59
 powered by Lua 5.1.4 on SDK 1.4.0
4

1 に答える 1

1

NodeMCU 0.9.6で機能したため、他の人でも機能しました。

NodeMCU 1.4.0 では、複数の呼び出しは機能しconn:send()ません。

すべてのデータを連結して一度に送信する必要があります。

conn:send('HTTP/1.1 200 OK\n\n<!DOCTYPE HTML>\n<html>\n<head><meta content="text/html; charset=utf-8">\n<title>Device Configuration</title></head>\n<body>\n<form action="/" method="POST">\n')

または、現在のチャンクが送信された後に、データの別のチャンクを送信することもできます。conn:on("sent", send_callback)

local response = {
    'HTTP/1.1 200 OK\n\n',
    '<!DOCTYPE HTML>\n<html>\n<head><meta content="text/html; charset=utf-8">\n<title>Device Configuration</title></head>\n<body>\n<form action="/" method="POST">\n'
}
local function sender(conn)
    if #response>0 then conn:send(table.remove(response,1))
        else conn:close()
    end
end
conn:on("sent", sender)
sender(conn)
于 2016-02-04T02:58:10.133 に答える