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.
supla-device 22.10.03
-
ecsmhydra
- Posts: 6
- Joined: Thu Oct 13, 2022 7:07 pm
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
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
-
vajera
- Posts: 7292
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 291 times
- Been thanked: 161 times
Najprostsze rozwiązanie:
1. skopiuj kod VirtualRelay zmieniając wszystkie nazwy na np. My_VirtualRelay
2. zmodyfikuj metody turnOn i turnOff
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.
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++;
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
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
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?
Przed setupem?
-
ecsmhydra
- Posts: 6
- Joined: Thu Oct 13, 2022 7:07 pm
#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.
#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.
