Wirtualne przyciski w Supli – integracja z myKRISHOME przez IFTTT

Masz pomysł na funkcjonalność lub koncepcję na rozwój projektu. Opisz wszystko tutaj.
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

ciąg dalszy, bo mnie to zaciekawiło:
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
klew
Posts: 13905
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

SOYER wrote: Fri Jan 09, 2026 10:07 pm @klew jak znajdziesz chwilę napisz na czym się wywaliło gemini w tym szkicu, żeby mieć pojęcie o czym mówimy.
Kod przekazuje lambdę do parametru funkcji addAction, gdzie kod wymaga przekazania wskaźnika do klasy dziedziczącej po Supla::ActionHandler.

Nie róbmy tutaj proszę offtopa o możliwościach AI.
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

Póki co pozwolę sobie nadal tutaj pisać, a kieruję się tym, że po pierwsze, autor sam pisał, że lubi używać AI, po drugie ciągle pracujemy(kto?) na kodzie obsługującym "virtualne przyciski" więc nadal pozostajemy w sferze zainteresowania tego konkretnego tematu.

Ja tylko pokazuję, że obecnie osoby nie zaznajomione mogą już pracować ze wsparciem AI, nikogo nie zmuszam, ani nie przekonuję, że to najlepszy sposób. Pokazuję możliwość.
Przypominam, że pracujemy na tym kodzie zaproponowanym przez 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();
}
próba kompilacji wyrzuciła pierwszy błąd:
"'ON_EVENT_1' is not a member of 'Supla'
chciałem to wrzucić do AI ale zapomniałem wkleić treść błędu, ale zresztą sami zobaczcie:
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

Tym sposobem uzyskałem kod który się skompilował:

Code: Select all

#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
#include <supla/control/virtual_relay.h>
#include <HTTPClient.h>

// --- KONFIGURACJA ---
const char* ssid = "Twoja_Nazwa_WiFi";
const char* password = "Twoje_Haslo_WiFi";

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";
const char* supla_email = "[email protected]";

Supla::ESPWifi wifi(ssid, password);

// 1. Tworzymy własną klasę WebhookRelay, która dziedziczy po VirtualRelay
// Dzięki temu mamy pełną kontrolę nad tym, co dzieje się po włączeniu
class WebhookRelay : public Supla::Control::VirtualRelay {
public:
  void turnOn(int duration = 0) override {
    Serial.println("Przekaźnik włączony - wysyłam Webhook!");
    
    if (WiFi.status() == WL_CONNECTED) {
      HTTPClient http;
      http.begin("maker.ifttt.com");
      int httpCode = http.GET();
      Serial.printf("Odpowiedź HTTP: %d\n", httpCode);
      http.end();
    }

    // Wywołujemy standardowe włączenie
    Supla::Control::VirtualRelay::turnOn(duration);

    // Opcjonalnie: automatyczne wyłączenie po 500ms (efekt przycisku)
    // setNewState(false); 
  }
};

WebhookRelay *vRelay = new WebhookRelay();

void setup() {
  Serial.begin(115200);
  
  // Inicjalizacja Supli
  SuplaDevice.begin(GUID, supla_server, supla_email, AUTHKEY);
}

void loop() {
  SuplaDevice.iterate();
}
Nie mam jak sprawdzić(dawno temu używałem IFTTT z Blynkiem) więc pytanie czy to ma prawo działać?

P.S. najbardziej kluczowe pytanie zadawane AI zawsze brzmi "jesteś pewny?" :D :D :D :D
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: 13905
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

SOYER wrote: Sat Jan 10, 2026 8:27 am
Nie mam jak sprawdzić(dawno temu używałem IFTTT z Blynkiem) więc pytanie czy to ma prawo działać?

