Inteligentné vykurovanie

Tvoříte zajímavý projekt? Pochlubte se s ním.
Pravidla fóra
Vkládejte prosím jen HOTOVÉ projekty, které chcete představit ostatním.
Odpovědět
martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Inteligentné vykurovanie

Příspěvek od martinius96 » 05 led 2018, 17:19

Ahoj, rád by som vám predstavil posledný projekt, ktorý som realizoval

Projekt inteligentného domu rieši:
  • Ovládanie kúrenia v dome na základe dát z internetu, kde sa realizuje logika, výpočty
  • Ovládanie 2 výstupov (termostat pece a vodné čerpadlo)
  • Príjem dát od teplomerov po One-Wire zbernici
Hardvér využitý pre projekt:
  • NodeMCUObrázek
  • 6x DS18B20Obrázek
  • 2-kanálové reléObrázek
Technológie pre projekt:
  • AJAX - realtime dáta
  • PHP - výpočty a zápis do súboru
  • AJAX - realtime dáta
  • HTML, Bootstrap - vzhľad stránky (responzitivta)
Čo projekt ponúka?
  • Vzdialenú správu kúrenia v domácnosti
  • Možnosť prezerať real-time dáta
  • Možnosť prezerať a mazať log neúspešných prihlásení
  • Vzdialený reset dosky NodeMCU
  • Meniť názvy miestností, v ktorých sú umiestnené čidlá DS18B20
  • Nastavovať teplotu kúrenia s hysterézou 1°C
  • Login systém
  • Automatický alebo manuálny režim kúrenia
  • Indikátor spojenia s NodeMCU
Automatický režim
  • Režim rieši autonómne vykurovanie. Podľa referenčnej teploty sa spína termostat pri hysterzére 1°C
  • Príklad: Nastavená teplota: 20°C Pri 18,99°C sa zopne, kúri do 21.01°C.
  • Čerpadlo vody sa spína na základe vonkajšej teploty, ak je nižšia ako -10°C, zapne sa
  • Celá logika sa vykonáva na webserveri, NodeMCU si stiahne už iba ZAP/VYP pre daný spotrebič podľa nastavenej logiky
Manuálny režim
  • Klasický ZAP/VYP systém pre termostat aj čerpadlo vody
  • Oba výstupy môžu fungovať nezávislé na sebe (môžu byť v rôznych režimoch)
Screenshoty
Obrázek
Obrázek
Obrázek
Obrázek

Github
  • Používateľské meno: admin heslo: admin (možnosť meniť v root priečinku v index.php)
Záver
  • Projekt je veľmi ľahké prerobiť i pre Ethernet shield/upraviť pre svoje potreby

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Inteligentné vykurovanie

Příspěvek od petan » 05 led 2018, 19:20

Co se stane když vypadne internet (nebo jenom ta wifina? - nechci hanit WiFi, ale když jsem měl poškozenou síťovku na notebooku, tak dokázal zaručeně shodit router tak, že bylo třeba ho restartovat)? Tedy za předpokladu, že není počítač na local serveru...případně i tento vypadne. Existuje nějaká, třeba LED signalizace "oukej, komunikuji a reguluji"?

Když už to má takovej výpočetní výkon, nebylo by dobré použít ekvitermí regulaci? +-1 stupeň mi přijde skoro až moc. Ladil jsem teď něco (ne Arduino) na +-0,5 a i to mi přišlo dost.

Řešíš nějak zpětnou vazbu? Co se stane, když se svaří relátko topení? (havarijní termostat beru jako samozřejmost)
Máš nějak ochráněnou linku s čidly (např. proti přepětí - blesku). Co bude psát aplikace, když se např. jedno čidlo odpojí?

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Inteligentné vykurovanie

Příspěvek od martinius96 » 05 led 2018, 19:44

Práve na tom (offline) sketchi robím, bude to robiť prakticky to isté, s tým rozdielom, že bude to ako keby automatické stále a bude udržiavať automatickú teplotu okolo 20°C. Súhlasím s hysterézou na 0,5°C, je to aj príjemnejšie na pocit, keď to nie je až v rozmedzí +1°C hore a -1°C pod hranicu referenčnej teploty.

To, že je pripojené NodeMCU na web je na webstránke. V tom prehľade vpravo dole je buď X alebo kvačka podľa stavu pripojenia. Keď sa stratí pripojenie na wifi tak sa vždy NodeMCU snaží pripojiť sa. Áno, rozmýšlal som aj nad tou regulaciou, možno to budúcna aplikujem :)

