FHEM Forum

Verschiedenes => Bastelecke => ESP Familie => Thema gestartet von: Ralf9 am 15 August 2020, 08:48:41

Titel: alternative zu esp-link?
Beitrag von: Ralf9 am 15 August 2020, 08:48:41
Hallo,

gibt es für den wemos D1 mini zu esp-link eine brauchbare alternative Wifi-Serial Bridge die einfacher zu flashen und zu konfigurieren ist?
Praktisch wäre, wenn es möglich wäre das Wlan über USB zu konfigurieren.

Gruß Ralf
Titel: Antw:alternative zu esp-link?
Beitrag von: kjmEjfu am 15 August 2020, 11:40:09
Tasmota?
https://tasmota.github.io/docs/Commands/#serial-bridge
Titel: Antw:alternative zu esp-link?
Beitrag von: locutus am 15 August 2020, 16:59:22
Zitat von: Ralf9 am 15 August 2020, 08:48:41
... einfacher zu flashen und zu konfigurieren ist?
Forumsmitglied habeIchVergessen hat eine simple EspSerialBridge programmiert:
https://github.com/habeIchVergessen/EspSerialBridge
Titel: Antw:alternative zu esp-link?
Beitrag von: Ralf9 am 11 September 2020, 12:04:47
ZitatForumsmitglied habeIchVergessen hat eine simple EspSerialBridge programmiert:
gibts dafür eine kurze Beschreibung.

Ich habe den code mal kurz überflogen, mir ist nicht klar wie das WLAN konfiguriert wird, 

In der "EspSerialBridgeImpl.ino" werden die seriellen Daten einzeln eingelesen,
  // copy serial input to buffer
  while (Serial.available() && (m_inPos + 1 < m_bufferSize)) {
    int data = Serial.read();
   
    if (data >= 0) {
      m_buffer[m_inPos] = data;
      m_inPos++;
    } else
      break;
  }


dies lässt sich evtl optimieren, wenn "Serial.readBytes" verwendet wird
    uint8_t len = Serial.available();
    uint8_t sbuf[len];
    Serial.readBytes(sbuf, len);


Gruß Ralf
Titel: Antw:alternative zu esp-link?
Beitrag von: habeIchVergessen am 11 September 2020, 21:24:54
WLAN wird per HTTP konfiguriert.
Wenn keine WiFi-Verbindung hergestellt werden kann, wird automatisch der SoftAP gestartet.
Password für diesen ist die 8-stellige ID in der SSID.
Titel: Antw:alternative zu esp-link?
Beitrag von: Rampler am 18 September 2020, 09:07:12
Ich habe ESPEASY / Letscontrolit statt ESPLINK am Start.
Funktioniert jetzt schon über ein Jahr ohne Probleme.
Hat den Vorteil, dass man gleich auch noch andere Sensoren an den ESP anschließen kann.
Titel: Antw:alternative zu esp-link?
Beitrag von: Ralf9 am 15 Oktober 2020, 21:09:08
ZitatWLAN wird per HTTP konfiguriert.
Wenn keine WiFi-Verbindung hergestellt werden kann, wird automatisch der SoftAP gestartet.
Password für diesen ist die 8-stellige ID in der SSID.
Hab ich mal getestet. Bei der Konfigseite vom SoftAP wird automatisch die ssid erkannt. Bei "psk:" habe ich dann das WLAN Passwort eingegeben, aber der Status bleibt auf disconnected

ZitatIch habe ESPEASY / Letscontrolit statt ESPLINK am Start.
Ich habs mit dem Maple Signalduino mit 115200 Baud getestet, der Serialserver ist dafür anscheinend zu langsam, bei manchen Nachrichten werden Zeichen verschluckt.

Gruß Ralf


Titel: Antw:alternative zu esp-link?
Beitrag von: rih am 16 Oktober 2020, 18:12:52
Zitat...  der Serialserver ist dafür anscheinend zu langsam, bei manchen Nachrichten werden Zeichen verschluckt.

