Tartalomjegyzék:
- Kellékek
- 1. lépés: GridDB Web API és FluentD
- 2. lépés: Grafana
- 3. lépés: Az étel
- 4. lépés: Következtetés
Videó: BBQ Pi (Adatmegjelenítéssel!): 4 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Bevezetés
A grillezés leggyakrabban a lassú folyamatra vonatkozik, amikor a közvetett hő felhasználásával kedvenc húsát főzzük. Bár ez a főzési módszer rendkívül népszerű-különösen az Egyesült Államokban-, vannak olyanok, amelyeket egyesek meglehetősen súlyos gyengeségnek tartanak: órákig félig világos figyelmet kell fordítani a gödör és az étel hőmérsékletének megfigyelésére. Írja be: Raspberry Pi.
Az eredeti projekt
A projekt eredeti forrása itt található: https://old.reddit.com/r/raspberry_pi/comments/a0… A lényeg az, hogy a Reddit felhasználó Produkt viszonylag olcsón tudta továbbítani az élelmiszer- és gödörhőmérséklet adatait, kereskedelmi forgalomban kapható vezeték nélküli hőmérőket egy Raspberry Pi -hez (amely a GPIO csapjaihoz egy kis RF modult csatlakoztatott). Az eredeti projektben (fent linkelve) Produkt adatait egy sqlite adatbázisban tárolták, és megjelenítették egy helyileg üzemeltetett apache2 php webhelyen.
Ez a megoldás már megoldja a blog bevezetőjében érintett eredeti problémát: mostantól távolról követheti nyomon az étel és a gödör hőmérsékletét egy webböngészővel. De mi van, ha ezt szeretnénk bővíteni? Írja be: GridDB.
Kellékek
Raspberry Pi4
SUNKEE 433Mhz Superheterodyne vezeték nélküli vevő modul
1. lépés: GridDB Web API és FluentD
Amikor megláttam ezt a projektet, az első gondolatom - az izgalom kezdeti hulláma után - azon volt, hogy hogyan fogom kibővíteni a funkcionalitást. A GridDB és annak Grafana bővítménye segítségével arra törekedtem, hogy vizualizáljam az ételeim és a pit adataimat. Ezen kívül Grafana -megjegyzéseket szerettem volna létrehozni, hogy bármilyen rendellenes adatpontot felkutassak - nem lehet elszenesedett hús!
A kezdéshez az eredeti projekt C kódját kellett használnom a vezeték nélküli hőmérőből érkező adatok beolvasásához és az adatok közzétételéhez a GridDB szerveremen. Ennek üzembe helyezése érdekében egy Centrid virtuális gép segítségével felpörgettem egy GridDB -kiszolgálót az Azure -on. A legegyszerűbb módja a GridDB webes API -n keresztül az adatok megosztásának az élgépünkről (Raspberry Pi) a felhőszerverünkhöz. Tehát ezen a vm -n beállítottam a GridDB WebAPI -ját a Fluentd -el és a hozzá tartozó GridDB csatlakozóval együtt.
Mielőtt ténylegesen adatokat küldenék a felhőbe, létre kellett hoznom a BBQ Pi tároló alapvető sémáját. A beérkező adatkészlet rendkívül egyszerű: két hőmérséklet -érzékelőnk van, egy főzési azonosító és természetesen az időbélyeg. Tehát a sémánk így néz ki:
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_)
Ennek az idősor -tárolónak a létrehozásához egyszerűen a WebAPI -t használtam (8080 -as port):
curl -X POST -alap -u admin: admin -H "Tartalom -típus: application/json" -d
'{"container_name": "bbqpi", "container_type": "TIME_SERIES", / "rowkey": true, "oszlopok": [{"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
A tároló létrehozásakor a Fluentd (8888 port) használatát kellett használnom a tényleges adatok tárolására. Íme egy CURL parancs, amely néhány ál adatot tesz közzé:
curl -X POST -d 'json = {"date": "2020-01-01T12: 08: 21.112Z", "cookid": "1", "probe1": "150", "probe2": "140" } 'https:// localhost: 8888/griddb
Innentől kezdve hozzá kellett adnom az eredeti kódot, hogy elküldhessek egy HTTP POST kérést, amikor a PI adatokat olvas a gödörünkből (kb. ~ 12 másodpercenként).
Mellék megjegyzésként: ennek a kódnak az írása megtanított arra, hogy értékeljem, mennyire bőséges a C nyelv:
int postData (char time , int cookid, int probe1, int probe2, char url )
{CURL *curl; CURLcode res; / * Windowsban ez elindítja a winsock dolgokat */ curl_global_init (CURL_GLOBAL_ALL); char errbuf [CURL_ERROR_SIZE] = {0,}; char agent [1024] = {0,}; char json [1000]; snprintf (json, 200, "json = {" date / ": \"%s.112Z / ", \" cookid / ": \"%d / ", \" probe1 / ": \"%d / ", / "szonda2 \": / "%d \"} ", time, cookid, probe1, probe2); / * kap egy curl fogantyút */ curl = curl_easy_init (); if (curl) { /* Először állítsa be azt az URL -t, amely hamarosan megkapja a POST -t. Ez az URL ugyanúgy lehet https:// URL is, ha ennek kell fogadnia az adatokat. */ snprintf (ügynök, ügynök mérete, "libcurl/%s", curl_version_info (CURLVERSION_NOW)-> verzió); ügynök [ügynök mérete - 1] = 0; curl_easy_setopt (curl, CURLOPT_USERAGENT, ügynök); 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); / * Végezze el a kérést, a res megkapja a visszatérési kódot */ 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)); goto tisztítás; } tisztítás: curl_easy_cleanup (curl); curl_global_cleanup (); visszatérés 0; }}
Amikor ezt a függvényt írtam, csak az sqlite adatok közzétételével egy időben kellett futtatnom:
if (goodData == 1) {
if (last_db_write == 0 || (secs-last_db_write> = 10)) {snprintf (sql, 100, "INSERT INTO readings (cookid, time, probe1, probe2) VALUES (%d, '%s',%d, %d); ", cookID, buff, probe1, probe2); printf ("%s / n", sql); rc = sqlite3_exec (db, sql, visszahívás, 0, & zErrMsg); if (rc! = SQLITE_OK) {printf ("SQL hiba: %s / n", zErrMsg); } else {last_db_write = sec; } char url = "https://xx.xx.xx.xx: 8888/griddb"; postData (buff, cookID, probe1, probe2, url); }}
Annak biztosítása érdekében, hogy adatait valóban behelyezze a szerverébe, futtassa a következő parancsot az adatbázis lekérdezéséhez és az eredmények megtekintéséhez:
curl -X POST -alap -u admin: admin -H "Tartalom -típus: application/json" -d '{"limit": 1000}' https:// localhost: 8080/griddb/v2/defaultCluster/dbs/ public/konténerek/bbqpi/sorok
2. lépés: Grafana
Ha a kód megvan, most, amikor az eredeti internetes portált használjuk a „szakács” elindításához, egyidejűleg tároljuk hőmérsékleti adatainkat a GridDB szerverünkön.
A következő lépés az adataink vizualizálása a Grafana segítségével. Ehhez követtük a blog információit: itt. A szép dolog ebben a megvalósításban az, hogy rendkívül könnyű látni adatainkat egy szép grafikonon. Emellett megjegyzéseket is hozzáad.
A blogban tárgyalt megjegyzések rendkívül egyszerűvé teszik számunkra, hogy figyelemmel kísérhessük, ha valami baj van az ételeinkkel vagy magával a gödörrel. Az én esetemben marhahús rövid bordákat főztem. Ezekkel nem akartam, hogy a gödörben a hőmérséklet 275 Fahrenheit fok fölé emelkedjen. Ha azt látnám, hogy a hőmérséklet meghaladja ezt, akkor lekapcsolhatom az égőt, és hagyhatom, hogy a hő újra csökkenjen:
Hasonló szabályom volt az érzékelőre, hogy ténylegesen figyelje az ételt: ha az étel 203 fahrenheit belső hőmérsékletre emelkedett, a bordák készen álltak. A főző végén található magányos megjegyzést itt láthatja:
Mindent összevetve a szakács csak körülbelül 4 órát vett igénybe, de ez a fajta beállítás igazán kiváló lenne, ha olyasmit főznék, ami még több időt igényelt volna a grillben (gondoljunk egy lassú füstre, ami ~ 12 percig tart) órák). Ennek ellenére úgy gondolom, hogy ez az eszköz könnyen látható: ha naplózza az ételei eredményeit, majd összehasonlítja az előző szakácsokkal, az azt jelenti, hogy a grillezés lassan javulni fog az idő múlásával, mivel az adatok alapján megnézheti, mi működik és mi nem 't.
3. lépés: Az étel
Ez volt az első alkalom, hogy marhahúsból készült rövid bordákat készítettem; fűszerezéshez egyszerűen sót, fekete borsot és fokhagymaport használtam. Annak ellenére, hogy néhány probléma merült fel abban, hogy az égő egy kicsit túl magasra emelkedett az elején, a bordák fantasztikusak lettek. Kérem nézze meg:
4. lépés: Következtetés
Végül az ételek fantasztikusak lettek, az érzékelők, a GridDB és a Grafana gyönyörűen működtek együtt, és értékes adatokat kaptunk arról, hogyan kell újra főzni ezeket a dolgokat, amikor legközelebb le akarunk nyűgözni néhány barátot.
Ajánlott:
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: 7 lépés (képekkel)
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: Ezt a Rapsberry PI-t tervezem használni egy csomó szórakoztató projektben a blogomban. Nyugodtan nézd meg. Vissza akartam kezdeni a Raspberry PI használatát, de nem volt billentyűzetem vagy egér az új helyen. Rég volt, hogy beállítottam egy málnát
BBQ hőmérséklet- és húsérzékelő az ESP8266 készüléken kijelzővel: 5 lépés (képekkel)
BBQ hőmérséklet- és húsérzékelő ESP8266 kijelzővel: Ebben az utasításban megmutatom, hogyan készíthet saját verzióját egy olyan BBQ eszköznek, amely méri a grillező aktuális hőmérsékletét, és ha szükséges, bekapcsol egy ventilátort. Ezen kívül van egy húsmag -hőmérséklet -érzékelő is
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő
A számítógép szétszerelése egyszerű lépésekkel és képekkel: 13 lépés (képekkel)
A számítógép szétszerelése egyszerű lépésekkel és képekkel: Ez az utasítás a számítógép szétszereléséről szól. A legtöbb alapvető alkatrész moduláris és könnyen eltávolítható. Fontos azonban, hogy szervezett legyen ezzel kapcsolatban. Ez segít elkerülni az alkatrészek elvesztését, és az újra összerakást is
A vezeték nélküli BBQ hőmérő hatótávolságának növelése (2. ford.): 11 lépés
A vezeték nélküli BBQ hőmérő hatótávolságának növelése (2. ford.): Ez az utasítás egy nagyon egyszerű folyamatot ír le a vezeték nélküli BBQ hőmérő hatótávolságának növelésére. Bár a folyamatnak szinte minden RF hőmérő esetében hasonlónak kell lennie, a konkrét modell, amelyet feltörök, egy „Maverick RediChek Remote Wir