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

User avatar
vajera
Posts: 7286
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

SOYER wrote: Tue Dec 24, 2024 1:38 pm 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
Brawo!
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Dziękuje, strasznie oporna materia to była, ale daliśmy radę;)
https://forbot.pl/forum/topic/24775-mon ... /#comments
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

MQTT ogarnięte.
Dziękuję wszystkim za pomoc. Jest tego trochę na forum, ale jakby ktoś potrzebował w prostej formie to proszę:

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();
}

///sterowanie przekaźnikiem
client.publish("supla/xxx/devices/xxx/channels/xxx/execute_action", "TOGGLE");
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

Trochę dzisiaj popracowałem, mam już po mqtt odbieranie danych z krańcówek, sterowanie bramami i wyświetlanie danych z czujników.
Esp32 Touch 4”, Supla MQTT
https://youtube.com/shorts/ShKYXEBxfiM?feature=share
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

Aktualne postępy prac:

ESP32-S3, 4” touch panel, Supla MQTT
https://youtube.com/shorts/8zBX69HGKW0



Dodałem obsługę odczytu jakości powietrza, pobieram dane z czujnika(serwera supli w sumie), przeliczam w.g. indeksu i wyświetlam odpowiednie info. Kolor tła banerów na stronie głównej również zmienia się zależnie od odczytów, temperatury, jakości powietrza i siły wiatru.

Generalnie co chciałem zrobić zrobiłem. Teraz muszę to gdzieś zamontować zamiast zwykłego włącznika.
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

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

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ś?
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 jeśli dodam to esp32 normalnie do supli jako device i odpalę SuplaDevice.iterate(); to mi się to bedzie gryźć z mqtt, ale nie jestem pewien.
Wymyśliłem, żeby na innym device dodać kanał wirtualnego przekaźnika, a na moim esp z mqtt dam subskrybcję tego VR.
Wtedy kiedy włączę ten VR to na esp odbieram to info przez mqtt i ustawiam esp w tryb update.
Tylko jak zrobić to ostatnie? Czyli jak zareagować na ten topic z mqtt i odpalić web z możliwością update używając tego:

Code: Select all

#include <supla/network/esp_web_server.h>
#include <HTTPUpdateServer.h>   
Supla::EspWebServer suplaServer;
HTTPUpdateServer httpUpdater;
@lukfud?
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
Robert Błaszczak
Posts: 5222
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra
Has thanked: 37 times
Been thanked: 27 times

Post

Jeśli dobrze Cię rozumiem, to chcesz mieć możliwość aktualizacji przez OTA swojego urządzenia MQTT/ESP32, które to urządzenie nie jest widoczne w Supla Cloud. Więc soft musisz wystawić na jakimś zasobie w swojej sieci lokalnej lub na www w sieci Internet.
To może zrobić dodatkowy przycisk na panelu ESP32 do sprawdzania i aktualizowania softu?
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Dobrze rozumiesz, ale nie ma możliwości dodatkowego przycisku fizycznego.
Więc wymyśliłem włączanie trybu konfiguracji w reakcji na topic z mqtt z konkretnego kanału sterowanego z innego esp. Nie wiem jak to zrobić. Czy podobnie jak przy przycisku fizycznym? Czyli libsy do supli, webinterface itd i reagujemy na topic a nie na przycisk. Tylko czy to będzie działać bez supladevice.iterate?
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”