راهنمای فنی کود کشاورزی هوشمند
KalatakCo – نسخه 2.1.4
https://kalatakco.com
فهرست
1. نصب و راهاندازی
پیشنیازها
- Node ≥ 18 (ترجیحاً LTS)
-
pnpmیاnpm - MongoDB 6+ در لوکال یا Atlas
- کلید API هواشناسی (برای محاسبه بارندگی)
مراحل نصب
# 1. کلون مخزن
git clone https://github.com/kalatakco/smart-fertilizer.git && cd smart-fertilizer
# 2. نصب وابستگیها
pnpm install
# 3. کپی env نمونه
cp .env.example .env.local
# 4. ویرایش متغیرهای مهم
nano .env.local
در فایل .env.local:
MONGO_URI=mongodb+srv://<user>:<pass>@cluster0.xxxxx.mongodb.net/fertdb
WEATHER_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxx
SALINITY_THRESHOLD=1.8
اجرای سرویس
pnpm dev # حالت توسعه
pnpm build # بیلد نهایی
pnpm start # اجرای پروداکشن
2. نحوه استفاده
ارسال دستور از CLI
npx kalatak-fertilizer apply \
--crop tomato \
--area 12000 \
--soil-sand 42 \
--soil-clay 18 \
--soil-ph 7.4 \
--ec 1.2 \
--output csv
فراخوانی در Node
import { FertilizerSDK } from '@kalatakco/fertilizer';
const sdk = new FertilizerSDK({ apiKey: process.env.API_KEY });
const recipe = await sdk.calculate({
crop: 'cucumber',
area: 5000,
soilTest: { n: 14, p: 8, k: 160, ph: 7.9 },
season: 'spring'
});
console.table(recipe);
/* خروجی نمونه:
┌---------┬-----------┬-----------┬-----------┐
│ عنصر │ مقدار(kg) │ نوع کود │ هزینه(ت) │
├---------┼-----------┼-----------┼-----------┤
│ N │ 46.2 │ اوره 46% │ 1,108,000 │
│ P │ 18.7 │ TSP │ 467,500 │
│ K │ 30.1 │ MOP │ 480,000 │
└---------┴-----------┴-----------┴-----------┘
*/
استفاده در پایتون (REST)
import requests, json
url = "https://api.kalatakco.com/v2/fertilizer"
payload = json.dumps({
"crop": "wheat",
"yield_goal": 6.5, # تن در هکتار
"soil": {"zn": 0.8, "fe": 4.1, "mn": 2.3}
})
headers = {"Authorization": "Bearer <token>", "Content-Type": "application/json"}
res = requests.post(url, data=payload, headers=headers, timeout=15)
print(res.json()['formula'])
3. کدنمونهها
مثال 1: محاسبه زمان دقیق سرک (بر اساس Growing Degree Days)
function calcGDD(Tmax, Tmin, Tbase = 10) {
const t = (Tmax + Tmin) / 2;
return Math.max(0, t - Tbase);
}
const gdd = calcGDD(36, 22); // 19
console.log(`امروز ${gdd} GDD ثبت شد. مجموع: ${accGDD}`);
مثال 2: الگوریتم توصیه نیتراتدهی
// فرمول Hansch & Hasegawa
const no3 = soil.no3; // mg/kg
const irrigWaterEC = 1.1;
const leaching = 0.15;
const target = 200; // kg N/ha
const recommend = (target - no3 * 0.15) / (1 - leaching);
console.log(`نیاز نیتروژن خالص: ${recommend.toFixed(1)} kg/ha`);
مثال 3: بررسی وضعیت با web-push
import webpush from 'web-push';
webpush.setVapidDetails('mailto:info@kalatakco.com', publicVapidKey, privateVapidKey);
const payload = JSON.stringify({title: 'زمان کوددهی', body: 'روی زمینهای زعفرانتان کود پتاسیم بدهید.'});
webpush.send(subscription, payload);
4. جدول مقایسه SKUها
| کد کالا | ترکیب NPK | آزادسازی | pH مناسب | قیمت عمده (تومان) | یادداشت |
|---|---|---|---|---|---|
| KF-20-20 | 20-20-20 + TE | سریع | 5.5–7.5 | 2,400 | برای سبزیجات برگی |
| KF-10-52 | 10-52-10 + Zn | سریع | 6–7 | 3,100 | در زمان نشاءدهی |
| KF-35-0 | اوره ۳۵% + NBPT | کنترلشده | 6–8 | 2,100 | برای کلزا و گندم |
| KF-0-0-50 | سولفاتپتاسیم | سریع | 5–7 | 2,750 | در باغهای سیب |
5. سوالات متداول
فرق کود کشاورزی هوشمند Kalatak با نرمافزارهای قدیمی چیست؟
ما از مدل یادگیری تقویتی (RL) استفاده میکنیم تا هر سال با توجه به دادههای مزرعهتان، الگوی کوددهی بهینهتر شود؛ درحالیکه اپهای قدیمی فقط جداول ثابت دارند.آیا باید اینترنت دائم در مزرعه داشته باشم؟
خیر؛ فقط بار اول و در زمان همگامسازی دیتا نیاز به اینترنت دارید. پسازآن محاسبات آفلاین در برد ESP32 انجام میشود.
3 میتوانم از کود دامی بهجای اوره استفاده کنم؟
بله؛ در تنظیمات → منبع نیتروژن، «کود دامی» یا «کود سبز» را انتخاب کنید. الگوریتم C:N ratio را محاسبه و مقدار موردنیاز را بهکیلوگرم کود دامی تبدیل میکند.
-
از چه حسگرهایی پشتیبانی میشود؟
- EC & pH Atlas Scientific
- MPS-6 سنسور پتانسیل رطوبت خاک
- SHT85 برای دما و رطوبت هوا
- هر سنسور I2C یا Modbus RTU
6. عیبیابی سریع
| خطا | علت احتمالی | راهحل |
|---|---|---|
| خطای 403 در API | توکن منقضی یا آیپی غیرمجاز | در داشبورد کلاد، توکن را Re-issue کنید و IP whitelist را بررسی نمایید. |
| مقادیر K بسیار بالا | EC سنج دقیق نیست یا کالیبره نیست | با محلول 1413 µS دوباره کالیبره و slope را چک کنید. |
| پریدن بار Repeatedly | تداخل Watch-Dog | در .env، WATCHDOG_TIMEOUT=0 بگذارید و فریمور بورد را آپدیت کنید. |
| اختلاف pH=0.9 | دمای نمونه ثابت نبوده | برای خاک pH را در °25 ± 2 اندازه بگیرید یا از جدول دمایی Nernst استفاده کنید. |
لینکهای مفید
- مستندات کامل REST
- پکیج NPM
- انجمن کاربران (تلگرام)
- گیتهاب – ستاره یادتون نره ;)
نظر، باگ یا Pull Request خوشحال میشیم؛ ایمیل مستقیم:
dev@kalatakco.com
Top comments (0)