Ak sa čidlo odpojí (nameria sa -127, alebo 85) tak sa na server odošle NaN. Zvarenie relé som neriešil, hádam k tomu nedôjde. Nie, proti prepetiu som to ešte nezapezpečoval. Využívam tam 12V 1A zdroj cez adaptér, myslím, že je už v ňom nejaká aspoň minimálna ochrana.

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Inteligentné vykurovanie

Příspěvek od petan » 05 led 2018, 21:11

martinius96 píše:
05 led 2018, 19:44
1) ... že bude to ako keby automatické stále a bude udržiavať automatickú teplotu okolo 20°C. Súhlasím s hysterézou na 0,5°C, je to aj príjemnejšie na pocit, keď to nie je až v rozmedzí +1°C hore a -1°C pod hranicu referenčnej teploty.

2) To, že je pripojené NodeMCU na web je na webstránke. V tom prehľade vpravo dole je buď X alebo kvačka podľa stavu pripojenia. Keď sa stratí pripojenie na wifi tak sa vždy NodeMCU snaží pripojiť sa. Áno, rozmýšlal som aj nad tou regulaciou, možno to budúcna aplikujem :)

3) Zvarenie relé som neriešil, hádam k tomu nedôjde.

4) Nie, proti prepetiu som to ešte nezapezpečoval. Využívam tam 12V 1A zdroj cez adaptér, myslím, že je už v ňom nejaká aspoň minimálna ochrana.
1) nebylo by lepší, aby si to udržovalo poslední nastavenou teplotu? Takhle si nastavím třeba v komoře deset stupňů, vypadne internet a mám zteplalej rum... Podle mě je lepší regulaci řídit přímo modulem. Ale zase bacha, kdyby se z webu poslala z nějakýho důvodu totální kravina - přijde signál na topení na 0, nebo naopak na 999 stupňů. Tohle je potřeba hlídat.

2) Osobně bych doplnil nějakou stavovou ledku - svítí - OK, pomalu bliká - snaží se navázat komunikaci, blikne - zrovna komunikuje, nebo tak něco. pomůže to diagnostikovat problém po zapnutí. Na ekviterm je potřeba venkovní čidlo... A pak je to dost ladění. Nebylo by od věci udělat třeba pro každou místnosti 3 teploty (útlum, teplo, zima). A ty by se přepínaly podle něčeho (čas, venkovní teplota atd.). Dalo by se pak teřba nastavit, aby se v ložnici snížila teplota po osmé hodině třeba o dva stupně, ...

3) Jasný, je to málo pravděpodobný, ale...Nemyslím třeba svaření, ale zaseknutí apod... Minimálně základ je havarijní termostat (ten přes Arduino určitě nepůjde), ale bylo by dobrý monitorovat jeho stav. Stejně tak jako tlak vody v kotli. Třeba kotle protherm (myslím) mají pojistku a tlakáč jednoduše vyveden na kontrolku - ta by šla detekovat. Stejně tak signál HDO. Taky by bylo možné hlídat stav výstupního relé jestli opravdu výstup dělá to, co je mu přikázaný. Třeba ze všech výstupů vzít signál a před diodu ho napojit na jeden vstup. Když jsou všechny výstupy vypnutý, tak musí být vstup na nule. Případně jednou za čas procvakat všechny relátka a zkontrolovat jestli spínají (takovej selftest).

4) V tomto případě jsem myslel přepětí na sběrnici. Jednou mi blesk odkrágloval router. Nepřišlo to však po síti, ale naindukovalo se to ve vedení mezi anténou a routerem. Takže nějaký osazení alespoň 5V transilem by mohlo přijít vhod. Vezmi si, že budeš mít po půlce baráku natáhnutou anténu do které se bude indukovat kde co. Třeba díky souběhu vedení blikají v domech ledky - co toto udělá asi se vstupem čipu?


Ještě k nastavování... Je jasný, že je jednoduchá natvrdo nastavit do programu název a heslo wifiny... Ale co když z nějakýho důvodu heslo, nebo název změním. Dobrej by byl nějakej master reset, jako je třeba u routeru. Při zapnutí by se podrželo tlačítko a modul by se zresetoval. Pak by se k němu připojilo přes stále stejnou adresu a modul by se nakonfiguroval - jenom jednoduchá obrazovka s kolonkou jméno, heslo, ...


Ono kolikrát není složitý vyrobit nějakou věc aby fungovala... Ale polovinu práce kolikrát zabere ošetření "všech" provozních stavů, které mohou nastat.

Ale jó, jinak ten web vypadá dobře :)

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Inteligentné vykurovanie

Příspěvek od petan » 05 led 2018, 21:20

