Innehållsförteckning:
- Steg 1: Komma igång med Node-red
- Steg 2: Dela data i nodrött
- Steg 3: Databas med Wampserver
- Steg 4: Databas
- Steg 5: Nodröd till Wampserver
- Steg 6: Använda data från Wampserver till Node-red
- Steg 7: Avsluta
Video: UCL-IIOT-Larmsystem med databas och nodrött: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Syftet med denna version är att lära dig att ansluta Arduino med Node-red och en databas, så att du kan logga data och även samla in dem för senare användning.
För detta bygge använder jag ett enkelt arduino -larmsystem som matar ut 5 datanummer, var och en separerad med ett kommatecken.
Det är inte nödvändigt att ha den exakta mängden data och programmet kan vara vad som helst.
Den viktiga delen är att data är separerade med kommatecken som visas på denna skärmdump.
Utmatningen kan till exempel se ut så här: "324, 0, 0, 1, 1"
(den färdiga programmeringen och instruktionerna för skapandet av arduino är länkad längst ner i denna handledning)
Steg 1: Komma igång med Node-red
För denna handledning antar vi att du redan har installerat Node-red, men det finns några extra paletter som används för detta projekt som vi behöver för att det ska fungera
Hitta knappen "Hantera palett" och installera följande paletter.
- nod-röd-instrumentpanel
- nod-röd-nod-mysql
- nod-röd-nod-arduino
- nod-röd-nod-seriellport
Det borde visa några nya paletter på sidan av menyn Node-röd knapp.
Steg 2: Dela data i nodrött
Nu när Node-red är redo att gå måste vi börja med att dela upp våra data i separata bitar.
Det är därför vi såg till att skilja dem med kommatecken inuti Arduino -koden.
Låt oss först börja med att lägga ner Arduino Input -noden, som finns på den vänstra sidopanelen.
Du måste se till att den har rätt seriell port (Mine använder COM4) och Baud rate (i mitt program använder jag 9600 baud rate)
Om den är korrekt inställd ska den säga att den är ansluten.
Därefter skapar vi ett Javascript -funktionsblock och ansluter det efter Arduino -ingångsnoden. Detta block låter oss programmera i Javascript, och här skriver vi en kod som kan dela upp våra data för varje kommatecken.
I detta funktionsblock delar jag upp mina 5 data med följande kod:
var m1 = {topic: "light1", nyttolast: msg.payload.split (",") [0]}; var m2 = {topic: "light2", nyttolast: msg.payload.split (",") [1]}; var m3 = {topic: "light3", nyttolast: msg.payload.split (",") [2]}; var m4 = {topic: "millis", nyttolast: msg.payload.split (",") [3]}; var m5 = {topic: "onoff", nyttolast: msg.payload.split (",") [4]}; retur [m1, m2, m3, m4, m5];
(ändra koden vid behov)
Se till att noden är inställd på 5 utgångar (eller motsvarande)
Som framgår av skärmdumpen har vi nu fem utgångar som vi var och en länkar till en felsökningsnod och en textdashboardnod. Detta kommer att vara användbart för när vi behöver se det i användargränssnittet.
Steg 3: Databas med Wampserver
För att vår databas ska fungera måste du ha Wampserver installerad. Efter att den har installerats och visas som en grön ikon (efter att du har startat alla tjänster), ska du öppna "phpMyAdmin" som tar dig till en inloggningsskärm. Om du inte har tidigare ändrat det, helt enkelt mata in "root" i användarnamnet och logga in.
Tryck på phpmyadmin -knappen under verktyg nere i den vänstra fältet så öppnas databasmenyn, som ser ut ungefär som på bilden ovan.
Skapa en ny databas och ge den något som är relaterat till ditt projekt, mitt heter "alarmsystem" (dessa namn är skiftlägeskänsliga)
Under den databasen, skapa en ny tabell och namnge den, min heter "alarmdata"
det kommer att fråga om du vill använda "latin1_swedish_ci" och vi behåller det bara som det.
Nu skapar du 6 tabeller (1 mer än de data vi har)
Den första tabellen måste använda datatypen "longtext"
och resten av datamängden använder "mediumtext"
Se till att namnge dem. (den första datamängden bör få namnet "tid"
Steg 4: Databas
Wampservers dataset ska se ut ungefär så här.
(men utan de faktiska uppgifterna, eftersom vi inte har kommit till det ännu)
Steg 5: Nodröd till Wampserver
Nu vill vi att de data vi skickar från vår arduino ska gå till vår Wampserver.
Börja med att skapa ett annat Javascript -funktionsblock och anslut det till vår arduino -ingångsnod.
I det här skriptblocket delar vi återigen upp våra data, men vi sätter in dem i vår databas också.
var data = msg.payload.split (","); var Green1 = data [0]; var Green2 = data [1]; var Alarm = data [2]; var Millis = data [3]; var IsActive = data [4]; var out = "INSERT INTO alarmsystem.alarmdata (Time, Green1, Green2, Alarm, Millis, IsActive) VALUES ('"+new Date (). toISOString (). slice (0, 19).replace (' T ',' ')+"', '"+Green1+"', '"+Green2+"', '"+Alarm+"', '"+Millis+"', '"+IsActive+"')"; msg.topic = out; returmeddelande;
Lägg märke till att jag anger "INSERT INTO alarmsystem.alarmdata", detta är namnet vi gav vår databas och tabell, se till att du skriver det exakta namnet du gav din databas i det.
Anslut nu Javascript -blocket till en felsökningsnod och även en "mysql" -nod som finns under lagringspaletten på vänster sida.
under mysql -blocket kallar du det samma som din databas "alarmsystem"
ändra användare till "root" (namnet vi använde för att logga in på vår server)
värd, port och databas bör redan fyllas i med:
Värd: 127.0.0.1
Port: 3306
Databas: larmsystem
Om allt är gjort korrekt bör det vara anslutet när du har implementerat dina ändringar.
Du bör också kunna se att databasen nu loggar dina data från Arduino direkt.
Steg 6: Använda data från Wampserver till Node-red
För den sista sträckan vill vi se om vi kan ta data vi har sparat och lägga tillbaka dem i vår Node-röda och förhoppningsvis visa den.
Börja med att placera en "injicera" -nod
Under ämnet i denna nod lägger vi koden: SELECT*FROM alarmsystem.alarmdata
Detta kommer att kunna hitta vår databas när vi trycker på den.
Anslut injiceringsnoden till en ny "mysql" -nod som är konfigurerad exakt som den vi gjorde i föregående steg.
Anslut mysql -noden till en felsökningsnod och en mallnod som finns under instrumentpanelen.
Mallnoden blir vår tabell som vi kan uppdatera för att visa data från databasen när den produceras.
Ange koden som visas på skärmdumpen ovan (ändra efter behov) och den ska nu visa en datatabell i vårt Node-röda gränssnitt.
Vi kan också lägga till en instrumentpanelsknapp för att uppdatera tabellen från själva användargränssnittet.
Börja med att skapa en knappnod.
anslut knappnoden till ett Javascript -funktionsblock.
i funktionsblocket sätter vi in följande kod.
msg.topic = "VÄLJ * FRÅN larmdata ORDER BY Green1 DESC LIMIT 20"; return msg;
(Green1 är den första datavariabeln i tabellen)
detta funktionsblock måste sedan anslutas till ingången till vår mysql -nod som vi gjorde tidigare i detta steg.
Steg 7: Avsluta
Nu bör vårt användargränssnitt innehålla en liveuppdatering av våra data och en tabell med data från vår server själv.
Det betyder att vi har skapat en anslutning mellan Arduino, ett UI -baserat program och en databas.
Om du är intresserad av hur mitt Arduino -larmsystem fungerar har jag lagt till ett dokument som förklarar hur det är programmerat och konfigurerat.
Samt en fullständig export av den noderöda programmeringen.
Rekommenderad:
Fingeravtryck och RFID -baserat närvarosystem med Raspberry Pi och MySQL -databas: 5 steg
Fingeravtryck och RFID -baserat närvarosystem med Raspberry Pi och MySQL -databas: Video av detta projekt
Skapa e-postvarningar för NCD trådlös temperatur- och fuktighetssensor med hjälp av nodrött: 22 steg
Skapa e-postvarningar för NCD trådlös temperatur- och luftfuktighetssensor med hjälp av Node-Red: Vi använder här NCD: s temperatur- och fuktighetssensor, men stegen förblir lika för någon av ncd-produkterna, så om du har andra trådlösa ncd-sensorer, upplev gratis observera bredvid. Genom att stoppa den här texten måste du
IOT trådlös temperatur- och luftfuktighetssensor med lång räckvidd med nodrött: 27 steg
IOT trådlös temperatur- och luftfuktighetssensor med lång räckvidd med nod-rött: Vi introducerar NCD: s trådlösa temperaturfuktighetssensor för lång räckvidd med upp till 28 mils intervall med en trådlös nätverksarkitektur. Att införliva Honeywell HIH9130 temperatur-fuktighetssensor överför mycket exakt temperatur och
Dagur med hjälp av nodrött med ihållande minne: 6 steg
Day Timer Användning av nodrött med ihållande minne: Jag använder i stor utsträckning Node-red för mina hemautomationsprojekt. Jag är inte en programmerare efter progression, men med hjälp av olika bidragsgivare försöker jag konfigurera saker enligt mitt krav. Ibland fungerar det och ibland inte :) För en gång
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR