Bo też pytanie było słowo w słowo identyczne jak pierwszy post tego tematu.klew wrote: Fri Jan 09, 2026 4:35 pmDużych bzdur nie napisał, ale do rozwiązania też bardzo daleko. Ogólnie słychać dzwony, tylko nie wiadomo w którym kościele
Wirtualne przekaźniki po stronie serwera, to temat relatywnie prosty. Nie ma tu wielkiej filozofii.
Idąc dalej:
(copyright AI;))
Code: Select all
include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
#include <supla/control/virtual_relay.h>
#include <HTTPClient.h> // Biblioteka do wysyłania Webhooków (dla ESP32)
// --- KONFIGURACJA SIECI I SUPLA ---
const char* ssid = "Twoja_Nazwa_WiFi";
const char* password = "Twoje_Haslo_WiFi";
// Dane z Twojego panelu https://cloud.supla.org (Sekcja Rejestracja Urządzeń)
char GUID[SUPLA_GUID_SIZE] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
const char* supla_server = "svrX.supla.org"; // Twój adres serwera
const char* supla_email = "[email protected]";
Supla::ESPWifi wifi(ssid, password);
// --- DEFINICJA WIRTUALNEGO PRZYCISKU ---
Supla::Control::VirtualRelay *vRelay = nullptr;
void setup() {
Serial.begin(115200);
// 1. Tworzymy instancję wirtualnego przekaźnika
// Pojawi się w aplikacji jako przycisk ON/OFF
vRelay = new Supla::Control::VirtualRelay();
// 2. Dodajemy akcję wyzwalaną po kliknięciu w aplikacji (Zdarzenie TURN_ON)
// To tutaj następuje integracja z myKRISHOME lub IFTTT
vRelay->addAction(Supla::TURN_ON, [](void*) {
Serial.println("Kliknięto przycisk w aplikacji! Wysyłam zapytanie do myKRISHOME...");
// Przykład wysłania zapytania HTTP (Webhook)
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
// Adres Twojego Webhooka (np. z IFTTT lub API myKRISHOME)
http.begin("maker.ifttt.com");
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
Serial.printf("Sukces, kod odpowiedzi: %d\n", httpResponseCode);
} else {
Serial.print("Błąd wysyłania: ");
Serial.println(httpResponseCode);
}
http.end();
}
// Opcjonalnie: automatyczne wyłączenie "przycisku" po 1 sekundzie (tryb monostabilny)
delay(1000);
vRelay->turnOff();
}, Supla::ON_EVENT_1);
// Inicjalizacja urządzenia w chmurze Supla
SuplaDevice.begin(GUID, supla_server, supla_email, AUTHKEY);
}
void loop() {
SuplaDevice.iterate();
}