Talaan ng mga Nilalaman:

UCL-IIOT - Alarm System Na May Database at Node-red: 7 Hakbang
UCL-IIOT - Alarm System Na May Database at Node-red: 7 Hakbang

Video: UCL-IIOT - Alarm System Na May Database at Node-red: 7 Hakbang

Video: UCL-IIOT - Alarm System Na May Database at Node-red: 7 Hakbang
Video: Efficiency Monitoring System in Job Shop Machine Using Node-Red and Raspberry Pi 2024, Nobyembre
Anonim
UCL-IIOT - Alarm System Na May Database at Node-red
UCL-IIOT - Alarm System Na May Database at Node-red
UCL-IIOT - Alarm System Na May Database at Node-red
UCL-IIOT - Alarm System Na May Database at Node-red

Ang layunin ng pagbuo na ito ay upang magturo tungkol sa pagkonekta sa Arduino sa Node-red at isang database, upang maaari kang mag-log ng data at kolektahin din ito para magamit sa paglaon.

Para sa pagbuo na ito ay gumagamit ako ng isang simpleng sistema ng alarma ng arduino na naglalabas ng 5 mga numero ng data, bawat isa ay pinaghiwalay ng isang kuwit.

Hindi kinakailangan na magkaroon ng eksaktong dami ng data at ang programa ay maaaring maging anuman.

Ang mahalagang bahagi ay ang data ay nakahiwalay sa mga kuwit tulad ng nakikita sa screenshot na ito.

Ang output ay maaaring halimbawa magmukhang ganito: "324, 0, 0, 1, 1"

(ang tapos na programa at mga tagubilin sa paglikha ng arduino ay naka-link sa ilalim ng tutorial na ito)

Hakbang 1: Pagsisimula Sa Node-red

Pagsisimula Sa Node-red
Pagsisimula Sa Node-red

Para sa tutorial na ito ipinapalagay na na-install mo na ang Node-red, ngunit mayroong ilang mga sobrang palette na ginagamit para sa proyektong ito na kailangan namin upang gumana ito

Hanapin ang pindutang "Pamahalaan ang Palette" at i-install ang mga sumusunod na palette.

  • node-red-dashboard
  • node-red-node-MySQL
  • node-red-node-arduino
  • node-red-node-serialport

Dapat itong magpakita ng ilang mga bagong palette sa gilid ng menu ng button na Pulang pula.

Hakbang 2: Paghahati ng Data sa Node-red

Paghahati ng Data sa Node-red
Paghahati ng Data sa Node-red

Ngayon na ang Node-red ay handa nang umalis kailangan naming magsimula sa pamamagitan ng paghahati ng aming data sa magkakahiwalay na mga piraso.

Ito ang dahilan kung bakit tinitiyak namin na paghiwalayin ang mga ito ng mga kuwit sa loob ng Arduino code.

Magsimula muna tayo sa pamamagitan ng paglalagay ng node ng Arduino Input, na matatagpuan sa kaliwang panel.

Kailangan mong tiyakin na mayroon itong tamang serial (Ang gumagamit ay gumagamit ng COM4) port at rate ng Baud (sa aking programa ay gumagamit ako ng 9600 baud rate)

Kung wastong na-set up, dapat sabihin na konektado ito.

Susunod na lumikha kami ng isang Javascript function block at ikonekta ito pagkatapos ng Arduino input node. Pinapayagan kami ng block na ito na mag-program sa Javascript, at dito nagsusulat kami ng isang code na maaaring hatiin ang aming data para sa bawat kuwit.

Sa pagpapaandar na ito hinati ko ang aking 5 data gamit ang sumusunod na code:

var m1 = {paksa: "light1", payload: msg.payload.split (",") [0]}; var m2 = {paksa: "light2", payload: msg.payload.split (",") [1]}; var m3 = {paksa: "light3", payload: msg.payload.split (",") [2]}; var m4 = {paksa: "millis", payload: msg.payload.split (",") [3]}; var m5 = {paksa: "onoff", payload: msg.payload.split (",") [4]}; ibalik [m1, m2, m3, m4, m5];

(baguhin ang code kung kinakailangan)

Tiyaking ang node ay nakatakda sa 5 output (o iyong katumbas)

Tulad ng nakikita sa screenshot, mayroon na kaming 5 output na bawat link namin hanggang sa isang debug node at isang text dashboard node. Magiging kapaki-pakinabang ito para sa kung kailan namin kailangan itong makita sa UI.

Hakbang 3: Database Sa Wamperver

Database Sa Wamperver
Database Sa Wamperver

Para gumana ang aming database kailangan mong i-install ang Wampserver. Matapos itong mai-install at ipakita bilang isang berdeng icon (pagkatapos mong simulan ang lahat ng mga serbisyo), dapat mong buksan ang "phpMyAdmin" na dapat magdala sa iyo sa isang login screen. Maliban kung mayroon ka dating binago ito, i-input lamang ang "ugat" sa username at pag-login.

Pindutin ang pindutan ng phpmyadmin sa ilalim ng mga tool pababa sa kaliwang bar at dapat itong buksan ang menu ng database, na mukhang may ipinapakita sa imahe sa itaas.

Lumikha ng isang bagong database at pangalanan ito ng isang bagay na nauugnay sa iyong proyekto, ang minahan ay pinangalanang "alarmsystem" (ang mga pangalang ito ay magiging sensitibo sa kaso)

