Orodha ya maudhui:
- Vifaa
- Hatua ya 1: GridDB Web API & FluentD
- Hatua ya 2: Grafana
- Hatua ya 3: Chakula
- Hatua ya 4: Hitimisho
Video: BBQ Pi (Pamoja na Taswira ya Taswira!): Hatua 4 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:50
Utangulizi
Barbecuing kawaida inamaanisha mchakato polepole wa kutumia joto la moja kwa moja kupika nyama unazopenda. Ingawa njia hii ya kupikia ni maarufu sana - haswa Amerika - ina kile ambacho wengine wanaweza kufikiria udhaifu mkubwa: inahitaji masaa ya umakini wa nusu lucid kutumiwa kufuatilia joto la shimo lako na chakula. Ingiza: Raspberry Pi.
Mradi Asilia
Chanzo cha asili cha mradi huu kinaweza kupatikana hapa: https:, vipima joto visivyo na waya visivyo na waya kwa Raspberry Pi (ambayo ilikuwa imeambatanishwa na pini zake za GPIO moduli ndogo ya RF). Katika mradi wa asili (uliounganishwa hapo juu), Produkt alikuwa na data yake ikihifadhiwa kwenye hifadhidata ya sqlite na kuonyeshwa kwenye wavuti ya apache2 php iliyohifadhiwa nchini.
Suluhisho hili tayari linasuluhisha shida ya asili iliyoguswa katika utangulizi wa blogi hii: sasa unaweza kufuatilia joto lako la chakula na shimo kwa mbali na kivinjari cha wavuti. Lakini vipi ikiwa tunataka kupanua juu ya hii? Ingiza: GridDB.
Vifaa
Raspberry Pi4
SUNKEE 433Mhz Moduli ya Mpokeaji wa Wireless Superheterodyne
Hatua ya 1: GridDB Web API & FluentD
Baada ya kuona mradi huu, mawazo yangu ya kwanza - baada ya wimbi la kwanza la msisimko - ilikuwa kufikiria njia za kupanua utendaji. Kwa kutumia GridDB na programu-jalizi yake ya Grafana, nilitafuta kuibua data yangu ya chakula na shimo. Zaidi ya hapo, nilitamani kuanzisha ufafanuzi wa Grafana kutafuta vidokezo vyovyote vya data visivyo na maana - haiwezi kuwa na nyama yoyote ya kuchomwa moto!
Ili kuanza, nilihitaji kutumia nambari ya C kutoka kwa mradi wa asili kusoma data inayoingia kutoka kwa kipima joto kisichotumia waya na kuchapisha data hiyo kwenye seva yangu ya GridDB. Ili kupata kazi hii, niligundua Seva ya GridDB kwenye Azure kwa kutumia mashine halisi ya CentOS. Njia rahisi zaidi ya kushiriki data kutoka kwa mashine yetu ya makali (Raspberry Pi) kwa seva yetu ya wingu ilikuwa kupitia GridDB Web API. Kwa hivyo, kwenye vm hiyo, nilianzisha WebAPI ya GridDB pamoja na Fluentd na kontakt inayoambatana na GridDB.
Kabla ya kutuma data hadi kwenye wingu, nilihitaji kuunda schema ya msingi kwa chombo changu cha BBQ Pi. Dataset inayoingia ni rahisi sana: tuna sensorer mbili za joto, kitambulisho kimoja cha kupika, na kwa kweli, muhuri wa muda. Kwa hivyo schema yetu inaonekana kama hii:
timeseries = gridstore.put_container ("bbqpi", [("wakati", griddb. GS_TYPE_TIMESTAMP), ("cookid", griddb. GS_TYPE_INT), ("probe1", griddb. GS_TYPE_INT), ("probe2", griddb. GS_TYPE_INT)], griddb. GS_CONTAINER_TIME_S
Kuunda kontena hili la vipuri, nilitumia tu WebAPI (bandari 8080):
curl -X POST - msingi -u admin: admin -H "Aina ya yaliyomo: programu / json" -d
'{"container_name": "bbqpi", "aina ya kontena": "TIME_SERIES", / "rowkey": kweli, "safu": [ {"name": "time", "type": "TIMESTAMP"}, {"name": "cookid", "type": "INTEGER"}, {"name": "probe1", "type": "INTEGER"}, {"name": "probe2", "type": "INTEGER"}]}} https:// localhost: 8080 / griddb / v2 / defaultCluster / dbs / umma / vyombo
Pamoja na kontena iliyoundwa, nilihitaji kutumia Fluentd (bandari 8888) kuchapisha data halisi kwenye kontena letu. Hapa kuna amri ya CURL ikichapisha data ya dummy:
curl -X POST -d 'json = {"date": "2020-01-01T12: 08: 21.112Z", "mpishi": "1", "probe1": "150", "uchunguzi2": "140" } 'https:// wenyeji: 8888 / griddb
Kutoka hapo, nilihitaji kuongezea nambari ya asili ili kutuma ombi la HTTP POST wakati wowote Pi yetu alikuwa anasoma data kutoka kwenye shimo letu (karibu mara moja kila sekunde ~ 12).
Kama maandishi ya pembeni: kuandika nambari hii kulinifundisha kuthamini jinsi lugha ya C inaweza kuwa:
int postData (muda wa char , int cookid, int probe1, int probe2, char url )
{Curl * curl; CURLcode res; / * Katika windows, hii itaingiza vitu vya winsock * / curl_global_init (CURL_GLOBAL_ALL); char errbuf [CURL_ERROR_SIZE] = {0,}; wakala wa char [1024] = {0,}; char json [1000]; snprintf (json, 200, "json = {" date / ": \"% s.112Z / ", \" cookid / ": \"% d / ", \" probe1 / ": \"% d / ", / "probe2 \": / "% d \"} ", muda, mpishi, uchunguzi1, uchunguzi2); / * pata kipini cha curl * / curl = curl_easy_init (); ikiwa (curl) {/ * Kwanza weka URL ambayo iko karibu kupokea POST yetu. URL hii inaweza pia kuwa https:// URL ikiwa ndio inapaswa kupokea data. * / snprintf (wakala, wakala wa saizi, "libcurl /% s", curl_version_info (CURLVERSION_NOW) -> toleo); wakala [wakala wa saizi - 1] = 0; curl_easy_setopt (curl, CURLOPT_USERAGENT, wakala); curl_easy_setopt (curl, CURLOPT_URL, url); curl_easy_setopt (curl, CURLOPT_USERNAME, "msimamizi"); curl_easy_setopt (curl, CURLOPT_PASSWORD, "msimamizi"); curl_easy_setopt (curl, CURLOPT_VERBOSE, 1L); curl_easy_setopt (curl, CURLOPT_ERRORBUFFER, errbuf); curl_easy_setopt (curl, CURLOPT_POSTFIELDS, json); / * Fanya ombi, res itapata nambari ya kurudi * / res = curl_easy_perform (curl); ikiwa (res! = CURLE_OK) {size_t len = strlen (errbuf); fprintf (stderr, "\ nlibcurl: (% d)", res); ikiwa (len) fprintf (stderr, "% s% s", errbuf, ((errbuf [len - 1]! = '\ n')? "\ n": "")); fprintf (stderr, "% s / n / n", curl_easy_strerror (res)); kusafisha goto; } kusafisha: curl_easy_cleanup (curl); curl_global_cleanup (); kurudi 0; }}
Pamoja na kazi hii kuandikwa, nilihitaji tu kuiendesha wakati huo huo kwamba data ya sqlite ilikuwa ikichapishwa:
ikiwa (goodData == 1) {
ikiwa (last_db_write == 0 || (secs-last_db_write> = 10)) {snprintf (sql, 100, "INSERT IN SOMO (cookid, time, probe1, probe2) MAADILI (% d, '% s',% d, % d); ", CookID, buff, probe1, probe2); printf ("% s / n", sql); rc = sqlite3_exec (db, sql, kupiga simu tena, 0, & zErrMsg); ikiwa (rc! = SQLITE_OK) {printf ("Kosa la SQL:% s / n", zErrMsg); } mwingine {last_db_write = sekunde; } char url = "https://xx.xx.xx.xx: 8888 / griddb"; postData (buff, cookID, probe1, probe2, url); }}
Ili kuhakikisha kuwa data yako inaingizwa kwenye seva yako, unaweza kutekeleza amri ifuatayo ili kuuliza hifadhidata yako na uone matokeo:
curl -X POST - msingi -u admin: admin -H "Aina ya yaliyomo: programu / json" -d '{"kikomo": 1000}' https:// localhost: 8080 / griddb / v2 / defaultCluster / dbs / umma / vyombo / bbqpi / safu
Hatua ya 2: Grafana
Na nambari iliyopo, sasa tunapotumia bandari asili ya wavuti kuanza "mpishi", tutakuwa tukihifadhi data yetu ya joto wakati huo huo kwenye seva yetu ya GridDB.
Hatua inayofuata itakuwa kuibua data yetu kwa kutumia Grafana. Ili kufanya hivyo, tulifuata habari kutoka kwa blogi hii: hapa. Jambo zuri juu ya utekelezaji huu ni kwamba ni rahisi sana kuona data yetu imewekwa kwenye grafu nzuri. Pia inaongeza maelezo.
Maelezo yaliyojadiliwa kwenye blogi hufanya iwe rahisi sana kwetu kufuatilia wakati kitu kinakwenda sawa na chakula chetu au shimo lenyewe. Katika kesi yangu, nilikuwa nikipika nyama mbavu fupi. Pamoja na hizo, sikutaka joto kwenye shimo likue zaidi ya digrii 275 za Fahrenheit. Ikiwa niliona joto linapita zaidi ya hapo, ningeweza kuzima kiwasha moto na kuruhusu moto uzamishe tena:
Nilikuwa na sheria kama hiyo kwa sensorer kweli kuweka tabo kwenye chakula chenyewe: ikiwa chakula kingefika kwa temp ya ndani ya digrii 203 za fahrenheit, mbavu zilikuwa tayari. Unaweza kuona ufafanuzi pekee mwishoni mwa mpishi hapa:
Yote kwa yote, mpishi alinichukua tu kama masaa 4 au zaidi, lakini aina hii ya usanidi ingekuwa bora ikiwa ningepika kitu ambacho kingehitaji wakati zaidi katika kiraka (fikiria moshi wa polepole ambao hudumu ~ 12 masaa). Pamoja na hayo, naamini thamani ikiwa chombo hiki kinaonekana kwa urahisi: kuweza kuweka matokeo ya vyakula vyako na kisha kulinganisha na wapishi wa zamani inamaanisha kuwa BBQing yako itakuwa bora polepole kwa wakati kwani unaweza kutumia data kuona ni nini kinachofanya kazi na nini 't.
Hatua ya 3: Chakula
Hii ilikuwa mara ya kwanza mimi kuwahi kutengeneza nyama ya mbavu fupi; kwa kitoweo, nilitumia tu chumvi, pilipili nyeusi, na unga wa vitunguu. Licha ya maswala kadhaa na burner kupata juu sana kwa tad huko mwanzoni, mbavu zilitoka nzuri. Tafadhali angalia:
Hatua ya 4: Hitimisho
Mwishowe, chakula kilitoka kali, sensorer, GridDB, na Grafana wote walifanya kazi katika tamasha kwa uzuri, na tukapata data muhimu ya jinsi ya kupika vitu hivi tena kwa wakati ujao tunataka kuwafurahisha marafiki wengine.
Ilipendekeza:
Uonyesho wa Matrix 8x8 Pamoja na BT: Hatua 5 (na Picha)
Onyesho la Matrix 8x8 Pamoja na BT: Nilinunua jopo la 4x 8x8 kutoka Ebay (China) miezi michache iliyopita. Nilikata tamaa wakati niligundua ilikuwa ngumu kwa waya upande, sio juu hadi chini ambayo mifano mingi kwenye wavu umeandikwa! Angalia hatua ya 2. Nadhani ningeweza kuwa na mo
Jinsi ya Kuweka OSMC Pamoja na Hyperion kwenye Raspberry Pi Pamoja na Ukanda wa WS2812b: Hatua 8
Jinsi ya Kuanzisha OSMC Pamoja na Hyperion kwenye Raspberry Pi Na WS2812b Led Strip: Wakati mwingine mimi ni kingereza vizuri sana, wakati mwingine hakuna … Vitu vya kwanza kwanza. Hii ni lugha yangu ya kwanza kufundishwa na Kiingereza sio lugha yangu ya asili, kwa hivyo tafadhali, usiwe mgumu sana kwangu. Hii haitakuwa juu ya jinsi ya kujenga fremu, hiyo ni rahisi. Inahusu usakinishaji
Joto la BBQ na Sura ya Nyama kwenye ESP8266 Pamoja na Uonyesho: Hatua 5 (na Picha)
Joto la BBQ & Sensorer ya Nyama kwenye ESP8266 Pamoja na Onyesho: Katika hii Inayoweza kufundishwa nitakuonyesha jinsi ya kutengeneza toleo lako mwenyewe la zana ya BBQ inayopima joto la sasa kwenye barbeque yako na kuwasha shabiki kuiwasha ikiwa inahitajika. Ziada ya hii pia kuna kiini cha joto cha msingi cha nyama
Taswira yako kupata faida na kupoteza kwa Arduino & Python: 6 Hatua
Taswira yako kupata faida na kupoteza kwa Arduino & Python: Wazo la kimsingi mimi binafsi ni mwekezaji wa sarafu ya crypto. Lakini pia nina mzigo mzito wa kazi ya kuhudhuria. Kwa hivyo siwezi kuendelea kufuatilia bei ya bitcoin kama mara 10 kwa dakika. Walakini, bado ninataka kujua ikiwa ninapata au ninapoteza pesa. Kwa hivyo,
Hatua ya Kuendesha Nyumbani kwa Hatua Kutumia Wemos D1 Mini Pamoja na Kubuni kwa PCB: Hatua 4
Jotoridi ya nyumbani Hatua kwa hatua Kutumia Wemos D1 Mini Pamoja na Kubuni kwa PCB: Nyumbani Automation Hatua kwa Hatua kutumia Wemos D1 Mini na Kubuni PCB wanafunzi wa vyuo vikuu. Ndipo mmoja wa washiriki wetu alikuja