1

ESP8266 WiFi モジュールで実行されている Lua スクリプトで見たものと現在実装しているものは、数秒ごとにサーバー ページをポーリングし、値が変更されたかどうかを確認することです。値が変更された場合は、何らかのアクションを実行してください。

これが私のコードです

tmr.alarm(1,10000, 1, function()
    if (wifi.sta.getip() == nil) then
        print("IP unavaiable, Waiting...")
    else    
        tmr.stop(1)
        tmr.alarm(1,10000, 1, function() 
            event_driven_func() 
        end)
    end
end)

function event_driven_func()
    print("Inside event_driven_func function"..node.heap());
        conn = nil
        conn=net.createConnection(net.TCP,0)        
        conn:on("receive", function(conn, payload)
            -- local buf = "";
            startRead = false
            Data = ""
            print("payload : "..payload)
            for i = 1, #payload do
                c = payload:sub(i,i)
                if (c=="{") then
                    startRead=true
                end
                if (startRead) then
                    Data=Data..c
                end
                if (c=="}") then
                    startRead=false
                    print("json string detected Do something now ...");
                end     
            end     
            conn:close()
            collectgarbage("collect");
        end)

        conn:connect(80,"my_server.co.in")
        conn:on("connection", function(conn, payload)
            conn:send("GET /xyz.php HTTP/1.0\r\nHost: my_server.co.in\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n") 
        end)

end

しかし、これは非常に非効率的です。

値が変更されるたびにコードに割り込みが発生し、event_driven_func が実行されるイベント駆動型コードである疑似コードを実装または改善するにはどうすればよいですか?

または、より効率的な方法。

適用例:

サーバーページに表示されているYouTubeサブスクライバーの数があるとします。サブスクライバーが変更されるたびに、jsonページ xyz.php の1つに「POST」Webリクエストを送信する必要があります(これは IFTTT を使用して行われます)。その後、イベントが実行されます値が反映されるようにLuaコードの関数。

4

0 に答える 0