こんにちは、ArduinoローカルネットワークDHCPが失敗しました
私は私たちの問題のために多くの解決策を探していましたが、何もしませんでした。これは準備が整った長いポストになります。
当社のシステム:我々は、ArduinoのUNO R3クローンとイーサネットシールドwiznet W5100、 このArduinoのは、WindowsのWebサービスにHTTP POSTリクエストを行い
持っています。 レスポンスによれば、arduinoは疑問の余地のないものを作るでしょう。
私たちのテスト環境では、WindowsマシンにWindows Webサービスをインストールし、このマシンをローカルネットワークに接続します。その後、ローカルネットワークにarduinoを接続します。私たちのサーバーのIPよりも、arduinoはdhcp要求を私たちのモデムルータから取得し、私たちのサーバーからwebservicesを呼び出すことができます。
今からすべて正常に動作します。ここで
は私たちのArduinoからいくつかのサンプルコードです(私はArduinoのために、この余分なライブラリを使用します。。"RestClient.h"
#include <Ethernet.h>
#include <SPI.h>
#include "RestClient.h"
RestClient client = RestClient("192.168.100.17",51200);
String response;
String PostData;
void setup()
{
Serial.begin(9600);
byte mac[] = { 0x04, 0xD6, 0x2E, 0x81, 0x01, 0xB0 };
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
}
delay(1000);
Serial.println(Ethernet.localIP());
}
void postDataToServer(long rfidnumber,int rfidsource){
String postedRFIDNumber=String(rfidnumber);
postedRFIDNumber="000"+postedRFIDNumber;
response = "";
PostData="RFID="+postedRFIDNumber+"&SOURCE="+rfidsource;
const char * myPost = PostData.c_str();
int statusCode =
client.post("/sqlpublish/TTSWebService.asmx/INSERT_INDEXRFID",myPost,&response);
}
私たちは、会社に我々のシステムをインストールする必要があります。この会社は、独自のローカルネットワークを持っている彼らが。非常に限られたローカルネットワークを持っていますが、ネットワークに接続することはできますが、アクセス権なしでは「www」に行くことはできませんが問題ありません.Webサービスにはローカル接続のみを使用します。ローカルネットワーク内
これは、ネットワークシステムのスキーマを示しています。 この写真ではスイッチが見当たりませんが、会社は非常に幅があり、多くのデバイスを持っているので、彼らはたくさんのswtichesを使用すると推測することができます。
ローカルネットワークにデバイスを接続すると、このデバイスは最初にdhcp protocals get ipをWindows DHCPサーバーから呼び出し、ローカルネットワーク内で他のデバイスと通信できます。しかし、ルータのファイアウォールのためにインターネットモデムを経由することはできません。
は、その後私たちは、このようなセットアップ我々のシステムをします。このセットアップスイッチモデルで
は以下のとおりです。「AVAYA」。
VSP7000のXLS ERS4826 GTS-PWR + ERS3549 GTS-PWR +
ファイアウォールは、次のとおりです。私たちは、セットアップ奇妙なシステムに何かが起こっているウォッチガードのFirebox M300
。まず、自分のPC(マイデバイス)をローカルネットワークに接続すると、WindowsサーバーのWebサービスを呼び出すことができます。しかしArduinoはDHCPサーバーからIPを得ることができず、自然界はWebサービスに接続できません。だから私たちは "ok IPを静的に与えることができる"と考えています。 ArduinoにIPを手動で渡すよりも手間がかかります。その後、奇妙なことが始まりました。 ArduinoがWindowsのWebサービスに参加しようとすると、何度か応答しか得られません。 20人中1人がサーバーからの応答を得ています。また、応答時間も長くなりました。
静的arduino IPに対して別のデバイス(たとえばDevice_1)からpingを実行すると、応答が返されることがあります。 (同じ金額)
それでは、私たちは問題を絞り込みます。
まず最初に、ローカルネットワークで問題がないか確認するために、このような設定を1回変更します。
そしてNormalyすべてのシステム完璧に動作します。だから私たちのモデムのDHCPサーバーは完全に動作するようにします(この設定でもIp staticにそれを働かせました)。
接続エラーの可能性があります。
1ファイアウォール 2スイッチの問題 3-Arduinoクローン問題。
1-ファイアウォール
我々は、システム管理者に問題について話したとき、彼はすべてのローカルネットワーク接続とポートがファイアウォールで開かれているUSTに語りました。ローカルネットワークに接続しているPCなら、Webサービスを呼び出すことができるので、彼はおそらく正しいでしょう。
2スイッチ問題
This Question、それはそれで問題が解決しなかった我々の場合には、静的IP、BUを使用すると言う解決策として、それについて話しています。
In this Question jdr5ca答え意味をなさないが、私はthis post最後
In this Question answer tried but not working.
で問題をテストしたり、問題を解決できる方法は考えてHVEないが、それはとても一般的です。また、ıがWindowsの "arping"の代わりに使うべきもの。
3-Arduino Clon Problem。
来週私たちは、私は皆に知らせる
、オリジナルのArduinoとでそれを試してみてください。
そんなに、提案、ツール、または問題の診断ツールを私はすべての提案を開きます。