Dalej nie działa, założyłem nowy temat tu:
viewtopic.php?t=11312
Akcje warunkowe w Arduino IDE
-
- Posts: 1259
- Joined: Wed Aug 10, 2022 12:29 pm
- Location: Kryry
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://app.weathercloud.net/d4311785603
-
- Posts: 193
- Joined: Sun Nov 08, 2020 2:54 pm
Code: Select all
#include <supla/action_handler.h>
#define MOJA_AKCJA_1 1;
#define MOJA_AKCJA_2 2;
class MojaAkcja : public Supla::ActionHandler {
public:
void handleAction(int event, int action) {
if (action == MOJA_AKCJA_1) {
// zadania dla akcji 1
} else if (action == MOJA_AKCJA_2) {
// zadania dla akcji 2
}
}
};
// setup:
MojaAkcja egzekutor;
button->addAction(MOJA_AKCJA_1, egzekutor, ON_PRESS);
Code: Select all
auto r1 = new Supla::Control::VirtualRelay();
r1->addAction(MOJA_AKCJA_1, MojaAkcja, Supla::TURN_ON);
if (r1->isOn()) {//rób coś}
-
- Posts: 2304
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
Code: Select all
r1->addAction(MOJA_AKCJA_1, MojaAkcja, Supla::ON_TURN_ON)
https://www.facebook.com/groups/supladiy/
-
- Posts: 193
- Joined: Sun Nov 08, 2020 2:54 pm
Dzięki, działa. Patrzyłem na actions.h a to schowane jest w events.h
-
- Posts: 101
- Joined: Thu Dec 08, 2022 3:00 pm
@klew jak ustawić akcję warunkową dla tego kanału? Dałem warunekw setup, ale dalej nie wiem jak to ustawić

Code: Select all
#include <Arduino.h>
#include <SuplaDevice.h>
#include <supla/control/relay.h>
#include <supla/network/esp_wifi.h>
#include <supla/uptime.h>
#include <supla/sensor/therm_hygro_meter.h>
#include <supla/sensor/hygro_meter.h>
#include <supla/storage/eeprom.h>
#define STORAGE_OFFSET 100
Supla::Eeprom eeprom(STORAGE_OFFSET);
Supla::Uptime mojeUptime;
const char* host = "svr.supla.org";
const char* ssid = "xxxx";
const char* pass = "xxxx";
auto pompa = new Supla::Control::Relay(5);
Supla::ESPWifi wifi(ssid, pass);
class CSM : public Supla::Sensor::HygroMeter {
public:
double getHumi() override {
return humidity;
}
void setHumi(double val) {
humidity = val;
}
protected:
double humidity = HUMIDITY_NOT_AVAILABLE;
};
CSM *vth1;
void setup() {
Serial.begin(115200);
// Replace the falowing GUID with value that you can retrieve from https://www.supla.org/arduino/get-guid
char GUID[SUPLA_GUID_SIZE] = {0x6E };
// Replace the following AUTHKEY with value that you can retrieve from: https://www.supla.org/arduino/get-authkey
char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {0x01 };
vth1 = new CSM;
vth1->setHumi(tnk_lvl);
termometr.addAction(Supla::TURN_ON, pompa, OnLess(25));
termometr.addAction(Supla::TURN_OFF, pompa, OnGreater(90));
SuplaDevice.begin(GUID, // Global Unique Identifier
host, // SUPLA server address
"email", // Email address used to login to Supla Cloud
AUTHKEY); // Authorization key
}
void loop() {
SuplaDevice.iterate();
if (millis() - times >= 20000) {
times = millis();
vth1->setHumi(tnk_lvl);
}
}
-
- Posts: 10376
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Dla którego kanału? W kodzie masz wstawiony warunek na obiekcie "termometr", który nigdzie nie jest zdefiniowany.nebraska wrote: Wed May 03, 2023 7:13 pm @klew jak ustawić akcję warunkową dla tego kanału? Dałem warunekw setup, ale dalej nie wiem jak to ustawić![]()
Chodzi Ci o ten "HygroMeter"?
Wilgotność w Supli leci zawsze w formacie takim jak kanał "termometru + wilgotności". Pomiar "temperatury" określam jako "główny", a "wilgotności" jako "alternatywny".
Warunki do "alternatywnych" wartości, czyli np. do wilgotności, ustawia się dodając dodatkowe "true" na końcu:
Code: Select all
vht1->addAction(Supla::TURN_ON, pompa, OnLess(25, true));
vht1->addAction(Supla::TURN_OFF, pompa, OnGreater(90, true));
https://github.com/SUPLA/supla-device/b ... omometer.h
Możesz go używać zamiast tego CSM - chyba, że robisz tam znacznie więcej rzeczy, a wkleiłeś tylko fragment.
-
- Posts: 101
- Joined: Thu Dec 08, 2022 3:00 pm
Tak chodzi o HygroMeter nie wiem właśnie jak zdefiniować tenklew wrote: Thu May 04, 2023 8:00 amDla którego kanału? W kodzie masz wstawiony warunek na obiekcie "termometr", który nigdzie nie jest zdefiniowany.nebraska wrote: Wed May 03, 2023 7:13 pm @klew jak ustawić akcję warunkową dla tego kanału? Dałem warunekw setup, ale dalej nie wiem jak to ustawić![]()
Chodzi Ci o ten "HygroMeter"?
Wilgotność w Supli leci zawsze w formacie takim jak kanał "termometru + wilgotności". Pomiar "temperatury" określam jako "główny", a "wilgotności" jako "alternatywny".
Warunki do "alternatywnych" wartości, czyli np. do wilgotności, ustawia się dodając dodatkowe "true" na końcu:
Ponadto, od jakiegoś czasu w bibliotece jest dostępny wirtualny kanał wilgotności:Code: Select all
vht1->addAction(Supla::TURN_ON, pompa, OnLess(25, true)); vht1->addAction(Supla::TURN_OFF, pompa, OnGreater(90, true));
https://github.com/SUPLA/supla-device/b ... omometer.h
Możesz go używać zamiast tego CSM - chyba, że robisz tam znacznie więcej rzeczy, a wkleiłeś tylko fragment.
Code: Select all
vht1->addAction(Supla::TURN_ON, pompa, OnLess(25, true));
vht1->addAction(Supla::TURN_OFF, pompa, OnGreater(90, true));
You do not have the required permissions to view the files attached to this post.
-
- Posts: 10376
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Musisz podać nazwę wskaśnika na obiekt "CMS". U Ciebie to vth1 (zrobiłem literówkę w poprzednim poście).nebraska wrote: Thu May 04, 2023 9:14 am Tak chodzi o HygroMeter nie wiem właśnie jak zdefiniować tenCode: Select all
vht1->addAction(Supla::TURN_ON, pompa, OnLess(25, true)); vht1->addAction(Supla::TURN_OFF, pompa, OnGreater(90, true));
Błąd z kompilatora jest dość jasny i nawet podpowiada jak poprawić.
-
- Posts: 101
- Joined: Thu Dec 08, 2022 3:00 pm
Przepraszam za moje nie dopatrzenie.
Bardzo dziękuje za szybką pomoc. Działa elegancko.
Bardzo dziękuje za szybką pomoc. Działa elegancko.