# ভার্চুয়াল সিঙ্গল-বোর্ড কম্পিউটার IoT ডিভাইস, সেন্সর এবং অ্যাকচুয়েটর কেনার পরিবর্তে, আপনি আপনার কম্পিউটার ব্যবহার করে IoT হার্ডওয়্যার সিমুলেট করতে পারেন। [CounterFit প্রকল্প](https://github.com/CounterFit-IoT/CounterFit) আপনাকে একটি অ্যাপ লোকালভাবে চালানোর সুযোগ দেয় যা সেন্সর এবং অ্যাকচুয়েটরসহ IoT হার্ডওয়্যার সিমুলেট করে। এরপর আপনি লোকাল Python কোড ব্যবহার করে এই সেন্সর এবং অ্যাকচুয়েটর অ্যাক্সেস করতে পারেন, যেভাবে আপনি Raspberry Pi-তে ফিজিক্যাল হার্ডওয়্যার ব্যবহার করে কোড লিখতেন। ## সেটআপ CounterFit ব্যবহার করতে হলে আপনার কম্পিউটারে কিছু ফ্রি সফটওয়্যার ইনস্টল করতে হবে। ### কাজ প্রয়োজনীয় সফটওয়্যার ইনস্টল করুন। 1. Python ইনস্টল করুন। Python-এর সর্বশেষ সংস্করণ ইনস্টল করার নির্দেশনার জন্য [Python ডাউনলোড পেজ](https://www.python.org/downloads/) দেখুন। 1. Visual Studio Code (VS Code) ইনস্টল করুন। এটি সেই এডিটর যা আপনি Python-এ আপনার ভার্চুয়াল ডিভাইস কোড লেখার জন্য ব্যবহার করবেন। VS Code ইনস্টল করার নির্দেশনার জন্য [VS Code ডকুমেন্টেশন](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) দেখুন। > 💁 আপনি যদি কোনো নির্দিষ্ট Python IDE বা এডিটর পছন্দ করেন, তাহলে এই লেসনগুলোতে সেটি ব্যবহার করতে পারেন। তবে লেসনগুলো VS Code ব্যবহার করার ভিত্তিতে নির্দেশনা দেবে। 1. VS Code Pylance এক্সটেনশন ইনস্টল করুন। এটি VS Code-এর জন্য একটি এক্সটেনশন যা Python ভাষার সাপোর্ট প্রদান করে। এই এক্সটেনশন VS Code-এ ইনস্টল করার নির্দেশনার জন্য [Pylance এক্সটেনশন ডকুমেন্টেশন](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) দেখুন। CounterFit অ্যাপ ইনস্টল এবং কনফিগার করার নির্দেশনা নির্দিষ্ট সময়ে অ্যাসাইনমেন্ট নির্দেশনায় দেওয়া হবে, কারণ এটি প্রতি-প্রকল্প ভিত্তিতে ইনস্টল করা হয়। ## হ্যালো ওয়ার্ল্ড নতুন প্রোগ্রামিং ভাষা বা প্রযুক্তি শেখার সময় সাধারণত একটি 'Hello World' অ্যাপ্লিকেশন তৈরি করা হয় - একটি ছোট অ্যাপ্লিকেশন যা `"Hello World"` এর মতো টেক্সট আউটপুট করে, যাতে নিশ্চিত হওয়া যায় যে সব টুল সঠিকভাবে কনফিগার করা হয়েছে। ভার্চুয়াল IoT হার্ডওয়্যারের জন্য 'Hello World' অ্যাপ নিশ্চিত করবে যে আপনার Python এবং Visual Studio Code সঠিকভাবে ইনস্টল করা হয়েছে। এটি CounterFit-এর সাথে সংযোগ স্থাপন করবে ভার্চুয়াল IoT সেন্সর এবং অ্যাকচুয়েটরের জন্য। এটি কোনো হার্ডওয়্যার ব্যবহার করবে না, শুধুমাত্র সংযোগ স্থাপন করবে যাতে প্রমাণিত হয় যে সবকিছু কাজ করছে। এই অ্যাপটি `nightlight` নামক একটি ফোল্ডারে থাকবে এবং অ্যাসাইনমেন্টের পরবর্তী অংশে নাইটলাইট অ্যাপ্লিকেশন তৈরি করতে বিভিন্ন কোডের সাথে পুনরায় ব্যবহার করা হবে। ### Python ভার্চুয়াল এনভায়রনমেন্ট কনফিগার করুন Python-এর একটি শক্তিশালী বৈশিষ্ট্য হলো [Pip প্যাকেজ](https://pypi.org) ইনস্টল করার ক্ষমতা - এগুলো হলো অন্যদের দ্বারা লেখা কোডের প্যাকেজ যা ইন্টারনেটে প্রকাশিত হয়। আপনি একটি কমান্ড ব্যবহার করে Pip প্যাকেজ আপনার কম্পিউটারে ইনস্টল করতে পারেন এবং তারপর সেই প্যাকেজটি আপনার কোডে ব্যবহার করতে পারেন। আপনি CounterFit-এর সাথে কথা বলার জন্য একটি প্যাকেজ ইনস্টল করতে Pip ব্যবহার করবেন। ডিফল্টভাবে যখন আপনি একটি প্যাকেজ ইনস্টল করেন, এটি আপনার কম্পিউটারের সর্বত্র উপলব্ধ হয়। এটি প্যাকেজ সংস্করণের সমস্যার দিকে নিয়ে যেতে পারে - যেমন একটি অ্যাপ্লিকেশন একটি প্যাকেজের একটি সংস্করণের উপর নির্ভর করে যা অন্য অ্যাপ্লিকেশনের জন্য নতুন সংস্করণ ইনস্টল করার সময় ভেঙে যায়। এই সমস্যার সমাধান করতে, আপনি একটি [Python ভার্চুয়াল এনভায়রনমেন্ট](https://docs.python.org/3/library/venv.html) ব্যবহার করতে পারেন, যা মূলত একটি নির্দিষ্ট ফোল্ডারে Python-এর একটি কপি। যখন আপনি Pip প্যাকেজ ইনস্টল করেন, সেগুলো শুধুমাত্র সেই ফোল্ডারে ইনস্টল হয়। > 💁 আপনি যদি Raspberry Pi ব্যবহার করেন, তাহলে আপনি Pip প্যাকেজ ম্যানেজ করার জন্য সেই ডিভাইসে ভার্চুয়াল এনভায়রনমেন্ট সেটআপ করেননি। আপনি গ্লোবাল প্যাকেজ ব্যবহার করছেন, কারণ Grove প্যাকেজগুলো ইনস্টলার স্ক্রিপ্ট দ্বারা গ্লোবালি ইনস্টল করা হয়। #### কাজ - Python ভার্চুয়াল এনভায়রনমেন্ট কনফিগার করুন Python ভার্চুয়াল এনভায়রনমেন্ট কনফিগার করুন এবং CounterFit-এর জন্য Pip প্যাকেজ ইনস্টল করুন। 1. আপনার টার্মিনাল বা কমান্ড লাইন থেকে একটি নতুন ডিরেক্টরি তৈরি এবং সেখানে নেভিগেট করতে নিম্নলিখিত কমান্ড চালান: ```sh mkdir nightlight cd nightlight ``` 1. `.venv` ফোল্ডারে একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করতে নিম্নলিখিত কমান্ড চালান: ```sh python3 -m venv .venv ``` > 💁 ভার্চুয়াল এনভায়রনমেন্ট তৈরি করতে আপনাকে স্পষ্টভাবে `python3` কল করতে হবে, কারণ আপনার কম্পিউটারে Python 2 ইনস্টল করা থাকতে পারে। যদি Python 2 ইনস্টল থাকে, তাহলে `python` কল করলে Python 2 ব্যবহার করা হবে Python 3-এর পরিবর্তে। 1. ভার্চুয়াল এনভায়রনমেন্ট সক্রিয় করুন: * Windows-এ: * যদি আপনি Command Prompt বা Windows Terminal-এর মাধ্যমে Command Prompt ব্যবহার করেন, তাহলে চালান: ```cmd .venv\Scripts\activate.bat ``` * যদি আপনি PowerShell ব্যবহার করেন, তাহলে চালান: ```powershell .\.venv\Scripts\Activate.ps1 ``` > যদি স্ক্রিপ্ট চালানোর অনুমতি না থাকার বিষয়ে কোনো ত্রুটি দেখায়, তাহলে আপনাকে একটি উপযুক্ত execution policy সেট করে স্ক্রিপ্ট চালানোর অনুমতি দিতে হবে। এটি করতে, PowerShell অ্যাডমিনিস্ট্রেটর হিসেবে চালু করুন এবং নিম্নলিখিত কমান্ড চালান: ```powershell Set-ExecutionPolicy -ExecutionPolicy Unrestricted ``` নিশ্চিত করতে `Y` লিখুন। তারপর PowerShell পুনরায় চালু করুন এবং আবার চেষ্টা করুন। প্রয়োজন হলে আপনি পরে এই execution policy রিসেট করতে পারেন। Microsoft Docs-এর [Execution Policies পেজ](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_execution_policies?WT.mc_id=academic-17441-jabenn) থেকে এ বিষয়ে আরও পড়তে পারেন। * macOS বা Linux-এ চালান: ```cmd source ./.venv/bin/activate ``` > 💁 এই কমান্ডগুলো সেই অবস্থান থেকে চালানো উচিত যেখানে আপনি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করার কমান্ড চালিয়েছিলেন। `.venv` ফোল্ডারে নেভিগেট করার প্রয়োজন নেই। আপনি সবসময় সক্রিয় কমান্ড এবং প্যাকেজ ইনস্টল বা কোড চালানোর কমান্ড সেই ফোল্ডার থেকে চালাবেন যেখানে আপনি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করেছিলেন। 1. একবার ভার্চুয়াল এনভায়রনমেন্ট সক্রিয় হয়ে গেলে, ডিফল্ট `python` কমান্ডটি সেই সংস্করণ চালাবে যা ভার্চুয়াল এনভায়রনমেন্ট তৈরি করতে ব্যবহৃত হয়েছিল। সংস্করণ পেতে নিম্নলিখিত কমান্ড চালান: ```sh python --version ``` আউটপুটে নিম্নলিখিত থাকবে: ```output (.venv) ➜ nightlight python --version Python 3.9.1 ``` > 💁 আপনার Python সংস্করণ ভিন্ন হতে পারে - যতক্ষণ এটি সংস্করণ 3.6 বা তার বেশি, আপনি ঠিক আছেন। যদি না হয়, এই ফোল্ডারটি মুছে ফেলুন, Python-এর নতুন সংস্করণ ইনস্টল করুন এবং আবার চেষ্টা করুন। 1. CounterFit-এর জন্য Pip প্যাকেজ ইনস্টল করতে নিম্নলিখিত কমান্ড চালান। এই প্যাকেজগুলোতে CounterFit অ্যাপ এবং Grove হার্ডওয়্যারের জন্য শিম অন্তর্ভুক্ত রয়েছে। এই শিমগুলো আপনাকে কোড লিখতে দেয় যেন আপনি Grove ইকোসিস্টেমের ফিজিক্যাল সেন্সর এবং অ্যাকচুয়েটর ব্যবহার করছেন, কিন্তু ভার্চুয়াল IoT ডিভাইসের সাথে সংযুক্ত। ```sh pip install CounterFit pip install counterfit-connection pip install counterfit-shims-grove ``` এই Pip প্যাকেজগুলো শুধুমাত্র ভার্চুয়াল এনভায়রনমেন্টে ইনস্টল হবে এবং এর বাইরে উপলব্ধ হবে না। ### কোড লিখুন Python ভার্চুয়াল এনভায়রনমেন্ট প্রস্তুত হলে, আপনি 'Hello World' অ্যাপ্লিকেশনের জন্য কোড লিখতে পারেন। #### কাজ - কোড লিখুন কনসোলে `"Hello World"` প্রিন্ট করার জন্য একটি Python অ্যাপ্লিকেশন তৈরি করুন। 1. ভার্চুয়াল এনভায়রনমেন্টের ভিতরে একটি Python ফাইল `app.py` তৈরি করতে আপনার টার্মিনাল বা কমান্ড লাইন থেকে নিম্নলিখিত কমান্ড চালান: * Windows থেকে চালান: ```cmd type nul > app.py ``` * macOS বা Linux-এ চালান: ```cmd touch app.py ``` 1. বর্তমান ফোল্ডারটি VS Code-এ খুলুন: ```sh code . ``` > 💁 যদি macOS-এ আপনার টার্মিনাল `command not found` রিটার্ন করে, তাহলে এর অর্থ VS Code আপনার PATH-এ যোগ করা হয়নি। আপনি [VS Code ডকুমেন্টেশনের কমান্ড লাইন থেকে চালু করার অংশ](https://code.visualstudio.com/docs/setup/mac?WT.mc_id=academic-17441-jabenn#_launching-from-the-command-line) অনুসরণ করে VS Code আপনার PATH-এ যোগ করতে পারেন এবং তারপর কমান্ডটি চালান। Windows এবং Linux-এ VS Code ডিফল্টভাবে আপনার PATH-এ ইনস্টল হয়। 1. যখন VS Code চালু হবে, এটি Python ভার্চুয়াল এনভায়রনমেন্ট সক্রিয় করবে। নির্বাচিত ভার্চুয়াল এনভায়রনমেন্টটি নিচের স্ট্যাটাস বারে প্রদর্শিত হবে: ![VS Code ভার্চুয়াল এনভায়রনমেন্ট দেখাচ্ছে](../../../../../translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.bn.png) 1. যদি VS Code টার্মিনাল VS Code চালু হওয়ার সময় ইতিমধ্যে চালু থাকে, তাহলে এতে ভার্চুয়াল এনভায়রনমেন্ট সক্রিয় থাকবে না। সবচেয়ে সহজ উপায় হলো **Kill the active terminal instance** বোতাম ব্যবহার করে টার্মিনাল বন্ধ করা: ![VS Code Kill the active terminal instance বোতাম](../../../../../translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.bn.png) আপনি টার্মিনালে ভার্চুয়াল এনভায়রনমেন্ট সক্রিয় আছে কিনা তা জানতে পারেন, কারণ টার্মিনাল প্রম্পটে ভার্চুয়াল এনভায়রনমেন্টের নাম একটি প্রিফিক্স হিসেবে থাকবে। উদাহরণস্বরূপ, এটি হতে পারে: ```sh (.venv) ➜ nightlight ``` যদি প্রম্পটে `.venv` প্রিফিক্স না থাকে, তাহলে টার্মিনালে ভার্চুয়াল এনভায়রনমেন্ট সক্রিয় নেই। 1. *Terminal -> New Terminal* নির্বাচন করে বা `` CTRL+` `` চাপ দিয়ে একটি নতুন VS Code টার্মিনাল চালু করুন। নতুন টার্মিনাল ভার্চুয়াল এনভায়রনমেন্ট লোড করবে এবং এটি সক্রিয় করার কল টার্মিনালে প্রদর্শিত হবে। প্রম্পটে ভার্চুয়াল এনভায়রনমেন্টের নাম (`.venv`) থাকবে: ```output ➜ nightlight source .venv/bin/activate (.venv) ➜ nightlight ``` 1. VS Code এক্সপ্লোরার থেকে `app.py` ফাইলটি খুলুন এবং নিম্নলিখিত কোড যোগ করুন: ```python print('Hello World!') ``` `print` ফাংশন যা পাস করা হয় তা কনসোলে প্রিন্ট করে। 1. VS Code টার্মিনাল থেকে আপনার Python অ্যাপ চালানোর জন্য নিম্নলিখিত কমান্ড চালান: ```sh python app.py ``` আউটপুটে নিম্নলিখিত থাকবে: ```output (.venv) ➜ nightlight python app.py Hello World! ``` 😀 আপনার 'Hello World' প্রোগ্রাম সফল হয়েছে! ### 'হার্ডওয়্যার' সংযুক্ত করুন দ্বিতীয় 'Hello World' ধাপে, আপনি CounterFit অ্যাপ চালাবেন এবং আপনার কোডের সাথে এটি সংযুক্ত করবেন। এটি IoT হার্ডওয়্যারকে একটি ডেভ কিটে প্লাগ ইন করার ভার্চুয়াল সমতুল্য। #### কাজ - 'হার্ডওয়্যার' সংযুক্ত করুন 1. VS Code টার্মিনাল থেকে নিম্নলিখিত কমান্ড চালিয়ে CounterFit অ্যাপ চালু করুন: ```sh counterfit ``` অ্যাপটি চালু হবে এবং আপনার ওয়েব ব্রাউজারে খুলবে: ![Counter Fit অ্যাপ ব্রাউজারে চালু](../../../../../translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.bn.png) এটি *Disconnected* হিসেবে চিহ্নিত হবে এবং উপরের ডানদিকে LED বন্ধ থাকবে। 1. `app.py` ফাইলের শীর্ষে নিম্নলিখিত কোড যোগ করুন: ```python from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) ``` এই কোডটি `counterfit_connection` মডিউল থেকে `CounterFitConnection` ক্লাস ইমপোর্ট করে। এটি `127.0.0.1`-এ চলমান CounterFit অ্যাপের সাথে সংযোগ শুরু করে, যা আপনার লোকাল কম্পিউটারে অ্যাক্সেস করার জন্য সবসময় ব্যবহার করা যায় এমন একটি IP ঠিকানা (প্রায়শই *localhost* নামে পরিচিত), এবং পোর্ট 5000-এ। > 💁 যদি আপনার পোর্ট 5000-এ অন্য অ্যাপ চালু থাকে, তাহলে আপনি কোডে পোর্ট আপডেট করে এটি পরিবর্তন করতে পারেন এবং `CounterFit --port ` চালিয়ে CounterFit চালাতে পারেন, যেখানে `` আপনার পছন্দের পোর্ট দিয়ে প্রতিস্থাপন করবেন। 1. আপনাকে একটি নতুন VS Code টার্মিনাল চালু করতে হবে **Create a new integrated terminal** বোতাম নির্বাচন করে। কারণ বর্তমান টার্মিনালে CounterFit অ্যাপ চালু রয়েছে। ![VS Code Create a new integrated terminal বোতাম](../../../../../translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.bn.png) 1. এই নতুন টার্মিনালে, আগের মতো `app.py` ফাইল চালান। CounterFit-এর স্ট্যাটাস **Connected**-এ পরিবর্তিত হবে এবং LED জ্বলে উঠবে। ![Counter Fit সংযুক্ত দেখাচ্ছে](../../../../../translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.bn.png) > 💁 আপনি এই কোডটি [code/virtual-device](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/virtual-device) ফোল্ডারে খুঁজে পেতে পারেন। 😀 আপনার হার্ডওয়্যারের সাথে সংযোগ সফল হয়েছে! --- **অস্বীকৃতি**: এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।