Satura rādītājs:
- Piegādes
- 1. darbība: GridDB Web API un FluentD
- 2. solis: Grafana
- 3. solis: ēdiens
- 4. solis. Secinājums
Video: BBQ Pi (ar datu vizualizāciju!): 4 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:53
Ievads
Grilēšana parasti attiecas uz lēno netiešā siltuma izmantošanas procesu, lai pagatavotu iecienītāko gaļu. Lai gan šī ēdiena gatavošanas metode ir ļoti populāra-it īpaši ASV-tai ir daži, ko daži var uzskatīt par diezgan nopietnu vājumu: tai nepieciešama stundām ilga daļēji skaidra uzmanība, kas jāpavada, lai uzraudzītu jūsu bedres un ēdiena temperatūru. Ievadiet: Raspberry Pi.
Oriģinālais projekts
Sākotnējais šī projekta avots ir atrodams šeit: https://old.reddit.com/r/raspberry_pi/comments/a0… Galvenais ir tas, ka reddit lietotājs Produkt varēja salīdzinoši lēti pārraidīt pārtikas un bedres temperatūras datus., tirdzniecībā pieejamos bezvadu termometrus Raspberry Pi (kas GPIO tapām bija pievienojis nelielu RF moduli). Sākotnējā projektā (saite iepriekš) Produkta dati tika glabāti sqlite datu bāzē un parādīti vietējā mitinātā apache2 php vietnē.
Šis risinājums jau atrisina sākotnējo problēmu, kas tika pieminēta šī emuāra ievadā: tagad jūs varat attālināti uzraudzīt savu pārtikas un bedres temperatūru, izmantojot tīmekļa pārlūkprogrammu. Bet ko tad, ja mēs vēlētos paplašināt šo jautājumu? Ievadiet: GridDB.
Piegādes
Raspberry Pi4
Bezvadu uztvērēja modulis SUNKEE 433Mhz Superheterodyne
1. darbība: GridDB Web API un FluentD
Ieraugot šo projektu, mana pirmā doma - pēc sākotnējā sajūsmas viļņa - domāja par veidiem, kā paplašināt funkcionalitāti. Izmantojot GridDB un tā Grafana spraudni, es centos vizualizēt savus pārtikas un bedru datus. Turklāt es vēlējos izveidot Grafana anotācijas, lai meklētu jebkādus anomālus datu punktus - nevar būt nekādas apdedzinātas gaļas!
Lai sāktu, man bija jāizmanto sākotnējā projekta C kods, lai nolasītu datus, kas nāk no bezvadu termometra, un ievietotu šos datus savā GridDB serverī. Lai to sāktu, es izveidoju GridDB serveri Azure, izmantojot CentOS virtuālo mašīnu. Vienkāršākais veids, kā koplietot datus no mūsu malas mašīnas (Raspberry Pi) uz mūsu mākoņa serveri, bija, izmantojot GridDB Web API. Tātad, šajā vm, es iestatīju GridDB WebAPI kopā ar Fluentd un pievienoto GridDB savienotāju.
Pirms faktiski nosūtīju datus uz mākoni, man bija jāizveido sava BBQ Pi konteinera pamata shēma. Datu kopa ir ļoti vienkārša: mums ir divi temperatūras sensori, viens pavāra ID un, protams, laika zīmogs. Tātad mūsu shēma izskatās šādi:
timeseries = gridstore.put_container ("bbqpi", [("laiks", griddb. GS_TYPE_TIMESTAMP), ("cookid", griddb. GS_TYPE_INT), ("probe1", griddb. GS_TYPE_INT), ("probe2", griddb. GS_TYPE_INT)], griddb. GS_CONTAINER_)
Lai izveidotu šo laikrindas konteineru, es vienkārši izmantoju WebAPI (ports 8080):
curl -X POST -pamata -u admin: admin -H "Satura tips: application/json" -d
'{"container_name": "bbqpi", "container_type": "TIME_SERIES", / "rowkey": true, "column": [{"name": "time", "type": "TIMESTAMP"}, {"name": "cookid", "type": "INTEGER"}, {"name": "probe1", "type": "INTEGER"}, {"name": "probe2", "type": "INTEGER"}]} '\ https:// localhost: 8080/griddb/v2/defaultCluster/dbs/public/container
Izveidojot konteineru, man bija jāizmanto Fluentd (ports 8888), lai ievietotu faktiskos datus mūsu konteinerā. Šeit ir CURL komanda, kurā tiek publicēti daži fiktīvi dati:
curl -X POST -d 'json = {"date": "2020-01-01T12: 08: 21.112Z", "cookid": "1", "probe1": "150", "zonde2": "140" } 'https:// localhost: 8888/griddb
No turienes man bija jāpievieno sākotnējais kods, lai nosūtītu HTTP POST pieprasījumu ikreiz, kad mūsu Pi lasīja datus no mūsu bedres (apmēram reizi ~ 12 sekundēs).
Kā piezīmi: šī koda rakstīšana man iemācīja novērtēt, cik daudzsološa var būt C valoda:
int postData (char laiks , int cookid, int probe1, int probe2, char url )
{CURL *čokurošanās; CURLcode res; / * Logos tas aktivizēs winsock stuff */ curl_global_init (CURL_GLOBAL_ALL); char errbuf [CURL_ERROR_SIZE] = {0,}; ogļu aģents [1024] = {0,}; char json [1000]; snprintf (json, 200, "json = {" date / ": \"%s.112Z / ", \" cookid / ": \"%d / ", \" probe1 / ": \"%d / ", / "zonde2 \": / "%d \"} ", laiks, pavārs, zonde1, zonde2); / * iegūt čokurošanās rokturi */ čokurošanās = čokurošanās_viegls_init (); if (čokurošanās) { /* Vispirms iestatiet URL, kas drīzumā saņems mūsu POST. Šis URL tikpat labi var būt https:// URL, ja tieši tam vajadzētu saņemt datus. */ snprintf (aģents, aģenta lielums, "libcurl/%s", curl_version_info (CURLVERSION_NOW)-> versija); aģents [aģenta izmērs - 1] = 0; curl_easy_setopt (čokurošanās, CURLOPT_USERAGENT, aģents); curl_easy_setopt (čokurošanās, CURLOPT_URL, url); curl_easy_setopt (čokurošanās, CURLOPT_USERNAME, "admin"); curl_easy_setopt (čokurošanās, CURLOPT_PASSWORD, "admin"); curl_easy_setopt (čokurošanās, CURLOPT_VERBOSE, 1L); curl_easy_setopt (čokurošanās, CURLOPT_ERRORBUFFER, errbuf); curl_easy_setopt (čokurošanās, CURLOPT_POSTFIELDS, json); / * Izpildiet pieprasījumu, res saņems atgriešanās kodu */ res = curl_easy_perform (curl); ja (res! = CURLE_OK) {size_t len = strlen (errbuf); fprintf (stderr, "\ nlibcurl: (%d)", res); ja (len) fprintf (stderr, "%s%s", errbuf, ((errbuf [len - 1]! = '\ n')? "\ n": "")); fprintf (stderr, "%s / n / n", curl_easy_strerror (res)); goto tīrīšana; } tīrīšana: curl_easy_cleanup (čokurošanās); curl_global_cleanup (); atgriezties 0; }}
Kad šī funkcija ir uzrakstīta, man vienkārši vajadzēja to palaist vienlaikus ar sqlite datu ievietošanu:
ja (goodData == 1) {
ja (last_db_write == 0 || (secs-last_db_write> = 10)) {snprintf (sql, 100, "INSERT INTO rādījumi (cookid, time, probe1, probe2) VALUES (%d, '%s',%d, %d); ", cookID, buff, probe1, probe2); printf ("%s / n", sql); rc = sqlite3_exec (db, sql, atzvanīšana, 0, & zErrMsg); if (rc! = SQLITE_OK) {printf ("SQL kļūda: %s / n", zErrMsg); } cits {last_db_write = sek; } char url = "https://xx.xx.xx.xx: 8888/griddb"; postData (buff, cookID, probe1, probe2, url); }}
Lai pārliecinātos, ka jūsu dati patiešām tiek ievietoti jūsu serverī, varat izpildīt šādu komandu, lai vaicātu datu bāzi un skatītu rezultātus:
curl -X POST -pamata -u admin: admin -H "Satura tips: application/json" -d '{"limit": 1000}' https:// localhost: 8080/griddb/v2/defaultCluster/dbs/ public/konteineri/bbqpi/rindas
2. solis: Grafana
Kad kods ir ievietots, tagad, kad mēs izmantojam sākotnējo tīmekļa portālu, lai sāktu “gatavot ēdienu”, mēs vienlaikus saglabāsim savus temperatūras datus savā GridDB serverī.
Nākamais solis būs vizualizēt mūsu datus, izmantojot Grafana. Lai to izdarītu, mēs sekojām informācijai no šī emuāra: šeit. Patīkami šajā ieviešanā ir tas, ka ir ārkārtīgi viegli redzēt, ka mūsu dati ir apkopoti jaukā grafikā. Tas arī pievieno anotācijas.
Emuārā apspriestās anotācijas ļauj mums ārkārtīgi viegli uzraudzīt, vai kaut kas noiet greizi vai nu ar mūsu ēdienu, vai pašu bedri. Manā gadījumā es gatavoju liellopa gaļas īsās ribiņas. Līdz ar to es negribēju, lai temperatūra bedrē pieaugtu virs 275 grādiem pēc Fārenheita. Ja es redzētu, ka temperatūra pārsniedz to, es varētu izslēgt degli un ļaut siltumam atkal samazināties:
Man bija līdzīgs noteikums attiecībā uz sensoru, kas faktiski uzrauga pašu ēdienu: ja ēdiena iekšējā temperatūra sasniedza 203 grādus pēc Fārenheita, ribas bija gatavas. Jūs varat redzēt vientuļo anotāciju pavāra beigās šeit:
Kopumā pavārs man prasīja tikai aptuveni ~ 4 stundas, bet šāda veida iestatījumi patiešām būtu lieliski, ja es gatavotu kaut ko, kas būtu prasījis vēl vairāk laika grilā (domāju, ka lēni dūmi, kas ilgst ~ 12 stundas). Neskatoties uz to, es uzskatu, ka šis rīks ir viegli pamanāms: ja jūs varat reģistrēt savu ēdienu rezultātus un pēc tam salīdzināt to ar iepriekšējiem pavāriem, tas nozīmē, ka jūsu grila gatavošana laika gaitā lēnām uzlabosies, jo jūs varat izmantot datus, lai redzētu, kas darbojas un kas nedarbojas 't.
3. solis: ēdiens
Šī bija pirmā reize, kad es kādreiz gatavoju liellopa gaļas īsās ribiņas; garšvielām es vienkārši izmantoju sāli, melnos piparus un ķiploku pulveri. Neskatoties uz dažām problēmām, kuras sākumā deglis nedaudz pacēlās, ribas iznāca fantastiskas. Lūdzu paskaties:
4. solis. Secinājums
Galu galā ēdiens sanāca lieliski, sensori, GridDB un Grafana lieliski sadarbojās, un mēs ieguvām dažus vērtīgus datus par to, kā šīs lietas pagatavot vēlreiz, kad nākamreiz vēlamies pārsteigt dažus draugus.
Ieteicams:
Kā izveidot mitruma un temperatūras reālā laika datu ierakstītāju, izmantojot Arduino UNO un SD karti - DHT11 datu reģistrētāja simulācija Proteus: 5 soļi
Kā izveidot mitruma un temperatūras reālā laika datu ierakstītāju, izmantojot Arduino UNO un SD karti | DHT11 datu reģistrētāja simulācija Proteus: Ievads: čau, tas ir Liono Maker, šeit ir YouTube saite. Mēs veidojam radošu projektu ar Arduino un strādājam pie iegultām sistēmām. Datu reģistrētājs: Datu reģistrētājs (arī datu reģistrētājs vai datu ierakstītājs) ir elektroniska ierīce, kas laika gaitā reģistrē datus
Datu iegūšanas un datu vizualizācijas sistēma elektriskajam motociklam MotoStudent: 23 soļi
Datu iegūšanas un datu vizualizācijas sistēma MotoStudent elektriskajam sacīkšu velosipēdam: Datu iegūšanas sistēma ir aparatūras un programmatūras kopums, kas darbojas kopā, lai apkopotu datus no ārējiem sensoriem, pēc tam tos uzglabātu un apstrādātu, lai tos varētu vizualizēt grafiski un analizēt, ļaujot inženieriem izgatavot
Galda Bluetooth skaļrunis ar audio vizualizāciju, skārienpogām un NFC: 24 soļi (ar attēliem)
Galda Bluetooth skaļrunis ar audio vizualizāciju, skārienpogām un NFC: Sveiki! Šajā instrukcijā es parādīšu, kā es izveidoju šo galda Bluetooth skaļruni, kuram ir pārsteidzoša audio vizualizācija ar pieskāriena pogām un NFC. Var viegli savienot pārī ar ierīcēm, kurās ir iespējota NFC, tikai pieskaroties. Nav fizisku pogu
Galda pastiprinātājs ar audio vizualizāciju, bināro pulksteni un FM uztvērēju: 8 soļi (ar attēliem)
Galda pastiprinātājs ar audio vizualizāciju, bināro pulksteni un FM uztvērēju: Man patīk pastiprinātāji, un šodien es dalīšos ar savu nesen ražoto mazjaudīgo galda pastiprinātāju. Manis izstrādātajam pastiprinātājam ir dažas interesantas funkcijas. Tam ir integrēts binārais pulkstenis, un tas var norādīt laiku un datumu, un tas var vizualizēt audio, ko bieži sauc par audio
EAL-Industri4.0-RFID datu paraugu ņemšanas datu bāze: 10 soļi (ar attēliem)
EAL-Industri4.0-RFID datu paraugu ņemšana līdz datubāzei: Dette projekt omhandler opsamling af v æ gtdata, registreering af identiteter vha. RFID, satraucoši dati un lv MySQL datu bāze. mezgls RED, samt fremvisning og behandling af de opsamlede data i et C# program i form af en Windows Form Application