فهرست مطالب:

BBQ Pi (با تجسم داده!): 4 مرحله (همراه با تصاویر)
BBQ Pi (با تجسم داده!): 4 مرحله (همراه با تصاویر)

تصویری: BBQ Pi (با تجسم داده!): 4 مرحله (همراه با تصاویر)

تصویری: BBQ Pi (با تجسم داده!): 4 مرحله (همراه با تصاویر)
تصویری: Deutsch lernen (A1): Ganzer Film auf Deutsch - "Nicos Weg" | Deutsch lernen mit Videos | Untertitel 2024, نوامبر
Anonim
BBQ Pi (با تجسم داده!)
BBQ Pi (با تجسم داده!)
BBQ Pi (با تجسم داده!)
BBQ Pi (با تجسم داده!)
BBQ Pi (با تجسم داده!)
BBQ Pi (با تجسم داده!)

معرفی

کباب کردن معمولاً به روند آهسته استفاده از حرارت غیر مستقیم برای پختن گوشت های مورد علاقه شما اشاره دارد. اگرچه این روش پخت و پز بسیار محبوب است-به ویژه در ایالات متحده-اما این چیزی است که برخی ممکن است آن را یک نقطه ضعف جدی تلقی کنند: برای نظارت بر دمای گودال و غذای خود نیاز به ساعت ها توجه نیمه شفاف است. وارد کنید: Raspberry Pi.

پروژه اصلی

منبع اصلی این پروژه را می توانید در اینجا پیدا کنید: https://old.reddit.com/r/raspberry_pi/comments/a0… نکته اصلی این است که کاربر reddit Produkt قادر بود داده های دما و غذا را نسبتاً ارزان انتقال دهد ، دماسنج های بی سیم تجاری موجود برای رزبری پای (که به پین GPIO آن یک ماژول RF کوچک متصل شده بود). در پروژه اصلی (پیوند بالا) ، Produkt داده های خود را در پایگاه داده sqlite ذخیره می کرد و در وب سایت php apache2 میزبانی محلی نمایش داده می شد.

این راه حل مشکل اصلی را که در معرفی این وبلاگ به آن اشاره شده است ، حل می کند: اکنون می توانید با مرورگر وب ، دمای غذا و گودال خود را از راه دور کنترل کنید. اما اگر بخواهیم این موضوع را گسترش دهیم ، چطور؟ وارد کنید: GridDB

تدارکات

تمشک پی 4

ماژول گیرنده بی سیم SUNKEE 433 مگاهرتز Superheterodyne

مرحله 1: GridDB Web API و FluentD

API وب GridDB و FluentD
API وب GridDB و FluentD

با دیدن این پروژه ، اولین فکر من - پس از موج اولیه هیجان - به راه هایی برای افزایش عملکرد فکر کردم. با استفاده از GridDB و افزونه Grafana آن ، من به دنبال تجسم داده های غذا و گودال خود بودم. فراتر از آن ، من آرزو داشتم که حاشیه نویسی Grafana را برای جستجوی هر گونه اطلاعات غیرعادی تنظیم کنم - نمی توانم گوشت سوخته داشته باشم!

برای شروع ، من باید از کد C پروژه اصلی برای خواندن داده های وارد شده از دماسنج بی سیم و ارسال این اطلاعات در سرور GridDB خود استفاده کنم. برای شروع به کار ، من یک سرور GridDB را در Azure با استفاده از ماشین مجازی CentOS چرخاندم. ساده ترین راه برای به اشتراک گذاشتن داده ها از دستگاه لبه ما (Raspberry Pi) به سرور ابری ما از طریق API وب GridDB بود. بنابراین ، در آن vm ، من WebAPI GridDB را به همراه Fluentd و اتصال GridDB همراه آن راه اندازی کردم.

قبل از ارسال داده به ابر ، من باید طرح اولیه را برای ظرف BBQ Pi خود ایجاد کنم. مجموعه داده هایی که وارد می شود بسیار ساده است: ما دو سنسور دما داریم ، یک شناسه آشپزی و البته زمان بندی. بنابراین طرحواره ما به این شکل است:

timeseries = gridstore.put_container ("bbqpi"، [("زمان" ، griddb. GS_TYPE_TIMESTAMP) ، ("cookid"، griddb. GS_TYPE_INT)، ("probe1"، griddb. GS_TYPE_INT)، ("probe2"، griddb. GS_TYPE_INT)] گریدب

برای ایجاد این ظرف زمانی ، من به سادگی از WebAPI (پورت 8080) استفاده کردم:

curl -X POST -اصلی -u admin: admin -H "نوع محتوا: application/json" -d

'{"container_name": "bbqpi"، "container_type": "TIME_SERIES"، / "rowkey": true، "columns": [{"name": "time"، "type": "TIMESTAMP"}، {"name": "cookid"، "type": "INTEGER"}، {"name": "probe1"، "type": "INTEGER"}، {"name": "probe2"، "type": "INTEGER"}]} '\ https:// localhost: 8080/griddb/v2/defaultCluster/dbs/public/containers

با ایجاد ظرف ، باید از Fluentd (پورت 8888) برای ارسال اطلاعات واقعی به ظرف خود استفاده کنم. در اینجا یک فرمان CURL ارسال برخی از داده های ساختگی است:

curl -X POST -d 'json = {"date": "2020-01-01T12: 08: 21.112Z" ، "cookid": "1" ، "probe1": "150" ، "probe2": "140" } 'https:// localhost: 8888/griddb

از آنجا ، من باید کد اصلی را برای ارسال درخواست HTTP POST هر زمان که Pi ما در حال خواندن اطلاعات از گودال ما بود (حدود 12 ثانیه یک بار) ، اضافه کنم.

به عنوان یک نکته جانبی: نوشتن این کد به من یاد داد که چقدر می توان زبان C را واضح دانست:

int postData (زمان char ، int cookid ، int probe1 ، int probe2 ، char url )

{CURL *curl؛ CURLcode res؛ / * در ویندوز ، این باعث می شود چیزهای winock */ curl_global_init (CURL_GLOBAL_ALL) ؛ char errbuf [CURL_ERROR_SIZE] = {0،}؛ عامل شار [1024] = {0،}؛ char json [1000]؛ snprintf (json، 200، "json = {" date / ": \"٪ s.112Z / "، \" cookid / ": \"٪ d / "، \" probe1 / ": \"٪ d / " ، / "probe2 \": / "٪ d \"} "، time، cookid، probe1، probe2)؛ / * دستگیره حلقه را دریافت کنید */ curl = curl_easy_init ()؛ if (curl) { /* ابتدا نشانی وب موردنظر برای دریافت POST ما را تنظیم کنید. اگر این همان چیزی است که باید داده ها را دریافت کند ، این URL می تواند یک https:// URL باشد. */ snprintf (عامل ، اندازه عامل ، "libcurl/٪ s" ، curl_version_info (CURLVERSION_NOW)-> نسخه) ؛ عامل [sizeof agent - 1] = 0 ؛ curl_easy_setopt (curl، CURLOPT_USERAGENT، نماینده)؛ curl_easy_setopt (curl، CURLOPT_URL، url)؛ curl_easy_setopt (curl، CURLOPT_USERNAME، "admin")؛ curl_easy_setopt (curl، CURLOPT_PASSWORD، "admin")؛ curl_easy_setopt (حلقه ، CURLOPT_VERBOSE ، 1L) ؛ curl_easy_setopt (curl، CURLOPT_ERRORBUFFER، errbuf)؛ curl_easy_setopt (curl، CURLOPT_POSTFIELDS، json)؛ / * درخواست را انجام دهید ، res کد بازگشتی را دریافت می کند */ 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 cleanup؛ } پاکسازی: curl_easy_cleanup (curl)؛ curl_global_cleanup ()؛ بازگشت 0 ؛ }}

با نوشتن این تابع ، من فقط باید آن را همزمان با ارسال داده sqlite اجرا کنم:

