STM32F4/ESP8266 schließt Verbindung nur jede zweite Übertragung

OP #5035770
Lesenswert?

Hallo zusammen,

ich betreibe einen ESP8266 als Webserver, welcher 4 Relais schaltet.

Funktioniert alles soweit nur aus mir unerklärlichen Gründen wird die 
Verbindung, nur bei jeder zweiten Übertragung an den Browser, 
(unterschiedliche Browser ausprobiert) geschlossen.

Habe vermutet das die bei "AT+CIPSEND=0,888" nicht richtig ist jedoch 
habe ich mehr und weniger Zeichen durch probiert und es ändert nichts an 
dem genannten Problem.

Bin jetzt nicht so sehr mit HTML vertraut, könnte es an dem HTML CODE 
liegen?

Bei jeder Anfrage vom Browser wird folgender Code abgearbeitet:
1
    case ESP_SET_OUTPUT:
2
      USART_puts(USART1, "AT+CIPSEND=0,888\r\n");  
3
      Delay(50);
4
      USART_puts(USART1, "<html>");
5
      USART_puts(USART1, "<!DOCTYPE html><head><meta name=\"viewport\" content=\"width=480\"/></head>");
6
      USART_puts(USART1, "<body>");
7
      USART_puts(USART1, "<h1>Powersteuerung:</h1><form ACTION=\"Gartensteuerung\" method=\"get\">");
8
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"ON1\">Ausgang 1 ON</button>");
9
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"ON2\">Ausgang 2 ON</button>");
10
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"ON3\">Ausgang 3 ON</button>");
11
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"ON4\">Ausgang 4 ON</button>");
12
      USART_puts(USART1, "<br></br>");
13
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"OFF1\">Ausgang 1 OFF</button>");
14
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"OFF2\">Ausgang 2 OFF</button>");
15
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"OFF3\">Ausgang 3 OFF</button>");
16
      USART_puts(USART1, "<button style=\"height:100px;width:100px\" name=\"ACTION\" value=\"OFF4\">Ausgang 4 OFF</button>");
17
      USART_puts(USART1, "</body>");
18
      USART_puts(USART1, "</html>\r\n");
19
      Delay(500);
20
      USART_puts(USART1, "AT+CIPCLOSE=0\r\n");
21
      USART_puts(USART1, "AT+CIPCLOSE=1\r\n");
22
      USART_puts(USART1, "AT+CIPCLOSE=2\r\n");
23
  
24
      Delay(100);
25
      ESP_Status = 0;
26
    break;
Angehängte Dateien:
Gast #5035969
Lesenswert?

Wenn du ihm sagst, dass du 888 Bytes senden willst, dann musst du auch 
genau 888 Bytes senden.

Du solltest besser vorher ermitteln, wie viele Bytes es denn genau sein 
werden.

strlen() wäre dazu zum Beispiel hilfreich.

Außerdem mache Dir mal Gedanken über "Strings im Flash". bei der ob 
gezeigten Programmierweise wird Dir nämlich sonst sehr bald das RAM 
ausgehen. Alle deine Strings liegen permanent im RAM!

Warum schließt du drei Verbindungen, sendest aber nur auf einer?

So wie ich das hier sehe, empfängt dein Webserver Vebindungsanfragen vom 
Web browser und sendet dann HTML Seiten zurück. Du musst dazu schon den 
richtigen Kanal (als Variable) benutzen. Wenn der ESP einer Vebindung 
zum Beispiel die Nummer 4 zuweist, geht bei Dir gar nichts mehr.
OP #5036266
Lesenswert?

Das mit der Länge ist mir bewusst, habe auch schon mit der zahl der 
Zeichen variert.

Sollte nur ein Teilnehmen zugreifen sollte dieser im Normalfall Channel 
0 erhalten, dass muss noch genau angepasst werden das ist der erste 
Output.
Aber ich bekomme ja jedes mal die Seite nur sie wird halt nur jede 
zweite übertragung geschlossen.
Gast #5036346
Lesenswert?

> Sollte nur ein Teilnehmen zugreifen sollte dieser im Normalfall
> Channel 0 erhalten

Nein, die Kanalnummer hängt vom Glück ab, vor allem, weil jeder Browser 
mehrere Verbindungen gleichzeitig zum Server aufbaut. Selbst wenn deine 
Seite nur aus HTML Text besteht, versucht der Browser ab und zu das Bild 
favicon.ico zu laden.

> nur sie wird halt nur jede zweite übertragung geschlossen.

Woran genau erkennst du das?
Kannst du die Antworten des ESP Moduls protokollieren?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren