Koloni • Besleme • Ana Arı • Varroa • Hasat • Hava • Veri
Arılık Kontrol Merkezi
Bugün ne var, hangi kovanı kontrol etmelisin, son durum ne?
Toplam kovan
0
Güçlü koloni
0
Bekleyen iş
0
Toplam bal hasadı
0 kg
⏰ Bugün / Yaklaşan
🌦️ Arılık Havası
📌 Son Kayıtlar
Kovanlar
Her kovanın kimliği, fotoğrafı, ana arısı, ekipmanı ve geçmişi burada.
🔍 Kovan Muayenesi
Yumurta, yavru, ana arı, çerçeve ve koloni gözlemlerini tek kayıtta tut. Yanlış girilen kayıtları sonradan ✏️ düzenleyebilirsin.
Kayıt geçmişi
Tarih
Kovan
Güç
Çerçeveler
Yumurta/Yavru
Kalite
Not
🍯 Besleme ve Tüketim Takibi
Şurup, kek, su, destek ve özel beslemelerin ne zaman verildiğini ve ne kadar sürede tüketildiğini kaydet.
Besleme geçmişi
Tarih
Kovan
Tür
Miktar
İçerik
Tüketim
Sonuç
🧪 Varroa / Uygulama Kayıtları
Doğal, mekanik veya ruhsatlı uygulamaları yöntem ve sonuçlarıyla arşivle. Bu bölüm kayıt içindir; uygulamanın etkinliği/güvenliği hakkında otomatik onay vermez.
⚠️ Portakal kabuğu, defne, okaliptüs, ısırgan, kekik yağı vb. doğal maddelerin duman/uygulama yoluyla kullanılmasının doz, arı sağlığı, bal kalıntısı ve etkinlik açısından güvenli olduğu varsayılmamalıdır. Bu sistemi yalnızca ne yaptığını kaydetmek için kullan; gıda üretimi yapan kolonilerde yerel mevzuat ve veteriner/arı sağlığı rehberlerini esas al.
Uygulama geçmişi
Tarih
Kovan
Kategori
Yöntem
Materyal
Önce/Sonra
Not
🧱 Temel Petek • Ham Petek • Bal Hasadı
Hangi kovana hangi petek verildi, ne kadar süre kullanıldı ve hangi kovandan ne kadar bal alındı?
🧱 Petek Hareketi
🍯 Bal Hasadı
Petek kayıtları
Tarih
Kovan
Tür
Adet
İşlem
Süre
Bal hasat geçmişi
Tarih
Kovan
Çerçeve
Net kg
Tür
Parti
⏰ Arılık Planı
Kontrol, besleme, ana arı, petek, hasat ve sezonluk işleri tek yerde takip et.
🌦️ Arılık Hava Durumu
Koordinatını bir kez kaydet; güncel ve 7 günlük veriyi gör.
📈 Koloni Analizi
Muayene kayıtların biriktikçe koloni gelişimini sayısal olarak gör.
🐝 Koloni gelişimi
👑 Ana arı performansı
Yumurtalı çerçeve ve yumurta düzenini birlikte gösteren göreli göstergedir; tek başına ana arı kalitesi kararı değildir.
🍯 Kaynaklar
📦 Verimlilik / hasat
🧪 Uygulama ve Varroa geçmişi
📜 Kovan işlemleri
📊 Kovan özeti
⚙️ Sistem Ayarları
Bu bölümün amacı sistemi sabit bir uygulama olmaktan çıkarmak. Yeni seçenekleri sen ekleyebil.
💡 Örneğin “Besleme türleri”ne yeni bir seçenek, “Varroa yöntemi”ne yeni bir yöntem veya “İşlem türleri”ne yeni bir işlem ekleyebilirsin. Mevcut kayıtlar silinmez.
Muayene seçenekleri
Besleme türleri
Uygulama kategorileri
Uygulama yöntemleri
Petek türleri
Petek işlemleri
Sezonlar
Kat / ızgara işlemleri
Izgara konumları
💾 Veri Merkezi
Yeni sürümlere geçerken veri kaybetmemen için burada özellikle güçlü bir yedekleme sistemi var.
📤 Tam yedek
Kovanlar, kayıtlar, fotoğraflar, ayarlar ve hava konumu.
📥 Yeni sürüme aktar
Önceki V2 JSON yedeğini veya bu sistemin yedeğini yükleyebilirsin. Eski alanlar mümkün olduğunca korunur.
📊 CSV
Muayene, besleme, uygulama ve hasat kayıtlarını Excel'e aktar.
Ana arı${esc(h.queenYear)||"-"} / ${esc(h.queenId)||"-"}
Son muayene${last?.date||"-"}
Toplam hasat${honey.toFixed(2)} kg
${esc(h.location)||"Konum belirtilmedi"}
`;
}).join("");
}
function openHiveModal(id=""){
const d=document.getElementById("hiveDialog");document.getElementById("hiveForm").reset();
document.getElementById("hId").value=id;
document.getElementById("hiveDialogTitle").textContent=id?"Kovanı Düzenle":"Yeni Kovan";
fillSelect("hStatus",db.settings.strengths,false);
if(id){
const h=db.hives.find(x=>x.id===id);if(!h)return;
["hCode","hBreed","hQueenYear","hQueenId","hLocation","hNotes"].forEach((dom,i)=>document.getElementById(dom).value=[h.id,h.breed,h.queenYear,h.queenId,h.location,h.notes][i]||"");
document.getElementById("hStatus").value=h.status;
}else document.getElementById("hCode").value="KT-"+String(db.hives.length+1).padStart(3,"0");
d.showModal();
}
function closeHiveModal(){document.getElementById("hiveDialog").close()}
async function saveHive(e){
e.preventDefault();
const id=document.getElementById("hId").value, code=document.getElementById("hCode").value.trim();
if(!code)return;
const photo=await readFileCompressed(document.getElementById("hPhoto").files[0]);
if(id){
const h=db.hives.find(x=>x.id===id);
const newCode=code;
h.id=newCode;h.breed=document.getElementById("hBreed").value;h.queenYear=document.getElementById("hQueenYear").value;
h.queenId=document.getElementById("hQueenId").value;h.location=document.getElementById("hLocation").value;
h.status=document.getElementById("hStatus").value;h.notes=document.getElementById("hNotes").value;if(photo)h.photo=photo;
}else{
if(db.hives.some(h=>h.id===code)){alert("Bu kovan kodu zaten var.");return}
db.hives.push({id:code,breed:document.getElementById("hBreed").value,queenYear:document.getElementById("hQueenYear").value,queenId:document.getElementById("hQueenId").value,location:document.getElementById("hLocation").value,status:document.getElementById("hStatus").value,photo,notes:document.getElementById("hNotes").value});
}
save();closeHiveModal();renderAll();
}
document.getElementById("hiveForm").addEventListener("submit",saveHive);
function editHive(id){openHiveModal(id)}
function deleteHive(id){
if(!confirm(`${id} silinsin mi? Kayıt geçmişleri silinmez, sadece kovan kartı kaldırılır.`))return;
db.hives=db.hives.filter(h=>h.id!==id);save();renderAll();
}
function hiveDetail(id){
const h=db.hives.find(x=>x.id===id);if(!h)return;
const ins=db.inspections.filter(x=>x.hive===id).sort((a,b)=>b.date.localeCompare(a.date));
const feed=db.feedings.filter(x=>x.hive===id).sort((a,b)=>b.date.localeCompare(a.date));
const tr=db.treatments.filter(x=>x.hive===id).sort((a,b)=>b.date.localeCompare(a.date));
const har=db.harvests.filter(x=>x.hive===id).sort((a,b)=>b.date.localeCompare(a.date));
const events=db.hiveEvents.filter(x=>x.hive===id).sort((a,b)=>b.date.localeCompare(a.date));
const last=ins[0];
const honey=har.reduce((s,x)=>s+(Number(x.kg)||0),0);
const w=document.createElement("div");
w.innerHTML=`
🐝 ${esc(h.id)}
${esc(h.breed)||"Irk belirtilmemiş"} • Ana arı ${esc(h.queenYear)||"-"} / ${esc(h.queenId)||"-"}
${h.photo?``:`
🐝
`}
Teknik kart
Konum${esc(h.location)||"-"}
Durum${esc(h.status)}
Son kontrol${last?.date||"-"}
Toplam bal${honey.toFixed(2)} kg
${esc(h.notes)||""}
🔲 QR kod
QR içine bu sayfanın kovan kimliği gömülür. Dosya telefonda erişilebilir bir web adresinde yayınlanırsa doğrudan ilgili kovana yönlendirme yapılabilir.
📜 Son muayeneler
${ins.slice(0,8).map(x=>`
${x.date} Güç: ${esc(x.strength)} • Yumurta: ${esc(x.eggQuality)} Arı ${x.beeFrames||0} / Yumurta ${x.eggFrames||0} / Açık yavru ${x.openBrood||0} / Kapalı yavru ${x.cappedBrood||0}
${esc(x.note)||""}
`).join("")||'
Kayıt yok.
'}
🧪 Uygulamalar
${tr.slice(0,8).map(x=>`
${x.date} ${esc(x.method)} • ${esc(x.category)}
${esc(x.note)||""}
`).join("")||'
Kayıt yok.
'}
🍯 Besleme
${feed.slice(0,8).map(x=>`
${x.date} ${esc(x.type)}: ${esc(x.amount)} ${esc(x.unit)} Tüketim: ${x.days||"-"} gün
`).join("")||'
Kayıt yok.
'}
🍯 Hasat
${har.slice(0,8).map(x=>`
${x.date} ${x.kg||0} kg • ${x.frames||0} çerçeve ${esc(x.type)||""}
`;
}
/* PLAN */
document.getElementById("reminderForm").addEventListener("submit",e=>{
e.preventDefault();db.reminders.push({id:Date.now(),date:v("rDate"),hive:v("rHive"),season:v("rSeason"),text:v("rText"),done:false});save();e.target.reset();setDefaults();renderAll();
});
function renderReminders(){
const arr=db.reminders.slice().sort((a,b)=>a.date.localeCompare(b.date));
document.getElementById("reminderList").innerHTML=arr.map(r=>`
${esc(r.date)} • ${esc(r.hive)}${esc(r.season)}
${esc(r.text)}
${r.done?'Tamamlandı':``}
`).join("")||`
Planlanmış iş yok.
`;
}
function completeReminder(id){const r=db.reminders.find(x=>x.id===id);if(r)r.done=true;save();renderAll()}
/* HAVA */
function saveWeatherLocation(){db.weatherLocation={name:v("wName"),latitude:v("wLat"),longitude:v("wLon")};save();loadWeather()}
async function loadWeather(){
const l=db.weatherLocation;if(!l.latitude||!l.longitude){renderWeather();return}
try{
const url=`https://api.open-meteo.com/v1/forecast?latitude=${encodeURIComponent(l.latitude)}&longitude=${encodeURIComponent(l.longitude)}¤t=temperature_2m,relative_humidity_2m,apparent_temperature,precipitation,weather_code,wind_speed_10m,wind_gusts_10m&daily=weather_code,temperature_2m_max,temperature_2m_min,precipitation_probability_max,precipitation_sum,wind_speed_10m_max,sunrise,sunset&timezone=auto&forecast_days=7`;
const r=await fetch(url);db.weather=await r.json();save();renderWeather();
}catch(e){document.getElementById("weatherContent").innerHTML='
Hava durumu alınamadı. İnternet bağlantısını kontrol et.
'}
}
function weatherText(c){const m={0:"☀️ Açık",1:"🌤️ Çoğunlukla açık",2:"⛅ Parçalı bulutlu",3:"☁️ Kapalı",45:"🌫️ Sis",48:"🌫️ Sis",51:"🌦️ Çiseleme",53:"🌦️ Çiseleme",55:"🌧️ Çiseleme",61:"🌧️ Hafif yağmur",63:"🌧️ Yağmur",65:"🌧️ Kuvvetli yağmur",71:"🌨️ Hafif kar",73:"🌨️ Kar",75:"❄️ Yoğun kar",80:"🌦️ Sağanak",81:"🌧️ Sağanak",82:"⛈️ Kuvvetli sağanak",95:"⛈️ Gök gürültüsü",96:"⛈️ Dolu ihtimali",99:"⛈️ Kuvvetli dolu"};return m[c]||"🌦️ Değişken"}
function weatherWarnings(w){
const c=w.current,m=[];
if(c.wind_speed_10m>=30)m.push("⚠️ Rüzgâr yüksek: kovan/kapak sabitlemesini kontrol et.");
if(c.wind_gusts_10m>=45)m.push("🚨 Ani rüzgâr çok yüksek: devrilmeye karşı kontrol yap.");
if(c.temperature_2m<10)m.push("🥶 Hava serin: gereksiz uzun kovan açılışlarından kaçın.");
if(c.temperature_2m>35)m.push("🔥 Çok sıcak: gölgeleme, havalandırma ve su erişimini kontrol et.");
if(c.weather_code>=51)m.push("🌧️ Yağışlı koşullar var: arazi ve uçuş faaliyetlerini hava durumuna göre planla.");
return m.length?m.map(x=>`
${x}
`).join(""):"🟢 Belirgin bir operasyon uyarısı yok.";
}
function renderWeather(){
const l=db.weatherLocation;document.getElementById("wName").value=l.name||"";document.getElementById("wLat").value=l.latitude||"";document.getElementById("wLon").value=l.longitude||"";
if(!db.weather){document.getElementById("weatherContent").innerHTML='