Inhoudsopgave:

UCL-IIOT - Alarmsysteem met database en Node-red - Ajarnpa
UCL-IIOT - Alarmsysteem met database en Node-red - Ajarnpa

Video: UCL-IIOT - Alarmsysteem met database en Node-red - Ajarnpa

Video: UCL-IIOT - Alarmsysteem met database en Node-red - Ajarnpa
Video: IIoT Spotlight Podcast EP 047: Understanding the State of, and Challenges in IoT Implemention in... 2024, November
Anonim
UCL-IIOT - Alarmsysteem met database en Node-red
UCL-IIOT - Alarmsysteem met database en Node-red
UCL-IIOT - Alarmsysteem met database en Node-red
UCL-IIOT - Alarmsysteem met database en Node-red

Het doel van deze build is om te leren over het verbinden van Arduino met Node-red en een database, zodat je gegevens kunt loggen en deze ook kunt verzamelen voor later gebruik.

Voor deze build gebruik ik een eenvoudig arduino-alarmsysteem dat 5 gegevensnummers uitvoert, elk gescheiden door een komma.

Het is niet nodig om die exacte hoeveelheid gegevens te hebben en het programma kan van alles zijn.

Het belangrijkste is dat de gegevens worden gescheiden met komma's, zoals te zien is op deze schermafbeelding.

De uitvoer kan er bijvoorbeeld als volgt uitzien: "324, 0, 0, 1, 1"

(de voltooide programmering en instructies voor het maken van de arduino zijn onderaan deze tutorial gelinkt)

Stap 1: Aan de slag met Node-red

Aan de slag met Node-red
Aan de slag met Node-red

Voor deze tutorial gaan we ervan uit dat je Node-red al hebt geïnstalleerd, maar er zijn enkele extra paletten die voor dit project worden gebruikt en die we nodig hebben om het te laten werken

Zoek de knop "Palet beheren" en installeer de volgende paletten.

  • node-rood-dashboard
  • node-red-node-mysql
  • node-red-node-arduino
  • node-red-node-serialport

Het zou een aantal nieuwe paletten moeten tonen aan de zijkant van het Knooppunt-rode knopmenu.

Stap 2: Gegevens splitsen in Node-red

Gegevens splitsen in Node-red
Gegevens splitsen in Node-red

Nu Node-red klaar is voor gebruik, moeten we beginnen met het opsplitsen van onze gegevens in afzonderlijke stukken.

Daarom hebben we ervoor gezorgd dat ze met komma's in de Arduino-code van elkaar zijn gescheiden.

Laten we eerst beginnen met het neerzetten van het Arduino Input-knooppunt, te vinden op het linkerzijpaneel.

Je moet ervoor zorgen dat het de juiste seriële (de mijne gebruikt COM4) poort en baudrate heeft (in mijn programma gebruik ik 9600 baudrate)

Als het correct is ingesteld, zou het moeten zeggen dat het is aangesloten.

Vervolgens maken we een Javascript-functieblok en verbinden dit na het Arduino-invoerknooppunt. Met dit blok kunnen we in Javascript programmeren en hier schrijven we een code die onze gegevens voor elke komma kan splitsen.

In dit functieblok deel ik mijn 5 gegevens met behulp van de volgende code:

var m1 = {onderwerp: "light1", payload: msg.payload.split(", ")[0]}; var m2 = {onderwerp: "light2", payload: msg.payload.split(", ")[1]}; var m3 = {onderwerp: "light3", payload: msg.payload.split(", ")[2]}; var m4 = {onderwerp: "millis", payload: msg.payload.split(", ")[3]}; var m5 = {onderwerp: "aan-uit", payload: msg.payload.split(", ")[4]}; rendement [m1, m2, m3, m4, m5];

(wijzig de code indien nodig)

Zorg ervoor dat het knooppunt is ingesteld op 5 uitgangen (of uw equivalent)

Zoals te zien is in de schermafbeelding, hebben we nu 5 uitgangen die we elk koppelen aan een foutopsporingsknooppunt en een tekstdashboardknooppunt. Dit is handig wanneer we het in de gebruikersinterface moeten zien.

Stap 3: Database met Wampserver

Database met Wampserver
Database met Wampserver

Om onze database te laten werken, moet Wampserver zijn geïnstalleerd. Nadat deze is geïnstalleerd en wordt weergegeven als een groen pictogram (nadat u alle services hebt gestart), moet u de "phpMyAdmin" openen die u naar een inlogscherm zou moeten brengen. eerder hebt gewijzigd, voert u eenvoudig "root" in de gebruikersnaam in en logt u in.

Druk op de phpmyadmin-knop onder tools in de linkerbalk en het zou het databasemenu moeten openen, dat er ongeveer zo uitziet als in de bovenstaande afbeelding.

Maak een nieuwe database en noem het iets dat gerelateerd is aan uw project, de mijne heet "alarmsysteem" (deze namen zijn hoofdlettergevoelig)

Maak onder die database een nieuwe tabel en noem deze, de mijne heet "alarmdata"

