2017-06-10 3 views
0

Seit einigen Tagen habe ich versucht, einfache Web-App mit ESP8266-Modul zu kombinieren. Jetzt bleibe ich beim Senden der HTTP-Anfrage von ESP (konfiguriert als Client) an meine Anwendung oder an irgendeinen anderen Server hängen.Kann keine HTTP-Anfrage mit ESP8266 machen

Wenn ich versuche, eine GET-Anfrage an eine Website jedes Mal, wenn ich schlechte Anfrage bekomme. Dies sind meine Befehle (I Python-Skript verwenden prosess der Herstellung einer Verbindung zu beschleunigen.)

send_command('AT+CWMODE=1\n', wifi) 

send_command('AT+CIPMUX=0\n', wifi) 

send_command('AT+CWJAP="my_network","password"\n', wifi) 

send_command('AT+CIPSTART="TCP","onet.pl",80\r\n', wifi,2) 

request = r"HEAD/HTTP/1.1\r\nHost: onet.pl\r\nConnection: close\r\n\r\n" 

send_command('AT+CIPSEND=' + str(len(request)) + '\n', wifi) 

send_command(request,wifi,5) 

SEND_COMMAND Funktion:

def send_command(komenda, serial_name,czas=1): 

while serial_name.writable() == 0: 
    pass 

serial_name.write((komenda).encode()) 

while serial_name.out_waiting: 
    pass 

while serial_name.in_waiting == 0:#<= len(komenda)+4: 
    pass 

while serial_name.readable() == 0: 
    pass 
res = (serial_name.read(serial_name.in_waiting)) 

if czas == 1: 
    time.sleep(1) 
else: 
    time.sleep(2) 
if serial_name.in_waiting: 
    res= res+ (serial_name.read(serial_name.in_waiting)) 

print (res.decode('utf-8','ignore')) 

serial_name.reset_input_buffer() 
serial_name.reset_output_buffer() 

return res.decode('utf-8','ignore') 

Und die Antwort ist:

+IPD,160:HTTP/1.1 400 Bad Request Server: Dreamlab Accelerator Date: Sat, 10 Jun 2017 16:32:00 GMT Content-Type: text/html Content-Length: 166 Connection: close

werde ich Sei dankbar für Vorschläge, was in meinem Code falsch ist.

Antwort

0

Nach einem anderen Tag habe ich dieses Problem gelöst. Dies ist meine Lösung (vielleicht wird es für someoone sonst nützlich sein)

    die Esp8266 Firmware Upgrade auf Version 0.9.5.2
  1. Jeder Befehl sould mit Zeichen beendet werden '\ r \ n'
  2. Jeder Der Befehl sollte eine normale Zeichenkette sein (nicht eine rohe Zeichenkette wie in dem obigen Befehl).