Viessman Optolink Adapter: Platinenbestellung + Fertigung

Begonnen von PeMue, 30 März 2016, 20:27:41

Vorheriges Thema - Nächstes Thema

PeMue

Zitat von: andies am 02 Februar 2020, 20:36:25
Defekte Charge. Shit happens.
Scheint ein generelles Problem der v3 zu sein, siehe hier.
Ich würde mit dem Auslöten warten ...

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

andies

Zitat von: PeMue am 03 Februar 2020, 11:18:34
Ich würde mit dem Auslöten warten ...
Ich hatte am Sonntag Langeweile  8)
Dabei habe ich den 6k-Resistor dabei ausgelötet und den Chip deshalb eigentlich entsorgt. Also ich schaue mal. Mein Ziel ist sowieso eine Buchsenleiste. Wir bleiben dran.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

PeMue

#797
Hallo zusammen,

mit folgenden Einstellungen beim NodeMCU Flasher scheint es zu funktionieren (zumindest bei einem Moduol). Ich werde aber weiter testen und die ESP8266-ESP01 mal unter dem Mikroskop anschauen ...

Gruß Peter

Edit:
Das scheint ein Problem mit dem Speicherchip und SPIFFS zu sein
load 0x4010f000, len 1392, room 16
tail 0
chksum 0xd0
csum 0xd0
v3d128e5c
~ld
ets Jan  8 2013,rst cause:1, boot mode:(3,7)

Die angehängte v1.1 bzw. v2.1 funktioniert auch mit diesen Speicherchips, jetzt muss ich nur noch herausbekommen, wie ich die damals compiliert habe ...
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

andies

FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

PeMue

Zitat von: andies am 06 Februar 2020, 10:34:29
Hallo Peter, das kennst du, oder http://neilkolban.com/tech/esp8266/
Jetzt schon, allerdings sind da die Flash Probleme nicht wirklich beschrieben. Ggf. kann man das SPIFFS Handling etwas optimieren.

Hast Du die BIN zwei Posts drüber mal probiert? Bei mir wird ein AP aufgespannt, ich konnte aber noch keinen Adapter komplett testen ...

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

andies

ich warte noch auf einen ESP, dem ich stiftleisten anlöten kann. Erst dann probiere ich.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

ich hatte mir einen ESP-01 von reichelt besorgt und es ist mir weder gelungen, dort esp-link gangbar zu machen (flashen geht, danach herrscht Ruhe) oder gar einen der Wifi-Beispielsketche der arduino-App erfolgreich zum laufen zu bringen. Es ist zum verrückt werden.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Gisbert

Zitat von: andies am 09 Februar 2020, 21:30:23
ich hatte mir einen ESP-01 von reichelt besorgt und es ist mir weder gelungen, dort esp-link gangbar zu machen (flashen geht, danach herrscht Ruhe) oder gar einen der Wifi-Beispielsketche der arduino-App erfolgreich zum laufen zu bringen. Es ist zum verrückt werden.
Hast du versucht einen sehr einfachen Sketch, z.B. einen sehr einfachen Blink-Sketch, zu flashen? Wenn der läuft, sollte der Flashvorgang an sich und die Hardware wahrscheinlich in Ordnung sein. Auf dieser Basis kann es dann weitergehen.

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

andies

