2017-07-15 5 views
2

私はセンサーからデータを処理すると同時に、サーバー(Thingspeak)にデータをアップロードしようとしています。サーバに測定値を送信し、センサから同時にデータを受信する方法は?

問題は、サーバー接続(wifiを使用)が終了すると(タイムアウトを防ぐためにセッションを延長する方法が見つからない場合)、再接続には時間がかかり、その間にデータを処理できません。そのセンサーは、私のデータに時々穴ができました。

コールバック関数を使用して、サーバーに接続しようとするたびにコアがサーバーからの応答を待つようにすると同時に、センサーから手を出す。今

私のコードのコメントの部分については、この

loop 
{ 
    while(now==prev) 
    { 
     processdata; 
    } 
    prev=now; 
    count++; 
    if(count==15) 
    { 
     count=0; 
     senddata(); 
    } 
} 
senddata() 
{ 
    if(!serverconnected) 
    { 
     if(!send connect request()) error message; //after this function calls, 
     if(!receive connection confirmed()) error message; //takes too long time until this function finishes executing. 
    } 
    send data. 
} 

実際の関数名は WiFiClientSecure.h

から

client.connect(host, port) 
client,verify(fingerprint, host) 

機能しているようであるコールバックを使用するにはどのような方法がありますこの問題を解決する方法は? 解決策を探している間、私は私が使用できるコールバック関数を持っているようだ次のヘッダーファイル

を見つけました...しかし、これはに無線LAN接続を確立するさまざまな方法を使用している場合、私はわからないんだけどサーバー、関数自体の使い方については説明していません。

+0

は、以下の回答しようと考えると? – cagdas

答えて

0

残りのAPIを使用している限り、快適にセッションを維持することはできません。したがって、WebSocketやMQTTのようなプロトコルを使ってセッションを処理する方が良いでしょう。いつでも即座にデータをサーバーにプッシュする責任があります。

このlinkには、mqttクライアント接続をどのようにしてThingspeakで行い、それにデータをプッシュするかが記述されています。リンクから

いくつかのコードをカット:

#include <PubSubClient.h> 

WiFiClient client; 
PubSubClient mqttClient(client); 
const char* server = "mqtt.thingspeak.com"; 

mqttClient.setServer(server, 1883); 
関連する問題