Sa ilalim ng database na iyon, lumikha ng isang bagong talahanayan at pangalanan ito, ang minahan ay pinangalanang "alarmdata"

tatanungin nito kung nais mong gamitin ang "latin1_swedish_ci" at panatilihin namin ito bilang iyon.

Gumagawa ka ngayon ng 6 na talahanayan (1 higit sa data na mayroon kami)

Kailangang gamitin ng unang talahanayan ang datatype na "longtext"

at ang natitirang bahagi ng dataset ay gumagamit ng "mediumtext"

Siguraduhing pangalanan ang mga ito. (ang unang dataset ay dapat na pinangalanan "oras"

Hakbang 4: Database

Database
Database

Ang Wampserver dataset ay dapat magmukhang ganito.

(ngunit nang walang aktwal na data, dahil hindi pa namin napupuntahan iyon)

Hakbang 5: Node-red sa Wampserver

Node-red kay Wampserver
Node-red kay Wampserver

Ngayon nais namin ang data na inilalabas namin mula sa aming arduino upang pumunta sa aming Wampserver.

Magsimula sa pamamagitan ng paglikha ng isa pang block ng pag-andar ng Javascript at ikonekta ito sa aming arduino input node.

Sa script block na ito, muli naming hinati ang aming data, ngunit inilalagay din namin ito sa aming database.

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 SA alarmsystem.alarmdata (Oras, Green1, Green2, Alarm, Millis, IsActive) VALUES ('" + bagong Petsa (). toISOString (). hiwa (0, 19).replace (' T ',' ') + "', '" + Green1 + "', '" + Green2 + "', '" + Alarm + "', '" + Millis + "', '" + IsActive + "')"; msg.topic = out; ibalik ang msg;

Pansinin na nai-input ko ang "INSERT INTO alarmsystem.alarmdata", ito ang pangalang ibinigay namin sa aming database at talahanayan, siguraduhing isulat mo ang eksaktong pangalan na ibinigay mo sa iyong database doon.

Ikonekta ngayon ang bloke ng Javascript sa isang debug node at isang node na "mysql" na matatagpuan sa ilalim ng storage palette sa kaliwang bahagi.

sa ilalim ng block ng MySQL papangalanan mo ito pareho sa iyong database na "alarmsystem"

baguhin ang gumagamit sa "root" (ang pangalan na ginamit namin upang mag-log in sa aming server)

host, port at database ay dapat na napunan na may:

Host: 127.0.0.1

Port: 3306

Database: alarmsystem

Kung tapos na ang lahat ng tama, dapat itong konektado pagkatapos mong mai-deploy ang iyong mga pagbabago.

Dapat mo ring makita na ang database ngayon ay nag-log ng iyong data mula sa Arduino nang direkta.

Hakbang 6: Paggamit ng Data Mula sa Wampserver hanggang sa Node-red

Paggamit ng Data Mula sa Wampserver hanggang sa Node-red
Paggamit ng Data Mula sa Wampserver hanggang sa Node-red
Paggamit ng Data Mula sa Wampserver hanggang sa Node-red
Paggamit ng Data Mula sa Wampserver hanggang sa Node-red

Para sa pangwakas na kahabaan na nais naming makita kung maaari naming kunin ang data na nai-save at ibalik ito sa aming Node-red at sana ay ipakita ito.

Magsimula sa pamamagitan ng paglalagay ng isang "inject" node

Sa ilalim ng paksa sa node na ito inilalagay namin ang code: SELECT * MULA sa alarmsystem.alarmdata

Mahahanap nito ang aming database kapag pinindot namin ito.

Ikonekta ang inject node sa isang bagong "MySQL" na node set up nang eksakto tulad ng isa na ginawa namin sa nakaraang hakbang.

Ikonekta ang MySQL node sa isang debug node at isang template node na matatagpuan sa ilalim ng dashboard.

Ang template node ang aming magiging talahanayan na maaari naming i-update upang maipakita ang data mula sa database habang ginawa ito.

Ipasok ang code na ipinapakita sa screenshot sa itaas (baguhin kung kinakailangan) at dapat itong magpakita ngayon ng isang talahanayan ng data sa aming Node-red UI.

Maaari din kaming magdagdag ng isang pindutan ng dashboard upang mai-update ang talahanayan mula sa UI mismo.

Magsimula sa pamamagitan ng paglikha ng isang button node.

ikonekta ang node ng pindutan sa isang Javascript function block.

sa pag-andar ng block ipinasok namin ang sumusunod na code.

msg.topic = "SELECT * MULA sa alarmdata ORDER BY Green1 DESC LIMIT 20"; ibalik ang msg;

(Green1 ang unang variable ng data sa talahanayan)

ang pag-andar ng pag-andar na ito pagkatapos ay kailangang maiugnay sa pag-input ng aming MySQL node na ginawa namin dati sa hakbang na ito.

Hakbang 7: Pagtatapos

Pagtatapos
Pagtatapos

Ngayon ang aming UI ay dapat magsama ng isang live na pag-update ng aming data at isang talahanayan na may data mula sa aming server mismo.

Nangangahulugan ito na lumikha kami ng isang koneksyon sa pagitan ng Arduino, isang programa batay sa UI at isang database.

Kung interesado ka sa kung paano gumagana ang aking Arduino Alarm System, nagdagdag ako ng isang dokumento na nagpapaliwanag kung paano ito nai-program at na-set up.

Pati na rin ang isang buong pag-export ng node-red na programa.

Inirerekumendang: