Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2017:pool-ctrl

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2017:pool-ctrl [2018/01/14 18:55]
Adam Bartoš [Odkazy na použité zdroje, prílohy] pridaný mbed repozitár
2017:pool-ctrl [2018/01/14 19:28] (aktuální)
Adam Bartoš [Software] opravený kód
Řádek 75: Řádek 75:
 Softwarové riešenie je možné rozdeliť na 2 časti - klientskú a serverovú. Klientská časť obsahuje samotnú web stránku v HTML a javascripte. Stránka obsahuje použitý Boostrap toolkit, ktorý pomáha zabezpečiť responzívnosť webu. Na interaktivitu so serverom je použitý Javasript. ​ Softwarové riešenie je možné rozdeliť na 2 časti - klientskú a serverovú. Klientská časť obsahuje samotnú web stránku v HTML a javascripte. Stránka obsahuje použitý Boostrap toolkit, ktorý pomáha zabezpečiť responzívnosť webu. Na interaktivitu so serverom je použitý Javasript. ​
 Serverová časť sa skladá z jednoduchého webového servera schopného obsluhovať požiadavky GET a POST. Pomocou požiadavok POST sa následne vykonávajú všetky dostupné príkazy, ktoré museli byť ručne vytvorené a následne sa v kóde spracovávajú. ​ Serverová časť sa skladá z jednoduchého webového servera schopného obsluhovať požiadavky GET a POST. Pomocou požiadavok POST sa následne vykonávajú všetky dostupné príkazy, ktoré museli byť ručne vytvorené a následne sa v kóde spracovávajú. ​
 +
 Stránka sa načítava z microSD karty na ktorú sú umiestnené súbory index.html a api.js. Taktiež je tu možné umiestniť jQuery a Bootstrap javascript knižnice, avšak načítavanie stránky by kvôli nízkemu výkonu serveru zabralo značne dlhú dobu, preto sú tieto nalinkované na externé servery. Na SD karte sa nachádzajú aj textové súbory obsahujúce zapísaný aktuálny stav ovládaných zariadení a intervaly automatickej prevádzky. Preto po výpadku napájania, prípadne reštarte zariadenia nabehne zariadenie do pôvodného stavu, resp. v prípade automatického režimu do stavu definovaného intervalmi. ​ Stránka sa načítava z microSD karty na ktorú sú umiestnené súbory index.html a api.js. Taktiež je tu možné umiestniť jQuery a Bootstrap javascript knižnice, avšak načítavanie stránky by kvôli nízkemu výkonu serveru zabralo značne dlhú dobu, preto sú tieto nalinkované na externé servery. Na SD karte sa nachádzajú aj textové súbory obsahujúce zapísaný aktuálny stav ovládaných zariadení a intervaly automatickej prevádzky. Preto po výpadku napájania, prípadne reštarte zariadenia nabehne zariadenie do pôvodného stavu, resp. v prípade automatického režimu do stavu definovaného intervalmi. ​
  
Řádek 438: Řádek 439:
 } }
  
