Sterowanie suplą przez esp32 z dotykowym LCD 4” + FlightRadar

User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Zacząłem działać, ale na razie na sucho, bez tego:
https://www.waveshare.com/esp32-s3-touch-lcd-4.htm
ale już do mnie jedzie;).
@klew wybacz ale sprzętu nie mam, a próbuję kod sklecić.
Jeszcze jedno, zrobiłem link bezpośredni, ustawiłem tylko na „przełącz” , a wlinku widać „read”. To błąd i trzeba rzęcznie zmienić na „toggle”?
You do not have the required permissions to view the files attached to this post.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Jeszcze jedną(?) rzecz przeoczyłem:

Code: Select all

String httpPOSTsupla(const char* serverName) {
  WiFiClientSecure client1;
  HTTPClient http1;
  client1.setInsecure();
  http1.begin(client1, serverName);
  http1.addHeader("Content-Type", "application/json");
  http1.addHeader("Accept", "application/json");
  int httpResponseCode = http1.POST("'{\"code\":\"RnKgaNPdACq9\",\"action\":\"read\"}' https://svr73.supla.org/direct/895");

  String payload = "{}"; 
  
  if (httpResponseCode>0) {
    Serial.print("HTTP Response code: ");
    Serial.println(httpResponseCode);
    payload = http1.getString();
  }
  else {
    Serial.print("Error code: ");
    Serial.println(httpResponseCode);
  }
  //client1.stop();
  http1.end();
  return payload;
}
co ma być pod "serverName"?
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Nie wiem. Nigdy nie używałem linków bezpośrednich i musiałbym sprawdzić dokumentację i potem jeszcze sprawdzić jak te zapytania robi się w Arduino IDE.

Najprościej wrzucić to na jakieś ESP i sprawdzić czy działa. Jeśli nie, to dorzucić jak najwięcej logów i szukać przyczyny.

Btw. curl to program odpalany z linii poleceń na liniach, także tutaj nie robisz curla ;)
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

klew wrote: Mon Dec 16, 2024 7:26 pm Nie wiem. Nigdy nie używałem linków bezpośrednich i musiałbym sprawdzić dokumentację i potem jeszcze sprawdzić jak te zapytania robi się w Arduino IDE.

Najprościej wrzucić to na jakieś ESP i sprawdzić czy działa. Jeśli nie, to dorzucić jak najwięcej logów i szukać przyczyny.

Btw. curl to program odpalany z linii poleceń na liniach, także tutaj nie robisz curla ;)
Ok, czyli rozpoznanie bojem, sprawdź przy okazji to "read", a powinno być chyba "toggle".
Z poziomu linka w przeglądarce ładnie włącza, ta prostsza wersja linku, ja pytam o tą dla urządzeń.
Co wpisać w "serverName"?
Może odpowie ktoś bardziej obeznany w esp32 i tworzeniem takiego linku.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Poszukaj dokumentacji tego httpclient, albo sprawdź w pliku .h tego httpclient.
Tam pewnie trzeba poddać adres serwera
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

klew wrote: Mon Dec 16, 2024 7:34 pm Poszukaj dokumentacji tego httpclient, albo sprawdź w pliku .h tego httpclient.
Tam pewnie trzeba poddać adres serwera
Ja wiem, ale jaki to adres dla supli, wysyłam linka bezpośredniego z poleceniem przełączenia kanału. To idzie na cloud, czyli to co w logowaniu svr...supla.org? Czy jeszcze jakieś prefixy lub sufiksy?
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Wydaje mi się, że to powinno być tak:

Code: Select all

http1.begin(client1, "https://svrxx.supla.org/direct/xxx");
  http1.addHeader("Content-Type", "application/json");
  http1.addHeader("Accept", "application/json");
  int httpResponseCode = http1.POST("{\"code\":\"xxxxxxx\",\"action\":\"open-close\"}");
Jednak ktoś obeznany musiał by się wypowiedzieć...
No i w bramach nie ma toggle tylko open-close.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Dobra, teraz już obeznany to ja;)
Funkcja dla esp która z tego esp wysyła linka bezpośredniego i steruje przekaźnikiem(albo czym innym) na innym esp.
Wiem, że dla niektórych to proste jak drut, ale dla mnie to sukces.
Funkcja oparta na PATCH który jest podobno bezpieczniejszy od zwykłego linka wysłanego postem:
void httpPOSTsupla() {
WiFiClientSecure client1;
HTTPClient http1;
client1.setInsecure();
http1.begin(client1, "https://svrxx.supla.org/direct/xxx");
http1.addHeader("Content-Type", "application/json");
http1.addHeader("Accept", "application/json");

int httpResponseCode = http1.PATCH("{\"code\":\"xxx\",\"action\":\"toggle\"}");

String payload = "{}";

if (httpResponseCode>0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
payload = http1.getString();
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
client1.stop();
http1.end();
}
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Wersja poprawiona dla kilku(nastu) linków sterujących:

Code: Select all

//struktura danych dla linków:
struct suplaRel {
    String adres;
    String code;
    String action;
 };
  suplaRel suplaBaza[] = {
    {"https://svrx.supla.org/direct/xx", "xxxxxxxx", "open-close"},//brama wjazd[0]
    {"https://svrx.supla.org/direct/xxx", "xxxxxxx", "open-close"},//brama garaz[1]
    {"https://svrx.supla.org/direct/xx", "xxxxxx", "toggle"},//lampa plac[2]
    {"https://svrx.supla.org/direct/xxx", "xxxxxxxx", "toggle"}//lampy podjazd[3]
 };
 
// wywołanie funkcji:
 httpPATCHsupla(suplaBaza[i].adres, suplaBaza[i].code, suplaBaza[i].action);
 
 //funkcja:
 void httpPATCHsupla(String adr, String cod, String act) {
  WiFiClientSecure client1;
  HTTPClient http1;
  client1.setInsecure();
  http1.begin(client1, adr);
  http1.addHeader("Content-Type", "application/json");
  http1.addHeader("Accept", "application/json");
  JsonDocument doc;
  String track;
  doc["code"] = String(cod);
  doc["action"] = String(act);
  serializeJson(doc, track);
   int httpResponseCode = http1.PATCH(track);
  String payload = "{}"; 
  
  if (httpResponseCode>0) {
    Serial.print("HTTP Response code: ");
    Serial.println(httpResponseCode);
    payload = http1.getString();
  }
  else {
    Serial.print("Error code: ");
    Serial.println(httpResponseCode);
  }
  client1.stop();
  http1.end();
}
 
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Cześć, na razie przez linki bezpośrednie, po świętach spróbuję na MQTT:
4” Touch LCD, open gate
https://youtube.com/shorts/CPGHRZQSJ48?feature=share
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79

Return to “Zagadnienia ogólne”