P.S. najbardziej kluczowe pytanie zadawane AI zawsze brzmi "jesteś pewny?" :D :D :D :D
Na oko może ruszyć odpalanie linku, gdy ktoś włączy przekaźnik.
Kierunek spoko.
Ale nadal, jak chcesz pokazywać krok po kroku jak gadasz z ai to po prostu udostępnij dyskusję, a tutaj wklej link.
Możesz też spróbować zrobić mini poradnik jak dojść z chatem do działającego kodu (na czymś co sam będziesz w stanie sprawdzić czy działa), tylko załóż sobie temat w "projekty użytkowników", a tutaj nie róbmy offtopa.
AI nadal zachwyca i aż chce się tym dzielić, ale czytanie tego z trzeciej osoby jest już dużo mniej atrakcyjne.
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

Nie mam takiej ochoty by robić jakieś relacje. Nie używam AI do pisania kodu na codzień, nawet nie raz w tygodniu. Zwyczajnie jak potrzebuję zrobić nową funkcjonalność to oprócz źródeł i zasypywania Was tu pytaniami, używam też najłatwiejszego w dostępie ai czyli tego zaszytego w przeglądarce google. Nie szukam jakichś wymyślnych, specjalizowanych wspomagaczy AI do „szkicowania”.
Po prostu zauważyłem progres AI w tej formie najbardziej dostępnej, w zadaniach o których tu piszemy na forum Supli i postanowiłem się podzielić tym „odkryciem”, że przy pomocy gemini można w 10 minut(zależy ile trwają kompilacje na kompie;)) mieć coś na czym można się opierać i albo wgrać albo jeszcze dopytać na forum;).
To tak tylko informacyjnie dla autora wątku, że AI można nie tyle poprosić o napisanie pytania które wkleimy na forum, ale od razu zadać to pytanie AI.
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

<OFFTOP>
Tomek, a mógłbyś nie wklejać elaboratów w formie takich długich plików graficznych? Nie da rady przekleić tego jako tekst?
</OFFTOP>
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

Robert Błaszczak wrote: Sat Jan 10, 2026 11:25 am <OFFTOP>
Tomek, a mógłbyś nie wklejać elaboratów w formie takich długich plików graficznych? Nie da rady przekleić tego jako tekst?
</OFFTOP>
Już nic wklejał nie będę (dzisiaj;)), zawsze screen shot jest bardziej wiarygodny od tekstu pisanego. Dlatego by nie być posądzonym o manipulację, a jednocześnie pokazać jak w kilku krokach można przejść od kompetnie naiwnego pytania do satysfakcjonującego rozwiązania w postaci działającego kodu.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

Robert Błaszczak wrote: Sat Jan 10, 2026 11:25 am <OFFTOP>
Tomek, a mógłbyś nie wklejać elaboratów w formie takich długich plików graficznych? Nie da rady przekleić tego jako tekst?
</OFFTOP>
Jak przewijałem te screens żeby przeczytać co jest pod spodem to ziemia zdążyła przewinąć się dookoła słońca ;)
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

SOYER wrote: Sat Jan 10, 2026 12:14 pm
Robert Błaszczak wrote: Sat Jan 10, 2026 11:25 am <OFFTOP>
Tomek, a mógłbyś nie wklejać elaboratów w formie takich długich plików graficznych? Nie da rady przekleić tego jako tekst?
</OFFTOP>
Już nic wklejał nie będę (dzisiaj;)), zawsze screen shot jest bardziej wiarygodny od tekstu pisanego. Dlatego by nie być posądzonym o manipulację, a jednocześnie pokazać jak w kilku krokach można przejść od kompetnie naiwnego pytania do satysfakcjonującego rozwiązania w postaci działającego kodu.
Zawsze możesz wrzucić screen na np. Google Drive, a na forum umieścić link. Wiem, że Tobie jest najprościej zrobić zrzut na smartfonie, ale mogę Cię zapewnić, że 99,99% czytających ten wątek Forumowiczów nie będzie przeglądało tych grafik i czytało z nich tekstu.
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl

Return to “Pomysły i koncepcje”