Termostat reguliše tačku, a ne prostoriju
Sobni termostat drži jedan broj na jednom mestu: tamo gde mu je senzor slučajno montiran. Svaki drugi kvadratni metar svoju temperaturu dobija tek kao posledicu, a niko ne meri da li ta posledica išta valja.
U maloj, kvadratnoj prostoriji sa samo jednom fasadom to je u redu — razlika po prostoriji je delić stepena i pretpostavka drži. Dodajte staklenu fasadu, podno grejanje i vrata ka stepeništu, i pretpostavka tiho prestaje da važi.
Odakle greška dolazi
Ništa egzotično — samo obična fizika savremene kuće, koja deluje sva odjednom:
- Zastakljenje i solarno opterećenje: pojas uz prozor noću je hladniji, a popodne topliji nego bilo koje drugo mesto u prostoriji.
- Putanje promaje iz predsoblja i stepeništa, koje hladan vazduh vuku uz sam pod.
- Toplota iz opreme i od ljudi — medijski ormar ili pun trpezarijski sto jesu stalno opterećenje.
- Slojevitost po visini: ispod plafona i u visini članaka termički nije ista prostorija.
- Inercija podnog grejanja: pod otpušta toplotu još dugo pošto se grejni krug odavno zatvorio.
- Blizina grejnog vertikalnog voda ili razdelnika, koji zagreva zid na koji je senzor pričvršćen.
Kolika je greška u praksi
U prostoriji od 40 m² sa staklenom fasadom raspon između tačaka dostiže nekoliko stepeni. Termostat montiran na unutrašnji zid — uobičajeno mesto, jer je tuda išao kabl — nalazi se u najtoplijem delu prostorije i prijavljuje prostoriju toplijom nego što jeste.
Zona je skup senzora, a ne jedan senzor
Rešenje je da se jedno očitavanje prestane tretirati kao cela prostorija. Zona okuplja jedan do četiri senzora, sažima ih u jednu reprezentativnu vrednost i nju objavljuje regulacionom krugu. Sam krug se pri tome ne menja nimalo — i dalje troši jedan broj; taj broj sada opisuje prostoriju umesto tačke na zidu.
To što agregacija stoji u sopstvenom modulu znači više nego što izgleda. Regulacioni krug ostaje dovoljno jednostavan da se pročita iz jednog puta, a problem merenja rešava se jednom za sve zone umesto da se iznova izmišlja u svakoj prostoriji.
Mrtav senzor je lakši slučaj
Senzor koji je otkazao po pravilu javlja null ili prazan string. On se isključuje iz uzorka i zona radi sa onim što je preostalo — tri senzora umesto četiri i dalje opisuju prostoriju daleko bolje nego jedan jedini senzor na koji se oslanja većina instalacija.
Ako ne ostane nijedna ispravna vrednost, vrednost se uopšte ne ažurira. Zadržati poslednji poznati broj bezbednije je nego voditi grejni krug po besmislenim podacima.
cfg.sensors.forEach(function (control) {
var value = dev[control];
// Senzor koji je otkazao po pravilu javlja null ili prazan string.
if (typeof value === 'number' && isFinite(value)) {
readings.push(value);
}
});
if (readings.length === 0) {
log.warning('temperature_zone_{}: no valid sensors, value not updated', id);
return;
}Zaglavljen senzor je teži slučaj
Usrednjavanje rešava raspon po prostoriji. Ne rešava senzor koji javlja uverljiv, ali pogrešan broj. Provera tipa ga ne hvata — 25,4 °C je savršeno ispravan decimalni broj. On prosto vuče prosek, a krug onda radi ka zadatoj vrednosti koja je tiho pomerena.
Poređenje svakog očitavanja sa medijanom grupe ga otkriva. Medijan jedan jedini ispad ne pomera onako kako pomera prosek, pa daje stabilnu referencu prema kojoj se meri odstupanje. Očitavanja udaljenija od njega nego što dozvoljava prag odbacuju se i beleže u dnevnik. Ispod tri očitavanja nema većine za poređenje, pa se provera povlači umesto da nagađa.
Izbor broja senzora, položaja i praga
- Jedan senzor je zaista dovoljan u maloj, kvadratnoj prostoriji sa jednom fasadom i bez podnog grejanja. Nemojte dodavati hardver da biste nešto dokazali.
- Dva do četiri senzora čim prostorija ima staklenu fasadu, prelazi otprilike 30 m² ili obuhvata dve termičke situacije — otvorena kuhinja sa trpezarijom su, što se toplote tiče, dve prostorije.
- Postavite ih na radnu visinu i rasporedite po termičkim situacijama prostorije, a ne skupljene na jednom zidu.
- Nemojte ih postavljati iznad izvora toplote, na direktno sunce, uz grejni vertikalni vod ili tik uz vrata ka negrejanom prostoru — te tačke opisuju smetnju, a ne prostoriju.
- Postavite prag odstupanja šire od stvarnog raspona koji očekujete između tačaka, inače će provera odbaciti pravi gradijent. Pođite od raspona koji senzori zaista pokazuju tokom nedelju dana normalne upotrebe.
Šta ovo ne rešava
Proveri medijanom je potrebna većina koja je u pravu. Ako se dva od četiri senzora zaglave na sličnim pogrešnim vrednostima, medijan se pomera sa njima i provera potvrđuje kvar umesto da ga uhvati.
Ona takođe ne ume da razlikuje kvar od stvarnog gradijenta. Otvoren prozor zimi pravi tačno onaj obrazac koji pravi zaglavljen senzor — jedno očitavanje daleko od ostalih — pa će pravilo odbaciti očitavanje koje je potpuno ispravno.
Oba ograničenja imaju isti koren: provera gleda jedan jedini trenutak. Da bi se pokvaren senzor razlikovao od stvarnog događaja, potrebna je istorija očitavanja i brzina kojom se ona menjaju, a ne jedan snimak. To je drugi modul i njega još nismo napisali.
Modul i gde radi
Ceo modul ima oko sto linija i pročita se za pet minuta. Objavljen je pod MIT licencom — uzmite ga, prilagodite imena komandi sopstvenoj instalaciji i radiće na wb-rules 2.0 takav kakav jeste.
temperature-zone.js — MITProjekat od 350 m² na kojem ovo radiKako zona koristi vrednost: mrtva zona, sezonska blokadaKNX programiranje kao usluga