Wywołanie Action Trigger poprzez wewnętrzną zmienną

Jedrzo
Posts: 4
Joined: Fri Jan 06, 2023 8:38 pm

Post

Witam serdecznie

Przychodzę z bardzo ciekawym problemem dotyczącym rozwijania mojego projektu.
Kwestia jest bardzo prosta: Czy jest jakikolwiek sposób aby wywołać akcję poprzez Action Trigger na innym urządzeniu poprzez zmienną w urządzeniu wywołującym.

Przykład dla zobrazowania:
projekt posiada program (niech to będzie typowy blink), który odpowiednio ustawia zmienną isOn na 1/0 tym samym wywołuje akcję na gnieździe smart. (poprzez wcześniej wspomniane action trigger)

Dostępna funkcja do obsługi przycisków tutaj nic niestety nie da ponieważ z tego co rozumiem nie mogę w nią "wsadzić" zmiennej. W teorii jest możliwość ustawienia danego pinu na stan wysoki/niski i używanie tego w ten sposób ale zależy mi tutaj na logice zamikniętej w środku uC.

Pytanie moje jest następujące: Czy biblioteka Supli ma mozliwość wywoływania akcji za pomocą wewnętrznych zmiennych i jeżeli tak to w jaki sposób.

Pozdrawiam
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Opisz przypadek użycia.
SUPLA.... Nareszcie w domu.
radzik_r
Posts: 468
Joined: Sun Aug 11, 2019 5:32 pm
Has thanked: 1 time
Been thanked: 2 times

Post

viewtopic.php?t=9503

Tu masz tą tajemniczą wiedzę :)
Jedrzo
Posts: 4
Joined: Fri Jan 06, 2023 8:38 pm

Post

pzygmunt wrote: Tue Jul 11, 2023 3:30 pm Opisz przypadek użycia.
Tak jak w temacie obok samego systemu supli na mikrokontrolerze będzie pracował inny program, który w skutkuje zmianą zmiennej X na 1 bądź 0. Chciałbym aby za pomocą supli użyć tej zmiennej jako action trigger. Zasada działania jest taka sama jak przycisk tzn. wciśniety => wywołanie akcji gdzie tutaj kiedy zmienna X = 1 => wywołanie akcji.
Oczywiście jako wywołanie akcji mam na myśli action trigger.

Pozrawiam
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

To nie jest przypadek użycia. Opisz praktyczne zastosowanie. Do czego to potrzebujesz.
SUPLA.... Nareszcie w domu.
Jedrzo
Posts: 4
Joined: Fri Jan 06, 2023 8:38 pm

Post

Projekt obsługujący media danego pokoju opierający się na ekranie dotykowym i wyświetlaczu TFT. Jedną z jego opcji jest sterowanie urządzeniami IoT. W tym wypadku światłami i gniazdami (wszystko na supli).

W tym wypadku zmienną jest informacja czy dana opcja została wybrana.

Sam projekt jest inspirowany poniżyszym:
https://www.youtube.com/watch?v=soIGV6BszcM
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 136 times
Been thanked: 137 times

Post

Wg mnie najłatwiej obecnie będzie użyć klasy Supla::Sensor:: VirtualBinary i na niej ustawiać stan 0 lub 1 zależnie od stanu zmiennej.
Obecnie na serwerach jest wdrażana aktualizacja, która pozwoli Ci ustawić reakcje zależne od stanu tego czujnika.
Najlepsze suple dla Twojego domu :mrgreen:
radzik_r
Posts: 468
Joined: Sun Aug 11, 2019 5:32 pm
Has thanked: 1 time
Been thanked: 2 times

Post

Jedrzo wrote: Wed Jul 12, 2023 7:52 pm Projekt obsługujący media danego pokoju opierający się na ekranie dotykowym i wyświetlaczu TFT. Jedną z jego opcji jest sterowanie urządzeniami IoT. W tym wypadku światłami i gniazdami (wszystko na supli).

W tym wypadku zmienną jest informacja czy dana opcja została wybrana.

Sam projekt jest inspirowany poniżyszym:
https://www.youtube.com/watch?v=soIGV6BszcM
Czy uruchomiłeś projekt beż udziału supli?
radzik_r
Posts: 468
Joined: Sun Aug 11, 2019 5:32 pm
Has thanked: 1 time
Been thanked: 2 times

Post

wyciągnąłem to z innego kodu

Code: Select all

#include <SuplaDevice.h>
#include <supla/control/action_trigger.h>

#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifi("your_wifi_ssid", "your_wifi_password");
Supla::Control::ActionTrigger *action_trigger_1 = nullptr;

void setup() {

  Serial.begin(115200);

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

  action_trigger_1 = new Supla::Control::ActionTrigger();
  action_trigger_1->activateAction(Supla::SEND_AT_SHORT_PRESS_x1);

SuplaDevice.begin( GUID, "svrX.supla.org", "email@address", AUTHKEY );

}

void loop() {
  delay(25);
  SuplaDevice.iterate();

  static bool ZMIENNA_X;
  static bool last_ZMIENNA_X;

  if ( ZMIENNA_X != last_ZMIENNA_X) {
    last_ZMIENNA_X = ZMIENNA_X;
    action_trigger_1->handleAction(0, Supla::SEND_AT_SHORT_PRESS_x1);    Serial.println("AT CLICK 1");
    //    action_trigger_1->handleAction(0, Supla::SEND_AT_SHORT_PRESS_x2);    Serial.println("AT CLICK 2");
    //    action_trigger_1->handleAction(0, Supla::SEND_AT_SHORT_PRESS_x3);    Serial.println("AT CLICK 3");
    //    action_trigger_1->handleAction(0, Supla::SEND_AT_SHORT_PRESS_x4);    Serial.println("AT CLICK 4");
    //    action_trigger_1->handleAction(0, Supla::SEND_AT_SHORT_PRESS_x5);    Serial.println("AT CLICK 5");
    //    action_trigger_1->handleAction(0, Supla::SEND_AT_HOLD);              Serial.println("AT HOLD");
  }

  // tutaj kod zmieniający ZMIENNA_X =0 lub 1

}
nie sprawdzałem teraz
Jedrzo
Posts: 4
Joined: Fri Jan 06, 2023 8:38 pm

Post

radzik_r wrote: Thu Jul 13, 2023 8:37 am Czy uruchomiłeś projekt beż udziału supli?
Tak sam projekt już od dłuższego czasu ulepszam. Dopiero teraz wziąłem się za aspekt obsługi supli.

co do następnego wpisu dziękuje za kod, jak najbardziej działa i zaspokaja wszystkie potrzeby na cele projektu

W tym momencie uważam temat za zamknięty. Dziękuje wam za pomoc.

Pozdrawiam

Return to “Pomoc”