ESP8266 Primary GUI - Termostat

krycha88
Posts: 532
Joined: Fri Nov 16, 2018 7:25 am

Sun Nov 17, 2019 3:46 pm

scoobi wrote:
Sun Nov 17, 2019 2:00 pm
krycha88 czy jest opcja żeby zrobić termostat np dla 4 kanałów ?? tzn chodzi mi o to żeby to co jest teraz wrzucić do nodemcu i sterować 4 obwodami podłogówki. Aktualnie mam podłączone 4x esp01 w jednym miejscu, ale chciałbym "bardziej eleganckie" rozwiązanie zrobić.
Jeżeli ogarniasz trochę Arduino to bez problemu przerobisz ten termostat aby tak działał.

Jedyny problem jaki widzę to ilość kanałów tego rozwiązania. Może jak znajdę chwilę to zrobię taki soft.
wrobel111
Posts: 54
Joined: Tue Jun 05, 2018 6:13 pm

Mon Nov 18, 2019 8:52 pm

krycha88 wrote:
Mon Nov 04, 2019 8:49 pm
wrobel111 wrote:
Mon Nov 04, 2019 8:44 pm
Witam, termostat mam zainstalowany w łazience a chciałbym aby czujnik temperatury był w pokoju. Nie uśmiecha mi się ciągnięcie przewodów do salonu. Wymyśliłem więc że aby termostat nadal działał przy braku internetu wykorzystam do komunikacji moduły nrf24l01. Czy w związku z tym poza inicjalizacją starczy zrobić zmiany w funkcji get_temperature() i przypisywać wartość temperatury zmiennej t ?
dokładnie tak. Ustaw zmienną t przed CheckTermostat
W końcu udało mi się znaleźć czas i po początkowych niepowodzeniach (musiałem przeanalizować po kolei poszczególne funkcje) udało mi się zrobić działający kod. Teraz pewnie przydało by się go bardziej sparametryzować, np. dodać w gui miejsce na wpisanie adresów nadajnika i odbiornika oraz przełączanie pomiędzy radiem a lokalnym ds-em.

Code: Select all

double get_temperature(int channelNumber, double last_val) {
  double t = -275;

  int i = channelNumber - channelNumberDS18B20;

  if ( sensor[i].getDeviceCount() > 0 ) {
    if ( ds18b20[i].address == "FFFFFFFFFFFFFFFF" ) return -275;
    if ( millis() - ds18b20[i].lastTemperatureRequest < 0) {
      ds18b20[i].lastTemperatureRequest = millis();
    }

    if (ds18b20[i].TemperatureRequestInProgress == false) {
      sensor[i].requestTemperaturesByAddress(ds18b20[i].deviceAddress);
      ds18b20[i].TemperatureRequestInProgress = true;
    }

    if ( millis() - ds18b20[i].lastTemperatureRequest > 1000) {
      if ( ds18b20[i].type == 0 ) {
        sensor[i].requestTemperatures();
        t = sensor[i].getTempCByIndex(0);
      } else {
        t = sensor[i].getTempC(ds18b20[i].deviceAddress);
      }

      if (t == -127) t = -275;
      ds18b20[i].lastTemperatureRequest = millis();
      ds18b20[i].TemperatureRequestInProgress = false;
    }
  }
  if(termometr_radiowy == true && channelNumber == 5 ) {
    float data;                         	//zmienna data typu FLOAT
    if(Mirf.dataReady()) {              // Warunek wykonywany tylko, gdy coś zostanie odebrane 
      Mirf.getData((byte *) &data);     // Odbiór zmiennej data przy pomocy modułu nRF24L01
      Serial.println(data);             // Wystawienie zmiennej na UART
      t = data;  
      }
  }
  //THERMOSTAT
  CheckTermostat(i, t, 0);
  
  return t;
}
Fragment w funkcji setup()

Code: Select all

/*
 * Konfiguracja linii dołączonych do modułu nRF24L01:
 * 
 * MISO: 12
 * MOSI: 13
 * SCK: 14
 * CE: 3
 * CSN: 15
 * 
 */
  Mirf.csnPin = 15;                // Konfiguracja pinu CSN biblioteki MIRF inaczej, niż domyślnie
  Mirf.cePin = 3;                  // Konfiguracja pinu CE biblioteki MIRF inaczej, niż domyślnie
  Mirf.spi = &MirfHardwareSpi;     // Wykorzystanie SPI do komunikacji pryz użyciu modułów nRF24L01
  Mirf.init();                     // Inicjalizacja modułu MIRF
  Mirf.setTADDR((byte *)"67890");  // ustawienie adresu do nadawania
  Mirf.setRADDR((byte *)"12345");  // Ustawienie adresu do odbioru
  Mirf.payload = sizeof(float);    // Maksymalny przesył przez moduły radiowe ustawiony na wielkośc zmiennej FLOAT (4 bajty)
  Mirf.config();                   // Konfiguracja biblioteki MIRF
tijo
Posts: 147
Joined: Fri Dec 01, 2017 12:44 pm

Fri Nov 22, 2019 10:08 am

krycha88 wrote:
Sun Nov 17, 2019 3:46 pm
scoobi wrote:
Sun Nov 17, 2019 2:00 pm
krycha88 czy jest opcja żeby zrobić termostat np dla 4 kanałów ?? tzn chodzi mi o to żeby to co jest teraz wrzucić do nodemcu i sterować 4 obwodami podłogówki. Aktualnie mam podłączone 4x esp01 w jednym miejscu, ale chciałbym "bardziej eleganckie" rozwiązanie zrobić.
Jeżeli ogarniasz trochę Arduino to bez problemu przerobisz ten termostat aby tak działał.

Jedyny problem jaki widzę to ilość kanałów tego rozwiązania. Może jak znajdę chwilę to zrobię taki soft.
dołączam się do prośby....
tijo
Posts: 147
Joined: Fri Dec 01, 2017 12:44 pm

Wed Nov 27, 2019 10:42 pm

Zauważyłem pewną niedogodność...po każdej zmianie w cloudzie termometr przyjmuje wartość 15stC. u mnie jest to termometr na kanale licząc od zera to kanał 5(6 kanał urządzenia) jest to kanał sterujący termostatem...DS18B20
rafalxbox
Posts: 18
Joined: Thu Nov 29, 2018 6:29 am

Thu Nov 28, 2019 6:21 am

Mam pytanie początkującego, ten soft "ESP8266 Primary GUI - Termostat" wygrywa się do sonoffa?
krycha88
Posts: 532
Joined: Fri Nov 16, 2018 7:25 am

Thu Nov 28, 2019 8:27 am

tijo wrote:
Wed Nov 27, 2019 10:42 pm
Zauważyłem pewną niedogodność...po każdej zmianie w cloudzie termometr przyjmuje wartość 15stC. u mnie jest to termometr na kanale licząc od zera to kanał 5(6 kanał urządzenia) jest to kanał sterujący termostatem...DS18B20
A po chwili wraca do prawidłowej wartości? A ile DSow masz podpiętych ?
krycha88
Posts: 532
Joined: Fri Nov 16, 2018 7:25 am

Thu Nov 28, 2019 8:28 am

rafalxbox wrote:
Thu Nov 28, 2019 6:21 am
Mam pytanie początkującego, ten soft "ESP8266 Primary GUI - Termostat" wygrywa się do sonoffa?
Tak, gpio ustawiasz od strony konfiguracji urzadzenia
rafalxbox
Posts: 18
Joined: Thu Nov 29, 2018 6:29 am

Thu Nov 28, 2019 10:59 am

Super, czyli pobrane pliki wgrywam przez Nodemcu. Czy są jakieś inne ustawienia w Nodemcu? Chodzi o parametry wgrywania oraz urządzenia.
tijo
Posts: 147
Joined: Fri Dec 01, 2017 12:44 pm

Thu Nov 28, 2019 11:42 am

krycha88 wrote:
Thu Nov 28, 2019 8:27 am
tijo wrote:
Wed Nov 27, 2019 10:42 pm
Zauważyłem pewną niedogodność...po każdej zmianie w cloudzie termometr przyjmuje wartość 15stC. u mnie jest to termometr na kanale licząc od zera to kanał 5(6 kanał urządzenia) jest to kanał sterujący termostatem...DS18B20
A po chwili wraca do prawidłowej wartości? A ile DSow masz podpiętych ?
Tak dokładnie, za chwile wraca do poprawnej wartości, podpięte 3 DS-y...
byniom
Posts: 342
Joined: Sat Jan 07, 2017 1:17 pm

Thu Nov 28, 2019 1:05 pm

Wgrywam ten soft do wemosa i mogę go skonfigurować ale nie jest widoczny w cloud . Czy powodem może być to że nie są podpięte do niego ds'y ? . Czekam na nowe czujniki ale chciałem już termostat dodać do clouda.
Post Reply