# আইওটি দ্বারা উদ্ভিদ বৃদ্ধির পূর্বাভাস
![A sketchnote overview of this lesson](../../../../sketchnotes/lesson-5.jpg)
> স্কেচনোটটি তৈরী করেছেন [Nitya Narasimhan](https://github.com/nitya). বড় সংস্করণে দেখার জন্য ছবিটিতে ক্লিক করতে হবে।
## লেকচার-পূর্ববর্তী কুইজ
[লেকচার-পূর্ববর্তী কুইজ](https://thankful-pond-0eba8f10f.1.azurestaticapps.net/quiz/9)
## সূচনা
উদ্ভিদের বৃদ্ধির জন্য নির্দিষ্ট কিছু উপাদান প্রয়োজন - পানি, কার্বন-ডাইঅক্সাইড, পুষ্টি, হালকা এবং তাপ। এই পাঠে আমরা শিখবো কীভাবে বায়ুর তাপমাত্রা পরিমাপ করে উদ্ভিদের বৃদ্ধি এবং পরিপক্কতার হার হিসেব করা যায়।
এই লেসনে আমরা শিখবো:
* [ডিজিটাল কৃষিব্যবস্থা](#ডিজিটাল-কৃষিব্যবস্থা)
* [কৃষিকাজে তাপমাত্রা কেন গুরুত্বপূর্ণ?](#কৃষিকাজে-তাপমাত্রা-কেন-গুরুত্বপূর্ণ)
* [চারিপার্শ্বিক তাপমাত্রা পরিমাপ](#চারিপার্শ্বিক-তাপমাত্রা-পরিমাপ)
* [Growing degree days (GDD) হিসেব](#growing-degree-days)
* [তাপমাত্রা সেন্সরের তথ্য দিয়ে GDD নির্ণয়](#তাপমাত্রা-সেন্সরের-তথ্য-দিয়ে-GDD-নির্ণয়)
## ডিজিটাল কৃষিব্যবস্থা
ডিজিটাল বিপ্লব আমাদের কৃষিব্যবস্থায় আমূল পরিবর্তন আনছে। ডেটা সংগ্রহ, ডেটা স্টোর এবং সেই তথ্য বিশ্লেষণের মাধ্যমে আমাদের কৃষিকাজ নতুন রূপ লাভ করছে। ওয়ার্ল্ড ইকোনমিক ফোরামের ভাষ্যমতে আমরা বর্তমানে 'চতুর্থ শিল্প বিপ্লব' এর সময়ে আছি এবং ডিজিটাল কৃষির উত্থানকে 'চতুর্থ কৃষি বিপ্লব' বা 'কৃষি 4.0' হিসাবে চিহ্নিত করা হচ্ছে।
> 🎓 'ডিজিটাল এগ্রিকালচার' বলতে কৃষিব্যবস্থার সম্পূর্ণ value chain কে বোঝানো হয় যা একেবারে খামার থেকে খাওয়ার টেবিল পর্যন্ত সম্পূর্ণ যাত্রা । খাদ্য পরিবহণ এবং প্রক্রিয়াজাতকরণের সময় তার গুণগত মান ট্র্যাক করা, গুদাম এবং ই-কমার্স ব্যবস্থা পরিচালনা এমনকি ট্র্যাক্টর ভাড়া করা পর্যন্ত - সবকিছুই বর্তমানে ডিজিটাল মাধ্যমে করা সম্ভব হচ্ছে
এই বৈপ্লবিক পরিবর্তনের কারণে কম পরিমাণে সার ও কীটনাশক এবং দক্ষতার সাথে সেচ বা পানি ব্যবহার করে কৃষকেরা এখন অধিক ফলন পাচ্ছেন। যদিও প্রাথমিকভাবে কেবল উন্নত দেশগুলোতেই সেন্সর এবং অন্যান্য আধুনিক যন্ত্রের ব্যবহার শুরু হয়, বর্তমানে এগুলোর দাম কমে আসছে এবং উন্নয়নশীল দেশগুলোতেও অনেক বেশি সহজলভ্য হচ্ছে।
ডিজিটাল কৃষিব্যবস্থায় আমরা দেখতে পাচ্ছি -
* তাপমাত্রা পরিমাপ - তাপমাত্রা সঠিক পরিমাপ কৃষকদের গাছের বৃদ্ধি এবং পরিপক্কতা সম্পর্কে পূর্বাভাস দেয়।
* স্বয়ংক্রিয় সেচকার্য - নির্দিষ্ট সময় পরপর পানি দেয়ার পরিবর্তে, মাটির আর্দ্রতা পরিমাপ করে, তা খুব শুষ্ক হলে সেচ ব্যবস্থা চালু করা অধিক উপযোগী। সময়ভিত্তিক সেচের ফলে গরম, শুষ্ক সময়ে কম পানি পাওয়া বা বৃষ্টির সময় অতিরিক্ত পানির চাপ বেড়ে যাওয়ার মতো ঘটনা ঘটতে পারে। কেবল প্রয়োজনের সময়ে সেচ দিয়েই, কৃষকরা তাদের জলের ব্যবহার আরো বেশি কার্যকর করতে পারে।
* কীটপতঙ্গ নিয়ন্ত্রণ - কৃষকরা স্বয়ংক্রিয় রোবট বা ড্রোনগুলিতে ক্যামেরা ব্যবহার করে কীতপতঙ্গ গুলো পর্যবেক্ষণ করতে পারে এবং কেবল যেখানে প্রয়োজন সেখানেই কীটনাশক প্রয়োগ করতে পারেন। এতে করে কীটনাশকের পরিমাণ হ্রাস হবে এবং স্থানীয় জলের সরবরাহে কীটনাশকের মিশ্রণ কমে আসবে।
✅ একটু ভাবা যাক - কৃষকের ফলন উন্নত করতে আর কোন কোন কৌশল ব্যবহার করা হয়?
> 🎓 'Precision Agriculture' পরিভাষা ব্যবহৃত হয় ফসলের পর্যবেক্ষণ, পরিমাপ ও প্রতিক্রিয়া সংক্রান্ত কাজে। এর মধ্যে সেচ নিশ্চিতকরণ, পুষ্টিমাত্রা সঠিক রাখা এবং কীটপতঙ্গের মাত্রা পরিমাপ করা এবং নির্ভুলভাবে যথাযথ কাজটি করা যেমন ক্ষেতের কেবলমাত্র প্রয়োজনীয় ছোট অংশে সেচ দেয়া - এসব অন্তর্ভুক্ত।
## কৃষিকাজে তাপমাত্রা কেন গুরুত্বপূর্ণ ?
গাছপালা সম্পর্কে শেখার সময়, বেশিরভাগ শিক্ষার্থীদের পানি, আলো, কার্বন ডাইঅক্সাইড এবং পুষ্টির প্রয়োজনীয়তা সম্পর্কে শেখানো হয়। গাছপালা বৃদ্ধির জন্য উষ্ণতাও প্রয়োজন - এই কারণেই তাপমাত্রা বৃদ্ধির সাথে সাথে বসন্তে উদ্ভিদের ফুল ফোটে। উষ্ণতার কারণেই ড্যাফোডিল খুব শীঘ্রই ফুটতে পারে পারে এবং হটহাউস ও গ্রিনহাউসগুলি গাছ এর বৃদ্ধির জন্য কার্যকরী ভূমিকা রাখে।
> 🎓 হটহাউস এবং গ্রিনহাউসগুলি একই কাজ করে তবে একটি গুরুত্বপূর্ণ পার্থক্য রয়েছে। হটহাউস কৃত্রিমভাবে উত্তপ্ত করা হয় এবং কৃষকদেরকে তাপমাত্রা আরও সঠিকভাবে নিয়ন্ত্রণ করার সুযোগ দেয়, কিন্তু গ্রিনহাউসগুলি উষ্ণতার জন্য সূর্যের উপর নির্ভর করে এবং সাধারণত তাপমাত্রা নিয়ন্ত্রণের জন্য জানালা বা কোন ছিদ্রের উপর নির্ভর করতে হয়।
গাছের একটি বেস বা সর্বনিম্ন তাপমাত্রা, সর্বোত্তম বা পরিমিত তাপমাত্রা এবং সর্বাধিক তাপমাত্রা থাকে, যা সবগুলিই প্রতিদিনের গড় তাপমাত্রার উপর নির্ভর করে।
* বেস (সর্বনিম্ন) তাপমাত্রা - এটি কোনও গাছের বৃদ্ধির জন্য প্রয়োজনীয় ন্যূনতম দৈনিক গড় তাপমাত্রা।
* পরিমিত তাপমাত্রা - সর্বাধিক বৃদ্ধি পেতে এটি সেরা দৈনিক গড় তাপমাত্রা।
* সর্বাধিক তাপমাত্রা - এটি একটি উদ্ভিদ সহ্য করতে পারে সর্বোচ্চ তাপমাত্রা। এর উপরে উদ্ভিদ পানি সংরক্ষণ এবং জীবিত থাকার চেষ্টায় এর বৃদ্ধি বন্ধ করে দেবে।
> 💁 এগুলি দিন এবং রাতের তুলনায় গড় তাপমাত্রা। গাছপালাগুলিকে আরও বেশি দক্ষতার সাথে আলোকসংশ্লেষণ করতে এবং রাতে শক্তি সঞ্চয় করতে সহায়তা করার জন্য দিন ও রাতে বিভিন্ন তাপমাত্রার প্রয়োজন হয়।
প্রতিটি প্রজাতির উদ্ভিদের তাদের সর্বনিম্ন, সর্বোত্তম এবং সর্বাধিক তাপমাত্রারর জন্য আলাদা আলাদা মান রয়েছে । এ কারণেই কিছু দেশে গাছপালা উষ্ণ এবং অপর কিছু দেশে শীতল অবস্থায় অধিক বৃদ্ধি পায়।
✅ ছোট একটি গবেষণা করা যাক। আমাদের বাগান, স্কুল বা স্থানীয় উদ্যানের যে কোনও গাছের জন্য কীভাবে বেস তাপমাত্রা খুঁজে পেতে পারেন কিনা তা দেখুন।
![A graph showing growth rate rising as temperature rises, then dropping as the temperature goes too high](../../../../images/plant-growth-temp-graph.png)
উপরের গ্রাফটি তাপমাত্রার গ্রাফের একটি বৃদ্ধির হার দেখায়। বেস তাপমাত্রা পর্যন্ত কোনও বৃদ্ধি নেই। বৃদ্ধির হার পরিমিত তাপমাত্রা পর্যন্ত বৃদ্ধি পায়, তারপরে এই শীর্ষে পৌঁছানোর পরে কমতে থাকে। সর্বোচ্চ তাপমাত্রায় বৃদ্ধি বন্ধ হয়।
এই গ্রাফের আকার গাছের প্রজাতি থেকে উদ্ভিদ প্রজাতির মধ্যে পরিবর্তিত হয়। কোন কোন ক্ষেত্রে অপটিমাম (পরিমিত) তাপমাত্রার পরে খুব খাড়াভাবে নেমে যায়, আবার কোন কোন উদ্ভিদে বেস তাপমাত্রা থেকে খুবই ধীরে ধীরে বৃদ্ধি পেয়ে পরিমিত তাপমাত্রায় পৌঁছায়।
> 💁 একজন কৃষকের সর্বোচ্চ ফলন নিশ্চিত করার জন্য, তিনটি তাপমাত্রার মানই জানতে হবে এবং তাদের গাছগুলি বৃদ্ধির গ্রাফের ধরণ বুঝতে হবে।
যদি কোন কৃষকের তাপমাত্রা নিয়ন্ত্রিত মাধ্যম থাকে, উদাহরণস্বরূপ বাণিজ্যিক হটহাউস, যেখানে তারা তাদের গাছগুলির জন্য অনুকূল তাপমাত্রা নিশ্চিত করতে পারে। যেমন বাণিজ্যিকভাবে এরকম হটহাউসে টমেটোগুলির দ্রুততম বৃদ্ধির জন্য দিনে তাপমাত্রা 25 ডিগ্রি সেন্টিগ্রেড এবং রাতে 20 ডিগ্রি সেলসিয়াস রাখতে হয়।
> 🍅 কৃত্রিম আলো, সার এর নিয়ন্ত্রণের সাথে তাপমাত্রার মেলবন্ধনের ফলে অর্থ বাণিজ্যিক উৎপাদকরা সারা বছর ধরে তাদের উৎপাদন বজায় রাখতে পারে।
## চারিপার্শ্বিক তাপমাত্রা পরিমাপ
আইওটি ডিভাইসের সাথে তাপমাত্রা সেন্সর ব্যবহার করে চারিপার্শ্বের তাপমাত্রা পরিমাপ করা যায়।
### কাজ - তাপমাত্রা পরিমাপ
আইওটি ডিভাইসটি ব্যবহার করে তাপমাত্রা পর্যবেক্ষণ করতে, পছন্দ অনুসারে নিচের যেকোন একটি গাইডের মাধ্যমে কাজ শুরু করতে হবে।
* [Arduino - Wio Terminal](wio-terminal-temp.md)
* [Single-board computer - Raspberry Pi](pi-temp.md)
* [Single-board computer - Virtual device](virtual-device-temp.md)
## Growing degree days
Growing degree days (যাকে growing degree units ও বলা হয়) হলো তাপমাত্রার ভিত্তিতে গাছের বৃদ্ধি পরিমাপ করার একটি উপায়। একটি উদ্ভিদে পর্যাপ্ত পরিমাণে জল, পুষ্টি এবং CO2 রয়েছে - এমনটা ধরে নিয়েই, তাপমাত্রার ভিত্তিতে বৃদ্ধির হার নির্ধারণ করা হয়।
Growing degree days, সংক্ষেপে GDD কে উদিভের বেস তাপমাত্রার উপরে, প্রতিদিনের গড় তাপমাত্রা হিসেবে গণনা করা হয়। প্রতিটি উদ্ভিদে বৃদ্ধি, ফুল হওয়া বা উৎপাদন এবং পরিপক্ক হওয়ার জন্য নির্দিষ্ট সংখ্যক GDD প্রয়োজন। প্রতিদিন যত বেশি জিডিডি হবে, গাছটি তত দ্রুত বাড়বে।
GDD-এর সম্পূর্ণ সূত্রটি কিছুটা জটিল, তবে একটি সরলীকৃত সমীকরণ রয়েছে যা প্রায়শই একটি কাছাকাছি মান হিসাবে ব্যবহৃত হয়:
![GDD = T max + T min divided by 2, all minus T base](../../../../images/gdd-calculation.png)
* **GDD** - growing degree days এর সংখ্যা
* **Tmax** - এটি প্রতিদিনের সর্বোচ্চ তাপমাত্রা (ডিগ্রি সেলসিয়াসে)
* **Tmin** - এটি প্রতিদিনের সর্বনিম্ন তাপমাত্রা (ডিগ্রি সেলসিয়াসে)
* **Tbase** - এটি **উদ্ভিদের** বেইস তাপমাত্রা (ডিগ্রি সেলসিয়াসে)
> 💁 Tmax এর মান ৩০ ডিগ্রি এর বেশি হলে অথবা Tmin এর মান Tbase এর কম হলে এখানে কিছুটা পরিবর্তন আসে। তবে আমরা এখন আপাতত এই পরিবর্তনগুলো অগ্রাহ্য করবো।
### উদাহরণ - ভুট্টা 🌽
বিভিন্ন জাতের উপর নির্ভর করে, ভুট্টা পরিপক্ক হতে 800 এবং 2,700 জিডিডি প্রয়োজন (যখন বেস তাপমাত্রা 10 ডিগ্রি ্সেলসিয়াস)।
বেস তাপমাত্রার উপরে প্রথম দিন, নিম্নলিখিত তাপমাত্রা পরিমাপ করা হয়েছিল:
| পরিমাপ | তাপমাত্রা °C |
| :---------- | :-----: |
| সর্বোচ্চ | 16 |
| সর্বনিম্ন | 12 |
তাহলে,
* Tmax = 16
* Tmin = 12
* Tbase = 10
হিসেব করে পাই,
![GDD = 16 + 12 divided by 2, all minus 10, giving an answer of 4](../../../../images/gdd-calculation-corn.png)
ঐদিন ভুট্টা 4 জিডিডি পেয়েছিল। এটিকে 800 GDD চাহিদাসম্পন্ন জাত হিসেবে বিবেচনা করলে, উদ্ভিদটির পরিপক্ব হতে আরো 796 GDD প্রয়োজন।
✅ ছোট একটি গবেষণা করা যাক । বাগান, স্কুল বা স্থানীয় পার্কে যে কোনও উদ্ভিদের পরিপক্কতায় পৌঁছানোর জন্য বা ফসল উৎপাদনের জন্য প্রয়োজনীয় জিডিডি নম্বর নির্ণয় করা যায় কিনা দেখা যাক।
## তাপমাত্রা সেন্সরের তথ্য দিয়ে GDD নির্ণয়
গাছপালা নির্দিষ্ট তারিখ ধরে জন্মায় না - উদাহরণস্বরূপ আমরা কোনও বীজ রোপণ করতে রোপন করে এটা বলতে পারবোনা যে গাছটি ঠিক 100 দিন পরে ফলন দিবে। কৃষক হিসাবে আমরা বরং একটি উদ্ভিদ বাড়তে কত সময় নেয় তার ধরে সম্পর্কে মোটামুটি রাখতে পারি এবং সেই ধারণা অনুসারে প্রতিদিন ফসলগুলি প্রস্তুত হচ্ছে কিনা তা পরীক্ষা করে দেখতে পারি।
এভাবে গাছপালার প্রতি সার্বক্ষণিক নজর রাখাটা বড় খামারে অনেক সমস্যাপূর্ণ বিষয় কেননা এতে প্রচুর লোকবল দরকার এবং কোন ফলন অপ্রত্যাশিতভাবে তাড়াতাড়ি প্রস্তুত হয়ে গেলে, ঝুঁকি রয়েছে যে কৃষক হয়তো নজর এড়িয়ে যেতে পারে। তাপমাত্রা পরিমাপ করে, কৃষক একটি উদ্ভিদ এর জিডিডি গণনা করতে পারে এবং তখন কেবলমাত্র তাদের প্রত্যাশিত পরিপক্কতার সময়ের কাছাকাছি হলেই সার্বক্ষণিক নজরদারি করলেই হয়, এতে অতিরিক্ত শ্রম কমে আসে।
আইওটি ডিভাইস ব্যবহার করে তাপমাত্রার ডেটা সংগ্রহ করে, যখন গাছগুলি পরিপক্কতার কাছাকাছি থাকে তখন একজন কৃষককে স্বয়ংক্রিয়ভাবে অবহিত করা যায়। এর জন্য একটি সাধারণ একটি কার্যধারা হল আইওটি ডিভাইসগুলির দ্বারা তাপমাত্রা পরিমাপ করে, তারপরে MQTT-র মতো কিছু ব্যবহার করে এই টেলিমেট্রি ডেটা ইন্টারনেটে প্রকাশ করতে হবে। সার্ভার কোড তখন এই ডেটা গ্রহণ করে এবং এটি কোথাও সংরক্ষণ করে, যেমন কোনও ডাটাবেস এ। এতে করে এই ডেটাগুলি পরে বিশ্লেষণ করা যেতে পারে - যেমনঃ জিডিডি গণনা করা, নির্দিষ্ট পর্যন্ত প্রতিটি ফসলের জন্য মোট জিডিডি এর হিসেব রাখা এবং কোন উদ্ভিদ পরিপক্কতার কাছাকাছি গেলে, কৃষককে এই বিষয়ে সতর্ক করা।
![Telemetry data is sent to a server and then saved to a database](../../../../images/save-telemetry-database.png)
সার্ভার কোড অতিরিক্ত তথ্য যুক্ত করে ডেটা সমৃদ্ধ করতে পারে। উদাহরণস্বরূপ, আইওটি ডিভাইসটি নিজেকে চিহ্নিত করতে একটি সনাক্তকারী/আইডেন্টিফায়ার প্রকাশ করতে পারে এবং সার্ভার কোডটি ডিভাইসের অবস্থান এবং এটি কোন স্থানে কী ফসল পর্যবেক্ষণ করছে তা সন্ধান করতে এটি ব্যবহার করতে পারে। এটি চলমান সময়ের মতো বেসিক ডেটাও যুক্ত করতে পারে কারণ কিছু আইওটি ডিভাইসে সঠিক সময়ের উপর নজর রাখতে প্রয়োজনীয় হার্ডওয়্যার থাকেনা বা ইন্টারনেটের মাধ্যমে সময় এর হিসাব রাখতে অতিরিক্ত কোডের প্রয়োজন হয়।
✅ বিভিন্ন ফার্মের তাপমাত্রা ভিন্ন ভিন্ন হওয়ার কারণ কী হতে পারে?
### কাজ - তাপমাত্রা সংক্রান্ত তথ্য প্রকাশ করা
আইওটি ডিভাইস ব্যবহার করে MQTT এর মাধ্যমে তাপমাত্রার ডেটা প্রকাশের জন্য নীচের যেকোন একটি গাইডের মাধ্যমে কাজ শুরু করতে হবে:
* [Arduino - Wio Terminal](wio-terminal-temp-publish.md)
* [Single-board computer - Raspberry Pi/Virtual IoT device](single-board-computer-temp-publish.md)
### কাজ - তাপমাত্রা সংক্রান্ত তথ্য গ্রহণ ও সংরক্ষণ
আইওটি ডিভাইসটি টেলিমেট্রি প্রকাশ করার পরে, এমনভাবে কোড লিখতে হবে সার্ভার কোডটি এই ডেটাতে সাবস্ক্রাইব এবং সংরক্ষণ করে। এটি একটি ডেটাবেজে সংরক্ষণের পরিবর্তে, সার্ভার কোড এটি একটি Comma Separated Values (CSV) ফাইলে সংরক্ষণ করবে। CSV ফাইল মানগুলির সারি হিসাবে ডেটা সংরক্ষণ করে; প্রতিটি মান একটি কমা দ্বারা পৃথক করা হয় এবং প্রতিটি রেকর্ড নতুন লাইনে থাকে। ফাইল হিসাবে ডেটা সংরক্ষণ করার জন্য এটি বেশ সুবিধাজনক, যা মানব-পঠনযোগ্য এবং অবশ্যই একটি ভাল উপায়।
এই CSV ফাইলে দুটি কলাম থাকবে - *তারিখ* এবং *তাপমাত্রা* । এখানে *তারিখ* কলামটিতে সার্ভার কর্তৃক ম্যাসেজ পাওয়ার সময় ও তারিখ থাকে এবং *তাপমাত্রা* সংক্রান্ত তথ্য আসে টেলিমেট্রি থেকে।
1. টেলিমেট্রিতে সাবস্ক্রাইব করার জন্য সার্ভার কোড তৈরি করতে লেসন 4 এ এই ধাপগুলি পুনরাবৃত্তি করতে হবে। কমান্ডগুলি প্রকাশ করার জন্য আলাদা কোড যুক্ত করার দরকার নেই।
ধাপগুলো হলোঃ
* পাইথন ভার্চুয়াল এনভায়রনমেন্ট কনফিগার এবং একটিভেট করা ।
* এরপর paho-mqtt pip package ইন্সটল করতে হবে।
* টেলিমেট্রিতে যেসকল MQTT messages প্রকাশিত হয়েছে তা একসেস করতে হলে কোড লিখতে হবে।
> ⚠️ এক্ষেত্রে [লেসন 4 এ প্রদেয়, টেলিমেট্রি ডেটা রিসিভ করার জন্য পাইথন কোড ](../../../../1-getting-started/lessons/4-connect-internet/README.md#receive-telemetry-from-the-mqtt-broker) আমরা অনুসরণ করতে পারি।
এই প্রজেক্টের জন্য ফোল্ডারের নাম দিই `temperature-sensor-server`.
1. নিশ্চিত করতে হবে যেন `client_name` এ এই প্রজেক্টের ইঙ্গিত থাকে:
```cpp
client_name = id + 'temperature_sensor_server'
```
1. আগে থেকে এসকম ইম্পোর্ট রয়েছে তার নীচে এগুলো যুক্ত করতে হবে:
```python
from os import path
import csv
from datetime import datetime
```
এটি ফাইলগুলি পড়ার জন্য একটি লাইব্রেরি ইম্পোর্ট করে । এছাড়াও সিএসভি ফাইলগুলির সাথে যোগাযোগের জন্য একটি লাইব্রেরি এবং তারিখ ও সময়গুলির সংরক্ষণের জন্যে একটি লাইব্রেরি অন্তর্ভুক্ত হয়।
1. তারপর`handle_telemetry` function এর পূর্বে এই কোড যুক্ত করতে হবে:
```python
temperature_file_name = 'temperature.csv'
fieldnames = ['date', 'temperature']
if not path.exists(temperature_file_name):
with open(temperature_file_name, mode='w') as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
writer.writeheader()
```
এই কোডে কিছু কনস্ট্যান্ট ডিক্লেয়ার করা হয়েছে - যে CSV ফাইলে ডেটা রাখা হবে সেটির একং কলাম হেডারগুলোর নামকরণ এর জন্য। কোন সিএসভি ফাইলের প্রথম সারিতে সাধারণত কমা দ্বারা আলাদাকৃত ভাবে কলামের শিরোনাম বা হেডার থাকে।
কোডটি পরীক্ষা করে দেখ সিএসভি ফাইল ইতিমধ্যে বিদ্যমান কিনা । যদি এটি বিদ্যমান না থাকে তবে এটি প্রথম সারিতে কলাম শিরোনাম দিয়ে তৈরি করা হবে।
1. `handle_telemetry` function এর পর নিম্নোক্ত কোড যুক্ত করতে হবে:
```python
with open(temperature_file_name, mode='a') as temperature_file:
temperature_writer = csv.DictWriter(temperature_file, fieldnames=fieldnames)
temperature_writer.writerow({'date' : datetime.now().astimezone().replace(microsecond=0).isoformat(), 'temperature' : payload['temperature']})
```
এই কোড CSV file টি খুলে এতে নতুন সারি যুক্ত করবে। সেই সারিতে আইওটি ডিভাইস থেকে প্রাপ্ত তাপমাত্রা এবং তখনকার সময় ও তারিখ আমাদের বোধগম্য ফরম্যাটে রাখা হয়। এই তথ্যসমূহ [ISO 8601 ফরম্যাট](https://wikipedia.org/wiki/ISO_8601) অনুসরণ করে, নির্দিষ্ট টাইমজোন সহ, তবে এখানে মাইক্রোসেকেন্ড আকারে সময় সংরক্ষিত হয়।
1. আগের মতই এই কোডটি রান করতে হবে - এদিকে এটাও নিশ্চিত করতে হবে যে আইওটি ডিভাইস থেকে ডেটা পাঠানো হচ্ছে। দেখা যাবে `temperature.csv`নামে একটি ফোল্ডার তৈরী হয়েছে একই ফোল্ডারে। এটি খুললে দেখা যাবে, তারিখ-সময় এবং তাপমাত্রা রয়েছে।
```output
date,temperature
2021-04-19T17:21:36-07:00,25
2021-04-19T17:31:36-07:00,24
2021-04-19T17:41:36-07:00,25
```
1. তথ্য সংগ্রহের জন্য এই কোডটিও রান করি। জিডিডি গণনার জন্য পর্যাপ্ত ডেটা সংগ্রহ করার জন্য আমাদের পুরো দিন ধরে এটি রান করানো উচিত।
> 💁 যদি আমরা Virtual IoT Device ব্যবহার করে থাকি, সেক্ষেত্রে র্যান্ডম চেকবাক্সটি নির্বাচন করতে হবে এবং প্রতিবার তাপমাত্রার মান একই আসার বিষয়টি এড়াতে একটি সীমা নির্ধারণ করতে হবে।
![Select the random checkbox and set a range](../../../../images/select-the-random-checkbox-and-set-a-range.png)
> 💁 যদি এটি একটি পুরো দিন চালনা করতে চাই, তবে আমাদেরকে অবশ্যই এটি নিশ্চিত করতে হবে, যে সার্ভারে কোডটি চলছে সেই কম্পিউটারটি সারাদিন কাজ করবে। এক্ষেত্রে হয় আমাদেরকে পাওয়ার সেটিং ঠিক করে নিতে হবে অথবা [সিস্টেমকে একটিভ রাখার পাইথন স্ক্রিপ্ট](https://github.com/jaqsparow/keep-system-active) এর মতো কিছু ব্যবহার করতে হবে।
> 💁 এই কোডগুলো [code-server/temperature-sensor-server](code-server/temperature-sensor-server) ফোল্ডারে পাওয়া যাবে।
### কাজ - সঞ্চিত ডেটা ব্যবহার করে জিডিডি গণনাকরণ
একবার সার্ভার তাপমাত্রার ডেটা ক্যাপচার করে নিলে, একটি গাছের জন্য জিডিডি গণনা করা যায়।
এটি ম্যানুয়ালি করার ধাপগুলি হল:
1. উদ্ভিদের জন্য আগে বেস তাপমাত্রা নির্ণয়. যেমন, সট্রবেরির জন্য এটি ১০°C.
1. এরপর `temperature.csv`থেকে, দিনের সর্বোচ্চ এবং সর্বনিম্ন তাপমাত্রা বের করতে হবে।
1. পূর্বে প্রদত্ত সূত্র ব্যবহার করে জিডিডি গণনা করতে হবে।
উদাহরণস্বরূপ, যদি দিনের সর্বোচ্চ তাপমাত্রা ২৫°C হয় এবং সর্বনিম্ন ১২°C হয়:
![GDD = 25 + 12 divided by 2, then subtract 10 from the result giving 8.5](../../../../images/gdd-calculation-strawberries.png)
* 25 + 12 = 37
* 37 / 2 = 18.5
* 18.5 - 10 = 8.5
এখানে স্ট্রবেরির জন্য মান এসেছে **8.5** GDD । যেহেতু স্ট্রবেরির ফলনের জন্য ২৫০ জিডিডি প্রয়োজন, তাহলে আরো অনেকদিন হাতে রয়েছে।
---
## 🚀 চ্যালেঞ্জ
উদ্ভিদের বৃদ্ধির জন্য তাপ ছাড়াও আরো কিছু বিষয় প্রয়োজন। আর কি কি জিনিস দরকার এক্ষেত্রে?
এই অতিরিক্ত ফ্যাক্টরগুলোর জন্য কী সেন্সর রয়েছে যা সেগুলি পরিমাপ করতে পারে ? এই স্তরগুলি নিয়ন্ত্রণ করতে একচুয়েটর ব্যবহার করা যায়? উদ্ভিদের বৃদ্ধি অনুকূল করতে কীভাবে এক বা একাধিক আইওটি ডিভাইস যুক্ত করলে ভালো ফল আসবে ?
## লেকচার পরবর্তী কুইজ
[লেকচার পরবর্তী কুইজ](https://thankful-pond-0eba8f10f.1.azurestaticapps.net/quiz/10)
## রিভিউ এবং স্ব-অধ্যয়ন
ডিজিটাল কৃষিব্যবস্থা সম্পর্কে আরো জানতে [Digital Agriculture Wikipedia page](https://wikipedia.org/wiki/Digital_agriculture) পড়া যায়। এছাড়াও [Precision Agriculture](https://wikipedia.org/wiki/Precision_agriculture) এর ব্যাপারেও আরো জানার চেষ্টা করা উচিত।
জিডিডি গণনা এখানে দেওয়া সরলীকৃত সূত্রের চেয়ে কিছুটা জটিল। এই সংক্রান্ত বিষয়ে আরো জানতে এবং বেস তাপমাত্রার নিচে দৈনিক তাপমাত্রা হলে তা কিভাবে ম্যানেজ করা যায় সেই সংক্রান্ত তথ্য [Growing Degree Day Wikipedia page](https://wikipedia.org/wiki/Growing_degree-day) এ পাওয়া যাবে।
## এসাইনমেন্ট
[জুপিটার নোটবুক ব্যবহার করে জিডিডি ডেটা প্রদর্শন করা](assignment.md)