-/*    ​Delete ​interval ​   */+/*    ​Clears ​interval ​table    */
 function clear_intervals(ctrl) { function clear_intervals(ctrl) {
     $("#"​ + ctrl + "​_intervals tbody"​).empty();​     $("#"​ + ctrl + "​_intervals tbody"​).empty();​
Řádek 690: Řádek 691:
 bool is_in_interval(int sh, int sm, int eh, int em, int hour, int min) bool is_in_interval(int sh, int sm, int eh, int em, int hour, int min)
 { {
-    if ((sh < hour && hour < eh) | +    if ((sh < hour && hour < eh) |
-            (sh <= hour && sm <= min && (hour < eh | (hour <= eh && min <= em))) |+            (sh <= hour && sm <= min && (hour < eh || (hour <= eh && min <= em))) ||
             (sh < hour && hour <= eh && min <= em)) {             (sh < hour && hour <= eh && min <= em)) {
         return true;         return true;
Řádek 717: Řádek 718:
         int em = it->​end_min;​         int em = it->​end_min;​
         ​         ​
-        if (sh <= eh && sm <= em) {+        ​ 
 +        ​if ((sh < eh) || (sh == eh && sm <= em)) {
             /*             /*
              * Timeline:              * Timeline:
Řádek 781: Řádek 783:
  
  
-Na demonštračnom videu sú predvedené funkcie zariadenia, nastavenie hodín, automatický a manuálny režim. Ako si pozornejší určite všimnú, ovládacia automatika riadenia ozónu je zapnutá, avšak podľa intervalu a aktuálneho času by zapnutá nemala ​byť. Je to spôsobené vytvorením nového intervalu bez zaslania na server pomocou tlačítka "​Update"​. Automatika preto beží na pôvodné ​nastavené intervaly uložené na SD karte. V prípade čerpadla (Pump) bol ukážkový interval odoslaný na server a preto ovládacia automatika funguje správne. ​+Na demonštračnom videu sú predvedené funkcie zariadenia, nastavenie hodín, automatický a manuálny režim. Ako si pozornejší určite všimnú, ovládacia automatika riadenia ozónu je zapnutá, avšak podľa intervalu a aktuálneho času by generátor ozónu nemal byť zapnutý. Je to spôsobené vytvorením nového intervalu bez zaslania na server pomocou tlačítka "​Update"​. Automatika preto beží na pôvodne ​nastavené intervaly uložené na SD karte. V prípade čerpadla (Pump) bol ukážkový interval odoslaný na server a preto ovládacia automatika funguje správne. ​
  
-{{youtube>​0scd_KOdYsA?​medium}}+{{ youtube>​0scd_KOdYsA?​medium }}
 ---- ----
  
Řádek 791: Řádek 793:
  
 Zadaný projekt bol dokončený do plne funkčného stavu. Funguje ako manuálne, tak aj automatické ovládanie. Automatika funguje podľa zadaných intervalov, nezávisle pre bazénové čerpadlo a pre generátor ozónu. Riadenie je zabezpečované na základe aktuálneho času, ktorý je uložený v obvode reálneho času (RTC) DS1307, tento obvod je zálohovaný,​ takže aj po výpadku napájania je čas stále aktuálny. Zálohované sú aj aktuálne stavy výstupov a časové intervaly pre automatickú prevádzku. Stránka je kvôli použitiu toolkitu Bootstrap responzívna a dá sa pohodlne ovládať či už na PC alebo aj na mobilných zariadeniach. ​ Zadaný projekt bol dokončený do plne funkčného stavu. Funguje ako manuálne, tak aj automatické ovládanie. Automatika funguje podľa zadaných intervalov, nezávisle pre bazénové čerpadlo a pre generátor ozónu. Riadenie je zabezpečované na základe aktuálneho času, ktorý je uložený v obvode reálneho času (RTC) DS1307, tento obvod je zálohovaný,​ takže aj po výpadku napájania je čas stále aktuálny. Zálohované sú aj aktuálne stavy výstupov a časové intervaly pre automatickú prevádzku. Stránka je kvôli použitiu toolkitu Bootstrap responzívna a dá sa pohodlne ovládať či už na PC alebo aj na mobilných zariadeniach. ​
 +
 Jediný problém spôsobuje malý výkon zariadenia a z toho vyplývajúce problémy pri pripojení viacerých zariadení. Toto avšak bolo testované iba kvôli vyladeniu softwéru, reálne bude k serveru pristupovať naraz iba jedno zariadenie, čo tento server bez väčších problémov zvláda. Väčšinu problémov spôsobených dlhou odozvou sa podarilo vyriešiť opakovaným posielaním requestov a externým načítavaním jQuery a Bootstrap knižníc. ​ Jediný problém spôsobuje malý výkon zariadenia a z toho vyplývajúce problémy pri pripojení viacerých zariadení. Toto avšak bolo testované iba kvôli vyladeniu softwéru, reálne bude k serveru pristupovať naraz iba jedno zariadenie, čo tento server bez väčších problémov zvláda. Väčšinu problémov spôsobených dlhou odozvou sa podarilo vyriešiť opakovaným posielaním requestov a externým načítavaním jQuery a Bootstrap knižníc. ​
 +
 +Do kódu pre K64F bolo pôvodne riadenie automatickej obsluhy implementované pomocou paralelného threadu a RTOS, avšak nepodarilo sa toto riešenie správne odladiť. Pravdepodobne chyby v knižnici pre SD kartu spôsobovali pri čítaní/ zápise a použití paralelného threadu náhodné zamrznutie procesora. Preto je táto časť kódu momentálne volaná v nekonečnej slučke popri čakaní HTTP servera na prístup. ​
 +
 Absentuje zabezpečenie prístupu na web stránku, čo v prípade použitia v lokálnej sieti nevadí. Pre použitie s prístupom z vonkajšej siete nie je problém do HTML kódu vložiť jednoduchý blok kódu zabezpečujúci overenie užívateľa pomocou hesla. ​ Absentuje zabezpečenie prístupu na web stránku, čo v prípade použitia v lokálnej sieti nevadí. Pre použitie s prístupom z vonkajšej siete nie je problém do HTML kódu vložiť jednoduchý blok kódu zabezpečujúci overenie užívateľa pomocou hesla. ​
 ---- ----
2017/pool-ctrl.1515952504.txt.gz · Poslední úprava: 2018/01/14 18:55 autor: Adam Bartoš