Dalej nie działa, założyłem nowy temat tu:
viewtopic.php?t=11312
Akcje warunkowe w Arduino IDE
Kod: Zaznacz cały
#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);
Kod: Zaznacz cały
auto r1 = new Supla::Control::VirtualRelay();
r1->addAction(MOJA_AKCJA_1, MojaAkcja, Supla::TURN_ON);
if (r1->isOn()) {//rób coś}
@klew jak ustawić akcję warunkową dla tego kanału? Dałem warunekw setup, ale dalej nie wiem jak to ustawić
Kod: Zaznacz cały
#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);
}
}
Dla którego kanału? W kodzie masz wstawiony warunek na obiekcie "termometr", który nigdzie nie jest zdefiniowany.
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:
Kod: Zaznacz cały
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.
Widzimy się na Supla Offline Party vol. 2
Tak chodzi o HygroMeter nie wiem właśnie jak zdefiniować tenklew pisze: ↑czw maja 04, 2023 8:00 amDla którego kanału? W kodzie masz wstawiony warunek na obiekcie "termometr", który nigdzie nie jest zdefiniowany.
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:Kod: Zaznacz cały
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.
Kod: Zaznacz cały
vht1->addAction(Supla::TURN_ON, pompa, OnLess(25, true));
vht1->addAction(Supla::TURN_OFF, pompa, OnGreater(90, true));
- Załączniki
-
- mm.png (4.89 KiB) Przejrzano 303 razy
Musisz podać nazwę wskaśnika na obiekt "CMS". U Ciebie to vth1 (zrobiłem literówkę w poprzednim poście).nebraska pisze: ↑czw maja 04, 2023 9:14 am Tak chodzi o HygroMeter nie wiem właśnie jak zdefiniować tenKod: Zaznacz cały
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ć.
Widzimy się na Supla Offline Party vol. 2