alternative zu esp-link?

Begonnen von Ralf9, 15 August 2020, 08:48:41

Vorheriges Thema - Nächstes Thema

Ralf9

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
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

kjmEjfu

Migriere derzeit zu Home Assistant

locutus

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

Ralf9

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
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

habeIchVergessen

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.

Rampler

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.
3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Ralf9

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


FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

rih

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.

habeIchVergessen

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?

Ralf9

#9
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?
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

#10
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
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

habeIchVergessen

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).

Ralf9

#12
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
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Gisbert

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​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Wernieman

Unter Linux hat der Flasher auch einen "Clear"-Modus ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

habeIchVergessen

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.

Ralf9

Ja, ich habe unter Linux kompiliert.
Wird demnach unter Windows die Groß- und Kleinschreibung bei includes nicht beachtet?

FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

habeIchVergessen

NTFS liefert die Datei unabhängig von der Schreibweise.

Ralf9

#18
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
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

habeIchVergessen

welche ESP8266-SDK-Version verwendest du?
mit Arduino IDE 1.6.13 und ESP8266-SDK 2.4.1 unter Windoof sehe keine Warnings.

Ralf9

Ich verwende die Arduino IDE 1.8.10 und "esp8266 by SparkFun Electronics Version 2.7.4"
Compiler-Warnungen Standard
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

habeIchVergessen

bekomme auch die Warnungen, wenn ich sie einschalte.

Ralf9

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;
                ^
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

habeIchVergessen

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!

Ralf9

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.
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

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?
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

habeIchVergessen

SSL habe ich nicht wirklich auf dem Schirm.

der Rest sieht gut aus.

Das Changeset werde ich mir bei Gelegenheit anschauen.

gloob

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?
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

habeIchVergessen

der ESP startet einen TCP-Server auf Port 23. auf Port 9001 läuft die Debug-Konsole (auch TCP)