supla-device 22.10.03

User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Pojawiła się aktualizacja biblioteki do wersji 22.10.03.

Został poprawiony błąd związany z "watchdog timeout" gdy był używany czujnik BME280.
Najlepsze suple dla Twojego domu :mrgreen:
ecsmhydra
Posts: 6
Joined: Thu Oct 13, 2022 7:07 pm

Post

Proszę o pomoc,
Potrzebuje w aplikacji mieć zadawanie wartości na zasadzie takiej jak w "termostatach" zrobionych przez kolegów.
Nowa supla device nie jest jeszcze przeze mnie rozgryziona.
Proszę o wsparcie jak to dodać po nowemu abym w kodzie mógł sobie zmniejszać lub zwiększać jakąś zmienną po kliknięciu włącz/wyłącz w aplikacji.

Najlepiej cały kod związany z tą czynnością by mi się przydał.

Pozdrawiam serdecznie
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

Najprostsze rozwiązanie:
1. skopiuj kod VirtualRelay zmieniając wszystkie nazwy na np. My_VirtualRelay
2. zmodyfikuj metody turnOn i turnOff

Code: Select all

void Supla::Control::My_VirtualRelay::turnOn(_supla_int_t duration) {
  durationMs = duration;
  durationTimestamp = millis();
  if (keepTurnOnDurationMs) {
    durationMs = storedTurnOnDurationMs;
  }
  //state = true;  <<<<----- tu zmiana
  moja_zmienna++;
  
Jeżeli jednak chcesz żeby ta wartość wyświetlała się w aplikacji Supla, tak jak zrobiłem to w swoim termostacie, to musisz nieco rozbudować kod - w razie czego mogę się podzielić swoim pomysłem.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
ecsmhydra
Posts: 6
Joined: Thu Oct 13, 2022 7:07 pm

Post

Wartość zmiennej aby wyświetlić w supli to w teorii niby ogarnąłem... Odezwę się jak zaimplemetuje twoja propozycje... Chociaż przydałaby mi się wiedzą w którym miejscu wstawić to void co napisałeś

Przed setupem?
ecsmhydra
Posts: 6
Joined: Thu Oct 13, 2022 7:07 pm

Post

#define STATUS_LED_GPIO 2
#define VIRTUALRELAY_GPIO
//#define VIRTUALBUTTON_UP
//#define VIRTUALBUTTON_DOWN
#define BUTTON_CFG_RELAY_GPIO D1


#include <SuplaDevice.h>
//#include <supla/sensor/DS18B20.h>
#include <supla/sensor/virtual_thermometer.h>
#include <supla/sensor/thermometer.h> //03-11-2022 seebee
#include <supla/network/esp_wifi.h>
//#include <supla/control/roller_shutter.h>
#include <supla/control/virtual_relay.h> //03-11-2022 seebee
#include <supla/control/relay.h>
#include <supla/sensor/virtual_binary.h>
#include <supla/control/button.h>
#include <supla/control/action_trigger.h>
#include <supla/device/status_led.h>
#include <supla/storage/littlefs_config.h>
#include <supla/network/esp_web_server.h>
#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
#include <supla/network/html/status_led_parameters.h>
#include <supla/network/html/wifi_parameters.h>
#include <supla/device/supla_ca_cert.h>
#include <supla/events.h>

#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifi("xxxx", "xxxx");
Supla::LittleFsConfig configSupla;
Supla::Device::StatusLed statusLed(STATUS_LED_GPIO, true); // inverted state
Supla::EspWebServer suplaServer;


// HTML www component (they appear in sections according to creation
// sequence)
Supla::Html::DeviceInfo htmlDeviceInfo(&SuplaDevice);
Supla::Html::WifiParameters htmlWifi;
Supla::Html::ProtocolParameters htmlProto;
Supla::Html::StatusLedParameters htmlStatusLed;

bool vr1;
bool vr2;
bool vr3;
bool vbb1;

double tw0 = 0;
double tw1 = 10;
double tw2 = 20;
double tw3 = 30;
unsigned long interw = 0;

// CH 0 - virtual TERMOMETER CO
auto t0 = new Supla::Sensor::VirtualThermometer();
// CH 1 - virtual TERMOMETER CWU
auto t1 = new Supla::Sensor::VirtualThermometer();
// CH 2 - virtual TERMOMETER POM
auto t2 = new Supla::Sensor::VirtualThermometer();
// CH 3 - virtual TERMOMETER ZEW
auto t3 = new Supla::Sensor::VirtualThermometer();

// CH 4 - PRACA POMPY OBIEGOWEJ P0
auto vb1 = new Supla::Sensor::VirtualBinary();
// CH 5 - wirtualny przełącznik do jakiegoś celu np. włączania wyłaczania lub zadawania wartości
auto vr1 = new Supla::Control::VirtualRelay();


void setup() {
Serial.begin(115200);
// Buttons configuration
auto buttonCfgRelay = new Supla::Control::Button(BUTTON_CFG_RELAY_GPIO, true, true);
// configure defualt Supla CA certificate
SuplaDevice.setSuplaCACert(suplaCACert);
SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);
SuplaDevice.begin();
}

void loop() {
SuplaDevice.iterate();

t0 -> setValue(tw0);
t1 -> setValue(tw1);
t2 -> setValue(tw2);
t3 -> setValue(tw3);

vb1 -> set();

if (millis() - interw >5000){
tw0++;
tw1++;
tw2++;
tw3++;

vbb1++

interw=millis();
}

if (vbb1>1){
vbb=0;
}

if (vbb1==1){
vb1 -> set();
}

if (vbb1==0){
vb1 -> clear();
}

if (tw0>120){
tw0=0;
}
if (tw1>120){
tw1=0;
}
if (tw2>120){
tw2=0;
}
if (tw3>120){
tw3=0;
}


}


powyższe generują mi kanały w supli i jest okej.
teraz niestety nie wiem co dalej z kodem od Ciebie aby "włącz/wyłacz" na kanale CH5 dodawało lub odejmowało mi wartość np zmiennej w termometrze "t0" czyli zmienna "tw0"
w bibliotece nie zmieniałem nic i nie chcęnic zmieniać bo kiedyś przypadkiem wywaliłem sowje zmiany i teraz mogę sobie pomarzyć o ponownej kompilacji niektórych wcześniej napisanych kodów.

Return to “supla-dev”