2013-01-13 69 views
0

我對網絡開發完全陌生,所以請原諒我以防萬一這個問題是多餘的。 這是我想要做的: 我有多個Arduinos(配備w/EthernetShields),可以收集和顯示數據(使用傳感器和LCD屏幕)。所有的Arduinos都與一個託管MySQL數據庫的網絡服務器和一個可視化數據的網頁進行通信。 Arduinos本身能夠託管簡單的網頁服務器,可以運行一些簡單的HTML/PHP /等...服務器之間的簡單數據交換

我的問題是: 什麼是最直接的方式來實現Arduinos和主服務器之間的通信,所以我可以在它們之間來回發送數據,而無需任何用戶交互?數據由相對較少的整數值和短字符串組成。安全不是問題。

爲了清晰起見,編輯: 如何在兩臺網絡服務器之間連續發送數據? 假設我使用PHP,執行此操作的簡單方法是什麼?所有關於GET和POST方法的教程都包括使用'表單動作',這對我的理解需要用戶交互。

+0

我不確定如果我明白你的問題,但PHP有一個內置的MySQL API。而且,您將無法僅使用JavaScript(JQuery)與服務器進行交互,您仍然需要一些後端(php)用於此目的。 – YemSalat

+0

爲什麼你需要用戶與GET和POST交互。你不能使用JS生成這些請求嗎?如上所述,儘管如此,JS當然不能做任何事情。後端將需要 – mariosk89

+0

閱讀在PHP中使用'CURL'與另一臺服務器發送/接收 – charlietfl

回答

1

如果我理解你是對的,你有一箇中央Web服務器需要與大量的arduinos進行通信。您需要在arduinos和中央服務器之間雙向發送信息。而且,您想使用web(http/tcp/ip)協議來執行此操作。

您面臨一個選擇:
您想讓中央服務器啓動通信嗎?或者你想讓每個arduino發起溝通?

我認爲第二選擇是相當不錯的。這意味着您可以在不重新配置中央服務器的情況下將新的arduinos添加到系統中。但是,我不太瞭解您的應用程序,因此可能有某些原因,這是一個壞主意。

所以,你要做的是在每個arduino上實現一個簡單的web客戶端(不是瀏覽器)。然後,按照定期的計劃,每個arduino都會向主服務器發出Web請求。根據您需要從arduino發送到服務器的數據量,可以使用GET或POST。如果數據很小,則可以使用GET請求。例如,如果是溫度和溼度,您可以每秒發送一次這樣的請求。

http://server/upload.php?temp=65&humidity=78 

作爲對此的響應,中央服務器可以正確處理這些數據。您可以通過客戶端互聯網地址REMOTE_ADDR來確定它來自哪個arduino。

然後,服務器發送一個響應,其中包含服務器需要發送給arduino的任何數據。

看看這是怎麼回事?每一次arduino都會在網頁服務器上點擊「這裏是我爲你準備的,你爲我獲得了什麼?」

+0

謝謝,這對我工作:) –