Udviklingen af netværksbaserede løsninger med ESP32 udgør et fundamentalt skridt i realiseringen af distribuerede og intelligente IoT-systemer. Det er netop gennem det trådløse netværk, at enhederne bliver mere end bare isolerede mikrokontrollere — de bliver en del af et økosystem, hvor data flyder kontinuerligt mellem sensorer, aktorer, servere og brugere.

ESP32 er udstyret med en integreret Wi-Fi-modul, der understøtter både klient- og adgangspunktsfunktioner. Ved at konfigurere ESP32 som klient kan man tilslutte den til eksisterende netværk og hente data fra internettet eller sende målinger til skyen. Omvendt, når ESP32 fungerer som adgangspunkt, etablerer den sit eget netværk, hvor andre enheder kan tilslutte sig direkte. Dette er særligt nyttigt i situationer uden eksisterende infrastruktur, eksempelvis i felten eller i midlertidige installationer.

ESP32 går dog langt videre end klassisk Wi-Fi-kommunikation. Med støtte til Wi-Fi Direct og peer-to-peer (P2P)-kommunikation bliver det muligt at etablere forbindelser direkte mellem enheder uden behov for en central router. Dette åbner for decentraliserede systemer, hvor ESP32-enheder samarbejder direkte og distribueret — en arkitektur, der ofte ses i moderne mesh-netværk og i løsninger, hvor lav latens og lokal beslutningstagning er afgørende.

Bluetooth Low Energy (BLE) tilbyder en anden dimension til ESP32’s kommunikationsevner. Hvor Wi-Fi typisk bruges til højhastighedskommunikation over længere afstande, er BLE designet til lavt strømforbrug og kort rækkevidde. Ved at implementere ESP32 som BLE-server eller -klient, kan man oprette små, energieffektive netværk til kommunikation mellem IoT-enheder og f.eks. smartphones eller wearables. Denne protokol er særligt velegnet til interaktive løsninger, hvor brugeren skal kommunikere direkte med en sensor eller aktuator uden at være afhængig af et fuldt netværk.

IoT er imidlertid ikke begrænset til lokal trådløs kommunikation. Ved at udvide ESP32’s funktionalitet med moduler til mobilnetværk, såsom 4G eller NB-IoT, opnår man fjernkommunikation og global rækkevidde. Integrationen med BG95-moduler tillader ESP32 at forbinde sig til mobilnetværk, hvilket åbner op for realtidsovervågning og kontrol, selv i områder uden adgang til Wi-Fi. NB-IoT, som er optimeret til lav datahastighed og lang batterilevetid, er ideel til sensorapplikationer, hvor data skal sendes med længere intervaller og hvor energibesparelse er kritisk.

LoRaWAN udvider mulighederne yderligere ved at tilbyde lavenergikommunikation over store afstande — ofte op til flere kilometer. Sammen med ESP32 kan denne protokol bruges i landbrugsprojekter, miljøovervågning eller smarte byer, hvor installationerne er spredt over store geografiske områder og netværksinfrastrukturen er sparsom eller ikke-eksisterende. LoRaWAN’s evne til at dække vidtrækkende områder med minimal strømforbrug gør det muligt at implementere batteridrevne enheder med flere års levetid uden vedligeholdelse.

Forståelsen af forskellen mellem netværkstyper — LAN, WAN og PAN — er essentiel for korrekt protokolvalg. Lokale netværk (LAN) egner sig til hjemmet eller kontormiljøet, hvor høj hastighed og lav latenstid er nødvendig. PAN er målrettet personlige områder med meget kort rækkevidde, mens WAN forbinder enheder over globale afstande. Valget af protokol bør ske ud fra applikationens energibehov, ønskede rækkevidde, datamængde og tilgængelig infrastruktur.

Ved at mestre ESP32’s trådløse funktioner kan udvikleren opbygge fleksible og skalerbare systemer, hvor kommunikation ikke er begrænset af kabler, lokalitet eller energikrav. Hver teknologi bringer sine styrker og kompromisser, og det er netop i kombinationen af disse, at de mest innovative løsninger opstår. Der er ingen universel løsning — det handler om at vælge rigtigt, optimere og tænke i arkitektur frem for kun i funktionalitet.

Det er vigtigt at forstå, at selv om mange protokoller teknisk kan implementeres, er deres praktiske værdi afhængig af en række faktorer, som sjældent diskuteres i tekniske manualer. Netværkssikkerhed bør aldrig være sekundær, især i systemer, der opererer over offentlige netværk. Autentificering, kryptering og segmentering af netværket er ikke valgfrie elementer — de er fundamentale. Ligeledes skal man forholde sig til datalagring, håndtering af forbindelsestab og fallback-mekanismer.

Udvikleren må også tage hensyn til regulatoriske begrænsninger, især ved anvendelse af radiofrekvenser og mobilnetværk. Og i takt med at projekterne skaleres, bliver behovet for remote device management, OTA-opdateringer og enhedssporing ikke blot relevant, men afgørende.

Hvordan fungerer MQTT, og hvad skal man forstå om protokollens grundprincipper?

MQTT-protokollen bygger på en pub-sub (publicer-abonner) model, som effektivt faciliterer kommunikation mellem enheder i IoT-verdenen. Den opererer med tre centrale aktører: publicister, abonnenter og en central mægler — broker. Publicisterne er enheder, der producerer data og ønsker at dele disse data ved at sende beskeder til specifikke emner (topics) på MQTT-brokeren. Disse emner fungerer som kanaler, der kategoriserer og organiserer informationen. Abonnenterne er enheder, som interesserer sig for bestemte data og tilmelder sig de relevante emner hos broker’en for at modtage beskeder. Broker’en agerer som en mellemmand, der modtager beskeder fra publicister og sender dem videre til de abonnenter, som har tilmeldt sig det pågældende emne, uden at publicister og abonnenter behøver at kende hinandens identitet eller adresse.

Når en publicist sender en besked til et emne, modtager broker’en beskeden og vurderer, hvilke abonnenter der er interesserede i netop dette emne. Beskeden videresendes derefter til alle relevante abonnenter. Her kan abonnenterne vælge en kvalitetsservice (Quality of Service, QoS) for levering af beskeder, som definerer pålideligheden af beskedleveringen: QoS 0 betyder, at beskeden leveres højst én gang uden kvittering, QoS 1 sikrer, at beskeden leveres mindst én gang med en kvittering tilbage til publicisten, og QoS 2 garanterer, at beskeden leveres præcis én gang ved hjælp af en firetrins håndtrykprotokol, der indebærer, at publicist og modtager udveksler bekræftelser to gange for at sikre entydighed og pålidelighed.

MQTT understøtter også "retained messages", hvor broker’en gemmer den senest modtagne besked som en "sidst kendte værdi" for et emne. Det betyder, at nye abonnenter straks modtager denne besked ved tilmelding, hvilket sikrer, at de altid får opdateret information uden ventetid. En yderligere funktion, Last Will and Testament (LWT), tillader klienter at definere en besked, som broker’en sender, hvis en enhed uventet mister forbindelsen. Dette er vigtigt for at informere andre enheder om status og tilgængelighed, eksempelvis hvis en sensor går offline.

I praksis foregår kommunikationen ved, at enheder som en ESP32 kan abonnere på emner som LED- og servo-kontrol, og dermed modtage kommandoer til at tænde eller slukke en LED eller flytte en servo. Samtidig kan den sende data, fx temperaturmålinger, til et separat emne. For at facilitere denne kommunikation kræves en MQTT-broker, som kan være installeret lokalt eller tilgås som en offentlig cloud-tjeneste, eksempelvis HiveMQ. Implementeringen kræver en kodebase, der håndterer Wi-Fi-forbindelse, MQTT-klientopsætning, emnetilmelding og modtagelse af beskeder via callback-funktioner, samt styring af sensorer og aktuatorer.

Det væsentlige ved MQTT er dets lette og effektive design, der gør det velegnet til IoT-miljøer med begrænsede ressourcer og båndbredde. Protokollen muliggør pålidelig og ordnet datakommunikation uden at skabe unødig kompleksitet eller netværkstrafik.

Det er vigtigt at forstå, at MQTT ikke blot er en simpel datatransportmekanisme. Det er et system, der bygger på en arkitektur med løs kobling mellem enheder, hvilket giver stor fleksibilitet og skalerbarhed. Sikkerheden omkring MQTT, som for eksempel autentifikation og kryptering, er ikke en indbygget del af protokollen, men skal implementeres særskilt, typisk via TLS/SSL. Derfor bør læseren være opmærksom på, at brug i følsomme eller kritiske applikationer kræver ekstra sikkerhedsmekanismer.

Endvidere skal man være klar over, at kvaliteten af servicen (QoS) har indflydelse på både pålidelighed og båndbreddeforbrug. Valg af QoS-niveau bør derfor afstemmes efter anvendelsens krav til realtid, pålidelighed og netværkskapacitet. Forståelsen af retained messages og LWT er central for at kunne designe robuste IoT-løsninger, der håndterer både netværksafbrud og nye abonnenter effektivt uden tab af kritisk statusinformation.

I alt fremstår MQTT som en specialiseret, men alligevel enkel protokol, der effektivt understøtter moderne IoT-kommunikation ved at fokusere på en minimal, men fleksibel infrastruktur, hvor broker’en er kernen i al datatransmission.

Hvordan visualiserer og kontrollerer man IoT-data i Grafana med FlightSQL og MQTT?

Efter installationen af FlightSQL-plugin'et i Grafana og konfigurationen af forbindelsen til InfluxDB ved hjælp af token-baseret autentificering, åbner sig muligheden for at omdanne rådata fra IoT-enheder til overskuelige og strukturerede visualiseringer. FlightSQL tillader SQL-lignende forespørgsler direkte mod tidsseriedata, hvilket skaber en naturlig og fleksibel tilgang til dataselektion og præsentation.

I praksis starter processen med oprettelse af en ny forbindelse i Grafana, hvor man tilføjer klynge-URL’en (uden https:// og med port 443), aktiverer TLS/SSL, vælger token som autentificeringsmetode og indsætter den relevante API-nøgle fra InfluxDB. I metadata-definitionsfeltet specificeres bucket-navnet med nøgle-værdipar som eksempelvis bucket-name: Home data. Herefter gemmes indstillingerne, og forbindelsen etableres.

Visualiseringen begynder med oprettelsen af en ny panel i Grafana-dashboardet. Ved valg af FlightSQL som datakilde åbnes et panel, hvor man kan redigere SQL-forespørgsler. En simpel forespørgsel som:

sql
SELECT time, temperature AS Kitchen FROM "House_data" WHERE "device"='kitchen'

returnerer temperaturdata for køkkenet. For at udvide visningen til hele hjemmet tilføjes yderligere forespørgsler for bedroom, livingroom og bathroom, hvor kun værdien i WHERE-betingelsen ændres. Panel-titlen og enhed sættes herefter til Celsius.

Den samme tilgang anvendes for fugtighedsdata, hvor humidity erstatter temperature, og enheden skiftes til procent. Dette systematiske mønster gentages for bevægelsessensor og LDR (lysintensitet), hvor forespørgslerne målrettes hver enhedstype og deres respektive rum. Når alle forespørgsler er tilføjet og panellerne gemt, fremstår et fuldt funktionelt dashboard, der i realtid viser hjemmets mikroklimatiske forhold.

Men visualisering er kun én side af IoT-integration – den anden er kontrol. Med MQTT-protokollen implementeres tovejskommunikation, hvilket muliggør fjernstyring af fysiske apparater. Ved at anvende HiveMQ’s offentlige MQTT-broker og ESP32-mikrokontrolleren konfigureres et system, hvor beskeder på specifikke emner (topics) som /door/lock modtages og tolkes som kommandoer.

Koden, der uploades til ESP32-enheden, inkluderer både konfiguration til WiFi, forbindelse til InfluxDB samt MQTT-klientopsætning med callback-funktion. Ved modtagelse af en besked med payload 1, aktiveres en servo-motor, som fysisk åbner døren. Efter en kort forsinkelse returnerer servoen til udgangspositionen. Dette muliggør ikke blot visualisering men også direkte interaktion med miljøet.

Systemet er organiseret ved hjælp af FreeRTOS – et realtidsoperativsystem, der gør det muligt at køre flere opgaver parallelt. Her anvendes to samtidige løkker: én for MQTT-kommunikation og én for datatransmission til InfluxDB. FreeRTOS sikrer dermed højere robusthed og responsivitet i systemet, især i ressourcebegrænsede miljøer.

Det er vigtigt, at brugeren forstår, at FlightSQL er et interface, der bygger bro mellem SQL-lignende syntaks og kolonnelagrende tidsseriedatabaser, hvilket adskiller det fra traditionel relationel tilgang. Dette kræver præcis håndtering af tidspunkter og nøglebaseret metadata. Samtidig skal der være fokus på datastruktur i InfluxDB, da datapræsentation i Grafana i høj grad afhænger af ensartethed og korrekthed i inputdata.

Derudover bør læseren forstå vigtigheden af korrekt konfiguration af sikkerhedslag i MQTT-kommunikation, især hvis der arbejdes med private enheder og netværk. Selvom HiveMQ's offentlige broker er egnet til prototyping og eksperimentering, anbefales det i produktionssystemer at anvende autentificerede og krypterede forbindelser med egne brokere og adgangskontroller.