het zal vragen of je "latin1_swedish_ci" wilt gebruiken en we houden het gewoon zo.

Nu maakt u 6 tabellen (1 meer dan de gegevens die we hebben)

De eerste tabel moet het datatype "longtext" gebruiken

en de rest van de dataset gebruikt "mediumtext"

Zorg ervoor dat u ze een naam geeft. (de eerste dataset moet "time" heten

Stap 4: Database

Database
Database

De Wampserver-dataset zou er ongeveer zo uit moeten zien.

(maar zonder de daadwerkelijke gegevens, daar zijn we nog niet aan toegekomen)

Stap 5: Node-red naar Wampserver

Node-rood naar Wampserver
Node-rood naar Wampserver

Nu willen we dat de gegevens die we van onze Arduino uitvoeren naar onze Wampserver gaan.

Begin met het maken van een ander Javascript-functieblok en verbind het met ons Arduino-invoerknooppunt.

In dit scriptblok splitsen we opnieuw onze gegevens, maar we voegen deze ook in onze database in.

var data = msg.payload.split(", ");var Groen1 = data[0]; var Groen2 = gegevens[1]; var Alarm = gegevens[2]; var Millis = gegevens[3]; var IsActive = gegevens[4]; var out = "INSERT INTO alarmsystem.alarmdata (Time, Green1, Green2, Alarm, Millis, IsActive) VALUES('"+new Date().toISOString().slice(0, 19).replace('T', ' ')+"', '"+Groen1+"', '"+Groen2+"', '"+Alarm+"', '"+Millis+"', '"+IsActive+"')"; msg.topic = uit; bericht terugsturen;

Merk op dat ik "INSERT INTO alarmsystem.alarmdata" heb ingevoerd, dit is de naam die we onze database en tabel hebben gegeven, zorg ervoor dat je de exacte naam schrijft die je je database hebt gegeven.

Verbind nu het Javascript-blok met een debug-knooppunt en ook met een "mysql"-knooppunt onder het opslagpalet aan de linkerkant.

onder het mysql-blok noem je het hetzelfde als je database "alarmsysteem"

verander gebruiker in "root" (de naam die we gebruikten om in te loggen op onze server)

host, poort en database moeten al zijn ingevuld met:

Gastheer: 127.0.0.1

Poort: 3306

Database: alarmsysteem

Als alles correct is gedaan, moet het worden aangesloten nadat u uw wijzigingen hebt geïmplementeerd.

U zou ook moeten kunnen zien dat de database uw gegevens nu rechtstreeks vanuit de Arduino logt.

Stap 6: Gegevens gebruiken van Wampserver naar Node-red

Gegevens gebruiken van Wampserver naar Node-red
Gegevens gebruiken van Wampserver naar Node-red
Gegevens gebruiken van Wampserver naar Node-red
Gegevens gebruiken van Wampserver naar Node-red

Voor het laatste stuk willen we kijken of we de gegevens die we hebben opgeslagen kunnen nemen en terug in onze Node-red kunnen zetten en hopelijk kunnen weergeven.

Begin met het plaatsen van een "inject" node

Onder onderwerp in dit knooppunt plaatsen we de code: SELECT*FROM alarmsystem.alarmdata

Dit zal onze database kunnen vinden wanneer we erop drukken.

Verbind het injecteerknooppunt met een nieuw "mysql" -knooppunt dat precies zo is ingesteld als dat we in de vorige stap hebben gedaan.

Verbind het mysql-knooppunt met een foutopsporingsknooppunt en een sjabloonknooppunt onder dashboard.

Het sjabloonknooppunt is onze tabel die we kunnen bijwerken om gegevens uit de database weer te geven terwijl deze worden geproduceerd.

Voer de code in die wordt getoond in de bovenstaande schermafbeelding (wijzig indien nodig) en deze zou nu een gegevenstabel moeten tonen in onze Node-red UI.

We kunnen ook een dashboardknop toevoegen om de tabel vanuit de gebruikersinterface zelf bij te werken.

Begin met het maken van een knopknooppunt.

verbind het knopknooppunt met een Javascript-functieblok.

in het functieblok voegen we de volgende code in.

msg.topic = "SELECTEER * UIT alarmgegevens BESTEL DOOR Green1 DESC LIMIT 20";retourbericht;

(Groen1 is de eerste gegevensvariabele in de tabel)

dit functieblok moet dan worden verbonden met de invoer van ons mysql-knooppunt dat we eerder in deze stap hebben gemaakt.

Stap 7: Finaliseren

Finaliseren
Finaliseren

Nu zou onze gebruikersinterface een live-update van onze gegevens en een tabel met gegevens van onze server zelf moeten bevatten.

Dit betekent dat we een verbinding hebben gemaakt tussen Arduino, een op de gebruikersinterface gebaseerd programma en een database.

Als je geïnteresseerd bent in hoe mijn Arduino Alarmsysteem werkt, heb ik een document toegevoegd waarin wordt uitgelegd hoe dat is geprogrammeerd en ingesteld.

Evenals een volledige export van de node-red programmering.

Aanbevolen: