Sisukord:
Video: BBQ Pi (andmete visualiseerimisega!): 4 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Sissejuhatus
Grillimine viitab tavaliselt aeglasele protsessile, kus lemmikliha küpsetamiseks kasutatakse kaudset kuumust. Kuigi see toiduvalmistamismeetod on väga populaarne-eriti USA-s-, on sellel mõned, mida mõned võivad pidada üsna tõsiseks nõrkuseks: see nõuab tunde poolvalget tähelepanu, mis kulub teie süvendi ja toidu temperatuuri jälgimisele. Sisestage: Raspberry Pi.
Algne projekt
Selle projekti algallika leiate siit: https://old.reddit.com/r/raspberry_pi/comments/a0… Põhiprintsiip on see, et redditi kasutaja Produkt suutis edastada toidu- ja süvenditemperatuuri andmed suhteliselt odavalt, kaubanduslikult saadaval olevad traadita termomeetrid Raspberry Pi -le (mis oli GPIO -tihvtide külge kinnitanud väikese RF -mooduli). Esialgses projektis (ülaltoodud lingil) oli Produkti andmed salvestatud sqlite andmebaasi ja kuvatud kohalikult hostitud apache2 php veebisaidile.
See lahendus lahendab juba selle blogi sissejuhatuses käsitletud algse probleemi: nüüd saate veebisirvija abil eemalt jälgida oma toidu- ja kaevu temperatuuri. Aga mis siis, kui tahame seda laiendada? Sisestage: GridDB.
Tarvikud
Vaarika Pi4
SUNKEE 433Mhz Superheterodyne traadita vastuvõtja moodul
Samm: GridDB veebi API ja FluentD
Kui ma seda projekti nägin, mõtlesin pärast esimest põnevuslainet, kuidas ma funktsionaalsust laiendan. Kasutades GridDB -d ja selle Grafana pistikprogrammi, püüdsin oma toidu- ja kaevandusandmeid visualiseerida. Peale selle soovisin seadistada Grafana märkmeid, et otsida ebanormaalseid andmepunkte - ei saa olla söestunud liha!
Alustamiseks pidin traadita termomeetri andmete lugemiseks kasutama algse projekti C -koodi ja postitama need andmed oma GridDB -serverisse. Selle käivitamiseks käivitasin Azure'is GridDB -serveri, kasutades CentOS -i virtuaalmasinat. Lihtsaim viis jagada oma servamasinast (Raspberry Pi) pilveserverisse andmeid GridDB veebiliidese kaudu. Niisiis seadistasin sellel vm -l GridDB WebAPI koos Fluentdiga ja sellega kaasneva GridDB -pistikuga.
Enne andmete pilve saatmist pidin looma oma BBQ Pi konteineri põhiskeemi. Andmekogumi saabumine on äärmiselt lihtne: meil on kaks temperatuuriandurit, üks küpsetuskood ja loomulikult ajatempel. Seega näeb meie skeem välja selline:
timeseries = gridstore.put_container ("bbqpi", [("time", griddb. GS_TYPE_TIMESTAMP), ("cookid", griddb. GS_TYPE_INT), ("probe1", griddb. GS_TYPE_INT), ("probe2", griddb. GS_TYPE_INT)], griddb. GS_CONTAINER_)
Selle ajasarja konteineri loomiseks kasutasin lihtsalt WebAPI -d (port 8080):
curl -X POST -põhiline -u admin: admin -H "Sisu tüüp: rakendus/json" -d
'{"container_name": "bbqpi", "container_type": "TIME_SERIES", / "rowkey": true, "veerud": [{"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
Kui konteiner oli loodud, pidin kasutama Fluentdi (port 8888), et postitada meie konteinerisse tegelikud andmed. Siin on käsk CURL, mis postitab mõned näivandmed:
curl -X POST -d 'json = {"date": "2020-01-01T12: 08: 21.112Z", "cookid": "1", "probe1": "150", "probe2": "140" } 'https:// localhost: 8888/griddb
Sealt pidin lisama algse koodi, et saata HTTP POST -päring alati, kui meie Pi loeb meie kaevust andmeid (umbes kord ~ 12 sekundi jooksul).
Vahemärkusena: selle koodi kirjutamine õpetas mind hindama seda, kui palju C -keel võib olla:
int postData (char aeg , int cookid, int probe1, int probe2, char url )
{CURL *curl; CURLcode res; / * Windowsis käivitab see winsocki asjad */ curl_global_init (CURL_GLOBAL_ALL); char errbuf [CURL_ERROR_SIZE] = {0,}; söeagent [1024] = {0,}; char json [1000]; snprintf (json, 200, "json = {" date / ": \"%s.112Z / ", \" cookid / ": \"%d / ", \" probe1 / ": \"%d / ", / "probe2 \": / "%d \"} ", time, cookid, probe1, probe2); / * saada lokitang */ curl = curl_easy_init (); if (curl) { /* Esmalt määrake URL, mis hakkab meie postitust saama. See URL võib sama hästi olla https:// URL, kui see peaks andmeid vastu võtma. */ snprintf (agent, agendi suurus, "libcurl/%s", curl_version_info (CURLVERSION_NOW)-> versioon); agent [agendi suurus - 1] = 0; curl_easy_setopt (curl, CURLOPT_USERAGENT, agent); curl_easy_setopt (curl, CURLOPT_URL, url); curl_easy_setopt (curl, CURLOPT_USERNAME, "admin"); curl_easy_setopt (curl, CURLOPT_PASSWORD, "admin"); curl_easy_setopt (curl, CURLOPT_VERBOSE, 1L); curl_easy_setopt (curl, CURLOPT_ERRORBUFFER, errbuf); curl_easy_setopt (curl, CURLOPT_POSTFIELDS, json); / * Täida päring, res saab tagastamiskoodi */ res = curl_easy_perform (curl); if (res! = CURLE_OK) {size_t len = strlen (errbuf); fprintf (stderr, "\ nlibcurl: (%d)", res); if (len) fprintf (stderr, "%s%s", errbuf, ((errbuf [len - 1]! = '\ n')? "\ n": "")); fprintf (stderr, "%s / n / n", curl_easy_strerror (res)); minna puhastama; } puhastamine: curl_easy_cleanup (curl); curl_global_cleanup (); tagasitulek 0; }}
Kui see funktsioon on kirjutatud, pidin selle lihtsalt käivitama samal ajal, kui sqlite'i andmed postitati:
kui (head andmed == 1) {
if (last_db_write == 0 || (secs-last_db_write> = 10)) {snprintf (sql, 100, "INSERT INTO näidud (cookid, time, probe1, probe2) VALUES (%d, '%s',%d, %d); ", cookID, buff, probe1, probe2); printf ("%s / n", sql); rc = sqlite3_exec (db, sql, tagasihelistamine, 0 ja zErrMsg); if (rc! = SQLITE_OK) {printf ("SQL -i viga: %s / n", zErrMsg); } else {last_db_write = sekundit; } char url = "https://xx.xx.xx.xx: 8888/griddb"; postData (buff, cookID, probe1, probe2, url); }}
Veendumaks, et teie andmed sisestatakse teie serverisse, saate oma andmebaasist päringu tegemiseks ja tulemuste vaatamiseks käivitada järgmise käsu:
curl -X POST -põhiline -u admin: admin -H "Sisu tüüp: application/json" -d '{"limit": 1000}' https:// localhost: 8080/griddb/v2/defaultCluster/dbs/ public/konteinerid/bbqpi/read
2. samm: Grafana
Kui kood on paigas, salvestame nüüd, kui kasutame koka valmistamiseks algset veebiportaali, samaaegselt oma temperatuuriandmeid GridDB serverisse.
Järgmine samm on meie andmete visualiseerimine Grafana abil. Selleks järgisime selle ajaveebi teavet: siin. Selle rakendamise juures on tore see, et meie andmeid on äärmiselt lihtne näha kena graafikuna. See lisab ka märkusi.
Blogis käsitletud märkuste abil on meil äärmiselt lihtne jälgida, kas meie toiduga või süvendiga läheb midagi valesti. Minu puhul küpsetasin veiseliha lühikesi ribisid. Nendega ei tahtnud ma, et kaevu temperatuur kasvaks üle 275 kraadi Fahrenheiti. Kui nägin, et temperatuur ületab selle, võiksin põleti välja lülitada ja lasta kuumusel uuesti langeda:
Mul oli sarnane reegel, et andur jälgib tegelikult toitu ise: kui toit jõudis sisetemperatuurini 203 kraadi fahrenheiti, olid ribid valmis. Üksikut märkust näete koka lõpus:
Kokkuvõttes võttis kokk mul aega umbes ~ 4 tundi, kuid selline seadistus oleks tõeliselt suurepärane, kui ma keedaksin midagi, mis oleks nõudnud grillil veelgi rohkem aega (mõelge aeglasele suitsule, mis kestab ~ 12 tundi) tundi). Sellele vaatamata usun, et see tööriist on kergesti nähtav: kui saate oma toiduainete tulemusi registreerida ja seejärel võrrelda seda eelmiste kokkadega, tähendab see, et teie grillimine paraneb aja jooksul aeglaselt, kuna saate andmete abil näha, mis töötab ja mis mitte. 't.
Samm: toit
See oli esimene kord, kui ma kunagi veiseliha lühikesi ribisid tegin; maitsestamiseks kasutasin lihtsalt soola, musta pipart ja küüslaugupulbrit. Hoolimata mõningatest probleemidest, mille tõttu põleti sai alguses natuke kõrgeks, tulid ribid fantastilised. Palun vaata:
4. samm: järeldus
Lõppkokkuvõttes tuli toit kohutavalt hea, andurid, GridDB ja Grafana töötasid suurepäraselt koos ning saime väärtuslikke andmeid selle kohta, kuidas neid asju uuesti küpsetada, kui tahame mõnele sõbrale muljet avaldada.
Soovitan:
GPS -i korpuse andmete logija: 7 sammu (piltidega)
GPS -i Cap Data Logger: Siin on suurepärane nädalavahetuse projekt, kui teete matkamist või võtate pikki jalgrattasõite ja vajate GPS -i andmesalvestit, et jälgida kõiki teie tehtud rännakuid/sõite … Kui olete ehituse lõpetanud ja laadis andmed alla seadme GPS -moodulist
ESP32 Xiaomi Hack - andmete hankimine juhtmevabalt: 6 sammu (piltidega)
ESP32 Xiaomi Hack - Hankige andmeid juhtmevabalt: Kallid sõbrad, tere tulemast teise Instructable'i! Täna õpime, kuidas saada andmeid, mida see Xiaomi temperatuuri ja niiskuse monitor edastab, kasutades ESP32 plaadi Bluetooth -funktsioone. Nagu näete, kasutan ESP32 plaati
Andmete saatmine Arduino'st Excelisse (ja selle joonistamine): 3 sammu (piltidega)
Andmete saatmine Arduino'st Excelisse (ja selle joonistamine): Olen otsinud ulatuslikult viisi, kuidas saaksin oma Arduino anduri näidu reaalajas joonistada. Mitte ainult joonistada, vaid ka kuvada ja salvestada andmeid edasiseks katsetamiseks ja paranduste tegemiseks. Lihtsaim lahendus, mille leidsin, oli kasutada Exceli, kuid
Iseseisev andmete registreerimise anemomeeter: 11 sammu (koos piltidega)
Iseseisev andmete registreerimise anemomeeter: mulle meeldib andmete kogumine ja analüüsimine. Mulle meeldib ka elektroonilisi vidinaid ehitada. Aasta tagasi, kui avastasin Arduino tooted, mõtlesin kohe: "Tahaksin koguda keskkonnaandmeid." Portlandis, OR, oli tuuline päev, nii et ma
Andmete hankimise ja andmete visualiseerimise süsteem MotoStudent elektrilise võidusõiduratta jaoks: 23 sammu
Andmete hankimise ja andmete visualiseerimise süsteem MotoStudent Electric Racing Bike jaoks: Andmete kogumise süsteem on riist- ja tarkvara kogum, mis töötab koos, et koguda andmeid välisanduritelt, salvestada ja töödelda neid hiljem, et neid oleks võimalik graafiliselt visualiseerida ja analüüsida, võimaldades inseneridel teha