MQTT andmekäsitlusrakendus
Selleks, et MQTT protokolli järgi saadetavaid andmeid käsitleda, näiteks logida, andmeanalüüsi teha või ka visualiseerida on vaja andmekäsitlusskripti, mis saab andmed kätte, on võimeline kirjutama failidesse ja edastama infot omakorda edasi järgnevatele rakendustele, näiteks brauseripõhisele kasutajaliidesele.
MQTT olemust ja kasutusvõimalusi on varem kirjeldatud juba artiklis "Mis on MQTT"
Nüüd vaatame lähemalt, kuidas saaks Mosquito poolt edastatud andmevoost vajalikud andmd kätte ja neid täpsemalt edasi töödelda. Selleks loome Python skripti, milles on omakorda mitu tegumilõime (ingl. threading), toome esmase näite puhul neist välja kolm peamist mqtt.client võtab andmeid vastu, et need oleksid teistele tegumitele kättesaadavad teises tegumis toimub andmete logimine tavatekstilisel kujul .txt faili kolmandaks käsitleb ja serveerib Flask veebiserver kasutajaliidese poolt tehtud päringuid
Failistruktuur on järgnev /mqtt_projekt │ ├── app.py # Flask põhifail ja MQTT loogika ├── plabAndmeteLogi.txt # Logifail (tekitatakse automaatselt) ├── static/ │ ├── css/ │ │ └── style.css # Kujundus │ └── js/ │ └── script.js # jQuery/AJAX loogika └── templates/ └── index.html # Veebilehe mall Milles on Python skript app.py järgneva sisuga from flask import Flask, render_template, jsonify
app = Flask(__name__)
# Globaalne muutuja viimaste andmete hoidmiseks mälus
# MQTT seaded
def on_message(client, userdata, msg):
def start_mqtt():
# Käivitame MQTT kliendi eraldi lõimes, et Flask saaks töötada
@app.route('/')
@app.route('/get_data')
if __name__ == '__main__': | ||
Kasutajaliides templates/index.html sisaldab lihtsat tekstilist vaadet, mis teeb Flask veebiserverile päringuid, saab sellest vastu andmed ja kuvab neid brauseripõhiselt kasutajale nähtavas formaadis. <!DOCTYPE html> <script> |
Projektis kasutatava html malli puhtuse ja parema ülevaatlikkuse huvides on visuaalstiilid eraldi CSS failis static/css/style.css, võimalus on eraldi salvestada ka Javaskript, praegu on see html faili lõpus body{ .container{ #andme-kast{ #mqtt-info{
Kuidas süsteem töötab:
|
Monteeri lihtsalt ja kiiresti
Riistvara montaa¾ on jaotatud etappideks ja toetatud õppevideodega. Vaata lähemalt.
Tarkvaratugi
Loe riistvaralist portide lugemist ja muutujate defineerimist toetava tarkvarateegi kohta
