2 | Πώς να αναπτύξετε μια συσκευή IoT χρησιμοποιώντας το RIOT-OS και να την συνδέσετε στο Thingsboard χρησιμοποιώντας το MQTT-SN

Σε αυτό το σεμινάριο θα χτίσουμε πάνω από τα συστατικά που βασίζονται σε σύννεφο που αναπτύχθηκαν στο πρώτο μέρος: Πώς να ρυθμίσετε ένα σύστημα IoT χρησιμοποιώντας το ThingsBoard. Εάν δεν το έχετε ήδη διαβάσει, σας συνιστώ να το κάνετε.

Τώρα θα αντικαταστήσουμε τους εικονικούς περιβαλλοντικούς σταθμούς που αναπτύσσονται χρησιμοποιώντας Python με νέους που κατασκευάστηκαν χρησιμοποιώντας το πρωτόκολλο RIOT-OS και MQTT-SN. Θα χρησιμοποιήσετε τον εγγενή εξομοιωτή του RIOT-OS για να εκτελέσετε τους σταθμούς σας και να δημιουργήσετε τιμές μέσω του MQTT-SN που πρέπει να φθάσουν στο σύννεφο μέσω του MQTT. Στη συνέχεια, θα κάνετε τα πρώτα σας βήματα στο οικοσύστημα IOT-LAB, για να εκτελέσετε την εφαρμογή RIOT-OS σε πραγματικές συσκευές.

IoT βασισμένο σε σύννεφο με Thingsboard, MQTT, RIOT-OS και IoT-LAB

Πρώτα απ 'όλα, πρέπει να τραβήξετε την ενημέρωση από το αποθετήριο GitHub μου. Αν δεν το έχετε κάνει ήδη, σας συνιστώ να ελέγξετε το προηγούμενο σεμινάριο και το βίντεό μου.

git pull git update submodule -init -recursive

Πρόσθεσα 2 νέους σημαντικούς φακέλους:

  • μεσίτες: περιέχει όλες τις διαμορφώσεις του μεσίτη και της πύλης. Επιπλέον, υπάρχουν 2 υπομονάδες για την άμεση λήψη του πηγαίου κώδικα του mosquitto.rsmb και του paho MQTT-SN Transparent Gateway.
  • συσκευή / αναταραχή: περιέχει τον φάκελο προέλευσης RIOT για τη συσκευή IoT και ένα μικρό σενάριο set_network.sh για εύκολη ρύθμιση των διεπαφών δικτύου σε εγγενή ανάπτυξη.

RIOT-OS

Το RIOT είναι ένα λειτουργικό σύστημα πολλαπλών σπειρωμάτων σε πραγματικό χρόνο το οποίο υποστηρίζει μια σειρά συσκευών που συνήθως βρίσκονται στο Διαδίκτυο. Βασίζεται στις ακόλουθες αρχές σχεδίασης:

  • την ενεργειακή απόδοση και τις δυνατότητες σε πραγματικό χρόνο ·
  • μικρό αποτύπωμα μνήμης και modularity?
  • ενιαία πρόσβαση API: ανεξάρτητα από το υποκείμενο υλικό (POSIX).

Για να έχετε μια επισκόπηση, προτείνω να ελέγξετε τις επίσημες αναφορές RIOT: Ξεκινώντας, αποθήκη GitHub, τεκμηρίωση. Ακολουθήστε τον οδηγό Getting Started και λάβετε υπόψη τον φάκελο βάσης RIOT.

Thingsboard

Οι συσκευές IoT δεν συνδέονται πλέον απευθείας με το Thartsboard MQTT, επομένως πρέπει να αλλάξουμε το προεπιλεγμένο θέμα. Τώρα, θα δημοσιεύσουμε τηλεμετρία για:

Θέμα: v1 / πύλη / τηλεμετρία

Επιπλέον, το ωφέλιμο φορτίο είναι διαφορετικό από πριν:

{"Device A": "{" ts ": 1483228800000," τιμές ": {" temperature ": 42," υγρασία ": 80} : {"θερμοκρασία": 42, "υγρασία": 80}}}}

Ελέγξτε αυτόν τον σύνδεσμο για την πλήρη αναφορά αναφοράς API Gateway MQTT Thingsboard.

Επομένως, προσθέτουμε μια νέα συσκευή στο Thingsboard για να επιλέξετε το πλαίσιο ελέγχου Gateway

Διαμόρφωση πύλης Thingsboard

Στη συνέχεια, αντιγράψτε το ACCESS TOKEN του Tutorial Gateway και επικολλήστε τους σε brokers / conf / bridge_gateway_ [prod | dev] .conf στη σειρά remote_username. Επιπλέον, αν έχετε ρυθμίσει το Thingsboard στο νέφος, αλλάξτε επίσης τη διεύθυνση με το ΔΙΚΤΥΟ ΔΙΚΤΥΟΥ.

Δεν χρειάζεται να ρυθμίσουμε τίποτα άλλο στο Thingsboard, θα αφήσουμε τα πάντα όπως ήταν στο πρώτο σεμινάριο.

RIOT Firmware

Το υλικολογισμικό RIOT βασίζεται στο επίσημο παράδειγμα emcute_mqttsn. Προστέθηκα κάποιο module στο Makefile ως εξής:

ΟΔΗΓΟΣ; = lps331ap #η χρήση απευθείας αισθητήρων USEMODULE + = $ (DRIVER) USEMODULE + = saul_default #sensors API
προσαρμοσμένες εντολές κελύφους σε ταραχές

Ελέγξτε την αποθήκη GitHub για περισσότερες λεπτομέρειες. Είναι σημαντικό να ορίσετε #define SENSOR 0 κατά τη συμπλήρωση σε native board και 1 όταν τρέχετε σε πραγματικές συσκευές iotlab-m3. Θυμηθείτε να απενεργοποιήσετε με μη αυτόματο τρόπο τη μονάδα lps331ap στο Makefile.

ΣΗΜΕΙΩΣΗ: Δημιούργησα ένα ξεχωριστό νήμα χρησιμοποιώντας το αρχείο δημιουργίας thread_create API στη λειτουργία cmd_pub_data για τη συνεχή δημοσίευση δεδομένων.

MQTT-SN

Το MQTT-SN είναι ένα πρωτόκολλο ανταλλαγής μηνυμάτων για ασύρματα δίκτυα αισθητήρων (WSN), με σκοπό την επέκταση του πρωτοκόλλου MQTT πέρα ​​από την υποδομή TCP / IP για λύσεις αισθητήρων και ενεργοποιητών.

Αρχιτεκτονική MQTT-SN

Μια πολύ βασική πύλη MQTT-SN είναι rsmb διαθέσιμη ως υπομονάδα στο αποθετήριο μου και είναι εγκατεστημένη από προεπιλογή στις iotlab-a8 συσκευές στο IoT-LAB.

Στη διαμόρφωσή μου, αποφάσισα να χρησιμοποιήσω το paho MQTT-SN Transparent Gateway που λειτουργεί τόσο ως μεσίτης MQTT-SN όσο και ως διαφανής πύλη MQTT-SN.

Ως εκ τούτου, τροποποίησα την προεπιλεγμένη gateway.conf ως εξής:

BrokerName = localhost BrokerPortNo = 1884
GatewayUDP6Bind = fec0: affe :: 1/64 GatewayUDP6Port = 1885

Τώρα, εγκαταστήστε το και αντιγράψτε την προσαρμοσμένη διαμόρφωσή μου (υποθέτοντας ότι έχετε τραβήξει το υπομοντέλο)

cd brokers / MQTTSN-πύλη ./custom_install.sh mv gateway.conf gateway.conf.bkp cp ../conf/MQTTSN-Gateway.conf gateway.conf

Αυτή η διαμόρφωση είναι κλιμακωτή και "επιπλέον" δεν είχα να γράψω μια γραμμή κώδικα. Στο επόμενο στάδιο, μπορείτε να εκτελέσετε το mosquitto ως γέφυρα που συνδέει τη πύλη paho mqtt-sn με τον απομακρυσμένο μεσίτη MQTT στο Thingsboard.

mosquitto-c μεσίτες / conf / bridge_gateway_prod.conf

Ανοίξτε ένα άλλο τερματικό και εκτελέστε τη διαφανή πύλη paho:

cd μεσίτες / MQTTSN-Gateway ./MQTT-SNGateway

Στη συνέχεια, μπορείτε να μεταγλωττίσετε τελικά το firmware του RIOT (ελέγξτε το RIOTBASE στο Makefile) και στη συνέχεια να το εκτελέσετε.

συσκευή cd / riot / sensors_mqttsn ./start_network.sh PORT = tap0 να καθαρίσετε όλους τους όρους

Τώρα θα έχετε ένα σενάριο σαν αυτό:

RIOT μητρική, MQTTSN διαφανής γέφυρα και mosquitto

Μπορείτε να αλληλεπιδράσετε με το κέλυφος RIOT για να συνδεθείτε με τον μεσίτη MQTT-SN και να ωθήσετε δεδομένα.

ifconfig 5 add fec0: afe :: 99 con fec0: affe :: 1 1885 set_device "Device Piano" pub v1 / πύλη / τηλεμετρία "{'Πιάνο συσκευής': ['ts': 1585744760000, ': 42}}]} "1 pub_telemetry
  • set_device : είναι μια προσαρμοσμένη εντολή που έγραψα για να ρυθμίσετε δυναμικά το όνομα της συσκευής
  • καπηλειό είναι μια προεπιλεγμένη διαθέσιμη εντολή emcute_mqttsn
  • pub_telemetry: είναι μια προσαρμοσμένη εντολή την οποία έγραψα για την άμεση ώθηση τυχαίων δεδομένων (σε περίπτωση μη αυτόματων εφαρμογών)
  • pub_data: είναι μια προσαρμοσμένη εντολή για την συνεχή ώθηση δεδομένων χρησιμοποιώντας ένα άλλο νήμα. (Δεν το χρησιμοποιείτε τώρα, είναι μόνο ένας προγραμματισμός σε πολλαπλά νήματα)
Μια εκτέλεση RIOTΠίνακας ελέγχου πολλών συσκευώνΠίνακας ελέγχου συσκευής

IoT-LAB

Το IoT-LAB παρέχει μια υποδομή πολύ μεγάλης κλίμακας κατάλληλη για τη δοκιμή μικρών ασύρματων συσκευών αισθητήρων και ετερογενών επικοινωνιακών αντικειμένων.

Παρακολουθήστε το βίντεό μου για να δείτε πώς να το εκτελέσετε τοπικά και πώς να ανακτήσετε δεδομένα πραγματικών αισθητήρων στο IoT-LAB

  1. Εγγραφείτε στο εργαστήριο IoT.
  2. Ρύθμιση παραμέτρων πρόσβασης SSH (σύνδεση).
  3. Ακολουθήστε αυτό το σεμινάριο

Προκειμένου να δημιουργήσετε απομακρυσμένα το firmware RIOT, έχετε πρόσβαση στο απομακρυσμένο μηχάνημά σας και στη συνέχεια εκτελέσετε:

ssh @ saclay.iot-lab.info #mv στο φάκελο src πηγή /opt/riot.source BOARD = iotlab-m3 κάνει όλα τα iotlab-πειράματα υποβάλετε -n riot_m3 -d 60 -l 1, archi = m3: at86rf231 + site = saclay iotlab-πείραμα get -i -r iotlab-node - ενημέρωση .επί -l saclay, m3, nc 20000

Δείτε το αποθετήριο μου για έναν πιο ολοκληρωμένο οδηγό για το iot-lab. Στο επόμενο σεμινάριο θα αναφερθώ σε περισσότερες λεπτομέρειες της διαμόρφωσης δικτύου iot-lab. Επομένως, θα επαναλάβουμε την ίδια διαμόρφωση σε πραγματικές συσκευές iotlab.

Πρόκειται για ένα πρόγραμμα για το μάθημα Διαδικτύου των πραγμάτων του MSc Engineering in Computer Science στο Πανεπιστήμιο Sapienza της Ρώμης.

  • Αποθήκη GitHub: σύνδεσμος
  • LinkedIn: σύνδεσμος
  • YouTube: σύνδεσμος