Blog GrowGuard Ghid GrowGuard

Integrare MQTT în seră: workflow de comisionare pentru senzori și comenzi către GrowGuard

Învață cum funcționează MQTT în seră și cum îl comisionezi practic: topic-uri, QoS, mesaje retained, unități și verificări independente. Include exemple ipotetice și pași clari pentru a conecta senzori și comenzi printr-un broker către GrowGuard.

2026-07-26Actualizat: 2026-09-12GrowGuard
Integrare MQTT în seră: workflow de comisionare pentru senzori și comenzi către GrowGuard

Într-o seră modernă, problema rar este lipsa senzorilor, ci faptul că datele și automatizările vin din surse diferite: stații meteo, controlere de ventilație, dozatoare, logger-e, gateway-uri. MQTT este unul dintre cele mai folosite „limbaje” de integrare între aceste echipamente, pentru că permite trimiterea rapidă a evenimentelor și măsurătorilor către un broker, apoi către aplicații care le consumă.

Ca să legi corect o seră de o platformă de monitorizare, trebuie să separi trei lucruri: măsurarea (ce instrument și în ce mediu măsoară), transportul (cum ajung mesajele, cât de proaspete sunt, ce se întâmplă la întreruperi) și acțiunea (cine comandă efectiv un releu, o vană sau o deschidere). MQTT rezolvă transportul și semnalizarea, nu „adevărul” din teren.

Articolul explică fundamentele MQTT relevante în sere și un workflow de comisionare utilizabil: alegerea topic-urilor, payload-ului și unităților, setări de QoS și retained, securitate, plus verificări independente care te ajută să deosebești o problemă reală (ex. umiditate ridicată) de una de integrare (timestamp greșit, senzor blocat, mesaj repetat).

1) Ce este MQTT în practică: broker, topic-uri și separarea rolurilor

MQTT este un protocol de tip publish/subscribe: dispozitivele publică mesaje pe topic-uri, iar consumatorii se abonează la topic-urile de interes printr-un broker. În seră, asta înseamnă că un nod de temperatură poate publica periodic, un controler poate publica starea clapetelor, iar un integrator poate publica „comenzi” către un PLC. Mecanismul important: brokerul rutează mesaje, dar nu validează semnificația lor agronomică.

Ce să observi: consistența topic-urilor și a semnificației lor. Verifică independent: notează pe teren ce senzor este unde și compară cu topic-ul și identificatorul din mesaj; o etichetare greșită produce decizii greșite chiar dacă datele „curg”. Decizie practică: definește de la început cine publică măsurători și cine publică comenzi, ca să eviți bucle. Verificarea rezultatului: urmărește dacă același eveniment apare o singură dată în sistem, nu duplicat din două surse.

2) Proiectarea topic-urilor: ierarhie, zone și claritate operațională

În sere, topic-urile trebuie să fie stabile și ușor de citit: o ierarhie tip fermă/seră/zonă/dispozitiv/mărime reduce confuziile. Un exemplu ipotetic: „ferma1/sera2/zonaA/senzor7/air/temperature” versus „temp1”. Include mediul măsurat (air, substrate, water) și mărimea (temperature, rh, co2, ec, ph). Un senzor de temperatură nu măsoară EC/pH; pentru EC/pH ai sonde dedicate și, ideal, clarifici dacă EC este în apă de dren, soluție de irigare sau extract din substrat.

Ce să observi: dacă topic-ul te ajută să localizezi fizic și agronomic valoarea. Verifică independent: fă o hartă simplă cu zone și verifică pe loc două puncte (ex. zona A și B) cu un instrument portabil, ca să confirmi că mapping-ul pe topic este corect. Decizie practică: dacă ai microclimate distincte, păstrează topic-uri pe zone, nu agregate. Verificarea rezultatului: după o zi de funcționare, compară graficele între zone; diferențele trebuie să aibă sens (umbrire, ventilație, capete de rând).

3) Payload și unități: JSON, câmpuri obligatorii și conversii controlate

MQTT nu impune formatul payload-ului; în integrare contează să fie explicit. De obicei se folosește JSON cu câmpuri clare: valoare, unitate, timestamp, calitate. Un exemplu ipotetic: {"v": 24.6, "u":"°C", "ts":"2026-09-12T10:21:00Z", "q": "ok"}. Pentru umiditate relativă, precizează %; pentru CO2, ppm; pentru EC, specifică unitatea (de ex. mS/cm) și mediul măsurării (apă de dren vs soluție). Pentru VPD, reține că este o estimare derivată din temperatura aerului și umiditate; temperatura frunzei poate fi diferită, mai ales în soare sau la stres hidric.

Ce să observi: schimbări bruște care par „salturi de unități” (ex. °C devenit °F). Verifică independent: ia 2–3 valori brute din payload și calculează manual conversia sau compară cu un al doilea instrument. Decizie practică: standardizează unitățile la sursă (publisher), nu în trei locuri diferite. Verificarea rezultatului: rulează o perioadă de 24 ore și caută anomalii de tip „plateau” sau „dinți de fierăstrău” care indică rotunjire sau mapare greșită.

4) QoS, duplicate și faptul că livrarea nu înseamnă acțiune fizică

MQTT are niveluri de QoS (calitate a serviciului) care descriu garanția de livrare a mesajului între client și broker, nu confirmarea unei acțiuni fizice în seră. Chiar dacă primești „exactly once” pe transport, nu înseamnă că o vană s-a deschis sau că o pompă a pornit; asta trebuie confirmat separat, printr-un semnal de stare (feedback) de la actuator sau PLC. În plus, anumite configurații pot genera mesaje duplicate, iar consumatorul trebuie să fie tolerant la repetiții.

Ce să observi: dacă la reconectare apar rafale de mesaje vechi sau repetate. Verifică independent: urmărește log-ul brokerului și un contor de secvență (dacă îl ai în payload) ca să detectezi duplicarea. Decizie practică: pentru comenzi, proiectează întotdeauna un canal separat de „stare”, publicat de echipamentul care execută. Verificarea rezultatului: după o comandă ipotetică de „deschidere aerisire”, confirmă că starea raportată (ex. procent deschidere) se schimbă și rămâne stabilă, nu doar că a fost „trimis mesajul”.

5) Mesaje retained și prospețimea datelor: cum eviți decizii pe valori „îmbătrânite”

Mesajele retained fac ca brokerul să păstreze ultimul mesaj pe un topic și să îl trimită imediat noilor abonați. În sere e util pentru „ultima stare”, dar riscant dacă nu verifici vârsta datelor: un client poate porni și primi instant o temperatură veche, aparent validă. De aceea, timestamp-ul și o regulă de prospețime sunt esențiale: orice consumator care generează alerte sau acțiuni trebuie să verifice că ts este recent și coerent cu ora curentă.

Ce să observi: valori care par „înghețate” (nicio variație) dar fără alarmă de senzor. Verifică independent: compară ts din payload cu un ceas de referință și verifică pe teren dacă mediul s-a schimbat (de ex. deschizi o ușă și ar trebui să se vadă o variație). Decizie practică: stabilește praguri de „data stale” (date învechite) și tratează-le ca incident de integrare, nu ca realitate din seră. Verificarea rezultatului: simulează o întrerupere de rețea și confirmă că la revenire sistemul nu ia decizii pe retained vechi.

6) Securitate și autentificare: minimul care contează în producție

În producție, MQTT trebuie tratat ca infrastructură critică: autentificare și securitate de transport nu sunt opționale. Un broker expus sau un client fără control poate publica pe topic-uri de comandă și poate crea comportamente periculoase. Chiar și numai pe monitorizare, date falsificate pot declanșa alerte inutile și decizii greșite. Configurează utilizatori separați pentru publish și subscribe, limitează permisiunile pe topic-uri și folosește transport securizat acolo unde arhitectura permite.

Ce să observi: apariția unor topic-uri noi neplanificate sau mesaje cu structuri diferite. Verifică independent: audit de permisiuni pe broker și o listă „allow” de topic-uri acceptate. Decizie practică: separă clar mediile (test vs producție) și nu refolosi credențiale între locații. Verificarea rezultatului: după rotirea unei parole, confirmă că doar clienții așteptați se reconectează și că nu există publicații anonime.

7) Workflow de comisionare în 10 pași: de la senzor la tablou operațional

Un workflow utilizabil de comisionare începe cu inventarul: ce mărimi măsori, cu ce sondă și în ce mediu. Apoi: (1) definești topic-urile și unitățile; (2) configurezi brokerul și permisiunile; (3) publici dintr-un singur senzor „pilot”; (4) verifici timestamp, unități, câmpuri; (5) verifici pe teren cu un instrument independent; (6) abia apoi scalezi la restul. Dacă integrezi în GrowGuard prin MQTT, tratează partea de interpretare a payload-ului ca pe o etapă separată de instalarea fizică a senzorului.

Ce să observi: diferențe între „ce crezi că ai conectat” și ce apare ca flux de date. Verifică independent: pentru fiecare tip de senzor, fă un test simplu de stimulare: încălzire ușoară pentru temperatură, respirație/ventilație pentru CO2, umezire controlată pentru umiditate (fără a deteriora). Decizie practică: nu activa alerte până nu ai minim 24–48 ore de date coerente și o verificare încrucișată. Verificarea rezultatului: după activare, urmărește dacă alertele se corelează cu evenimente reale (aerisire deschisă, irigare pornită), nu cu resetări.

8) Automatizări prin MQTT: comenzi, interblocări și confirmarea prin feedback

A lega automatizări prin MQTT înseamnă, de regulă, un proiect de integrare separat: un controller/PLC primește comenzi (topic de „setpoint” sau „request”) și publică stări (topic de „status”). Mecanismul corect este „cerere + confirmare”: comanda nu este adevărul; adevărul este starea raportată de echipamentul care a executat. În seră, interblocările sunt critice: de exemplu, ventilația poate depinde de vânt, temperatură, poziția ecranelor, iar o comandă simplă poate fi refuzată de PLC din motive de siguranță.

Ce să observi: comenzi acceptate la nivel de mesaj, dar fără schimbare de stare, sau stări care oscilează (loop de control). Verifică independent: verifică fizic actuatorul (poziție, curent, indicator local) și compară cu status-ul publicat. Decizie practică: definește timeouts și stări „fault” (ex. comandă trimisă, dar fără confirmare). Verificarea rezultatului: după o acțiune ipotetică, verifică efectul climatic așteptat (temperatură/RH/VPD) și confirmă că schimbarea se explică prin acțiune, nu prin vreme sau un alt echipament.

Concluzie

MQTT poate unifica senzorii și automatizările din seră într-o arhitectură coerentă, dar calitatea rezultatelor depinde de disciplină: topic-uri clare, payload cu unități și timestamp, reguli de prospețime, securitate, și mai ales separarea între „mesaj livrat” și „acțiune executată”. O punere în funcțiune bună este una verificabilă pe teren, nu doar în grafice.

Dacă vrei să folosești datele în operare zilnică, construiește integrarea astfel încât fiecare alarmă sau comandă să aibă o verificare independentă și un mod de a confirma rezultatul. Pentru proiecte de integrare MQTT cu GrowGuard, începe cu un senzor pilot și extinde doar după ce fluxul, semnificația și feedback-ul sunt stabile.