Danke für den Mut, Gisbert! Ich werde, sobald ich Zeit habe, mich da dransetzen. Inzwischen weiß ich, dass ich den berüchtigten Puya-Chip (https://github.com/letscontrolit/ESPEasy/issues/748) da drauf habe. Die sind deshalb berüchtigt, weil das interne Dateisystem für den ESP (SPIFFS) nicht mit den klassischen Sketches angesprochen werden kann. Man muss da Patches laden. Ob und wie habe ich noch nicht durchschaut.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Gisbert

Zitat von: andies am 10 Februar 2020, 20:25:57
Danke für den Mut, Gisbert! Ich werde, sobald ich Zeit habe, mich da dransetzen. Inzwischen weiß ich, dass ich den berüchtigten Puya-Chip (https://github.com/letscontrolit/ESPEasy/issues/748) da drauf habe. Die sind deshalb berüchtigt, weil das interne Dateisystem für den ESP (SPIFFS) nicht mit den klassischen Sketches angesprochen werden kann. Man muss da Patches laden. Ob und wie habe ich noch nicht durchschaut.
Hallo andies,

leicht daneben ;) ist auch daneben.
Da hatte ich wohl bisher Glück, dass ich von dieser Malaise verschont geblieben bin.

Gutes Gelingen und 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

andies

#805
So, jetzt habe ich inzwischen etwas kapiert. Also die neuen Puya-Chips brauchen die neueste Version der arduino-Software, sonst kann man den Speicher nicht beschreiben. Ich habe inzwischen die Version 2.6.3 geholt, siehe Bild (und dann aktualisieren). Damit habe ich den angehängten Sketch geladen. Der lässt sich auf den ESP spielen, wenn man den ESP startet, dann meldet sich auch der Wifi-Manager und man kann seine Angaben eintragen und sie werden auch gespeichert: Der ESP erscheint mit IP im Netz.

Allerdings gibt es mit der Baudrate anscheinend ein Problem. Ich kann die Rückmeldungen vom ESP nicht verstehen, die sehen kryptisch aus. Die Details habe ich hier beschrieben Hat sich geklärt, Baudrate 57600 einstellen (habe ich im Code unten gemacht):
https://forum.fhem.de/index.php?topic=108435.new#new

Nun noch der Code auf dem arduino für den Signalduino (der Optolink benötigt eine andere Baudrate, siehe zwei Posts tiefer):
/*
  WiFiTelnetToSerial - Example Transparent UART to Telnet Server for esp8266
  Copyright (c) 2015 Hristo Gochkov. All rights reserved.
  This file is part of the ESP8266WiFi library for Arduino environment.
  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.
  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.
  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

#include <ESP8266WiFi.h>          //ESP8266 Core WiFi Library (you most likely already have this in your sketch)
#include <DNSServer.h>            //Local DNS Server used for redirecting all requests to the configuration portal
#include <ESP8266WebServer.h>     //Local WebServer used to serve the configuration portal
#include <WiFiManager.h>         //https://github.com/tzapu/WiFiManager


#include <algorithm> // std::min

/*
    SWAP_PINS:
   0: use Serial1 for logging (legacy example)
   1: configure Hardware Serial port on RX:GPIO13 TX:GPIO15
      and use SoftwareSerial for logging on
      standard Serial pins RX:GPIO3 and TX:GPIO1
*/

#define SWAP_PINS 0

/*
    SERIAL_LOOPBACK
    0: normal serial operations
    1: RX-TX are internally connected (loopback)
*/

#define SERIAL_LOOPBACK 0

#define BAUD_SERIAL 57600 //andere Baudrate macht Probleme
#define BAUD_LOGGER 57600
#define RXBUFFERSIZE 1024

////////////////////////////////////////////////////////////

#if SERIAL_LOOPBACK
#undef BAUD_SERIAL
#define BAUD_SERIAL 3000000
#include <esp8266_peri.h>
#endif

#if SWAP_PINS
#include <SoftwareSerial.h>
SoftwareSerial* logger = nullptr;
#else
#define logger (&Serial1)
#endif

#define STACK_PROTECTOR  512 // bytes

//how many clients should be able to telnet to this ESP8266
#define MAX_SRV_CLIENTS 3

const int port = 23;

//flag for saving data
bool shouldSaveConfig = false;

WiFiServer server(port);
WiFiClient serverClients[MAX_SRV_CLIENTS];

void setup() {

  WiFiManager wifiManager;
  wifiManager.autoConnect("ESP-Wifimanager");
  wifiManager.setConfigPortalTimeout(180);

  Serial.begin(BAUD_SERIAL);
  Serial.setRxBufferSize(RXBUFFERSIZE);

#if SWAP_PINS
  Serial.swap();
  // Hardware serial is now on RX:GPIO13 TX:GPIO15
  // use SoftwareSerial on regular RX(3)/TX(1) for logging
  logger = new SoftwareSerial(3, 1);
  logger->begin(BAUD_LOGGER);
  logger->enableIntTx(false);
  logger->println("\n\nUsing SoftwareSerial for logging");
#else
//  logger->begin(BAUD_LOGGER);
//  logger->println("\n\nUsing Serial1 for logging");
#endif
//  logger->println(ESP.getFullVersion());
//  logger->printf("Serial baud: %d (8n1: %d KB/s)\n", BAUD_SERIAL, BAUD_SERIAL * 8 / 10 / 1024);
//  logger->printf("Serial receive buffer size: %d bytes\n", RXBUFFERSIZE);

#if SERIAL_LOOPBACK
  USC0(0) |= (1 << UCLBE); // incomplete HardwareSerial API
//  logger->println("Serial Internal Loopback enabled");
#endif

  //start server
  server.begin();
  server.setNoDelay(true);

//  logger->print("Ready! Use 'telnet ");
//  logger->print(WiFi.localIP());
//  logger->printf(" %d' to connect\n", port);
}


void configModeCallback (WiFiManager *myWiFiManager) {
//  logger->print("Entered config mode");
  WiFi.softAPIP();

  myWiFiManager->getConfigPortalSSID();
}


//callback notifying us of the need to save config
void saveConfigCallback () {
//  logger->print("Should save config");
  shouldSaveConfig = true;
}


void loop() {
  //check if there are any new clients
  if (server.hasClient()) {
    //find free/disconnected spot
    int i;
    for (i = 0; i < MAX_SRV_CLIENTS; i++)
      //find free/disconnected spot
      if (!serverClients[i] || !serverClients[i].connected()){
        if(serverClients[i]) serverClients[i].stop();
        serverClients[i] = server.available();
//        logger->print("New client: "); logger->print(i);
        break;
      }

    //no free/disconnected spot so reject
    if (i == MAX_SRV_CLIENTS) {
       WiFiClient serverClient = server.available();
       serverClient.stop();
      // hints: server.available() is a WiFiClient with short-term scope
      // when out of scope, a WiFiClient will
      // - flush() - all data will be sent
      // - stop() - automatically too
//      logger->printf("server is busy with %d active connections\n", MAX_SRV_CLIENTS);
    }
  }

  //check TCP clients for data
  // Incredibly, this code is faster than the bufferred one below - #4620 is needed
  // loopback/3000000baud average 348KB/s
  for (int i = 0; i < MAX_SRV_CLIENTS; i++)
    while (serverClients[i].available() && Serial.availableForWrite() > 0) {
      // working char by char is not very efficient
      Serial.write(serverClients[i].read());
    }

  // determine maximum output size "fair TCP use"
  // client.availableForWrite() returns 0 when !client.connected()
  size_t maxToTcp = 0;
  for (int i = 0; i < MAX_SRV_CLIENTS; i++)
    if (serverClients[i]) {
      size_t afw = serverClients[i].availableForWrite();
      if (afw) {
        if (!maxToTcp) {
          maxToTcp = afw;
        } else {
          maxToTcp = std::min(maxToTcp, afw);
        }
      } else {
        // warn but ignore congested clients
//        logger->println("one client is congested");
      }
    }

  //check UART for data
  size_t len = std::min((size_t)Serial.available(), maxToTcp);
  len = std::min(len, (size_t)STACK_PROTECTOR);
  if (len) {
    uint8_t sbuf[len];
    size_t serial_got = Serial.readBytes(sbuf, len);
    // push UART data to all connected telnet clients
    for (int i = 0; i < MAX_SRV_CLIENTS; i++)
      // if client.availableForWrite() was 0 (congested)
      // and increased since then,
      // ensure write space is sufficient:
      if (serverClients[i].availableForWrite() >= serial_got) {
        size_t tcp_sent = serverClients[i].write(sbuf, serial_got);
        if (tcp_sent != len) {
//          logger->printf("len mismatch: available:%zd serial-read:%zd tcp-write:%zd\n", len, serial_got, tcp_sent);
        }
      }
delay(10);
  }
}
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

#806
Wenn ich den ESP anstecke (leider habe ich die falschen Buchsenleisten, so dass ich das nochmal löten muss), sehe ich das hier
2020.02.14 21:05:25 3: Opening Viessmann_WLAN device 192.168.2.47:23
2020.02.14 21:05:25 3: Viessmann_WLAN device opened
2020.02.14 21:05:25 4: VCONTROL300: Start of update...
2020.02.14 21:05:25 4: VCONTROL300: Start of set values...

und damit sollte die Kommunikation mit dem WLAN-Adapter gehen, oder?

Nur der signalduino geht noch nicht. Aber das ist eine andere Baustelle.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

PeMue

Hallo,

Zitat von: andies am 14 Februar 2020, 18:19:23
So, jetzt habe ich inzwischen etwas kapiert. Also die neuen Puya-Chips brauchen die neueste Version der arduino-Software, sonst kann man den Speicher nicht beschreiben. Ich habe inzwischen die Version 2.6.3 geholt, siehe Bild (und dann aktualisieren). Damit habe ich den angehängten Sketch geladen. Der lässt sich auf den ESP spielen, wenn man den ESP startet, dann meldet sich auch der Wifi-Manager und man kann seine Angaben eintragen und sie werden auch gespeichert: Der ESP erscheint mit IP im Netz.

Allerdings gibt es mit der Baudrate anscheinend ein Problem. Ich kann die Rückmeldungen vom ESP nicht verstehen, die sehen kryptisch aus. Die Details habe ich hier beschrieben Hat sich geklärt, Baudrate 57600 einstellen (habe ich im Code unten gemacht):
bei mir ist es immer noch so, dass der Optolink Sketch nur mit der Version ESP8266 v2.5.0 startet.

Ich habe mir mittlerweile einen Sketch zusammengebaut, der die Daten des verbauten Speicherchips und des SPIFFS ausgibt. Näheres folgt. Leider sind alle ESP-01, die ich mir vor kurzem bestellt habe, mit dem Vendor Code 5E (Tenx, d.h. genauso besch... wie Puya) ausgestattet.

Btw.: für den Optolink Adapter brauchst Du die Baudrate von 4800 baud, 8 bits, 2 stopbits, even parity.

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

andies

Hier mein Code (angepasst auf die Baudrate), lies sich gerade bedenkenlos übertragen (Puya Chip) und im heimischen WLAN einrichten:
/*
  WiFiTelnetToSerial - Example Transparent UART to Telnet Server for esp8266
*/

#include <ESP8266WiFi.h>          //ESP8266 Core WiFi Library (you most likely already have this in your sketch)
#include <DNSServer.h>            //Local DNS Server used for redirecting all requests to the configuration portal
#include <ESP8266WebServer.h>     //Local WebServer used to serve the configuration portal
#include <WiFiManager.h>         //https://github.com/tzapu/WiFiManager


#include <algorithm> // std::min

/*
    SWAP_PINS:
   0: use Serial1 for logging (legacy example)
   1: configure Hardware Serial port on RX:GPIO13 TX:GPIO15
      and use SoftwareSerial for logging on
      standard Serial pins RX:GPIO3 and TX:GPIO1
*/

#define SWAP_PINS 0

/*
    SERIAL_LOOPBACK
    0: normal serial operations
    1: RX-TX are internally connected (loopback)
*/

#define SERIAL_LOOPBACK 0

#define BAUD_SERIAL 4800 //https://forum.fhem.de/index.php/topic,51583.msg1024914.html#msg1024914
#define BAUD_CONFIG SERIAL_8E2 //https://www.arduino.cc/reference/en/language/functions/communication/serial/begin/, default: SERIAL_8N1
#define BAUD_LOGGER 57600 //https://forum.fhem.de/index.php/topic,108435.msg1024105.html#msg1024105
#define RXBUFFERSIZE 1024

////////////////////////////////////////////////////////////

#if SERIAL_LOOPBACK
#undef BAUD_SERIAL
#define BAUD_SERIAL 3000000
#include <esp8266_peri.h>
#endif

#if SWAP_PINS
#include <SoftwareSerial.h>
SoftwareSerial* logger = nullptr;
#else
#define logger (&Serial1)
#endif

#define STACK_PROTECTOR  512 // bytes

//how many clients should be able to telnet to this ESP8266
#define MAX_SRV_CLIENTS 3

const int port = 23;

//flag for saving data
bool shouldSaveConfig = false;

WiFiServer server(port);
WiFiClient serverClients[MAX_SRV_CLIENTS];

void setup() {

  WiFiManager wifiManager;
  wifiManager.autoConnect("ESP-Wifimanager");
  wifiManager.setConfigPortalTimeout(180);

  Serial.begin(BAUD_SERIAL, BAUD_CONFIG);
  Serial.setRxBufferSize(RXBUFFERSIZE);

#if SWAP_PINS
  Serial.swap();
  // Hardware serial is now on RX:GPIO13 TX:GPIO15
  // use SoftwareSerial on regular RX(3)/TX(1) for logging
  logger = new SoftwareSerial(3, 1);
  logger->begin(BAUD_LOGGER);
  logger->enableIntTx(false);
  logger->println("\n\nUsing SoftwareSerial for logging");
#else
  logger->begin(BAUD_LOGGER);
  logger->println("\n\nUsing Serial1 for logging");
#endif
  logger->println(ESP.getFullVersion());
  logger->printf("Serial baud: %d (8n1: %d KB/s)\n", BAUD_SERIAL, BAUD_SERIAL * 8 / 10 / 1024);
  logger->printf("Serial receive buffer size: %d bytes\n", RXBUFFERSIZE);

#if SERIAL_LOOPBACK
  USC0(0) |= (1 << UCLBE); // incomplete HardwareSerial API
  logger->println("Serial Internal Loopback enabled");
#endif

  //start server
  server.begin();
  server.setNoDelay(true);

  logger->print("Ready! Use 'telnet ");
  logger->print(WiFi.localIP());
  logger->printf(" %d' to connect\n", port);
}


void configModeCallback (WiFiManager *myWiFiManager) {
  logger->print("Entered config mode");
  WiFi.softAPIP();

  myWiFiManager->getConfigPortalSSID();
}


//callback notifying us of the need to save config
void saveConfigCallback () {
  logger->print("Should save config");
  shouldSaveConfig = true;
}


void loop() {
  //check if there are any new clients
  if (server.hasClient()) {
    //find free/disconnected spot
    int i;
    for (i = 0; i < MAX_SRV_CLIENTS; i++)
      //find free/disconnected spot
      if (!serverClients[i] || !serverClients[i].connected()){
        if(serverClients[i]) serverClients[i].stop();
        serverClients[i] = server.available();
        logger->print("New client: "); logger->print(i);
        break;
      }

    //no free/disconnected spot so reject
    if (i == MAX_SRV_CLIENTS) {
       WiFiClient serverClient = server.available();
       serverClient.stop();
      // hints: server.available() is a WiFiClient with short-term scope
      // when out of scope, a WiFiClient will
      // - flush() - all data will be sent
      // - stop() - automatically too
      logger->printf("server is busy with %d active connections\n", MAX_SRV_CLIENTS);
    }
  }

  //check TCP clients for data
  // Incredibly, this code is faster than the bufferred one below - #4620 is needed
  // loopback/3000000baud average 348KB/s
  for (int i = 0; i < MAX_SRV_CLIENTS; i++)
    while (serverClients[i].available() && Serial.availableForWrite() > 0) {
      // working char by char is not very efficient
      Serial.write(serverClients[i].read());
    }

  // determine maximum output size "fair TCP use"
  // client.availableForWrite() returns 0 when !client.connected()
  size_t maxToTcp = 0;
  for (int i = 0; i < MAX_SRV_CLIENTS; i++)
    if (serverClients[i]) {
      size_t afw = serverClients[i].availableForWrite();
      if (afw) {
        if (!maxToTcp) {
          maxToTcp = afw;
        } else {
          maxToTcp = std::min(maxToTcp, afw);
        }
      } else {
        // warn but ignore congested clients
        logger->println("one client is congested");
      }
    }

  //check UART for data
  size_t len = std::min((size_t)Serial.available(), maxToTcp);
  len = std::min(len, (size_t)STACK_PROTECTOR);
  if (len) {
    uint8_t sbuf[len];
    size_t serial_got = Serial.readBytes(sbuf, len);
    // push UART data to all connected telnet clients
    for (int i = 0; i < MAX_SRV_CLIENTS; i++)
      // if client.availableForWrite() was 0 (congested)
      // and increased since then,
      // ensure write space is sufficient:
      if (serverClients[i].availableForWrite() >= serial_got) {
        size_t tcp_sent = serverClients[i].write(sbuf, serial_got);
        if (tcp_sent != len) {
          logger->printf("len mismatch: available:%zd serial-read:%zd tcp-write:%zd\n", len, serial_got, tcp_sent);
        }
      }
  }
}
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

PeMue

#809
Hallo zusammen,

ich habe jetzt mal einen Sketch zusammenkopiert, der das SPIFFS Dateisystem beschreibt und liest und die Daten des Herstellers ausliest. Der Sketch geht bei mir sowohl mit den 30 (vermutlichen PUYA Chips) und sowohl der ESP Version 2.5.0 und 2.6.3 (aktuelle IDE).

30 ESP01S
__________________________
Firmware:
  Chip Id: 00A77FDF
  IDE version: 10808
  Core version: 2_5_0
  SDK version: 3.0.0-dev(c0f7b44)
  Boot version: 31
  Boot mode: 1
__________________________
Flash chip information:
  Flash chip Id: 0014405E (for example: Id=001640E0  Manuf=E0, Device=4016 (swap bytes))
  Sketch thinks flash RAM is size: 1.00 MB
  Actual size based on chip Id: 1.00 MB ... given by (2^( "Device" - 1) / 8 / 1024
  Flash configuration is correct.
  Flash frequency: 40.00 MHz
  Flash write mode: UNKNOWN
__________________________
File system (SPIFFS):
  Total kB: 51.72 KB
  Used kB: 0.49 KB
  Block size: 4096
  Page size: 256
  Maximum open files: 5
  Maximum path length: 32
SPIFFS directory {/} :
    /config/config.txt
__________________________
CPU frequency: 80 MHz
__________________________
end of SPIFFS information ...
accessing file system ...
reading file 1st time ...
read from file: ssid password port ip dns gateway subnet timeout writing file  ...
reading file 2nd time ...
read from file: ssid password port ip dns gateway subnet timeout removing file ...
reading file 3rd time (file removed) ...
file not available!
writing file  ...
reading file 4rd time (file rewritten again for permanent storage and check again after reboot) ...
read from file: ssid password port ip dns gateway subnet timeout
done ...
__________________________
Firmware:
  Chip Id: 00A77FDF
  IDE version: 10812
  Core version: 2_6_3
  SDK version: 2.2.1(cfd48f3)
  Boot version: 31
  Boot mode: 1
__________________________
Flash chip information:
  Flash chip Id: 0014405E (for example: Id=001640E0  Manuf=E0, Device=4016 (swap bytes))
  Sketch thinks flash RAM is size: 1.00 MB
  Actual size based on chip Id: 1.00 MB ... given by (2^( "Device" - 1) / 8 / 1024
  Flash configuration is correct.
  Flash frequency: 40.00 MHz
  Flash write mode: UNKNOWN
__________________________
File system (SPIFFS):
  Total kB: 51.72 KB
  Used kB: 0.00 KB
  Block size: 4096
  Page size: 256
  Maximum open files: 5
  Maximum path length: 32
SPIFFS directory {/} :
__________________________
CPU frequency: 80 MHz
__________________________
end of SPIFFS information ...
accessing file system ...
reading file 1st time ...
file not available!
writing file  ...
reading file 2nd time ...
read from file: ssid password port ip dns gateway subnet timeout
removing file ...
reading file 3rd time (file removed) ...
file not available!
writing file  ...
reading file 4rd time (file rewritten again for permanent storage and check again after reboot) ...
read from file: ssid password port ip dns gateway subnet timeout
done ...


mein Referenzmodul (relativ alt), vermutlich noch ESP01
__________________________
Firmware:
  Chip Id: 00FD19B9
  IDE version: 10812
  Core version: 2_6_3
  SDK version: 2.2.1(cfd48f3)
  Boot version: 31
  Boot mode: 1
__________________________
Flash chip information:
  Flash chip Id: 001440E0 (for example: Id=001640E0  Manuf=E0, Device=4016 (swap bytes))
  Sketch thinks flash RAM is size: 1.00 MB
  Actual size based on chip Id: 1.00 MB ... given by (2^( "Device" - 1) / 8 / 1024
  Flash configuration is correct.
  Flash frequency: 40.00 MHz
  Flash write mode: UNKNOWN
__________________________
File system (SPIFFS):
  Total kB: 51.72 KB
  Used kB: 0.00 KB
  Block size: 4096
  Page size: 256
  Maximum open files: 5
  Maximum path length: 32
SPIFFS directory {/} :
__________________________
CPU frequency: 80 MHz
__________________________
end of SPIFFS information ...
accessing file system ...
reading file 1st time ...
file not available!
writing file  ...
reading file 2nd time ...
read from file: ssid password port ip dns gateway subnet timeout
removing file ...
reading file 3rd time (file removed) ...
file not available!
writing file  ...
reading file 4rd time (file rewritten again for permanent storage and check again after reboot) ...
read from file: ssid password port ip dns gateway subnet timeout
done ...


ESP01S von AZ delivery
__________________________
Firmware:
  Chip Id: 00C13A12
  IDE version: 10808
  Core version: 2_5_0
  SDK version: 3.0.0-dev(c0f7b44)
  Boot version: 31
  Boot mode: 1
__________________________
Flash chip information:
  Flash chip Id: 0014605E (for example: Id=001640E0  Manuf=E0, Device=4016 (swap bytes))
  Sketch thinks flash RAM is size: 1.00 MB
  Actual size based on chip Id: 1.00 MB ... given by (2^( "Device" - 1) / 8 / 1024
  Flash configuration is correct.
  Flash frequency: 40.00 MHz
  Flash write mode: UNKNOWN
__________________________
File system (SPIFFS):
  Total kB: 51.72 KB
  Used kB: 0.00 KB
  Block size: 4096
  Page size: 256
  Maximum open files: 5
  Maximum path length: 32
SPIFFS directory {/} :
__________________________
CPU frequency: 80 MHz
__________________________
end of SPIFFS information ...
accessing file system ...
reading file 1st time ...
file not available!
writing file  ...
reading file 2nd time ...
read from file: ssid password port ip dns gateway subnet timeout
removing file ...
reading file 3rd time (file removed) ...
file not available!
writing file  ...
reading file 4rd time (file rewritten again for permanent storage and check again after reboot) ...
read from file: ssid password port ip dns gateway subnet timeout
done ...


Was ich komisch finde ist, dass die SDK Version von 2.5.0 die 3.0.0 ist und bei 2.6.3 wieder auf 2.2.1 heruntergestuft wurde.

@andies: kannst Du den Sketch mal bei Deinem Modul probieren?

Gruß Peter

Edit: Der erweiterte SPIFFS Test von hier geht bei keinem Modul mit weder mit ESP 2.5.0 noch mit 2.6.3  >:( >:( >:( Langsam verstehe ich echt die Welt nicht mehr  ??? ??? ???
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser