Sterowanie suplą przez esp32 z dotykowym LCD 4”

User avatar
Zibi_007
Posts: 308
Joined: Tue Oct 31, 2023 10:06 pm

Post

SOYER wrote: Sat Jan 04, 2025 6:32 pm Dziękuję za feedback i słuszne uwagi o pewnym koledze;)
Samozaparcie trzeba mieć, a poz tym pasjonuje mnie to. Dużo bardziej wolę główkować nad kodem niż nad połączeniami elektronicznymi, kabelkami itp.
Odkurzacz faktycznie mogłem zdjąć do zdjęcia, nie pomyślałem nad aranżem kadru:).
No co Ty? Trzeba się pochwalić, że się ma :lol: Swoją drogą w moim (odkurzaczu) siedzi jakiś układ z bluetooth. Podaje czas pracy, poziom naładowania, zapełnienia, czas od wymiany filtrów, jest trochę różnych ustawień i tryb serwisowy. Więc wszystko przed nami :lol: Jak go kiedyś rozbiorę, to zobaczę co tam siedzi...
Nec Hercules contra plures!
jaku2k
Posts: 910
Joined: Sun May 24, 2020 8:40 pm

Post

SOYER wrote: Wed Jan 01, 2025 9:47 am Witam w Nowym Roku.
Mam pytanie co do OTA.
Teraz mam esp32 z LCD które łaczy się z serwerem supli i uzywając MQTT odbiera/wysyła dane.
Chciałbym dodać do tej płytki aktualizacje poprzez OTA, jednak z możliwością przejścia w tryb konfiguracyjny z poziomu clouda.
Tej metody już z powodzeniem używam w innym esp32:

Code: Select all

#include <HTTPUpdateServer.h>  
HTTPUpdateServer httpUpdater;
httpUpdater.setup(suplaServer.getServerPtr(), "/update");
Teraz pytanie jak zrobić by w najprostszy możliwy sposób mieć możliwość zdalnego przejścia w tryb konfiguracyjny i móc zaktualizować soft.
Chyba, że jest na to(OTA) inny sposób.
Podpowie ktoś coś?
Ładnie to wygląda.

Jeśli piszesz w Arduino IDE lub PlatformIO, to fajnie działa ArduinoOTA.
viewtopic.php?p=181087#p181087
SOYER
Posts: 1172
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry

Post

jaku2k wrote: Sat Jan 04, 2025 9:52 pm
SOYER wrote: Wed Jan 01, 2025 9:47 am Witam w Nowym Roku.
Mam pytanie co do OTA.
Teraz mam esp32 z LCD które łaczy się z serwerem supli i uzywając MQTT odbiera/wysyła dane.
Chciałbym dodać do tej płytki aktualizacje poprzez OTA, jednak z możliwością przejścia w tryb konfiguracyjny z poziomu clouda.
Tej metody już z powodzeniem używam w innym esp32:

Code: Select all

#include <HTTPUpdateServer.h>  
HTTPUpdateServer httpUpdater;
httpUpdater.setup(suplaServer.getServerPtr(), "/update");
Teraz pytanie jak zrobić by w najprostszy możliwy sposób mieć możliwość zdalnego przejścia w tryb konfiguracyjny i móc zaktualizować soft.
Chyba, że jest na to(OTA) inny sposób.
Podpowie ktoś coś?
Ładnie to wygląda.

Jeśli piszesz w Arduino IDE lub PlatformIO, to fajnie działa ArduinoOTA.
viewtopic.php?p=181087#p181087
Cześć, dzięki za feedback.
Takie OTA jak pokazujesz używam w wielu innych swoich urządzeniach, z powodzeniem. Jednak w tym przypadku do aktualizacji softu potrzebny jest komputer z zainstalowanym arduino IDE, czyli krótko mówiąc musi to zrobić ktoś kto potrafi.

W tym projekcie z LCD też to miałem, ale postanowiłem się nauczyć czegoś nowego, więc zaimplementowałem OTA przez http. Teraz można wgrać nowy soft przy pomocy jakiegokolwiek kompa, telefonu, tabletu. Otwieramy przeglądarkę, wpisujemy adres, wskazujemy plik i wgrywamy. Może to zrobić każdy nieobeznany, wystarczy, że dostarczymy mu plik .bin.
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
jaku2k
Posts: 910
Joined: Sun May 24, 2020 8:40 pm

Post

Nie wczytywałem się w wątek więc nie znałem wymagań :) Fakt, httpUpdate jest bardziej wszechstronny.
SOYER
Posts: 1172
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry

Post

Cześć, wczoraj z pewnymi problemami dołożyłem kod QR do szybkiego wywołania strony do uploadu z np telefonu.

https://youtube.com/shorts/TTrB4Po8d08? ... wkATuHz669
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
brodaa
Posts: 15
Joined: Mon Nov 22, 2021 11:46 am

Post

@SOYER próbuję skompilować twój kod do przetestowania MQTT:

Code: Select all

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <PubSubClient.h>
#include "HWCDC.h"
HWCDC USBSerial;
// Update these with values suitable for your network.

const char* ssid = "xx";
const char* password = "xx";
const char* mqtt_server = "xx";
const char* mqtt_user = "xx";
const char* mqtt_pass = "xx";
WiFiClientSecure client1;
PubSubClient client(client1);

unsigned long lastMsg = 0;
#define MSG_BUFFER_SIZE  (50)
char msg[MSG_BUFFER_SIZE];
int value = 0;

void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  USBSerial.println();
  USBSerial.print("Connecting to ");
  USBSerial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin("xx", "xx");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    USBSerial.print(".");
  }

  randomSeed(micros());
}
String tempGrunt;
String top1="supla/xx/devices/xxxx/channels/xxxx/state/temperature";//TemGrunt


void callback(char* topic, byte* payload, unsigned int length) {
  USBSerial.print("Message arrived [");
  USBSerial.print(topic);
  USBSerial.print("] ");
  for (int i = 0; i < length; i++) {
    USBSerial.print((char)payload[i]);
  }
  USBSerial.println();
if (strcmp(topic,top1.c_str())==0){
    payload[length] = '\0';
    tempGrunt=String((char*)payload);
  }

USBSerial.print("tempGrunt.......................:");
USBSerial.println(tempGrunt);

}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {

    USBSerial.print("Attempting MQTT connection...");
    // Create a random client ID
    String clientId = "ESP32Client-";
    clientId += String(random(0xffff), HEX);
    // Attempt to connect
    if (client.connect(clientId.c_str(), mqtt_user, mqtt_pass)) {
      USBSerial.println("connected");
      client.subscribe(top1.c_str());
    } else {
      USBSerial.print("failed, rc=");
      USBSerial.print(client.state());
      USBSerial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

void setup() {
  pinMode(BUILTIN_LED, OUTPUT);     // Initialize the BUILTIN_LED pin as an output
USBSerial.begin(9600);
  setup_wifi();
  client1.setInsecure();
  client.setServer(mqtt_server, 8883);
  client.setCallback(callback);
}

void loop() {

  if (!client.connected()) {
    reconnect();
  }
  client.loop();
}
i cały czas Arduino IDE wypluwa mi błąd:

Code: Select all

exit status 1

Compilation error: 'HWCDC' does not name a type
Pliki HWCDC.h i HWCDC.cpp mam wgrane do folderu projektu a i tak nie mogę przebrnąć przez proces kompilacji. Podpowiesz czy też miałeś taki problem i w jaki sposób go rozwiązałeś?
SOYER
Posts: 1172
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry

Post

Na jakim urządzeniu to robisz?
Spróbuj całkiem wywalić to HWCDC, i zamiast
USBSerial. print….
pisz Serial. print…
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
brodaa
Posts: 15
Joined: Mon Nov 22, 2021 11:46 am

Post

Ok dzięki za podpowiedź. Już poradziłem sobie z kompilacją. Problemem był wybór nieodpowiedniego boardu. Próbowałem to kompilować na zwykłym ESP32 a tylko płytki ESP32S2, S3, C6 i H2 działają z biblioteką HWCDC. Po zmianie na ESP32C6 kompiluje się bez problemu. Test komunikacji po MQTT przebiegł pomyślnie 8-)
SOYER
Posts: 1172
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry

Post

Świetnie, dlatego pytałem na jakim urządzeniu to robisz.
Co to za projekt będzie, jeśli wolno zapytać?
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
brodaa
Posts: 15
Joined: Mon Nov 22, 2021 11:46 am

Post

Póki co to rozpoznanie możliwości co możemy na tym zbudować, a potem to czas pokaże na co pozwolą zdobyte umiejętności. Przestrzeń do testowania jest bo mam dom na wykończeniu, gdzie spora część instalacji jest w gwiazdę więc będzie co wyświetlać i czym sterować za pomocą takiego monitora.

Return to “Zagadnienia ogólne”