Weiß nicht, ob es bekannt ist: unter Tools - Advanced sollte das Serial Log Level auf -none- gesetzt werden. Ansonsten können Übertragungsprobleme wie z.B. verschluckte Zeichen auftreten.
Titel: Antw:alternative zu esp-link?
Beitrag von: habeIchVergessen am 16 Oktober 2020, 23:56:31
Zitat von: Ralf9 am 15 Oktober 2020, 21:09:08
Hab ich mal getestet. Bei der Konfigseite vom SoftAP wird automatisch die ssid erkannt. Bei "psk:" habe ich dann das WLAN Passwort eingegeben, aber der Status bleibt auf disconnected
die ssid stammt aus dem eeprom. dort steht auch der psk, wenn der ESP mit beliebiger Firmware im WLAN war.
wenn sich der psk nicht ändert, dann wird die neue config nicht gespeichert.
was steht in der seriellen Konsole?
Titel: Antw:alternative zu esp-link?
Beitrag von: Ralf9 am 17 Oktober 2020, 12:22:34
Zitatwas steht in der seriellen Konsole?
In der Arduino IDE wird im seriellen Monitor über serialusb nichts ausgegeben.

Nachtrag:
was muß ich wo ändern, damit die Debugausgaben auf serialusb ausgegeben werden?
Titel: Antw:alternative zu esp-link?
Beitrag von: Ralf9 am 17 Oktober 2020, 20:31:31
Zitat von: rih am 16 Oktober 2020, 18:12:52
Weiß nicht, ob es bekannt ist: unter Tools - Advanced sollte das Serial Log Level auf -none- gesetzt werden. Ansonsten können Übertragungsprobleme wie z.B. verschluckte Zeichen auftreten.
Habe ich getestet, auch mit "Serial Log Level auf -none" werden einzelne Zeichen verschluckt.

Mit der einfachen EspSerialBridge in der Anlage werden keine Zeichen verschluckt.
Die seriellen Pins sind geswapped: D8=Tx, D7=Rx

Gruß Ralf
Titel: Antw:alternative zu esp-link?
Beitrag von: habeIchVergessen am 19 Oktober 2020, 00:39:48
Zitat von: Ralf9 am 17 Oktober 2020, 12:22:34
was muß ich wo ändern, damit die Debugausgaben auf serialusb ausgegeben werden?
probier mal, dich auf Port 9001 mit Putty zu verbinden (raw, explicit CR for LF unter Terminal).
Titel: Antw:alternative zu esp-link?
Beitrag von: Ralf9 am 25 Oktober 2020, 22:28:07
EspSerialBridge funktioniert inzwischen.
Ich hatte ESPEASY getestet und danach die EspSerialBridge geflasht.
Auf der Konfigseite war dann sofort der status connected und ich konnte die serial einstellen.
Kann es sein, daß die Wifi konfig von ESPEASY verwendet wird?

Damit das Kompilieren mit der Arduino IDE funktioniert, müssen bei einigen includes die Groß- und Kleinschreibung angepasst werden.
Es gibt beim Kompilieren auch einige warnings.

Beim handleInput ist mir dies nicht klar, ich habe die Kommandos "u" und "v" gesendet, aber keine Antwort erhalten.
    case 'u':
      DBG_PRINTLN("uptime: " + uptime());
      printHeapFree();
      break;
    case 'v':
      DBG_PRINTF("[%s.%s] compiled at %s\n", String(PROGNAME).c_str(), String(PROGVERS).c_str(), String(PROGBUILD).c_str());
      break;


Gruß Ralf
Titel: Antw:alternative zu esp-link?
Beitrag von: Gisbert am 26 Oktober 2020, 07:46:40
Zitat von: Ralf9 am 25 Oktober 2020, 22:28:07
...
Ich hatte ESPEASY getestet und danach die EspSerialBridge geflasht.
Auf der Konfigseite war dann sofort der status connected und ich konnte die serial einstellen.
Kann es sein, daß die Wifi konfig von ESPEASY verwendet wird?
...
Gruß Ralf

Hallo Ralf,

beim Flashen des ESPs wird nicht alles überschrieben. Was genau und was nicht überschrieben wird, kann ich dir allerdings nicht sagen.

Meistens brate ich einen 1MB großen Blankfile (enthält nur Nullen) an der Adresse 0x00000 drüber, dann ist alles weg, was man so weg bekommen kann, u.a. die Wlan Credentials.

Viele​ Grüße​ Gisbert​
Titel: Antw:alternative zu esp-link?
Beitrag von: Wernieman am 26 Oktober 2020, 08:20:03
Unter Linux hat der Flasher auch einen "Clear"-Modus ....
Titel: Antw:alternative zu esp-link?
Beitrag von: habeIchVergessen am 26 Oktober 2020, 09:48:04
Zitat von: Ralf9 am 25 Oktober 2020, 22:28:07
Kann es sein, daß die Wifi konfig von ESPEASY verwendet wird?

Beim handleInput ist mir dies nicht klar, ich habe die Kommandos "u" und "v" gesendet, aber keine Antwort erhalten.
wie oben bereits geschrieben, werden die ssid und psk von WiFi.begin in den eeprom geschrieben. Dort bleiben sie so lange, die ein neues begin sie überschreibt. Eventuell löscht ein explizites disconnect die Daten.

anbei noch ein Screenshot von der Konsole (Kommando u+v).

Namen der Inlcudes: hast du unter linux kompiliert? Das habe ich noch nicht getestet.
Titel: Antw:alternative zu esp-link?
Beitrag von: Ralf9 am 26 Oktober 2020, 12:40:46
Ja, ich habe unter Linux kompiliert.
Wird demnach unter Windows die Groß- und Kleinschreibung bei includes nicht beachtet?

Titel: Antw:alternative zu esp-link?
Beitrag von: habeIchVergessen am 26 Oktober 2020, 15:04:42
NTFS liefert die Datei unabhängig von der Schreibweise.
Titel: Antw:alternative zu esp-link?
Beitrag von: Ralf9 am 26 Oktober 2020, 18:34:04
Zitatanbei noch ein Screenshot von der Konsole (Kommando u+v)
wenn ich das richtig sehe, wird dies nur in der debug Konsole ausgegeben.

Beim Kompilieren mit der Arduino IDE bekomme ich einige warnings:
In file included from /sketchbook/EspSerialBridge/EspSerialBridge.ino:28:0:
sketch/EspConfig.h:35:17: warning: ignoring packed attribute because of unpacked non-POD field 'String EspConfig::ConfigList::name' [enabled by default]
     String      name, value;
                 ^
sketch/EspConfig.h:35:23: warning: ignoring packed attribute because of unpacked non-POD field 'String EspConfig::ConfigList::value' [enabled by default]
     String      name, value;
                       ^
sketch/EspConfig.h:37:3: warning: 'typedef' was ignored in this declaration [enabled by default]
   };
   ^


In file included from /sketchbook/EspSerialBridge/EspSerialBridge.ino:29:0:
sketch/EspDebug.h:87:30: warning: passing NULL to non-pointer argument 1 of 'WiFiServer::WiFiServer(uint16_t)' [-Wconversion-null]
     WiFiServer m_DbgServer = NULL;
                              ^
In file included from /home13_1/ralf/sketchbook/EspSerialBridge/EspSerialBridge.ino:30:0:
sketch/EspSerialBridgeImpl.h:53:31: warning: passing NULL to non-pointer argument 1 of 'WiFiServer::WiFiServer(uint16_t)' [-Wconversion-null]
     WiFiServer m_WifiServer = NULL;
                               ^
/sketchbook/EspSerialBridge/EspDebug.ino: In destructor 'EspDebug::~EspDebug()':
/sketchbook/EspSerialBridge/EspDebug.ino:9:15: warning: passing NULL to non-pointer argument 1 of 'WiFiServer::WiFiServer(uint16_t)' [-Wconversion-null]
   m_DbgServer = NULL;
               ^
/sketchbook/EspSerialBridge/EspSerialBridgeImpl.ino: In destructor 'EspSerialBridge::~EspSerialBridge()':
/sketchbook/EspSerialBridge/EspSerialBridgeImpl.ino:9:16: warning: passing NULL to non-pointer argument 1 of 'WiFiServer::WiFiServer(uint16_t)' [-Wconversion-null]
   m_WifiServer = NULL;
                ^



/sketchbook/EspSerialBridge/FlashATMega328Serial.ino: In member function 'bool FlashATmega328::stkLoadAddress(uint16_t, bool)':
/sketchbook/EspSerialBridge/FlashATMega328Serial.ino:247:55: warning: narrowing conversion of '(((int)mAddress) & 255)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing]
   uint8_t cmd[4] = { stkRequestLoadAddress, (mAddress & 0xFF), (mAddress >> 8), stkRequestCrcEOP };
                                                       ^
/sketchbook/EspSerialBridge/FlashATMega328Serial.ino:247:74: warning: narrowing conversion of '(((int)mAddress) >> 8)' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing]
   uint8_t cmd[4] = { stkRequestLoadAddress, (mAddress & 0xFF), (mAddress >> 8), stkRequestCrcEOP };
                                                                          ^



Dann kommen noch einige warnings mit deprecated. Dies bedeutet dann wohl, daß es in einer zukünftigen Kompiler Version nicht mehr funktionieren könnte.
/sketchbook/EspSerialBridge/EspTools.ino: In function 'void setupEspTools()':
/sketchbook/EspSerialBridge/EspTools.ino:11:11: warning: 'BUILTIN_LED' is deprecated (declared at /home/ralf/.arduino15/packages/esp8266/hardware/esp8266/2.7.4/variants/d1_mini/../generic/common.h:79): use LED_BUILTIN [-Wdeprecated-declarations]
   pinMode(BUILTIN_LED, OUTPUT);
           ^
/sketchbook/EspSerialBridge/EspTools.ino: In function 'void setLed(bool)':
/sketchbook/EspSerialBridge/EspTools.ino:16:16: warning: 'BUILTIN_LED' is deprecated (declared at /home/ralf/.arduino15/packages/esp8266/hardware/esp8266/2.7.4/variants/d1_mini/../generic/common.h:79): use LED_BUILTIN [-Wdeprecated-declarations]
   digitalWrite(BUILTIN_LED, !on);
                ^


dann kommen noch einige warning mit "warning: 'SPIFFS' is deprecated"
/sketchbook/EspSerialBridge/EspConfig.ino:13:20: warning: 'SPIFFS' is deprecated (declared at /home/ralf/.arduino15/packages/esp8266/hardware/esp8266/2.7.4/cores/esp8266/FS.h:269): SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems. [-Wdeprecated-declarations]
   mSpiffsMounted = SPIFFS.begin()


Gruß Ralf
Titel: Antw:alternative zu esp-link?
Beitrag von: habeIchVergessen am 26 Oktober 2020, 20:33:28
welche ESP8266-SDK-Version verwendest du?
mit Arduino IDE 1.6.13 und ESP8266-SDK 2.4.1 unter Windoof sehe keine Warnings.
Titel: Antw:alternative zu esp-link?
Beitrag von: Ralf9 am 26 Oktober 2020, 20:50:12
Ich verwende die Arduino IDE 1.8.10 und "esp8266 by SparkFun Electronics Version 2.7.4"
Compiler-Warnungen Standard
Titel: Antw:alternative zu esp-link?
Beitrag von: habeIchVergessen am 27 Oktober 2020, 00:40:08
bekomme auch die Warnungen, wenn ich sie einschalte.
Titel: Antw:alternative zu esp-link?
Beitrag von: Ralf9 am 29 Oktober 2020, 00:43:39
Diese beiden warnings würde ich gerne wegbekommen, kann mir da jemand helfen?

In file included from /sketchbook/EspSerialBridge/EspSerialBridge.ino:28:0:
sketch/EspConfig.h:35:17: warning: ignoring packed attribute because of unpacked non-POD field 'String EspConfig::ConfigList::name' [enabled by default]
     String      name, value;
                 ^
sketch/EspConfig.h:35:23: warning: ignoring packed attribute because of unpacked non-POD field 'String EspConfig::ConfigList::value' [enabled by default]
     String      name, value;
                       ^
sketch/EspConfig.h:37:3: warning: 'typedef' was ignored in this declaration [enabled by default]
   };
   ^


Mir ist hier nicht klar was "NULL" bedeutet
In file included from /sketchbook/EspSerialBridge/EspSerialBridge.ino:29:0:
sketch/EspDebug.h:87:30: warning: passing NULL to non-pointer argument 1 of 'WiFiServer::WiFiServer(uint16_t)' [-Wconversion-null]
     WiFiServer m_DbgServer = NULL;
                              ^
In file included from /sketchbook/EspSerialBridge/EspSerialBridge.ino:30:0:
sketch/EspSerialBridgeImpl.h:53:31: warning: passing NULL to non-pointer argument 1 of 'WiFiServer::WiFiServer(uint16_t)' [-Wconversion-null]
     WiFiServer m_WifiServer = NULL;
                               ^
/sketchbook/EspSerialBridge/EspDebug.ino: In destructor 'EspDebug::~EspDebug()':
/sketchbook/EspSerialBridge/EspDebug.ino:9:15: warning: passing NULL to non-pointer argument 1 of 'WiFiServer::WiFiServer(uint16_t)' [-Wconversion-null]
   m_DbgServer = NULL;
               ^
/sketchbook/EspSerialBridge/EspSerialBridgeImpl.ino: In destructor 'EspSerialBridge::~EspSerialBridge()':
/sketchbook/EspSerialBridge/EspSerialBridgeImpl.ino:9:16: warning: passing NULL to non-pointer argument 1 of 'WiFiServer::WiFiServer(uint16_t)' [-Wconversion-null]
   m_WifiServer = NULL;
                ^
Titel: Antw:alternative zu esp-link?
Beitrag von: habeIchVergessen am 29 Oktober 2020, 09:06:51
das erste Warning bekommst du weg, wenn du attribute(packed) aus dem typedef entfernst.
für das zweite habe ich noch keine Idee. Eigentlich wird der Initialisierungswert im Code nicht verwendet/geprüft. Somit ist es entbehrlich. Wenn nur die Variable in der Klasse definiert wird, dann wird eventuell schon der Konstruktor aufgerufen. Dieses wollte ich mit "= NULL" vermeiden. Da bin ich mir nicht sicher!
Titel: Antw:alternative zu esp-link?
Beitrag von: Ralf9 am 01 November 2020, 11:13:35
WiFiServer m_DbgServer = NULL;
WiFiServer m_WifiServer = NULL;

Anscheinend muß was zugewiesen werden.
WiFiServer m_DbgServer;
ergibt eine error Meldung.

Da es nur warnings sind und es trotzdem funktioniert, kann es wahrscheinlich ignoriert werden.
Titel: Antw:alternative zu esp-link?
Beitrag von: Ralf9 am 23 November 2020, 23:27:17
hier sind die Anpassungen die ich vorgenommen habe
https://github.com/Ralf9/EspSerialBridge/commit/85f1337e345c05f663b52744ae541fbcc2e2344a

Passt die boardkonfig für den Wemos D1 mini in der Anlage?
Titel: Antw:alternative zu esp-link?
Beitrag von: habeIchVergessen am 24 November 2020, 10:42:08
SSL habe ich nicht wirklich auf dem Schirm.

der Rest sieht gut aus.

Das Changeset werde ich mir bei Gelegenheit anschauen.
Titel: Antw:alternative zu esp-link?
Beitrag von: gloob am 23 Januar 2023, 08:12:29
Ich bin auch gerade an einem Projekt dran, wo ich eine Serial Bridge benötigen könnte. Wie sieht denn das Protokoll auf der Gegenseite aus? ESP->Bridge ist klar.
Wie bekommt man aber die Daten Bridge->".Net" zum Beispiel hin?

Ist das eine Socket Verbindung über TCP oder UDP oder was wird da genutzt?
Titel: Aw: alternative zu esp-link?
Beitrag von: habeIchVergessen am 09 Mai 2023, 22:55:19
der ESP startet einen TCP-Server auf Port 23. auf Port 9001 läuft die Debug-Konsole (auch TCP)