IoT prakticky: Python na ESP32 VI – webový server

Mikrokontroléry
0

V šiestom pokračovaní seriálu budeme WiFi mikrokontrolér ESP 32 využívať ako webový server, ku ktorému sa dá pripojiť cez prehliadač webového obsahu. Mikrokontrolér bude môcť generovať webové stránky s požadovanými údajmi, napríklad s výsledkami merania, prípadne môže cez webové rozhrania prijímať vstupy od používateľov. Napríklad keby mikrokontrolér ovládal inteligentnú domácnosť, mohli by ste cez webové rozhranie zistiť aktuálne parametre, napríklad teplotu, ktoré systémy sú zapnuté, protokol o prípadných poruchách a podobne. Prípadne by ste mohli takto na diaľku nejaký systém zapnúť, nastaviť teplotu, či rozsvietiť svetlo. 

Príklady sú vo videu



V predchádzajúcej časti sme avizovali, že tento diel bude o ovládaní farebných LED diód, či už RGB, alebo diód typu NeoPixel, ktoré majú integrovaný čip a dajú sa zreťaziť. Dostali sme niekoľko mailov od začiatočníkov, aby sme fungovanie základných hardvérových komponentov ako sú tlačidlá, LED diódy, displeje popisovali podrobnejšie a ukázali ich ovládanie pomocou najrozšírenejších mikrokontrolérových dosiek. Preto, aby sme dokončili základný prehľad možností programovania ESP 32 v jazyku Micropython, zaraďujeme najskôr kapitolu o jeho fungovaní ako webového servera.   

 Využijeme knižnicu Octopus od českej firmy Octopuslab.cz. Inicializácia tejto knižnice je popísaná v štvrtej časti https://www.pcrevue.sk/a/IoT-prakticky--Python-na-ESP32-IV--kniznica-octopus-na-obsluhu-hardveru-a-komunikacie Knižnica obsahuje triedy funkcií na ovládanie rôzneho hardvéru a komunikačných rozhraní 

Najskôr je potrebné inicializovať knižnicu Octopus

octopus()

Následne je treba do pamäti zaviesť triedy knižnice Octopus  potrebné na fungovanie wifi a webového servera 

from util.octopus import w, web_server 

Inicializujeme pripojenie k WiFi a následne webový server

w()
web_server()

Vypíše sa priebeh inicializácie a IP adresa

==================================================
|              web_server start >                |
==================================================
I (250082) modsocket: Initializing
--- RAM free ---> 7792
WebREPL daemon started on ws://192.168.0.117:8266
Started webrepl in normal mode
Web server started on http://192.168.0.117
>>> 

Po zadaní IP adresy do webového prehliadača sa zobrazí hlavná stránka, ktorú vygeneroval webový server. V tomto prípade je na nej ponuka odkazov na ďalšie stránky. Ak nie je webový server pripojený do domény tak počítač, tablet, či smartfón, z ktorého sa k webovému serveru pripájate musí byť pripojený v tej istej sieti ako mikrokontrolér ESP 32

Zaujímavá je stránka je „Simple testing and control“ pomocou ktorej môžete ovládať pripojený hardvér, napríklad LED diódu priamo na doske

Vytvorenie webových stránok napríklad na ovládanie inteligentnej domácnosti a ich prepojenie na kód ovládajúci hardvér nie je úloha pre začiatočníka. Ale aj začiatočníci ocenia interaktívny editor s farebným rozlíšením syntaxe, pomocou ktorého môžete písať programový kód komfortnejšie ako cez konzolovú aplikáciu typu PuTTY.

V príklade je jednoduchý kód na načítanie údajov z hallovej sondy merajúcei intenzitu magnetického poľa, ktorá je integrovaná priamo na čipe ESP 32. 

import esp32
esp32.hall_sensor()

Pokiaľ by vás zaujímal zdrojový kód HTML stránok, nájdete ho na Githube na stránke https://github.com/octopusengine/octopuslab/tree/master/esp32-micropython/www

Na ilustráciu HTML kód domovskej stránky je

Ukážeme ešte fragment kódu zo zdrojového kódu knižnice Octopus na ovládanie LED diódy a farebnej diódy Neopixel

@MicroWebSrv.route('/esp/control/led', "POST") # Set LED
    def _httpHandlerSetDevice(httpClient, httpResponse):
        data = httpClient.ReadRequestContent()
        val = int(data)
        print("control/led call: " + str(val))
        led.value(val)
        if Env.wscWS:
            if val == 2: ws.color(RED)
            if val == 3: ws.color(GREEN)
            if val == 4: ws.color(BLUE)
            if val == 5: ws.color(ORANGE)
            if val == 6: ws.color((128,0,128))
            if val == 0: ws.color(BLACK)
 
        httpResponse.WriteResponseOk(None)

 

Celý zdrojový kód súboru je na https://github.com/octopusengine/octopuslab/blob/master/esp32-micropython/util/octopus.py?  

Rekapitulácia seriálu

 

V prvej časti seriálu https://www.pcrevue.sk/a/IoT-prakticky--Python-na-ESP32--vyvojove-dosky--instalacia-Micropythonu  sme predstavili vývojové dosky s ESP32 a ukázali postup, ako do vývojovej dosky nahrať interpreter programovacieho jazyka Python, konkrétne implementáciu Micropython  od octopusLab.cz.

V druhej časti https://www.pcrevue.sk/a/IoT-prakticky--Python-na-ESP32--popis-portov-a-rozhrani  sme predstavili piny rozhrania.

V tretej časti https://www.pcrevue.sk/a/IoT-prakticky--Python-na-ESP32-III--prve-pokusy-s-hardverom sme ukázali obsluhu vstupných a výstupných portov

V štvrtej časti https://www.pcrevue.sk/a/IoT-prakticky--Python-na-ESP32-IV--kniznica-octopus-na-obsluhu-hardveru-a-komunikacie  je postup inštalácie a konfigurácie knižnice Octopus od českej firmy octopuslab.cz, ktorá obsahuje veľa funkcií na obsluhu hardvéru a komunikačných rozhraní.

V piatej časti https://www.pcrevue.sk/a/IoT-prakticky--Python-na-ESP32-V--E2-80-93-ovladanie-displejov-LED--LCD-a-OLED sme ukázali možnosti ovládania LED, LCD a OLED displejov.

Luboslav Lacko

Všetky autorove články
ESP32 Micropython Python internet veci webový server

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať