Termostat DIY do testowania :)

krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

klew wrote: Mon Dec 18, 2023 8:22 am Natomiast biorąc pod uwagę to, że ludzie często "tworzą" urządzenie w kilku krokach (dodają termostat, sprawdzają w Cloud, poprawiają ustawienia, itp.), to spróbuję to zmienić tak, aby zmiana w GG była aktualizowana na serwer bez konieczności usuwania urządzenia czy zmiany funkcji. Tylko trzeba pamiętać o tych potencjalnych błędach w konfiguracji wynikających z innych ustawień.
Byłoby super jeżeli byś dodał taką możliwość :)
https://gui-generic-builder.supla.io/
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

klew wrote: Mon Dec 18, 2023 8:16 am Jeśli urządzenie pracuje w trybie "program", to pobierasz po prostu:

Code: Select all

  int getTemperatureSetpointHeat();
  int getTemperatureSetpointCool();
Jeśli chciałbyś odczytać to co wynika z programu, ale gdy termostat nie pracuje w trybie program, to będzie tam kilka kroków do zrobienia, ale nie wiem czy tego chcesz, więc daj znać ;)
Klew coś robię źle. Jeśli możesz napisz coś więcej. Próbuje utworzyć obiekt z klasy HvacBase i z niego pobrać lipa. Próbuję bezpośrednio z hvac też pokazuje cały czas 0. Jeśli możesz...
User avatar
klew
Posts: 13909
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

zzrr wrote: Mon Dec 18, 2023 9:04 pm
klew wrote: Mon Dec 18, 2023 8:16 am Jeśli urządzenie pracuje w trybie "program", to pobierasz po prostu:

Code: Select all

  int getTemperatureSetpointHeat();
  int getTemperatureSetpointCool();
Jeśli chciałbyś odczytać to co wynika z programu, ale gdy termostat nie pracuje w trybie program, to będzie tam kilka kroków do zrobienia, ale nie wiem czy tego chcesz, więc daj znać ;)
Klew coś robię źle. Jeśli możesz napisz coś więcej. Próbuje utworzyć obiekt z klasy HvacBase i z niego pobrać lipa. Próbuję bezpośrednio z hvac też pokazuje cały czas 0. Jeśli możesz...

Code: Select all

Supla::Control::HvacBase *hvac = nullptr;

// gdzieś w setup
hvac = new Supla::Control::HvacBase(....);
....

// gdzieś w loop ? 
int16_t currentHeatSetpoint = hvac->getTemeratureSetpointHeat();
Najlepsze suple dla Twojego domu :mrgreen:
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

@klew dzięki. A parametr tu gdzie kropki to co ma być?

hvac = new Supla::Control::HvacBase(....);
User avatar
klew
Posts: 13909
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

zzrr wrote: Tue Dec 19, 2023 11:42 am @klew dzięki. A parametr tu gdzie kropki to co ma być?

hvac = new Supla::Control::HvacBase(....);
Normlanie jak przy tworzeniu klasy Hvac:

Code: Select all

  explicit HvacBase(Supla::Control::OutputInterface *primaryOutput = nullptr,
                    Supla::Control::OutputInterface *secondaryOutput = nullptr);
może być nic, a można podać od razu wyjście(a)
Najlepsze suple dla Twojego domu :mrgreen:
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

klew wrote: Tue Dec 19, 2023 12:14 pm Normlanie jak przy tworzeniu klasy Hvac:

Code: Select all

  explicit HvacBase(Supla::Control::OutputInterface *primaryOutput = nullptr,
                    Supla::Control::OutputInterface *secondaryOutput = nullptr);
może być nic, a można podać od razu wyjście(a)
Ja to próbowałem wpisać. Cała klasę oglądam od góry do dołu. Ale widocznie jednak troche wiedzy brakuje. Spróbuje jeszcze raz
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

próbowałem też nic nie wpisywać, wtedy błędów nie podkreśla ale w Loop jak już chcę wyciągnąć wartość to mam taki komunikat błędu "element klasa "Supla::Control::HvacBase" nie ma składowej "getTemeratureSetpointHeat""
User avatar
klew
Posts: 13909
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

zzrr wrote: Tue Dec 19, 2023 12:50 pm próbowałem też nic nie wpisywać, wtedy błędów nie podkreśla ale w Loop jak już chcę wyciągnąć wartość to mam taki komunikat błędu "element klasa "Supla::Control::HvacBase" nie ma składowej "getTemeratureSetpointHeat""
Pokaż kod
Najlepsze suple dla Twojego domu :mrgreen:
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

Code: Select all

Supla::Control::HvacBase *hvac = nullptr;


// Supla::Control::OutputInterface *primaryOutput = nullptr;
// Supla::Control::OutputInterface *secondaryOutput = nullptr;

Code: Select all

void setup()
{
  Serial.begin(115200);

  new Supla::Clock;
  auto output = new Supla::Control::InternalPinOutput(OUTPUT_GPIO);
  auto hvac = new Supla::Control::HvacBase(output);
  new Supla::Html::HvacParameters(hvac);
  DeviceAddress ds1addr = {0x28, 0xD9, 0xF6, 0xA, 0x0, 0x0, 0x0, 0x6D};
  // DeviceAddress ds2addr = {0x28, 0xFF, 0x54, 0x73, 0x6E, 0x18, 0x01, 0x77};
  // new Supla::Sensor::DS18B20(DS18B20_GPIO, ds1addr);
  // new Supla::Sensor::DS18B20(DS18B20_GPIO, ds2addr);
  hvac = new Supla::Control::HvacBase();
     DsTemp = new Supla::Sensor::DS18B20(DS18B20_GPIO, ds1addr);
A tutaj to co na końcu w Loop

Code: Select all

if (millis() - mil_hvac >= 2000)

  {
    mil_hvac = millis();
    // int tempera = nowa;
    // int temperatureSetpoint = getTemperatureSetpointHeat();
    int16_t currentHeatSetpoint = hvac->getTemeratureSetpointHeat();

    Serial.print("temperatura z HVAC ");
    Serial.println(String(currentHeatSetpoint));
To tak wycinkami bo cały kod to ma ponad 1000 wierszy
User avatar
klew
Posts: 13909
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

zzrr wrote: Tue Dec 19, 2023 12:59 pm
Ogólnie ta aplikacja powinna się crashować, a nie niekompilować ;)
Może masz jakąś starą wersję biblioteki SuplaDevice gdzie jeszcze tych metod nie ma?

W setup popraw tą linijkę:

Code: Select all

hvac = new Supla::Control::HvacBase(output);
Ma być bez "auto", aby przypisało wskaźnik do zmiennej globalnej, do której się odwołujesz w loop.
Jak dodasz "auto", to nazwa "hvac" jest zmienną lokalną, która przestaje istnieć po wyjściu programu poza setup
Najlepsze suple dla Twojego domu :mrgreen:

Return to “Nowości”