Reku on/off

  • mitpro
  • mitpros Avatar
  • Junior Boarder
  • Junior Boarder
  • Beiträge: 71
  • Dank erhalten: 33
22 Jan 2019 17:49 #166074 von mitpro
Reku on/off
Habe das Update auf dem OVMS installiert. Der Fehler tritt weiterhin auf. Es blockiert irgendwo beim "Client.Connect()", parsen oder Darstellen der Daten. Schleifen mit Endlos-Gefahr sind eigentlich nicht vorhanden. Die Klammern scheinen auch alle an der korrekten Position zu sein.. Man weiß ja nie :D
Versuche es gleich weiter einzugrenzen.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • mitpro
  • mitpros Avatar
  • Junior Boarder
  • Junior Boarder
  • Beiträge: 71
  • Dank erhalten: 33
22 Jan 2019 19:12 #166085 von mitpro
Reku on/off
Irgendwie kann ich meinen letzten Beitrag nicht editieren. Deswegen ein neuer.
Der parsen wirft keine Fehler mehr. Die empfangenen JSONs, die ich mit dem PC sehen kann, sind alle valide.
Das Problem besteht bei dem websocket-client beim erhalten der Daten. Weiter differenzieren kann ich es bisher nicht.
In der Loop wird überprüft, ob der Wifi-Client noch verbunden ist. Ist die Bedingung erfüllt, wird versucht die Daten zu empfangen.
void loop() {
  String data;
 ....
if (wsclient.connected()) {
      webSocketClient.getData(data);
      if (data.length() > 0) {
....
In den Connect geht er noch rein, das data.length() erreicht er schon nicht mehr.
Auch irgendwie ungewöhnlich die Variable "data" an den Websocket als Variable zu übergeben. Eigentlich müsste es
data = webSocketClient.getData(); sein.. Er möchte aber gerne den Verweis auf data.. naja sei's drum.
Es lässt sich kein Muster erkennen, wann der Fehler auftritt. Öfter nach dem Anfahren, aber auch nicht immer.
Ich werde mal eine anderen Bibliothek probieren...

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • mitpro
  • mitpros Avatar
  • Junior Boarder
  • Junior Boarder
  • Beiträge: 71
  • Dank erhalten: 33
23 Jan 2019 10:24 #166121 von mitpro
Reku on/off
Der Empfang der Daten ist besser geworden, Anfang und Ende sind aber teilweise immernoch verschoben.
Die Ursache des blockierens beim getData liegt in einer Schleife des Websocket.
int WebSocketClient::timedRead() {
  while (!socket_client->available()) {
    delay(20);  
  }

  return socket_client->read();
}
Der Clientsocket ist wohl nicht verfügbar und diese Schleife wird nie beendet.
Habe einen Zähler eingefügt und das Verlassen der Schleife veranlasst, wodurch allerdings der gesamte Client beendet wird.
Das Umschalten zwischen den Fahrwerten funktioniert weiterhin, was vorher nicht mehr möglich war.
Unter umständen hilft ein größeres Intervall, um den einzelnen Komponenten mehr Zeit zu geben. Aktuell wird alle 250ms die Funktion (im besten Fall) aufgerufen.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • dexter
  • dexters Avatar
  • Moderator
  • Moderator
  • Beiträge: 6037
  • Dank erhalten: 4222
23 Jan 2019 12:39 #166126 von dexter
Reku on/off
Das sieht nach einer Utility-Funktion für einen reinen Websocket-Client aus, ich würde die available()-Prüfung und -Behandlung eher in die Hauptschleife verschieben, und auf jegliche Delays verzichten.

Michael

Twike 3 (2001) … Emco Novum (2011) … Twizy 80 (2012) … Mii electric+ (2020)

dexters-web.de

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • dexter
  • dexters Avatar
  • Moderator
  • Moderator
  • Beiträge: 6037
  • Dank erhalten: 4222
07 Okt 2019 19:19 #183535 von dexter
Reku on/off
Danke auch nochmal für die Inspiration, meine Version hier:
www.twizy-forum.de/ovms/86551-ovms-v3-wificonsole
github.com/dexterbg/WifiConsole

…auch erst mal ohne Auswertung des Websocket-Streams. Das Arduino-Framework macht die parallele Bedienung mehrerer TCP-Verbindungen auch unnötig kompliziert, das ist eher ein Job für das FreeRTOS-basierte Espressif-IDF.

Aber nötig ist der Stream für diese Art Anwendungen ja auch nicht unbedingt, und ohne braucht das Ding auch weniger Strom.

Michael

Twike 3 (2001) … Emco Novum (2011) … Twizy 80 (2012) … Mii electric+ (2020)

dexters-web.de

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

   Become a Patron