Práca so sieťou

Práca so sieťou na doske Raspberry Pi Pico W/H

  • Ako sme sa rozprávali, mikrokontrolér ESP32 je vybavený WiFi modulom s podporou štandardu 802.11 b/g/n a so štandardnou podporou bezpečnostných vlastností IEEE 802.11 ako sú WFA, WPA/WPA2_ a WAPI.

  • Mikrokontrolér vie dokonca pracovať ako Access Point. Tým pádom môže poskytovať pre ostatné zariadenia v sieti rozličné služby. Napríklad môže slúžiť ako webový server, ktorý bude poskytovať webové používateľské rozhranie pre ovládanie pripojených akčných členov alebo môže poskytovať len stavovú stránku s informáciami zozbieranými z pripojených senzorov.

The network Module

  • Pre prácu so sieťou má ESP32 k dispozícii modul network. Pred začiatkom práce ho teda importneme:

    >>> import network
  • Následne vytvoríme WiFi sieťové rozhranie, ktoré bude pracovať v režime pracovnej stanice (z angl. station interface) a aktivujeme ho:

    >>> wlan = network.WLAN(network.STA_IF)
    >>> wlan.active(True)
  • Následne sa môžeme pozrieť, aké bezdrôtové siete máme v dosahu:

    >>> wlan.scan()
  • Výsledkom bude zoznam sietí s informáciami ako:

    • SSID siete
    • MAC adresa rozhrania
    • sila signálu
    • číslo kanála
  • Ak sa teda chceme k niektorej z nich pripojiť, potrebujem poznať SSID siete a heslo pre prístup k nej. Samotné pripojenie vykonáme pomocou volania metódy .connect() nad objektom wlan:

    >>> wlan.connect('SSID', 'password')
  • Po (ne)úspešnom pripojení môžeme overiť stav pripojenia volaním metódy .isconnected(), ktorá vráti hodnotu True, ak sme sa úspešne pripojili alebo hodnotu False, ak nie. Nastavenie pripojenia vieme overiť volaním metódy .ifconfig():

    >>> wlan.isconnected()
    True
    >>> wlan.ifconfig()
    ('192.168.1.128', '255.255.255.0', '192.168.1.1', '192.168.1.1')
  • Len pre úplnosť je možné dodať, že MAC adresu zariadenia môžeme získať takto:

    >>> wlan.config('mac')
    b'`\x01\x94\x1b\xf7\xb1'
  • Od tohto momentu je mikrokontrolér pripojený a môžeme s ním vykonávať sieťové operácie.

Pripojenie k WiFi

  • Pripojiť sa k sieti je vhodné počas štartu zariadenia, resp. vzhľadom na šetrenie spotreby sa jemožné pripájať k sieti podľa potreby - napríklad v pravidelných intervaloch niekoľkokrát do dňa. Za tým účelom je možné použiť napr. túto funkciu:

    def do_connect(ssid, password):
        import network
        wlan = network.WLAN(network.STA_IF)
        wlan.active(True)
        if not wlan.isconnected():
            print('connecting to network...')
            wlan.connect(ssid, password)
            while not wlan.isconnected():
                pass
        print('network config:', wlan.ifconfig())