Problem z odczytem linków z Mew 01

Pietras81
Posts: 2019
Joined: Sun Feb 17, 2019 6:56 am
Location: Osielsko

Post

Witam, Dostałem od kolegi gotowca który wgrałem za pomocą Arduino na esp32 generalnie przez pierwsze kilka minut wszystko śmiga aż miło odświeżanie jest co 5 sek pamięci nie brakuje a po kilku minutach pojawi się problem bo przestaje odświeżać.

Code: Select all

[947518][D][HTTPClient.cpp:241] beginInternal(): unexpected protocol: https, expected http
[947526][V][HTTPClient.cpp:230] beginInternal(): url: https://svr20.supla.org/direct/1480/EDIT/read?format=json
[947537][D][HTTPClient.cpp:281] beginInternal(): protocol: https, host: svr20.supla.org port: 443 url: /direct/1480/EDIT/read?format=json
[947550][D][HTTPClient.cpp:552] sendRequest(): request type: 'GET' redirCount: 0

[961557][E][NetworkManager.cpp:130] hostByName(): DNS Failed for 'svr20.supla.org' with error '-54'
[961566][V][ssl_client.cpp:68] start_ssl_client(): Free internal heap before TLS 252324
[961574][V][ssl_client.cpp:75] start_ssl_client(): Starting socket (domain 2)
[966583][I][ssl_client.cpp:129] start_ssl_client(): select returned due to timeout 5000 ms for fd 48
[966593][I][NetworkClientSecure.cpp:153] connect(): Actual TLS start postponed.
[966600][E][NetworkClientSecure.cpp:159] connect(): start_ssl_client: connect failed: -1
[966608][V][ssl_client.cpp:360] stop_ssl_socket(): Cleaning SSL connection.
[966614][D][HTTPClient.cpp:1083] connect(): failed connect to svr20.supla.org:443
[966622][W][HTTPClient.cpp:1399] returnError(): error(-1): connection refused
[966629][E][NetworkClient.cpp:315] setSocketOption(): fail on 0, errno: 9, "Bad file number"
Error code: -1
[966637][E][NetworkClient.cpp:315] setSocketOption(): fail on 0, errno: 9, "Bad file number"
[966647][D][HTTPClient.cpp:379] disconnect(): tcp is closed

[966652][V][ssl_client.cpp:360] stop_ssl_socket(): Cleaning SSL connection.
[966659][V][ssl_client.cpp:360] stop_ssl_socket(): Cleaning SSL connection.
[971667][V][HTTPClient.cpp:230] beginInternal(): url: https://svr20.supla.org/direct/1480/EDIT/read?format=json
[971677][D][HTTPClient.cpp:241] beginInternal(): unexpected protocol: https, expected http
[971685][V][HTTPClient.cpp:230] beginInternal(): url: https://svr20.supla.org/direct/1480/EDIT/read?format=json
[971696][D][HTTPClient.cpp:281] beginInternal(): protocol: https, host: svr20.supla.org port: 443 url: /direct/1480/EDIT/read?format=json
[971709][D][HTTPClient.cpp:552] sendRequest(): request type: 'GET' redirCount: 0
https://pietras-81.aqi.eco/
User avatar
klew
Posts: 9693
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Z tych logów niewiele wynika.
Widać tam same błędy, a mimo to idzie dalej. W końcu jest "connection refused", ale dlaczego? To by trzeba pewnie zerknąć lepiej w kod i dodać tam poprawną obsługę błędów.
Kiedy będzie Supla Offline Party / SOP#2025 ?
Pietras81
Posts: 2019
Joined: Sun Feb 17, 2019 6:56 am
Location: Osielsko

Post

klew wrote: Tue Jun 25, 2024 4:24 pm Z tych logów niewiele wynika.
Widać tam same błędy, a mimo to idzie dalej. W końcu jest "connection refused", ale dlaczego? To by trzeba pewnie zerknąć lepiej w kod i dodać tam poprawną obsługę błędów.
Poniżej kod jaki wgrałem. Najciekawsze jest to że pierwsze kilka minut wszystko śmiga bez żadnego probelemu, może zerknąłyś gdzie jest problem.

Code: Select all

/*
  
*/
#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <TFT_eSPI.h> // Hardware-specific library
#include <ArduinoJson.h>

TFT_eSPI tft = TFT_eSPI(); 

const char* ssid = "XXXXXX"; // twoje WIFI
const char* password = "XXXXXX"; // hasło do Wifi




String serverName = "https://svr20.supla.org/direct/1480/SW2p2eu9r5YH/read?format=json"; //Direct Link mew-01




unsigned long lastTime = 0;

// Set timer to 5 seconds (5000)
unsigned long timerDelay = 5000;

void setup() {
  Serial.begin(115200); 

  tft.init();
   tft.setRotation(1);
   tft.fillScreen(TFT_BLACK);
  
  tft.setCursor(70, 40);
  tft.setTextFont(4);
  //tft.setTextSize(1);
  tft.setTextColor(TFT_GREEN,TFT_BLACK);
  tft.print("SUPLA ZAMEL");

  tft.setCursor(70, 80);
  tft.setTextFont(4);
  tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.print("MEW-1 Display");
  tft.setCursor(40, 120);
  tft.setTextFont(4);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.print("Designed by J.A.M.S.");

  WiFi.begin(ssid, password);
  Serial.println("Connecting");
  while(WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to WiFi network with IP Address: ");
  Serial.println(WiFi.localIP());
 
  Serial.println("Timer set to 5 seconds (timerDelay variable), it will take 5 seconds before publishing the first reading.");
}

void loop() {
  //Send an HTTP POST request every 10 minutes
  if ((millis() - lastTime) > timerDelay) {
    //Check WiFi connection status
    if(WiFi.status()== WL_CONNECTED){
      HTTPClient http;

      String serverPath = serverName;
      
      // Your Domain name with URL path or IP address with path
      http.begin(serverPath.c_str());
      
      
      
      // Send HTTP GET request
      int httpResponseCode = http.GET();
      
      if (httpResponseCode>0) {
        Serial.print("HTTP Response code: ");
        Serial.println(httpResponseCode);
        String json = http.getString();
        
        StaticJsonDocument<1000> filter;
  filter["phases"][0]["voltage"] = true;
  filter["phases"][0]["current"] = true;
  filter["phases"][0]["powerFactor"] = true;
  filter["phases"][0]["powerActive"] = true;
  filter["phases"][0]["phaseAngle"] = true;
  filter["phases"][0]["totalForwardActiveEnergy"] = true;

  StaticJsonDocument<2000> doc;
  deserializeJson(doc, json, DeserializationOption::Filter(filter));

  //void myFunction1(DynamicJsonDocument doc);
  //DynamicJsonDocument myFunction1(1024);
  double val = doc["phases"][0]["voltage"];
  double val1 = doc["phases"][1]["voltage"];
  double val2 = doc["phases"][2]["voltage"];
  double val3 = doc["phases"][0]["powerActive"];
  double val4 = doc["phases"][1]["powerActive"];
  double val5 = doc["phases"][2]["powerActive"];

  double val6 = doc["phases"][0]["current"];
  double val7 = doc["phases"][1]["current"];
  double val8 = doc["phases"][2]["current"];


  double val9 = doc["phases"][0]["powerFactor"];
  double val10 = doc["phases"][1]["powerFactor"];
  double val11 = doc["phases"][2]["powerFactor"];

  double val12 = doc["phases"][0]["phaseAngle"];
  double val13 = doc["phases"][1]["phaseAngle"];
  double val14 = doc["phases"][2]["phaseAngle"];

  double val15 = doc["phases"][0]["totalForwardActiveEnergy"];
  double val16 = doc["phases"][1]["totalForwardActiveEnergy"];
  double val17 = doc["phases"][2]["totalForwardActiveEnergy"];

  tft.fillScreen(TFT_BLACK);

  tft.setCursor(0, 0);
  tft.setTextFont(1);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.print("Napiecia:");
  tft.setCursor(0, 10);
  tft.setTextFont(4);
  tft.setTextSize(1);
 tft.setTextColor(TFT_RED,TFT_BLACK);
  tft.print(val);
  tft.print(" v");
  tft.setCursor(110, 10);
  tft.setTextFont(4);
  tft.setTextSize(1);
 tft.setTextColor(TFT_GREEN,TFT_BLACK);
  tft.print(val1);
  tft.print(" v");
  tft.setCursor(220, 10);
  tft.setTextFont(4);
  tft.setTextSize(1);
 tft.setTextColor(TFT_CYAN,TFT_BLACK);
  tft.print(val2);
  tft.print(" v");

  
  //tft.fillScreen(TFT_BLACK);
  tft.setCursor(0, 34);
  tft.setTextFont(1);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.print("Prady:");

  tft.setCursor(0, 42);
  tft.setTextFont(4);
  tft.setTextSize(1);
 tft.setTextColor(TFT_RED,TFT_BLACK);
  tft.print(val6);
  tft.print(" A");
  tft.setCursor(110, 42);
  tft.setTextFont(4);
  tft.setTextSize(1);
 tft.setTextColor(TFT_GREEN,TFT_BLACK);
  tft.print(val7);
  tft.print(" A");
  tft.setCursor(220, 42);
  tft.setTextFont(4);
  tft.setTextSize(1);
 tft.setTextColor(TFT_CYAN,TFT_BLACK);
  tft.print(val8);
  tft.print(" A");
  tft.setCursor(0, 66);
  tft.setTextFont(1);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.print("Moce:");

  tft.setCursor(0, 74);
  tft.setTextFont(4);
  tft.setTextSize(1);
 tft.setTextColor(TFT_RED,TFT_BLACK);
  tft.print(val3);
  tft.print(" w");
  tft.setCursor(0, 94);
  tft.setTextFont(4);
  tft.setTextSize(1);
 tft.setTextColor(TFT_GREEN,TFT_BLACK);
  tft.print(val4);
  tft.print(" w");
  tft.setCursor(0, 114);
  tft.setTextFont(4);
  tft.setTextSize(1);
 tft.setTextColor(TFT_CYAN,TFT_BLACK);
  tft.print(val5);
  tft.print(" w");

  tft.setCursor(140, 125);
  tft.setTextFont(1);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.print("Razem:");

  tft.setCursor(200, 114);
  tft.setTextFont(4);
  tft.setTextSize(1);
 tft.setTextColor(TFT_YELLOW,TFT_BLACK);
  tft.print(val3 + val4 + val5);
  tft.print(" w");

  tft.setCursor(0, 141);
  tft.setTextFont(1);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.print("PF:");

  tft.setCursor(20, 136);
  tft.setTextFont(2);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_RED,TFT_BLACK);
  tft.print(val9);
  
  tft.setCursor(60, 136);
  tft.setTextFont(2);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_GREEN,TFT_BLACK);
  tft.print(val10);

  tft.setCursor(100, 136);
  tft.setTextFont(2);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_CYAN,TFT_BLACK);
  tft.print(val11);

  tft.setCursor(0, 158);
  tft.setTextFont(1);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.print("Katy faz:");

  tft.setCursor(60, 154);
  tft.setTextFont(2);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_RED,TFT_BLACK);
  tft.print(val12);
  
  tft.setCursor(120, 154);
  tft.setTextFont(2);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_GREEN,TFT_BLACK);
  tft.print(val13);

  tft.setCursor(180, 154);
  tft.setTextFont(2);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_CYAN,TFT_BLACK);
  tft.print(val14);

  tft.setCursor(0, 176);
  tft.setTextFont(1);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.print("Energia Czynna:");

  tft.setCursor(0, 188);
  tft.setTextFont(2);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_RED,TFT_BLACK);
  tft.print(val15);
  tft.print(" kWh");
  
  tft.setCursor(110, 188);
  tft.setTextFont(2);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_GREEN,TFT_BLACK);
  tft.print(val16);
  tft.print(" kWh");

  tft.setCursor(220, 188);
  tft.setTextFont(2);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_CYAN,TFT_BLACK);
  tft.print(val17);
  tft.print(" kWh");

  tft.setCursor(0, 210);
  tft.setTextFont(1);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.print("Energia razem:");

  tft.setCursor(0, 220);
  tft.setTextFont(2);
  //tft.setTextSize(1);
 tft.setTextColor(TFT_YELLOW,TFT_BLACK);
  tft.print(val15 + val16 + val17);
  tft.print(" kWh");
  


  
Serial.println("Napięcia:");
Serial.print(val);
Serial.println(" V");
Serial.print(val1);
Serial.println(" V");
Serial.print(val2);
Serial.println(" V");
Serial.println(" ");
Serial.println("Moce:");
Serial.print(val3);
Serial.println(" W");
Serial.print(val4);
Serial.println(" W");
Serial.print(val5);
Serial.println(" W");
Serial.print("Razem:");
Serial.print(val3 + val4 + val5);
Serial.println(" W");
Serial.println(" ");
Serial.println("Prądy:");
Serial.print(val6);
Serial.println(" A");
Serial.print(val7);
Serial.println(" A");
Serial.print(val8);
Serial.println(" A");
Serial.println(" ");

Serial.println("PF:");
Serial.println(val9);
Serial.println(val10);
Serial.println(val11);
Serial.println(" ");

Serial.println("Kąty Faz:");
Serial.println(val12);
Serial.println(val13);
Serial.println(val14);
Serial.println(" ");

Serial.println("Energia Czynna Pobrana:");
Serial.println(val15);
Serial.println(val16);
Serial.println(val17);
Serial.print("Razem:");
Serial.print(val15 + val16 + val17);
Serial.println(" kWh");
Serial.println(" ");



      }
      else {
        Serial.print("Error code: ");
        Serial.println(httpResponseCode);
      }
      // Free resources
      http.end();
    }
    else {
      Serial.println("WiFi Disconnected");
    }
    lastTime = millis();
  }
}

https://pietras-81.aqi.eco/
User avatar
klew
Posts: 9693
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Czyli niewiele więcej tutaj widać, a większość tych logów leci z użytych bibliotek.

Natomiast problemem może być chyba ilość zapytań do API. Konta mają domyślnie limit 2000 zapytań na godzinę.
Pytając co 5s, zużywasz 720 zapytań. Jeśli masz coś więcej niż ten licznik do odczytu po linkach, to pewnie to jest problemem.

Wejdź na swoje konto i kliknij: Konto -> Przejdź do mojego konta -> Pokaż moje limity -> Limit żądań do API
Kiedy będzie Supla Offline Party / SOP#2025 ?
Pietras81
Posts: 2019
Joined: Sun Feb 17, 2019 6:56 am
Location: Osielsko

Post

Sprawdziłem i raczej to nie jest problem bo skoro wyłączę i włączę zasilanie to działa przez kolejne 5-10 minut.
Wysypało się po 61 z 2000 / h
Mam jeszcze na linkach bezpośrednich termometry do oleda ale to raczej nie wiele zabiera.
https://pietras-81.aqi.eco/
User avatar
klew
Posts: 9693
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Pietras81 wrote: Tue Jun 25, 2024 7:48 pm Sprawdziłem i raczej to nie jest problem bo skoro wyłączę i włączę zasilanie to działa przez kolejne 5-10 minut.
Wysypało się po 61 z 2000 / h
Mam jeszcze na linkach bezpośrednich termometry do oleda ale to raczej nie wiele zabiera.
A link działa z przeglądarki, gdy ESP nie może się połączyć? Czy reset ESP pomaga?
Kiedy będzie Supla Offline Party / SOP#2025 ?
Pietras81
Posts: 2019
Joined: Sun Feb 17, 2019 6:56 am
Location: Osielsko

Post

Link działa cały czas
https://svr20.supla.org/direct/1480/SW2 ... ormat=json
Reset esp pomaga po resecie działa przez kolejne minuty.
https://pietras-81.aqi.eco/
Pietras81
Posts: 2019
Joined: Sun Feb 17, 2019 6:56 am
Location: Osielsko

Post

Panowie może ktoś ma jeszcze jakiś pomysł. Wgrałem jakieś przykłady z biblioteki tft i chodzą bez problemu a tu cały czas ten sam problem. Wgrałem ten soft na inne esp 32 mini i to samo nawet nie podpiąłem wyswietlacza logi lecą a po kilku minutach blad.
https://pietras-81.aqi.eco/
Adamo28
Posts: 179
Joined: Sun Nov 08, 2020 2:54 pm

Post

Hej, nie korzystam z linków ale zdaje się że one wymagają szyfrowanego połączenia, niech ktoś mnie poprawi jeśli się mylę. A w podanym przez ciebie kodzie chyba tego nie ma nie?
Pietras81
Posts: 2019
Joined: Sun Feb 17, 2019 6:56 am
Location: Osielsko

Post

Adamo28 wrote: Thu Jul 04, 2024 5:11 pm Hej, nie korzystam z linków ale zdaje się że one wymagają szyfrowanego połączenia, niech ktoś mnie poprawi jeśli się mylę. A w podanym przez ciebie kodzie chyba tego nie ma nie?
A powiedz co trzeba dodać i gdzie żeby było szyfrowane. Ale najgorsze jest to że u kogoś innego działa a u mnie po czasie przestaję.
https://pietras-81.aqi.eco/

Return to “Arduino IDE”