সুচিপত্র:

BBQ Pi (ডেটা ভিজুয়ালাইজেশনের সাথে!): 4 টি ধাপ (ছবি সহ)
BBQ Pi (ডেটা ভিজুয়ালাইজেশনের সাথে!): 4 টি ধাপ (ছবি সহ)

ভিডিও: BBQ Pi (ডেটা ভিজুয়ালাইজেশনের সাথে!): 4 টি ধাপ (ছবি সহ)

ভিডিও: BBQ Pi (ডেটা ভিজুয়ালাইজেশনের সাথে!): 4 টি ধাপ (ছবি সহ)
ভিডিও: ডেটা সায়েন্স ফাউন্ডেশন কোর্স ।। ১৫তম পর্ব ।। সেলফ-ড্রাইভিং গাড়িতে ডেটা সায়েন্সের ব্যবহার ।। 2024, নভেম্বর
Anonim
BBQ Pi (ডেটা ভিজুয়ালাইজেশনের সাথে!)
BBQ Pi (ডেটা ভিজুয়ালাইজেশনের সাথে!)
BBQ Pi (ডেটা ভিজুয়ালাইজেশনের সাথে!)
BBQ Pi (ডেটা ভিজুয়ালাইজেশনের সাথে!)
BBQ Pi (ডেটা ভিজুয়ালাইজেশনের সাথে!)
BBQ Pi (ডেটা ভিজুয়ালাইজেশনের সাথে!)

ভূমিকা

বারবিকিউং সাধারণত আপনার পছন্দের মাংস রান্না করার জন্য পরোক্ষ তাপ ব্যবহার করার ধীর প্রক্রিয়াকে বোঝায়। যদিও রান্নার এই পদ্ধতিটি অত্যন্ত জনপ্রিয়-বিশেষ করে মার্কিন যুক্তরাষ্ট্রে-এটি এমন কিছু আছে যা কেউ কেউ বরং একটি গুরুতর দুর্বলতা বিবেচনা করতে পারে: এটি আপনার গর্ত এবং খাবারের তাপমাত্রা পর্যবেক্ষণ করতে কয়েক ঘন্টা আধা-মনোযোগী মনোযোগ প্রয়োজন। প্রবেশ করুন: রাস্পবেরি পাই।

মূল প্রকল্প

এই প্রকল্পের মূল উৎস এখানে পাওয়া যাবে: https://old.reddit.com/r/raspberry_pi/comments/a0… এর মূল কথা হল Reddit ব্যবহারকারী প্রোডাক্ট তুলনামূলকভাবে সস্তা থেকে খাদ্য এবং পিট তাপমাত্রার তথ্য রিলে করতে সক্ষম হয়েছিল, রাস্পবেরি পাইতে বাণিজ্যিকভাবে উপলব্ধ ওয়্যারলেস থার্মোমিটার (যা তার জিপিআইও পিনের সাথে একটি ছোট আরএফ মডিউল সংযুক্ত ছিল)। মূল প্রকল্পে (উপরে সংযুক্ত), প্রোডাক্ট তার ডেটা একটি স্ক্লাইট ডাটাবেসে সংরক্ষণ করে এবং স্থানীয়ভাবে হোস্ট করা অ্যাপাচি 2 পিএইচপি ওয়েবসাইটে প্রদর্শিত হয়।

এই সমাধানটি ইতিমধ্যেই এই ব্লগের প্রবর্তনে স্পর্শ করা মূল সমস্যার সমাধান করেছে: আপনি এখন একটি ওয়েব ব্রাউজার দিয়ে দূর থেকে আপনার খাদ্য এবং পিটের তাপমাত্রা পর্যবেক্ষণ করতে পারেন। কিন্তু আমরা যদি এই প্রসারিত করতে চাই? লিখুন: GridDB।

সরবরাহ

রাস্পবেরি পাই 4

SUNKEE 433Mhz Superheterodyne Wireless Receiver মডিউল

ধাপ 1: GridDB ওয়েব API এবং FluentD

GridDB ওয়েব API এবং FluentD
GridDB ওয়েব API এবং FluentD

এই প্রকল্পটি দেখার পরে, আমার প্রথম চিন্তা - উত্তেজনার প্রাথমিক তরঙ্গের পরে - আমি কার্যকারিতা প্রসারিত করার উপায়গুলি নিয়ে ভাবছিলাম। গ্রিডডিবি এবং এর গ্রাফানা প্লাগইন ব্যবহার করে, আমি আমার খাদ্য এবং পিটের ডেটা কল্পনা করার চেষ্টা করেছি। এর বাইরে, আমি গ্রাফানা টীকাগুলি সেট করতে চেয়েছিলাম যে কোনও বিশৃঙ্খল ডেটা পয়েন্ট খুঁজে বের করতে চাই - কোনও ভাজা মাংস থাকতে পারে না!

শুরু করার জন্য, বেতার থার্মোমিটার থেকে আসা ডেটা পড়ার জন্য আমার মূল প্রকল্পের সি কোড ব্যবহার করতে হবে এবং সেই তথ্য আমার গ্রিডিডিবি সার্ভারে পোস্ট করতে হবে। এটি চালু এবং চালানোর জন্য, আমি একটি CentOS ভার্চুয়াল মেশিন ব্যবহার করে Azure এ একটি GridDB সার্ভার তৈরি করেছি। আমাদের প্রান্ত মেশিন (রাস্পবেরি পাই) থেকে আমাদের ক্লাউড সার্ভারে ডেটা শেয়ার করার সবচেয়ে সহজ উপায় ছিল GridDB ওয়েব API এর মাধ্যমে। সুতরাং, সেই ভিএম -এ, আমি ফ্লুইন্টড এবং তার সাথে থাকা গ্রিডডিবি সংযোগকারী সহ গ্রিডডিবির ওয়েবএপিআই সেট আপ করেছি।

প্রকৃতপক্ষে ক্লাউডে ডেটা পাঠানোর আগে, আমার BBQ Pi কন্টেইনারের জন্য মৌলিক স্কিমা তৈরি করা দরকার। ডেটাসেটটি খুব সহজ: আমাদের দুটি তাপমাত্রা সেন্সর রয়েছে, একটি রান্না আইডি এবং অবশ্যই টাইমস্ট্যাম্প। সুতরাং আমাদের স্কিমা এই মত দেখাচ্ছে:

timeseries = gridstore.put_container ("bbqpi", [("সময়", griddb।

এই টাইমসরিজ কন্টেইনার তৈরি করতে, আমি কেবল WebAPI (পোর্ট 8080) ব্যবহার করেছি:

কার্ল -এক্স পোস্ট -বেসিক -ইউ অ্যাডমিন: অ্যাডমিন -এইচ "কন্টেন্ট -টাইপ: অ্যাপ্লিকেশন/জসন" -ডি

'{"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

কন্টেইনার তৈরি করার সাথে সাথে, আমাদের কন্টেইনারে প্রকৃত ডেটা পোস্ট করার জন্য আমাকে ফ্লুয়েন্টড (পোর্ট 8888) ব্যবহার করতে হবে। এখানে একটি CURL কমান্ড কিছু ডামি ডেটা পোস্ট করছে:

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

সেখান থেকে, যখনই আমাদের Pi আমাদের পিট থেকে তথ্য পড়ছিল (প্রায় প্রতি ~ 12 সেকেন্ডে) একটি HTTP POST অনুরোধ পাঠানোর জন্য আমাকে মূল কোডটি সংযুক্ত করতে হয়েছিল।

একটি পার্শ্ব নোট হিসাবে: এই কোডটি লিখতে আমাকে শিখিয়েছে কিভাবে সি ভাষা হতে পারে

int postData (char time , int cookid, int probe1, int probe2, char url )

{কার্ল *কার্ল; CURLcode res; / * উইন্ডোতে, এটি উইনসক স্টাফ শুরু করবে */ curl_global_init (CURL_GLOBAL_ALL); char errbuf [CURL_ERROR_SIZE] = {0,}; চর এজেন্ট [1024] = {0,}; char json [1000]; snprintf (json, 200, "json = {" date / ": \"%s.112Z / ", cook" cookid / ": \"%d / "," probe1 / ": \"%d / ", pro "probe2 \": / "%d \"} ", সময়, কুকিড, probe1, probe2); / * একটি কার্ল হ্যান্ডেল পান */ curl = curl_easy_init (); if (curl) { /* প্রথমে আমাদের POST প্রাপ্ত হতে যাচ্ছে এমন URL টি সেট করুন। এই ইউআরএলটি ঠিক একইভাবে https:// URL হতে পারে যদি ডেটা গ্রহণ করা উচিত। */ snprintf (এজেন্ট, sizeof এজেন্ট, "libcurl/%s", curl_version_info (CURLVERSION_NOW)-> সংস্করণ); এজেন্ট [sizeof agent - 1] = 0; curl_easy_setopt (কার্ল, CURLOPT_USERAGENT, এজেন্ট); curl_easy_setopt (কার্ল, 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 (কার্ল, CURLOPT_POSTFIELDS, json); / * অনুরোধটি সম্পাদন করুন, res রিটার্ন কোড পাবে */ res = curl_easy_perform (curl); যদি (res! = CURLE_OK) {size_t len = strlen (errbuf); fprintf (stderr, "\ nlibcurl: (%d)", res); যদি (len) fprintf (stderr, "%s%s", errbuf, ((errbuf [len - 1]! = '\ n')? "\ n": "")); fprintf (stderr, "%s / n / n", curl_easy_strerror (res)); পরিষ্কার করা; } পরিষ্কার: curl_easy_cleanup (কার্ল); curl_global_cleanup (); রিটার্ন 0; }}

এই ফাংশনটি লিখিত হওয়ার সাথে সাথে, আমি এটিকে একই সময়ে চালানোর প্রয়োজন ছিল যখন স্ক্লাইট ডেটা পোস্ট করা হচ্ছিল:

যদি (goodData == 1) {

যদি (last_db_write == 0 || %d); ", cookID, buff, probe1, probe2); printf ("%s / n", sql); rc = sqlite3_exec (db, sql, callback, 0, & zErrMsg); যদি (rc! = SQLITE_OK) {printf ("SQL error: %s / n", zErrMsg); } অন্যথায় {last_db_write = secs; } char url = "https://xx.xx.xx.xx: 8888/griddb"; পোস্ট ডেটা (বাফ, কুকআইডি, প্রোব 1, প্রোব 2, ইউআরএল); }}

আপনার ডেটা আসলে আপনার সার্ভারে beingোকানো হচ্ছে কিনা তা নিশ্চিত করার জন্য, আপনি আপনার ডাটাবেস অনুসন্ধান করতে এবং ফলাফল দেখতে নিম্নলিখিত কমান্ডটি চালাতে পারেন:

curl -X POST --basic -u admin: admin -H "Content -type: application/json" -d '{"limit": 1000}' https:// localhost: 8080/griddb/v2/defaultCluster/dbs/ পাবলিক/পাত্রে/bbqpi/সারি

ধাপ 2: গ্রাফানা

গ্রাফানা
গ্রাফানা
গ্রাফানা
গ্রাফানা

কোডের জায়গায়, এখন যখন আমরা একটি "কুক" শুরু করার জন্য মূল ওয়েব পোর্টালটি ব্যবহার করি, তখন আমরা একই সাথে আমাদের তাপমাত্রার তথ্য আমাদের GridDB সার্ভারে সংরক্ষণ করব।

পরবর্তী পদক্ষেপ গ্রাফানা ব্যবহার করে আমাদের ডেটা কল্পনা করা হবে। এটি করার জন্য, আমরা এই ব্লগের তথ্য অনুসরণ করেছি: এখানে। এই বাস্তবায়ন সম্পর্কে চমৎকার বিষয় হল যে আমাদের ডেটা একটি সুন্দর গ্রাফে দেখানো অত্যন্ত সহজ। এটি টীকা যোগ করে।

ব্লগে আলোচিত টীকাগুলি আমাদের জন্য খুব সহজ করে তোলে যখন আমাদের খাদ্য বা গর্তে কিছু ভুল হয়ে যায়। আমার ক্ষেত্রে, আমি গরুর মাংসের ছোট পাঁজর রান্না করছিলাম। তাদের সাথে, আমি চাইনি যে গর্তে তাপমাত্রা 275 ডিগ্রি ফারেনহাইটের বেশি বাড়ুক। যদি আমি দেখেছি যে তাপমাত্রা এর বাইরে চলে গেছে, আমি একটি বার্নার বন্ধ করতে পারি এবং তাপটি আবার ডুবতে দিতে পারি:

সেন্সরের জন্য আমার অনুরূপ নিয়ম ছিল আসলে খাবারের উপর ট্যাব রাখা: যদি খাবার 203 ডিগ্রি ফারেনহাইটের অভ্যন্তরীণ তাপমাত্রায় পৌঁছে, তবে পাঁজর প্রস্তুত ছিল। আপনি এখানে রান্নার শেষে একক টীকা দেখতে পারেন:

সব মিলিয়ে, বাবুর্চি আমাকে প্রায় ~ 4 ঘন্টা বা তারও বেশি সময় নিয়েছিল, তবে এই ধরণের সেটআপটি সত্যই উৎকৃষ্ট হবে যদি আমি এমন কিছু রান্না করতাম যা গ্রীলে আরও বেশি সময় লাগত (ভাবুন একটি কম ধীর ধোঁয়া যা last 12 স্থায়ী হয় ঘন্টার). তা সত্ত্বেও, আমি বিশ্বাস করি যে এই টুলটি যদি সহজেই স্পষ্ট হয়: আপনার খাবারের ফলাফল লগ ইন করতে সক্ষম হওয়া এবং তারপর আগের রান্নাগুলোর সাথে তুলনা করা মানে আপনার BBQing সময়ের সাথে ধীরে ধীরে ভাল হয়ে উঠবে কারণ আপনি ডেটা ব্যবহার করে দেখতে পারেন কি কাজ করে এবং কি করে না 'টি

ধাপ 3: খাদ্য

খাদ্য
খাদ্য
খাদ্য
খাদ্য
খাদ্য
খাদ্য

এই প্রথম আমি গরুর মাংসের ছোট পাঁজর বানালাম; মশলার জন্য, আমি কেবল লবণ, কালো মরিচ এবং রসুন গুঁড়া ব্যবহার করেছি। বার্নারের কিছু সমস্যা সত্ত্বেও শুরুতে একটু বেশি ছিল, পাঁজর অসাধারণভাবে বেরিয়ে এল। এক নজর দেখে নাও:

ধাপ 4: উপসংহার

শেষ পর্যন্ত, খাবারটি দুর্দান্তভাবে বেরিয়ে এল, সেন্সর, গ্রিডডিবি এবং গ্রাফানা সবাই কনসার্টে সুন্দরভাবে কাজ করেছিল এবং আমরা পরবর্তী সময়ে কিছু বন্ধুকে মুগ্ধ করতে চাইলে এই জিনিসগুলি আবার কীভাবে রান্না করা যায় সে সম্পর্কে কিছু মূল্যবান তথ্য পেয়েছি।

প্রস্তাবিত: