Oprava TMEP 4.2 – chybná hodnota +85°C
V poslední době se dost věnuji úpravám a přepisu aplikace TMEP od Michala Ševčíka která slouží v základu k prezentaci dat z meteo čidel od Papoucha (TME, TH2E, TMRS232, TM_Mikrotik a dalších) (a nejen od něj) na Internetu.
Finální verze bude již o dost jiná, než verze původní, ale to chce ještě čas.
Prozatím tu budu publikovat nejrůznější opravy a vylepšení TMEP, tak jak mi přijdou pod ruku.
V poslední době mě dost trápí chybné hodnoty čtěné z 1-wire sběrnice, typicky -41°C a +85°C – způsobuje to nejruznější rušení či délka sběrnice na hranici možností parazitního napájení.
Zde je tedy jednoduché řešení tohoto problému, jak ve verzi pro jednu hodnotu, tak pro vícero předávaných hodnot. Chybná data jsou prostě zahozena a v DB bude chybět vzorek. Finální oprava v aplikaci se bude chovat v základu jinak – najde předchozí platnou hodnotu a tu místo chybné doplní, následně uloží ID záznamu s touto dočasnou opravou a po příchodu další validní hodnoty provede dosazení průměru těchto dvou hodnot místo chybějícího vzorku. Aplikace v admin rozhraní bude umět toto chování ovlivňovat = uživatel si bude moci vybrat jaké chování se mu hodí lépe.
Zde již zmíněný kód k umístění do souboru index.php na řádek před :
$teplota = str_replace(",", ".", $teplota); $vlhkost = str_replace(",", ".", $vlhkost);
Řešení pro jednu hodnotu:
// filtr proti typickym chybnym hodnotam - START if (in_array($teplota, array("-41", "85")) exit; // filtr proti typickym chybnym hodnotam - KONEC
… zde pokračuje zbytek souboru index.php
Řešení pro vícero předávaných hodnot :
(běžná verze TMEP toto nepodporuje, tedy je to zde pro inpiraci vlastní úpravy, předpokládá proměnou $aDataGET s ošetřenými daty z GET požadavku):
// filtr proti typickym chybnym hodnotam - START $bError = false; for ($i = 0; $aDataGET < count($aDataGET); $i++) if ($aDataGET[$i] == 85) $bError = true; if ($bError == "true") exit; // filtr proti typickym chybnym hodnotam - KONEC
Za případné komentáře a věcné připomínky budu rád 🙂