OTA keine Antwort

Moin mal wieder!

Ich hab mal ne Frage zum OTA, die diversen Beispielscripte zB aus der Arduino-IDE oder AZ_Deliverie aber auch einige Andere funktionieren bei mir. Allerdings ist mir aufgefallen, dass dort in der Loop nichts grossartiges steht. In meinem Programm taucht er jedoch aus der Loop in eine (zeitlich) längere Funktion ab. Könnte es sein, dass der ESP nach dem Aufruf von "ArduinoOTA.handle();" nur eine bestimmte Zeit auf ein ankommendes OTA-Update wartet?

(ja ich weiss, eigentlich Code anhängen, aber ob hier ca 1500 Zeilen zielführend sind?)

Grüße Thomas

Ich verstehe nicht was und wie du da etwas mit OTA machst.

Der OTA Vorgang wird bei mir aktuell von der IDE gestartet und da macht der ESP was er soll.

Ja, in der IDE taucht der OTA-Port auch auf. Die "kleinen" Beispielprogramme kann ich auch ohne Probleme updaten, nur in meinem Programm, dass für ca 40 sec in eine Funktion "abtaucht" , erhalte ich "[ERROR]: No Answer". Ich vermute ja, dass nach Aufruf von "ArduinoOTA.handle();" nur eine bestimmte Zeit (einige Sekunden?) auf ein ankommendes Update gewartet wird. Könnte das sein?

Gerade entdeckt: Man muss den ESP (oder was auch immer) anscheinend erst einmal über das Netzwerk angesprochen haben. (Könnte auch mal irgendwo erwähnt werden) Nach der Meldung "Hochladen abgeschlossen" dauert es noch einige Sekunden, bis das Programm "umgeschichtet" worden ist. Es startet dann automatisch in der IDE erfolgt keine weitere Ausgabe.

Alles so Sachen, wenn mal es einmal weiss....

taximan:
Könnte das sein?

Moin. Ja!

Das hängt natürlich auch davon ab, welche geheime Hardware Du verwendest.

taximan:
(ja ich weiss, eigentlich Code anhängen, aber ob hier ca 1500 Zeilen zielführend sind?)

Nein, zumindest ich werde mir das nicht antun, da stimme ich Dir zu.

taximan:
nur in meinem Programm, dass für ca 40 sec in eine Funktion "abtaucht"

Das solltest du ändern!

taximan:
Ich vermute ja, dass nach Aufruf von "ArduinoOTA.handle();" nur eine bestimmte Zeit (einige Sekunden?) auf ein ankommendes Update gewartet wird. Könnte das sein?

Oder den Aufruf von "ArduinoOTA.handle();" an verschiedenen Stellen deiner Funktion einstreuen!

Bleibt aber Murks!

Schade eigentlich, war bei mir wohl nur ein Zufallstreffer.
@Derfips: Hast mich aber auf die richtige Fährte gebracht. Nach "ArduinoOTA.handle();" wird nur einige Sekunden gewartet. Das fällt in den Blinkbeispielen natürlich nicht weiter auf. Kann man denn irgendwo erfahren wie lang diese Zeit ist oder womöglich einstellen?

Da wird nicht gewartet. In OTA.handle wird geschaut, ob eine Anforderung da ist oder nicht.

Eine Funktion, die 40 Sekunden braucht ist mit Sicherheit falsch programmiert.

Gruß Tommy

taximan:
...wird nur einige Sekunden gewartet...

Falscher Ansatz, schmeiß das raus!
Nie, niemals sollte irgendwo gewartet werden!
Es sollte geprüft werden ob es soweit ist!

Die Nachtwächtererklärung

Tommy56:
Eine Funktion, die 40 Sekunden braucht ist mit Sicherheit falsch programmiert.

1000% oder etwas drüber!

Bislang war da keine Notwendigkeit, es waren "nur" ein Haufen LEDs die angesteuert wurden. Ob die Funktion ein paar Sekunden früher oder später fertig war, spielte keine Rolle. Aber ich muss mir da auch aus anderen Gründen was einfallen lassen.

Jetzt habe ich mal eine Bitte an die eifrigen (Mit)-Leser; könnt ihr euch bitte mal das Arduino Kochbuch Hannover ansehen (HTML Kochbuch mit ESP8266 und Arduino IDE | Arduino-Hannover), und mir sagen, was da alles raus kann, wenn ich mich nur mit der Fritzbox verbinden will? Müsste dann der STA (StationMode) sein. Gaaaaanz evtl soll auch mal der WPS-Mode dazu kommen.

Wäre super nett von euch.
Danke

Vergleich doch einfach mal deinen Sketch mit den funktionierenden Beispielen von Fips.
Bei einer strukturierten Programmierung solltest du deinen Fehler schnell in deinem Sketch finden.

#define BGTDEBUG 1
void setup(){
#ifdef BGTDEBUG
Serial.begin(9600);

for (int i = 10; i > 0; i--) {
Serial.print("Warte ");
Serial.print(i);
Serial.println(" sec");
delay(1000);
}
Serial.println("ESP_HTML_02");
#endif
}
funktionieren tut es soweit, ich wollte es nur von unnötigem Ballast befreien. z.B. den Schnipsel oben verstehe ich nicht wirklich. überall wo BGTDEBUG=1 wird der nachfolgende kurze Code ausgeführt, und da BGTDEBUG immer 1 ist, wird dieser Code immer ausgeführt. Hab ich das soweit richtig verstanden? Warum schreibt man den Code nicht direkt? das macht das Ganze (für mich) sehr unübersichtlich.

eine Sekunde Wartezeit in einer Schleife = vollblockade für 10s

taximan:
... ich wollte es nur von unnötigem Ballast befreien.

Was ist nötig, was unnötig?

#define BGTDEBUG 1

Am Anfang können es bei mir nicht genug Informationen auf dem seriellen Monitor sein, die würde ich nicht missen wollen. Beim Umstieg auf OTA werden die nicht mehr angezeigt, weshalb alternativ ein OLED zur Ausgabe Verwendung findet. Aber spätestens beim nächsten Problem freue ich mich wieder über zusätzliche informative Hilfen im seriellen Monitor. Rausschmeißen käme für mich daher nicht infrage.

Was für Dich nötig ist, weißt nur Du alleine.

taximan:
Bislang war da keine Notwendigkeit, es waren "nur" ein Haufen LEDs die angesteuert wurden. Ob die Funktion ein paar Sekunden früher oder später fertig war, spielte keine Rolle. Aber ich muss mir da auch aus anderen Gründen was einfallen lassen.

Jetzt habe ich mal eine Bitte an die eifrigen (Mit)-Leser; könnt ihr euch bitte mal das Arduino Kochbuch Hannover ansehen (https://arduino-hannover.de/2016/01/01/html-kochbuch-mit-esp8266-und-arduino-ide/), und mir sagen, was da alles raus kann, wenn ich mich nur mit der Fritzbox verbinden will? Müsste dann der STA (StationMode) sein. Gaaaaanz evtl soll auch mal der WPS-Mode dazu kommen.

Wäre super nett von euch.
Danke

Das Beispiel solltest Du schnellstes vergessen, das ist völlig veraltert. Das geht heute viel einfacher. Bei Fip´s bist Du am Besten aufgehoben.

Als minimal Version kannst Du dich auch an das Beispiel "Hallo Server" aus der Lib Webserver und das Beispiel OTABasic aus der LIB halten.

Heinz

Rentner:
Das Beispiel solltest Du schnellstes vergessen, das ist völlig veraltert. Das geht heute viel einfacher. Bei Fip´s bist Du am Besten aufgehoben.

Als minimal Version kannst Du dich auch an das Beispiel "Hallo Server" aus der Lib Webserver und das Beispiel OTABasic aus der LIB halten.

Heinz

Naja.....der TO wollte sich das einfacher machen und hat uns ja darum gebeten, den Sketch zu durchsuchen.
Den Tipp mit Fips hat er ja schon bei mir ignoriert.

Eventuell motiviert ja meine Anleitung: Einführung zu fipsok.de.

Das das alles auch etwas einfacher geht, ist mir irgendwie schon klar. Ich bin grad auch schon am suchen, was von den #ifdef-Sachen für mich unnötig ist. Bin der Sache auch auf der Spur, ich halte euch auf dem laufenden. Ich habe dieses Beispiel auch nur genommen, weil es für mich als absoluten ESP-Einsteiger meiner Meinung nach das übersichtlichste Beispiel zur HTML-Auswertung war. Die normale WLAN-Anbindung (für Blink und so) habe ich auch schon einfacher hinbekommen.

taximan:
Das das alles auch etwas einfacher geht, ist mir irgendwie schon klar.
....

Falsch...

Nicht einfacher, sondern besser !
Aber du hast dir die empfohlene Seite bisher nicht angesehen....dein Fehler.

Bin dabei, mal sehen was ich heute abend noch schaffe....

  1. Sache ist auch schon eingebaut. ->
    static bool once {0};
    if (!once++) startup(); //LEDTest
    :wink:

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.