krycha88 wrote: Fri Sep 22, 2023 5:16 am
Code: Select all
hvac->setDefaultTemperatureRoomMin(SUPLA_CHANNELFNC_HVAC_THERMOSTAT_HEAT, 1000);
hvac->setDefaultTemperatureRoomMax(SUPLA_CHANNELFNC_HVAC_THERMOSTAT_HEAT, 9500);
hvac->setDefaultTemperatureRoomMin(SUPLA_CHANNELFNC_HVAC_THERMOSTAT_COOL, 0);
hvac->setDefaultTemperatureRoomMax(SUPLA_CHANNELFNC_HVAC_THERMOSTAT_COOL, 4000);
if (ConfigManager->get(KEY_THERMOSTAT_TYPE)->getElement(nr).toInt() == Supla::GUI::THERMOSTAT_COOL) {
hvac->getChannel()->setDefault(SUPLA_CHANNELFNC_HVAC_THERMOSTAT_COOL);
}
@klew jak teraz to powinno być ustawione poprawnie?
Funkcje: SUPLA_CHANNELFNC_HVAC_THERMOSTAT_HEAT i SUPLA_CHANNELFNC_HVAC_THERMOSTAT_COOL zostały usunięte i teraz jest po prostu: SUPLA_CHANNELFNC_HVAC_THERMOSTAT.
Wybór między grzaniem a chłodzeniem robi się w konfiguracji termostatu w ramach tej jednej funkcji. Dzięki temu będzie można zmieniać ten tryb bez zmiany funkcji w Cloud (zmiana funkcji usuwa wszystkie powiązania, harmonogramy, reakcje, sceny itp - i jeśli ktoś by 2x w roku zmieniał ten tryb między grzaniem a chłodzeniem, to by nas szybko zaczął przeklinać :P )
Także w powyższym kodzie, można ustawić jeden zakres temperatur dla jednej funkcji i jest on wspólny dla trybu grzewczego i chłodniczego.
Założenie jest takie, że to jest "termostat pokojowy", a nie wybór między grzałką do ciepłej wody, a chłodnią ;P
Ja ten wybór trybu w sofcie dla linuxa ustawiam tak:
Code: Select all
if (function == "heat") {
hvac->getChannel()->setDefaultFunction(SUPLA_CHANNELFNC_HVAC_THERMOSTAT);
hvac->setDefaultSubfunction(SUPLA_HVAC_SUBFUNCTION_HEAT);
} else if (function == "cool") {
hvac->getChannel()->setDefaultFunction(SUPLA_CHANNELFNC_HVAC_THERMOSTAT);
hvac->setDefaultSubfunction(SUPLA_HVAC_SUBFUNCTION_COOL);
} else ... {
Można też wyłączyć możliwość używania grzania lub chłodzenia.
Dla zakresu 10-95 stopni, to raczej polecam funkcję SUPLA_CHANNELFNC_HVAC_DOMESTIC_HOT_WATER (oczywiście o ile grzejemy wodę).
Natomiast jak ktoś chce zrobić tylko urządzenie chłodnicze, to można wyłączyć mu możliwość "grzania":
Code: Select all
hvac->setHeatingSupported(false);
Tylko trzeba to robić po użyciu metody "addPrimaryOutput", bo ta ustawia domyślne wartości tego co jest wspierane.