To zależy od softu na urządzeniu. Można pokazywać konfigurację sprzętową z wartościami domyślnymi i osobno można pokazywać konfigurację kanału.krycha88 wrote: Tue Oct 17, 2023 5:45 pmZgadza się, ale od strony konfiguracji urządzenia już nie zobaczę jak urządzenie jest skonfigurowane bez podłączenia go do clouda.klew wrote: Tue Oct 17, 2023 3:09 pm Jeśli urządzenie będzie skonfigurowane i dasz je na inny serwer, to przy rejestracji ustawienia będą wrzucone na ten serwer.
Ale czym innym jest ustaiwenie jaki jest rodzaj termometru i na jakim GPIO, niż ustawienie korekty temperatury.krycha88 wrote: Tue Oct 17, 2023 5:45 pm W GG ustawienia fabryczne są ustawianie w momencie pierwszej konfiguracji urządzenia oraz ręcznym przywróceniu ich. Aby podejrzeć aktualne parametry kanałów, wifi itd. urządzenia nie trzeba uruchamiać trybu konfiguracyjnego. Więc tutaj naprawdę koncepcja wartości domyślnych nie pasuje![]()
Podonie czym innym jest przypisanie GPIO do przekaźnika, niż ustawianie na ile czasu ma być załączany impuls.
Jedne rzeczy definiują sprzęt, a drugie to tylko konfiguracja użytkownika.
Przy termostacie, właściwie tylko główny termometr musi mieć wartość domyślną, bo bez niego nie ma termostatu. Reszta parametrów może być trzymana w Configu. Tylko istotne jest to, że "config" działa dopiero po SuplaDevice.begin(), bo wymaga inicjalizacji i postawienia całego "urządzenia". Natomiast w GG pewnie ta faza definicji urządzenia i tych pozostałych ustawień jest robiona w tym samym czasie. Rozumiem, że w locie nie można dodać kanału, gdy jesteśmy już po SuplaDevice.begin().
Z drugiej strony, można sobie "ręcznie" zainicjować klasę typu "Config" i ręcznie zainicjować kanał termostat (bez SuplaDevice.begin()) - wtedy powinno ruszyć zapisywanie konfiguracji
Te indywidualne settery były dodane, aby można było sobie z poziomu urządzenia przestawiać pojedyncze parametry, a także aby ustawić te wartości fabryczne.krycha88 wrote: Tue Oct 17, 2023 5:45 pm Fajnie jakby się dało nadpisać metodę np. setMainThermometerChannelNo dodając dodatkowo swoją obsługęAle z tego co widzę, to przy pobieraniu wartości z serwera ona nie jest wywoływana.Code: Select all
bool ThermostatGUI::setMainThermometerChannelNo(uint8_t channelNo) { bool baseResult = HvacBase::setMainThermometerChannelNo(channelNo); if (baseResult && initDone) { ConfigManager->setElement(KEY_THERMOSTAT_MAIN_THERMOMETER_CHANNEL, thermostatIndex, HvacBase::getMainThermometerChannelNo()); ConfigManager->save(); } return baseResult; }
Z poziomu serwera się to nie uruchamia, bo tam trzeba zwalidować cały nowy config w całości. Np. jeśli zamienię termometr main i aux miejscami (1, 2) -> (2, 1), to uruchomienie "setMainThermometerChannelNo(2)" się nie powiedzie (bo w aktualnej konfiguracji aux jest ustawiony na 2). Natomiast przesłany config z serwera jest poprawny i powinien być walidowany w odpowiednim kontekście.
Ten sam mechanizm używa zmiana konfiguracji termostatu przez www urządzenia. Najpierw zbierane są wszystkie dane z formularzy do nowej instancji klasy z konfiguracją HVAC, a potem jest na całości odpalana walidacja i zapisanie:
https://github.com/SUPLA/supla-device/b ... s.cpp#L981
