我第一次发帖,但我真的卡住了,需要帮助。
我目前正在开发一个家庭自动化系统,我想使用路由器控制远程 Arduino 设备。
这部分已经完成,我可以使用可以打开或关闭的浏览器连接到链接。我什至用它做了一个应用程序。
目前我正在研究一个语音识别代码,它需要一个代码然后翻译成语音,语音识别部分与 SpeechRecognition 库配合得很好,一旦 python 理解了代码,它必须给出一个命令并使用 url。
如果我尝试访问http://www.google.com之类的网址,我认为它可以工作,但是我的网址是“ http://192.168.0.227/LED=ON14 ”,并且在使用它时,程序会挂起然后超时,我已经尝试了几种方法来控制它,但它们似乎都不起作用。
import urllib2
sock = urllib2.urlopen("http://192.168.0.227/LED=ON14")
htmlSource = sock.read()
sock.close()
print htmlSource
这是我最近的试验
> File "<stdin>", line 1, in <module> File
> "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
> return opener.open(url, data, timeout) File "/usr/lib/python2.7/urllib2.py", line 431, in open
> response = self._open(req, data) File "/usr/lib/python2.7/urllib2.py", line 449, in _open
> '_open', req) File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain
> result = func(*args) File "/usr/lib/python2.7/urllib2.py", line 1227, in http_open
> return self.do_open(httplib.HTTPConnection, req) File "/usr/lib/python2.7/urllib2.py", line 1194, in do_open
> h.request(req.get_method(), req.get_selector(), req.data, headers) File "/usr/lib/python2.7/httplib.py", line 1039, in request
> self._send_request(method, url, body, headers) File "/usr/lib/python2.7/httplib.py", line 1073, in _send_request
> self.endheaders(body) File "/usr/lib/python2.7/httplib.py", line 1035, in endheaders
> self._send_output(message_body) File "/usr/lib/python2.7/httplib.py", line 879, in _send_output
> self.send(msg) File "/usr/lib/python2.7/httplib.py", line 841, in send
> self.connect() File "/usr/lib/python2.7/httplib.py", line 822, in connect
> self.timeout, self.source_address) File "/usr/lib/python2.7/socket.py", line 562, in create_connection
> sock.connect(sa) File "/usr/lib/python2.7/socket.py", line 224, in meth
> return getattr(self._sock,name)(*args)
以该响应结束。
我用于 ESP8266 的 Arduino 代码是:
#include <ESP8266WiFi.h>
const char* ssid = "--";
const char* password = "--";
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
pinMode(14, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); pinMode(15, OUTPUT);
digitalWrite(14, LOW);digitalWrite(12, LOW);digitalWrite(13, LOW);digitalWrite(15, LOW); digitalWrite(2,LOW);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
IPAddress ip(192, 168, 0, 106);
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 0, 1);
// Static IP Setup Info Here...
WiFi.config(ip,dns, gateway, subnet); //If you need Internet Access You should Add DNS also...
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
int value = LOW;
// Return the response
/*client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<br><br>");
client.println("<a href=\"/LED=ON14\"\"><button>Turn On 4 </button></a>");
client.println("<a href=\"/LED=OFF14\"\"><button>Turn Off 4</button></a><br />");
client.println("<a href=\"/LED=ON12\"\"><button>Turn On 2 </button></a>");
client.println("<a href=\"/LED=OFF12\"\"><button>Turn Off 2</button></a><br />");
client.println("<a href=\"/LED=ON13\"\"><button>Turn On 3 </button></a>");
client.println("<a href=\"/LED=OFF13\"\"><button>Turn Off 3</button></a><br />");
client.println("<a href=\"/LED=ON15\"\"><button>Turn On 1 </button></a>");
client.println("<a href=\"/LED=OFF15\"\"><button>Turn Off 1</button></a><br />");
client.println("</html>"); */
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("Led pin is now: ");
delay(1);
Serial.println("Client disonnected");
Serial.println("");
// Match the request
if (request.indexOf("/ON4") != -1) {
digitalWrite(14, LOW);
value = HIGH;
}
if (request.indexOf("/OFF4") != -1) {
digitalWrite(14, HIGH);
value = LOW;
}
if (request.indexOf("/ON3") != -1) {
digitalWrite(13, LOW);
value = HIGH;
}
if (request.indexOf("/OFF3") != -1) {
digitalWrite(13, HIGH);
value = LOW;
}
if (request.indexOf("/ON2") != -1) {
digitalWrite(12, LOW);
value = HIGH;
}
if (request.indexOf("OFF2") != -1) {
digitalWrite(12, HIGH);
value = LOW;
}
if (request.indexOf("/ON1") != -1) {
digitalWrite(15, LOW);
value = HIGH;
}
if (request.indexOf("/OFF1") != -1) {
digitalWrite(15, HIGH);
value = LOW;
}
}