Avtor: dr. Simon Vavpotič
V prvem nadaljevanju smo spoznali, kako enostavno je namestiti programsko opremo Tasmota v ESP32 modul, tokrat bomo priključili tipko, releja in BMP280 senzor zračnega tlaka in temperature. Uporabili bomo tudi ožičeno Ethernet komunikacijo in programirali v jeziku Berry.
Tokrat sem za delo z LilyGO-PoE razvojno ploščo z ESP32 modulom uporabil najnovejši Raspberry Pi Compute Module 5 Development Kit razvojni komplet (več o njem lahko preberete v posebnem članku), saj omogoča enostaven dostop do razširitvene vtičnice s serijskim vmesnikom, ki ga potrebujemo za programiranje ESP32 modula s Tasmota programsko opremo, ima pa tudi 1 Gb/s Ethernet priključek in zmogljiv Wi-Fi/Bluetooth modul, ki ju uporabljamo pri rednem obratovanju LilyGO-PoE.
Po vnosu Tasmota programske opreme LilyGO-PoE z ESP32 modulom deluje kot samostojen krmilni računalnik, ki ga upravljamo prek intraneta ali interneta, pri čemer je vseeno ali je osnovna povezava vzpostavljena prek Wi-Fi in dostopne točke ali neposredno prek ožičene Ethernet povezave. Wi-Fi in Bluetooth komunikacije lahko prek ukazne konzole, če zaradi večje varnosti in zanesljivosti raje uporabljamo Ethernet povezavo, s preprostim ukazom »wifi 0« tudi izključimo.
Ta vsebina je samo za naročnike
Varen vnos Wi-Fi poverilnic in vzpostavitev Wi-Fi povezave preko konzole
V preteklem nadaljevanju smo poverilnice vnesli prek spletnega obrazca, kar je lahko v nekaterih primerih tudi varnostno tveganje. Zato povejmo, da jih lahko vpišemo tudi preko zaporedne povezave, prek katere v modul sprogramiramo osnovno programsko kodo, z ukazom: »Backlog SSID1 ;Password1 «.
Če želimo, lahko za vsak primer vnesemo še poverilnice za drugo dostopno točko, ki jo bomo potrebovali, če bi prva prenehala delovati: »Backlog SSID1 ;Password1 ; SSID1 ; Password1 «.
Na ta način se bomo izognili vsem varnostnim tveganjem. Če v omrežju ni na voljo DHCP storitev, moramo vnesti še IP naslov in masko lokalnega podomerežja. Primer: »IPAddress 192.168.1.1« in »Subnetmask 255.255.255.0«.
Nato ESP32 modul z ukazom »wifi 1« vključimo (če ni že vključen) in ga z ukazom »restart 1« po potrebi ponovno zaženemo. ESP32 modul po vklopu oziroma ponovnem zagonu začne povezovanje z dostopno točko, katerega potek lahko spremljamo v ukazni konzoli. Ob uspešni vzpostavitvi povezave ESP32 modul sporoči tudi IP naslov, prek katerega je dostopen v lokalnem obrežju (npr. 192.168.1.1), kar je pomembno predvsem takrat, ko uporabljamo DHCP.
Vzpostavitev in uporaba Ethernet povezave
LilyGO-PoE razvojna ploščica za Ethernet komunikacije uporablja LAN8720A vmesniški čip, ki je najpogostejši pri ESP32 rešitvah in je bil dozdevno prvi podprt v Tasmota razvojnem okolju. V ESP32 vgrajena Ethernet funkcijska enota se z LAN8720A večinoma poveže prek vnaprej določenih priključkov, za preostala krmila priključka pa imamo možnost omejene izbire izmer preostalih GPIO priključkov, če razvijamo lastno tiskano vezje. V nasprotnem, moramo v spletu poiskati ustrezen JSON opis.
Predpogoj za uporabo Ethernet povezave z LilyGO-PoE razvojno ploščico je vnos njenega natančnega opisa v obliki JSON zapisa. Tasmota razvojno okolje ima vnaprej pripravljene konfiguracije za neposredno podprte razvojne ploščice, za ostale (npr. že omenjeno LilyGO-PoE) pa lahko JSON opis prenesemo iz internetnih portalov za razvijalce računalniške elektronike, kot je: templates.blakadder.com.
Opis plošče vnesemo tako, da v glavnem meniju najprej izberemo Configuration in nato iz naslednjega menija še Configure other. Opis za svojo razvojno ploščico, ki sem ga našel na spletni strani: templates.blakadder.com/lilygo-T-Internet-POE.html: {„NAME“:“LilyGO T-Internet-POE“, „GPIO“:[0, 1, 672, 1, 1, 0, 0, 0, 1, 6720, 736 , 704, 1, 0, 5600, 0, 0, 0, 0, 5568 , 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1],“FLAG“:0,“BASE“:1,“CMND“:“EthType 0|EthClockMode 3|EthAddress 0“}, sem nato preprosto prekopiral v prvo polje pogovornega okna in spodaj izbral kljukico Activate, nato pa pritisnil gumb Save, spodaj. Če želite novo razvojno ploščo vnesti med prednastavljene, lahko nato iz menija Configuration nato prikličete še meni Configure Template, iz katerega nato trenutno konfiguracijo shranite kot predlogo, ki jo lahko uporabite pri ponovnem nameščanju.
Tasmota programska oprema ima vgrajeno tudi funkcijo, ki prepozna če konfiguracija ne deluje. V tem primeru celotno konfiguracijo izbriše in ponovno zažene Wi-Fi povezavo kot nezaščiteno dostopno točko za vnos poverilnic (več v preteklem nadaljevanju).
Releja, tipka in vremenski senzor
Po vzpostavitvi zanesljive in hitre omrežje povezave, se lahko v meniju Configuration/Configure Module lotimo nastavitev zunanjih priključkov modula, pri čemer je še posebej pomemben prej omenjeni opis razvojne plošče. Pravilen opis zagotavlja, da ne bomo spreminjali funkcij vitalnih priključkov, na primer tistih, ki so namenjeni komunikaciji z LAN8720A modulom, saj bi s tem porušili osnovno delovanje.
Primer nastavitev GPIO priključkov za krmiljenje dveh relejev (R1=GPIO12, R2=GPIO16), spremljanje stanja tipke (B1=GPIO04) in komunikacijo z BMP280 senzorjem vidimo tudi na sliki 2. Za BMP280 potrebujemo priključka SCL in SDA, za katera lahko izberem katerakoli GPIO priključka (moja izbira: SCL=GPIO32 in SDA=GPIO33). Pri izbiri si pomagamo s Tasmota konfiguratorjem v že omenjenem meniju Configuration/Configure Module.
Gonilnik za senzor BMP280 (temperatura, zračni tlak), BME280 (temperatura, zračni tlak, relativna vlažnost) in BME680 (temperatura, zračni tlak, relativna vlažnost in meritev onesnaženosti zraka) je že vgrajen v binarno datoteko, z osnovno programsko kodo Tasmota za ESP32 in samodejno ugotovi tip senzorja in se z njim poveže ob zagonu ESP32, ne da bi morali za to napisati eno samo vrstico programske kode.
Razvojna ploščica GYBMEP ima nameščen 3,3-voltni napetostni regulator z nizkim padcem napetosti in je prednastavljena za delovanje prek I2C vodila, zato jo lahko napajamo s 3,3 V ali 5 V, obenem pa jo povežemo zgolj prek dveh GPIO priključkov, lahko pa uporabimo tudi vezje brez regulatorja, če imamo na voljo stabilno 3,3-voltno napajanje.
Podatkovni pogoni in datotečni sistemi
Tasmota podpira dva podatkovna pogona: pogon manjše velikosti v Flash pomnilniku ESP32 (največ nekaj MB) in pogon na SD kartici, ki jo povežemo z modulom. Razvojna ploščica LilyGO-PoE ima ESP32 vgrajeno režo za SD kartice, v kateri samodejno zazna vstavljeno SD kartico s datotečnim sistemom FAT12, FAT16 in FAT32. Največja kartica, ki sem jo uspešno preizkusil ima kapaciteto 128 GB, vendar naj takoj dodam, da kartice z datotečnim sistemom exFAT ne delujejo. Po drugi strani, utegnemo imeti težave s prikazov vsebine datotečnih map, v katerih je zelo veliko datotek. Je pa res, da je podpora za delo s karticam SD zadovoljiva za potrebe Tasmota okolja.
Hkrati sta lahko aktivna oba podatkovna pogon, pri čemer lahko v meniju Tools/Manage File System med njima izbiramo s klikom na tip podatkovnega pogona SDcard in FlashFS.
Berry za vse!
Programski jezik Berry je preprostejši od C++, ki ga uporabljamo pri Arduino projektih, zato pa omogoča vse, kar potrebujemo za izdelavo krmilne logike. V naslednjem primeru vidimo program s štirimi programskimi stavki:
import string
for i:0..9 print(string.format(„Test: %d“,i)) end
tasmota.set_power(1,false)
print(tasmota.read_sensors())
V prvi vrstici uvozimo programsko knjižnico string, ki jo potrebujemo za delo s podatkovnimi nizi. V drugi vrstici vidimo primer programske zanke, s katero desetkrat izpišemo besedo test, poleg pa še zaporedno številko izpisa. V tretji vrstici je prikazan ukaz za krmiljenje stanja releja 1, ki ga postavimo v stanje izklopljeno (false), medtem ko v zadnji vrstici pridobimo podatke s senzorjev. V našem primeru je priključen samo BMP280 senzor, zato dobimo samo njegovi trenutni meritvi temperature in zračnega tlaka.
Berry omogoča tudi tvorbo pravil (rules), oziroma podprogramov, ki se samodejno izvedejo, ko so izpolnjeni vnaprej določeni pogoji. Vendar o tem več v naslednjem nadaljevanju. Več primerov programov v skriptnem jeziku Berry lahko najdemo na spletni strani: tasmota.github.io/docs/Berry-Cookbook.
Dnevnik dogodkov
Strežniška programska oprema Syslog Server za Linux in Windows omogoča beleženje dnevnika dogodkov na centralnem računalniku prek vrat 514. Medtem, ko ima veliko Linuxov Syslog Server že vgrajen in ga moramo samo aktivirati, ga lahko v Windows namestimo kot programsko aplikacijo. Če uporabljamo požarni zid, moramo omogočiti izjemo za vrata 514.
Nastavitve za povezavo LilyGO-PoE s ESP32 modulom s strežnikom Syslog Server izvedemo v meniju Configuration/Configure Logging, v katerem nastavimo nivo beleženja za posamezne vrste komunikaciji. Pri tem nastavimo tudi periodo posredovanja informacij strežniku v sekundah. Nivojev beleženja je pet: 0 – brez (None), 1 – beleženje napak (Error), 2 – informativno (Info), 3 – razhroščevanje (Debug) in 4 – več razhroščevanja (More debug).
Prihodnjič
Tokrat smo poznali, kako enostavno povezati releja, tipko in BMP280 senzor na LilyGO-PoE modul s Tasmoto programsko opremo. V naslednjem nadaljevanju se lotimo kompleksnejših problemov, prebrali pa boste lahko tudi o načinu povezovanja Tasmota naprav v različne aplikacije za nadzor doma, ki jih poganjamo na nadzornih računalnikih, ki usklajujejo delovanje različnih pametnih naprav.