Nie wiem dlaczego metody w klasie class Relay : public Element nie pozwalają sie kompilować.
// Metody do ustawiania i pobierania stanu
void setStateValue(bool state);
bool getStateValue();
Code: Select all
#include <SuplaDevice.h>
#include <supla/control/relay.h>
#include <supla/control/virtual_relay.h>
#include <supla/sensor/binary.h>
#include <supla/network/esp_wifi.h>
#define RELAY_1_PIN 5 // Pin dla pierwszego przekaźnika
#define RELAY_2_PIN 4 // Pin dla drugiego przekaźnika
// Konfiguracja WiFi
const char* ssid = "xxxx";
const char* password = "xxxxxx";
// Konfiguracja Supla
const char GUID[SUPLA_GUID_SIZE] = {0x3D, 0x37, 0x3B, 0xBD, 0x14, 0x5C, 0x93, 0x29, 0x14, 0xA3, 0x59, 0x86, 0x92, 0x9C, 0x89, 0x32};
const char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {0xFF, 0x83, 0x26, 0xBA, 0xBF, 0x65, 0xB6, 0x1E, 0xD8, 0x7B, 0xA3, 0x0A, 0x2A, 0xAE, 0xE5, 0x5B};
Supla::ESPWifi wifi(ssid, password);
Supla::Control::Relay *relay1;
Supla::Control::Relay *relay2;
unsigned long lastToggleTime1 = 0;
unsigned long lastToggleTime2 = 0;
bool relay1State = false;
bool relay2State = false;
const unsigned long INTERVAL_1 = 3000; // 2 sekundy włączone + 1 sekunda wyłączone
const unsigned long INTERVAL_2 = 10500; // 0.5 sekundy włączone + 10 sekund wyłączone
void setup() {
Serial.begin(115200);
// Inicjalizacja SuplaDevice
SuplaDevice.begin(
GUID, // Global Unique Identifier
"svrXX.supla.org", // SUPLA server address
"xxxxxxx@gmail.com", // Email address used to login to Supla Cloud
AUTHKEY); // Authorization key
// Konfiguracja przekaźników
relay1 = new Supla::Control::Relay(RELAY_1_PIN);
relay2 = new Supla::Control::Relay(RELAY_2_PIN);
}
void loop() {
SuplaDevice.iterate();
unsigned long currentTime = millis();
// Sterowanie pierwszym przekaźnikiem (2 sekundy / 1 sekunda)
if (currentTime - lastToggleTime1 >= (relay1State ? 2000 : 1000)) {
relay1State = !relay1State;
//relay1->setStateValue(relay1State); // zmienilem na metode toggle()
relay1->toggle();
lastToggleTime1 = currentTime;
}
// Sterowanie drugim przekaźnikiem (0.5 sekundy / 10 sekund)
if (currentTime - lastToggleTime2 >= INTERVAL_2) {
relay2State = true;
//relay2->setStateValue(relay2State);
relay2->toggle();
lastToggleTime2 = currentTime;
} else if (currentTime - lastToggleTime2 >= 500 && relay2State) {
relay2State = false;
// relay2->setStateValue(relay2State);
// dostaje blad 'class Supla::Control::Relay' has no member named 'setStateValue'
// Metody do ustawiania i pobierania stanu mimo ze w bilbiotece sa te metody zdefiniowane
// void setStateValue(bool state);
// bool getStateValue();
relay2->toggle();
}
}