Bazując na przykładzie i wiedzy z forum napisałem prosty kod:
Code: Select all
#include <SuplaDevice.h>
#include <supla/storage/eeprom.h>
#include <supla/network/esp_wifi.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/control/hvac_base.h>
#include <supla/clock/clock.h>
#include <supla/network/html/time_parameters.h>
#include <supla/network/html/hvac_parameters.h>
#include <supla/control/internal_pin_output.h>
#include <supla/events.h>
#include <supla/actions.h>
#include <supla/sensor/virtual_thermometer.h>
#include <supla/control/button.h>
#include <supla/control/virtual_relay.h>
#define CFG_BUTTON_GPIO 0
#define STATUS_LED_GPIO 2
#define OUTPUT_GPIO 14
Supla::ESPWifi wifi;
Supla::Eeprom eeprom;
Supla::LittleFsConfig configSupla;
Supla::Device::StatusLed statusLed(STATUS_LED_GPIO, true); // inverted state
Supla::EspWebServer suplaServer;
Supla::Control::HvacBase *hvac = nullptr;
Supla::Sensor::VirtualThermometer *t1 = nullptr;
void setup() {
Serial.begin(115200);
new Supla::Clock;
new Supla::Html::DeviceInfo(&SuplaDevice);
new Supla::Html::WifiParameters;
new Supla::Html::ProtocolParameters;
new Supla::Html::StatusLedParameters;
new Supla::Html::TimeParameters(&SuplaDevice);
new Supla::Device::StatusLed(STATUS_LED_GPIO, true);
eeprom.setStateSavePeriod(5000);
auto output = new Supla::Control::InternalPinOutput(OUTPUT_GPIO);
// Channel 0
auto hvac = new Supla::Control::HvacBase(output);
hvac = new Supla::Control::HvacBase(output);
auto t1 = new Supla::Sensor::VirtualThermometer;
// Configure thermostat parameters
hvac->setMainThermometerChannelNo(2);
hvac->setTemperatureHisteresisMin(20); // 0.2 degree
hvac->setTemperatureHisteresisMax(1000); // 10 degree
hvac->setTemperatureAuxMin(1500); // 15 degrees
hvac->setTemperatureAuxMax(3000); // 30 degrees
hvac->setTemperatureHisteresis(40);
hvac->setButtonTemperatureStep(100);
auto cfgButton = new Supla::Control::Button(CFG_BUTTON_GPIO, true, true);
cfgButton->configureAsConfigButton(&SuplaDevice);
// configure defualt Supla CA certificate
SuplaDevice.setSuplaCACert(suplaCACert);
SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);
SuplaDevice.setName("basic_termo_11");
SuplaDevice.begin(21); // Thermostat requires proto version >= 21
}
void loop() {
SuplaDevice.iterate();
int16_t currentHeatSetpoint = hvac->getTemperatureSetpointHeat();
double liczba_double = (double)currentHeatSetpoint;
t1->setValue(liczba_double/100);
}Pytanie co robię źle, bo jak dodam do loop te 3 linijki które mają przepisywać temperaturę to moduł przestaje rozgłaszać sieć. Jak je zakomentuję to rozgłasza poprawnie (no ale wtedy nie robi tego co bym chciał
Code: Select all
int16_t currentHeatSetpoint = hvac->getTemperatureSetpointHeat();
double liczba_double = (double)currentHeatSetpoint;
t1->setValue(liczba_double/100);