Ono celkově mě není jasný jak to ovládá teploty v různých místnostech, když to má jenom relé na topení a čerpadlo? Jinak to čerpadlo bych svěřil pod palec topení - úplně nechápu tu logiku čerpadla (zřejmě to je jenom na konkrétní dům). Buď je systém samotížný - takže čerpadlo není potřeba, nebo maximálně při překročení teploty topné vody. Nebo je systém s čerpadlem (dnešní to jsou snad všechny) a tak čerpadlo běží stále s kotlem.
Spíš by to mělo umět ovládat termohlavice - kotel se pak přizpůsobí sám na požadavku tepla (lze ho nuceně vypnout).

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Inteligentné vykurovanie

Příspěvek od martinius96 » 05 led 2018, 22:29

Poslednú nastavenú teplotu.. Nie je to až tak ok.. ak si zvážiš, že ti spadne wifi, ide to podľa tej teploty a ak ti vypne prúd a nahodí sa, čo potom? Keď ti ešte wifi nepôjde :-) jedine EEPROM.. hh.. Ale tá by odišla dosť rýchlo. Kraviny z webu mám ošetrené. Nastaviť sa dá teplota od 5 do 25°C. A je ošetrené nahratie "zlej" teploty na web čo sa týka čidiel DS18B20.

Ešte sa mi nestalo, aby mi vytuhlo NodeMCU, alebo žeby sa mi seklo relé. Ide to už skoro 2 mesiace bez prestávky. S tými LED-kami súhlasím, je to fajn nápad. Jo jo, myslíš niečo na štýl Captive portal pre to nastavenie mena a hesla. :-)
Web je šablóny ControlR. Ale je to Singleapp web, čo trošku zamrzí, lebo sú s tým problémy.. Napríklad keď si volaš ajax, tak sa nevykoná, až po refreshi stránky (odoslaní formuláru) a podobne. Nie je to až tak dobré v tej šablóne, čo sa týka použiteľnosti. Buttony a podobné veci je už Bootstrap. Ľahko sa implementuje.

Neviem ale kde správne urobiť tú offline časť...
Mám napr toto:

Kód: Vybrat vše

void skontroluj_reset() {
  WiFiClientSecure client;
  if (!client.connect(host, httpsPort)) {
    return;
  }
  if (client.verify(fingerprint, host)) {
  }
  else {
  }
  String url = "/system/values/resetdosky.txt";
  client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "User-Agent: NodeMCU\r\n" + "Connection: close\r\n\r\n");

  while (client.connected()) {
    String line = client.readStringUntil('\n');
    if (line == "\r") {
      break;
    }
  }
  String line = client.readStringUntil('\n');
  if (line == "Cakam na potvrdenie restartu") {
    WiFiClientSecure client;
  if (!client.connect(host, httpsPort)) {
    return;
  }
  if (client.verify(fingerprint, host)) {
  }
  else {
  }
  String link = "/system/nodemcu/potvrdreset.php";
  client.print(String("GET ") + link + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "User-Agent: NodeMCU\r\n" + "Connection: close\r\n\r\n");
  Serial.println("Reset potvrdeny");
  ESP.restart();
  }
  }
Kód, ktorý je offline mám dať do:

Kód: Vybrat vše

if (!client.connect(host, httpsPort)) {
    return;
  }
S tým, že vyhodím return a dám tam to, čo potrebujem?

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Inteligentné vykurovanie

Příspěvek od petan » 05 led 2018, 23:46

Pokud budeš z webu přijímat stavy ON/OFF tak offline část moc udělat nepůjde. Nebyla by potřebná data pro regulaci.

Však EEPROM jsem myslel od začátku. Do EEPROM nemusíš ukládat pokaždé. Stačí si z ní načíst nastavenou teplotu a tu si pak porovnávat s tou ze sítě. Pokud je rozdíl, tak ji změnit. Plus třeba tu paměť rolovat, aby se ošoupala průběžně (to už by bylo na zamyšlení :) ). Ruku na srdce, jak často někdo bude měnit teplotu v místnosti? A i kdyby jednou za den, tak to je 365 změn za rok.

S tím heslem jsem to myslel tak jak píšeš -> taky uložit do EEPROM.

Když už, tak bych tam udělal funkci, která by se vykonávala třeba jednou za těch 10 sekund. První by byl dotaz na server (s nějakým timeoutem, případně na víc pokusů)? Pokud je server online, tak by se načetla data, zparsovala, pokud by bylo třeba tak se uložila, naměřily by se hodnoty a zpracovala by se regulace. Pokud by byl server offline, tak by se jen načetla data z teploměrů a zpracovala by se regulace s dalšími daty z předchozího cyklu.

Já osobně bych stále pracoval maximálně offline a při nějaké změně dat (server by kontaktoval to Arduino) by se data synchronizovala. Takovejhle typ řízení, co máš vymyšlenej ty mi přijde přinejmenším nestandardní.

Kód: Vybrat vše

void setup() {
  if digitalRead(resetVstup){
    //je stisknut reset při zapínání
    delay(3000);  //jen takový malý čekání, jestli si ten reset někdo nerozmyslel
  }
  if digitalRead(resetVstup){
    //evidentně nerozmyslel
    NastavVychoziHodnoty(); //nastavení výchozích hodnot třeba tej WiFiny a tak dále
  }

  NactiDataZEeprom(); //Načtení konfigurace

  ledState = 100; //ještě není připojeno, takže ledka signalizuje navazování komunikace
}

void loop() {
  if (presentTime - checkTime > 10000) { 
    checkTime = presentTime;
    Reguluj();
  } 

  if(ledState < 5000){
    //pokud má ledka nastaven interval menší než 5 sekund, tak s ní v tom intervalu blikej
     if (presentTime - blinkTime > ledState)) { 
      blinkTime = presentTime;
      stavLedky = !stavLedky;
      digitalWrite(diagnostickaLedka, stavLedky);
    } 
  }
  else{
    //pokud je víc jak 5 sekund, tak sviť - jako že je to OK
    digitalWrite(diagnostickaLedka, HIGH);
  }

 
}

void Reguluj(){
  ZkontrolujWebService(); //zkontroluje jestli je server online, jestli nee, tak se zkus připojit ještě jednou

  NamerTeploty(); //teploty z čidel
  
  if(webService == TRUE){
    //server je online
    ledState = 5000; //rozsviť ledku
    NactiDataZWebu(); //načtení aktuálních dat z webu
    UlozDataNaWeb();  //uložení naměřených teplot na web
    ZkontrolujNactenaData();  //kontrola, jestli server neposlal nějaký blbosti
    UlozDoEeprom(); //pokud se změnily teploty, tak je ulož do eeprom
  }
  else{
    ledState = 100; //blikej s ledkou, je to v pytli, jsme offline
  }

  Regulace(); //proveď regulaci na základě vstupních hodnot
}

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Inteligentné vykurovanie

Příspěvek od pavel1tu » 06 led 2018, 09:16

petan píše:
05 led 2018, 23:46
Souhlas,
- řídící jednotka je MASTER
- změny z WWW se po zadání pošlou do řídící jednotky - konec
- já bych netrápil paměť, dal bych to na CF ? už z důvodu že až se to rozběhne a odladí - přidáš určitě ekvitermní křivku a tam je potřeba vypočítané křivky pro každou místnost ukládat
- ještě je dobré v nejvíce obývané místnosti přitad čidlo na okno - při větrání netopit naplno
- pro ekvitermní křivky je potřeba teplotní čidlo venku, ve stínu, tak 20 cm od zdi

Máš co dělat :-D
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Inteligentné vykurovanie

Příspěvek od petan » 06 led 2018, 12:08

To ukládání do EEPROM mi nepřijde jako nějaký drastický řešení. Ukládala by se nastavená teplota. V případě ekvitermní regulace by se teplota vody vypočítávala, ale neukládala. No, musel by se ukládat nějaký koeficienty, takže vlastně možná taky jo...

Jde o to, jestli do ekvitermu jít... Ono to seřídit někdy není úplně easy bussines. U takovejhlech věcí je ideální nějakej autotuning, kdy se to adaptivně přizpůsobí konkrétní místnosti... Ale je možný, že je na to už nějaký knihovna a je to otázka dvou řádků kódu. (Nezkoumal jsem)

Ale stejně furt nechápu, jak to řídí teplotu v jednotlivých místnostech, když to má jen dva vstupy - jeden na kotel, jeden na čerpadlo.

Axamith
Příspěvky: 533
Registrován: 09 srp 2017, 08:17
Reputation: 0
Kontaktovat uživatele:

Re: Inteligentné vykurovanie

Příspěvek od Axamith » 08 led 2018, 13:38

Jak jsem se díval, výstupem celého systému je relé, kotel+čerpadlo. To je ale trochu málo, současné kotle nejedou v režimu ON/OFF, ale mají různé komunikační protokoly (OpenTherm ...), které mimo mnoho dalších funkcí ovládají výkony hořáku, otáčky ventilátoru, více čerpadel (TUV, VT) atd. takže i když systém vypadá velmi dobře, k modernímu kotli bude dost problém ho připojit a používat.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů