2 | Sådan udvikles en IoT-enhed ved hjælp af RIOT-OS og tilsluttes den til Thingsboard ved hjælp af MQTT-SN

I denne tutorial vil vi bygge oven på de skybaserede komponenter, der er udviklet i den første del: Sådan opsættes et IoT-system ved hjælp af ThingsBoard. Hvis du ikke allerede har læst det, vil jeg varmt anbefale dig at gøre det.

Nu erstatter vi de virtuelle miljøstationer, der er udviklet ved hjælp af Python med nye, der er bygget ved hjælp af RIOT-OS og MQTT-SN-protokollen. Du vil bruge den oprindelige emulator af RIOT-OS til at køre dine stationer og generere værdier over MQTT-SN, som skal komme til skyen via MQTT. Bagefter tager du dine første skridt ind i IOT-LAB-økosystemet for at udføre din RIOT-OS-applikation på rigtige enheder.

IoT skybaseret system ved hjælp af Thingsboard, MQTT, RIOT-OS og IoT-LAB

Først og fremmest skal du hente opdateringen fra mit GitHub-arkiv. Hvis du ikke allerede har gjort det, vil jeg varmt anbefale dig at tjekke min tidligere tutorial og video.

git pull git submodule-opdatering --init - rekursiv

Jeg tilføjede 2 nye vigtige mapper:

  • mæglere: det indeholder alle konfigurationer af mægleren og gatewayen. Derudover er der 2 undermoduler til direkte hentning af kildekoden til mosquitto.rsmb og paho MQTT-SN Transparent Gateway.
  • enhed / optøjer: indeholder RIOT-kildemappen til IoT-enheden og et lille script set_network.sh til let at konfigurere netværksgrænseflader på oprindelig installation.

RIOT-OS

RIOT er et realtid multi-thread-operativsystem, der understøtter en række enheder, som typisk findes i IoT. Det er baseret på følgende designprincipper:

  • energieffektivitet og realtidskapaciteter;
  • lille hukommelse fodaftryk og modularitet;
  • ensartet API-adgang: uafhængig af den underliggende hardware (POSIX).

For at have et overblik foreslår jeg, at du tjekker de officielle RIOT-referencer: Kom godt i gang, GitHub-arkiv, dokumentation. Følg guiden Kom godt i gang, og noter din RIOT-basismappe.

Thingsboard

IoT-enheder er ikke længere direkte forbundet til Thingsboard MQTT, og derfor er vi nødt til at ændre vores standardemne. Nu offentliggør vi telemetri over:

Emne: v1 / gateway / telemetry

Derudover er nyttelasten forskellig fra før:

{"Enhed A": [{"ts": 1483228800000, "værdier": {"temperatur": 42, "fugtighed": 80}}], "Enhed B": [{"ts": 1483228800000, "værdier" : {"temperatur": 42, "fugtighed": 80}}]}

Tjek dette link for at få den komplette Thingsboard MQTT Gateway API-reference.

Derfor tilføjer vi en ny enhed på Thingsboard for at sikre dig at markere afkrydsningsfeltet er Gateway

Thingsboard gateway-konfiguration

Efter dette skal du kopiere ACCESS TOKEN fra Tutorial Gateway og indsætte i mæglere / conf / bridge_gateway_ [prod | dev] .conf i rækken remote_username; Hvis du desuden har konfigureret Thingsboard på cloud, skal du også ændre adresse med din PUBLIC IP.

Vi behøver ikke at konfigurere noget andet på Thingsboard, vi forlader alt, som det var i den første tutorial.

RIOT Firmware

Min RIOT-firmware er baseret på det officielle eksempel emcute_mqttsn. Jeg tilføjede noget modul på Makefile som følger:

DRIVER? = Lps331ap #for at bruge direkte sensorer USEMODULE + = $ (DRIVER) USEMODULE + = saul_default #sensors API
brugerdefinerede shell-kommandoer ved optøjer

Kontroller GitHub-arkivet for flere detaljer. Det er vigtigt at indstille #define SENSOR 0, når du kompilerer på native board og 1, når du kører på iotlab-m3-enheder. Husk at deaktivere lps331ap-modulet manuelt på Makefile manuelt.

NB: Jeg oprettede en separeret tråd ved hjælp af opløbet API thread_create i funktionen cmd_pub_data for kontinuerligt at offentliggøre data.

MQTT-SN

MQTT-SN er en publicere / abonnere meddelelsesprotokol til trådløse sensornetværk (WSN) med det formål at udvide MQTT-protokollen uden for rækkevidden af ​​TCP / IP-infrastruktur til sensor- og aktuatorløsninger.

MQTT-SN Arkitektur

En meget grundlæggende MQTT-SN-gateway er rsmb tilgængelig som en submodule i mit arkiv, og den er som standard installeret på iotlab-a8-enheder på IoT-LAB.

I min konfiguration besluttede jeg at bruge paho MQTT-SN Transparent Gateway, der fungerer både som en MQTT-SN mægler og som en MQTT-SN transparent gateway.

Derfor ændrede jeg standard gateway.conf som følger:

Mæglernavn = localhost BrokerPortNo = 1884
GatewayUDP6Bind = fec0: affe :: 1/64 GatewayUDP6Port = 1885

Nu skal du installere den og kopiere min brugerdefinerede konfiguration (forudsat at du har hentet undermodulen)

cd mæglere / MQTTSN-Gateway ./custom_install.sh mv gateway.conf gateway.conf.bkp cp ../conf/MQTTSN-Gateway.conf gateway.conf

Denne konfiguration er skalerbar, og "derudover" behøvede jeg ikke at skrive en kodelinje. I det næste trin kan du køre myg som bro, der forbinder paho mqtt-sn-gateway til den eksterne MQTT-mægler på Thingsboard.

myg -c mæglere / conf / bridge_gateway_prod.conf

Åbn en anden terminal og kør paho gennemsigtig gateway:

cd-mæglere / MQTTSN-Gateway ./MQTT-SNGateway

Derefter kan du endelig kompilere RIOT-firmwaren (tjek din RIOTBASE på Makefile) og derefter køre den.

cd-enhed / riot / sensors_mqttsn ./start_network.sh PORT = tap0 gøre ren hele sigt

Nu har du et scenarie som dette:

RIOT indfødt, MQTTSN trasparent bro og myg

Du kan interagere med RIOT-shell for at oprette forbindelse til MQTT-SN-mægleren og skubbe data.

ifconfig 5 tilføj fec0: affe :: 99 con fec0: affe :: 1 1885 set_device "Device Piano" pub v1 / gateway / telemetry "{'Device Piano': [{'ts': 1585744760000, 'Values': {'fugtighed ': 42}}]} "1 pub_telemetry
  • set_device : er en brugerdefineret kommando, som jeg skrev for at opsætte enhedsnavnet dynamisk
  • pub er en tilgængelig standardkommando emcute_mqttsn
  • pub_telemetry: er en brugerdefineret kommando, som jeg skrev for direkte at skubbe tilfældige data (i tilfælde af oprindelige applikationer) til
  • pub_data: er en brugerdefineret kommando til kontinuerligt at skubbe data vha. en anden tråd. (Brug det ikke i øjeblikket, det er kun en stub til multi-tråd programmering)
En RIOT-henrettelseDashboard til flere enhederEnhedsdashboard

IoT-LAB

IoT-LAB leverer en meget stor skala infrastruktur, der er egnet til at teste små trådløse sensorenheder og heterogene kommunikationsobjekter.

Se min video for at se, hvordan man kører den lokalt, og hvordan man henter rigtige sensordata på IoT-LAB

  1. Registrer dig til IoT-Lab.
  2. Konfigurer SSH-adgang (link).
  3. Følg denne tutorial

For at opbygge RIOT-firmware eksternt har du adgang til din fjernmaskine og kører derefter:

ssh @ saclay.iot-lab.info #mv til din src-mappekilde /opt/riot.source BOARD = iotlab-m3 få alle iotlab-eksperimenter til at indsende -n riot_m3 -d 60-l 1, archi = m3: at86rf231 + site = saclay iotlab-eksperiment få -i -r iotlab-knude - opdateret .Selv - l saclay, m3, nc 20000

Tjek mit lager for en mere komplet guide om iot-lab. I den næste tutorial vil jeg gå nærmere ind på iot-lab-netværkskonfigurationen. Derfor gentager vi den samme konfiguration på ægte iotlab-enheder.

Dette er et projekt for Internet of Things-kurset for MSc Engineering in Computer Science på Sapienza University of Rome.

  • GitHub-lager: link
  • LinkedIn: link
  • YouTube: link