if (goodData == 1) {

if (last_db_write == 0 || (secs-last_db_write> = 10)) {snprintf (sql، 100، "INSERT INTO readions (cookid، time، probe1، probe2) VALUES (٪ d، '٪ s'،٪ d، ٪ d)؛ "، cookID، buff، probe1، probe2)؛ printf ("٪ s / n" ، sql) ؛ rc = sqlite3_exec (db، sql، callback، 0، & zErrMsg)؛ if (rc! = SQLITE_OK) {printf ("خطای SQL:٪ s / n" ، zErrMsg) ؛ } else {last_db_write = ثانیه؛ } char url = "https://xx.xx.xx.xx: 8888/griddb"؛ postData (buff، cookID، probe1، probe2، url)؛ }}

برای اطمینان از اینکه داده های شما در واقع در سرور شما قرار داده شده است ، می توانید دستور زیر را برای جستجوی پایگاه داده خود و مشاهده نتایج اجرا کنید:

curl -X POST -پایه -u admin: admin -H "Content -type: application/json" -d '{"limit": 1000}' https:// localhost: 8080/griddb/v2/defaultCluster/dbs/ public/containers/bbqpi/row

مرحله 2: گرافانا

گرافانا
گرافانا
گرافانا
گرافانا

با در دست داشتن کد ، اکنون وقتی از پورتال اصلی وب برای شروع "آشپزی" استفاده می کنیم ، همزمان داده های دما را در سرور GridDB ذخیره می کنیم.

مرحله بعدی تجسم داده های ما با استفاده از Grafana خواهد بود. برای انجام این کار ، ما اطلاعات این وبلاگ را دنبال کردیم: اینجا. نکته خوب در مورد این پیاده سازی این است که مشاهده داده های ما در یک نمودار زیبا بسیار آسان است. همچنین حاشیه نویسی اضافه می کند.

حاشیه نویسی هایی که در وبلاگ مورد بحث قرار گرفته است ، نظارت بر مواردی را که در غذا یا خود گودال اتفاق می افتد برای ما بسیار آسان می کند. در مورد من ، من دنده های کوتاه گوشت گاو می پختم. با این موارد ، من نمی خواستم دمای گودال بیش از 275 درجه فارنهایت افزایش یابد. اگر دیدم دما فراتر از این است ، می توانم مشعل را خاموش کنم و اجازه دهم گرما دوباره فرو رود:

من یک قانون مشابه برای سنسور داشتم که خود غذا را کنترل می کرد: اگر دمای غذا به 203 درجه فارنهایت برسد ، دنده ها آماده هستند. شما می توانید حاشیه نویسی تنها در پایان آشپز را اینجا ببینید:

درمجموع ، آشپز فقط 4 ساعت پوند از من گرفت ، اما اگر من چیزی را بپزم که به زمان بیشتری در کباب پز نیاز داشته باشد ، این نوع تنظیم واقعا عالی خواهد بود (به دود کم آهسته 12 پوند فکر کنید) ساعت ها). با وجود این ، من معتقدم اگر این ابزار به راحتی آشکار شود: این که بتوانید نتایج غذاهای خود را ثبت کرده و سپس آن را با آشپزهای قبلی مقایسه کنید ، به این معنی است که BBQing شما به تدریج بهتر می شود ، زیرا می توانید از داده ها برای دیدن کارکرد و کارکرد بهتر استفاده کنید. 't

مرحله 3: غذا

غذا
غذا
غذا
غذا
غذا
غذا

این اولین بار بود که من دنده های کوتاه گوشت گاو درست کردم. برای چاشنی ، من به سادگی از نمک ، فلفل سیاه و پودر سیر استفاده کردم. علیرغم برخی مشکلات مربوط به بالا رفتن مشعل برای کمی در آنجا ، دنده ها فوق العاده بیرون آمد. لطفا یک نگاه بنداز:

مرحله 4: نتیجه گیری

در پایان ، غذا فوق العاده بیرون آمد ، سنسورها ، GridDB و Grafana همگی به زیبایی در کنسرت کار کردند ، و ما اطلاعات ارزشمندی در مورد نحوه پخت دوباره این چیزها برای دفعه بعد که می خواهیم برخی از دوستان را تحت تأثیر قرار دهیم ، به دست آوردیم.

توصیه شده: