2016-05-23 3 views
-1

ローカルサーバーから送信されたJSONデータを受信して​​表示するにはどうすればよいですか?私は、LuaのスクリプトがESP8266バージョン01で起動したことを意味します。最終的に、I2Cによって添付のLCD 2x16のデータをESP8266に表示したいと考えています。ESP8266-01 NodeMCUがルアでJSONを読み取る

私はESP-01をwebapiサーバーに接続したいと考えています。webapiサーバーは、さまざまな情報を含むデータをJSONで動的に送信します。この情報をESPに接続されたLCDに表示したい。 JSONデータのデコード方法はわかりません。サーバーアドレスは192.168.1.8:8057/apiです。

OK。私がしようとした場合

{"lowVersion":1,"highVersion":3} 

sk=net.createConnection(net.TCP, 0) 
sk:on("receive", function(sck, c) 
d = c 
end) 
sk:connect(8095,"192.168.1.8") 
sk:send("GET /api/ HTTP/1.1\r\nHost: 192.168.1.8\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n") 

print(d) 

、それ表示結果:私はこれを試してみてください

sk=net.createConnection(net.TCP, 0) 
sk:on("receive", function(sck, c) 
d = c 
end) 
sk:connect(8095,"192.168.1.8") 
sk:send("GET /api/ HTTP/1.1\r\nHost: 192.168.1.8\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n") 

local t = cjson.decode(d) -- this is line 10 
print(t.lowVersion) 

が表示される:

​​

値を表示する方法」 JSONの「lowVersion」または「highVersion」?

+2

StackOverflowは特定の問題について特定の質問をします。あなたのものは広がる道です。あなたが立ち往生しているときにいくつかの調査を行い、特定の質問をしてください。どのモジュールを使用していますか? ESP8266-01のようなものはありません。 ESP-01(2ピンのみ)またはNodeMCU開発キットv1.0 - [more more](http://frightanic.com/iot/comparison-of-esp8266-nodemcu-development-boards/)があります。 –

+0

こちらをご覧ください:http://lua-users.org/wiki/JsonModules –

+0

私の記事をもう一度見てください。助けてください。 – Rafik73

答えて

0

この全体的な質問は、あなたのcjson.decode()が失敗する理由を説明します。これは、サーバーが有効なJSONを返さないように見えるためです。

次の両方の例は、devブランチの最新のNodeMCUファームウェアで正常に動作します。

local t = cjson.decode('{"lowVersion":1,"highVersion":3}') 
print(t.lowVersion) 

http.get("http://httpbin.org/get", nil, function(code, data) 
    if (code < 0) then 
     print("HTTP request failed") 
    else 
     local t = cjson.decode(data) 
     for k,v in pairs(t) do print(k,v) end 
    end 
    end) 

利回り

1 

args table: 3fff0618 
url http://httpbin.org/get 
origin xxx.71.91.xxx 
headers table: 3fff0a88 

だから、あなたのサーバーは一貫{"lowVersion":1,"highVersion":3}を返すようにするか、特定の目に見えないが、無効な文字を返すことがないようです。

関連する問題