{"id":30771,"date":"2025-10-01T23:02:02","date_gmt":"2025-10-01T20:02:02","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/"},"modified":"2025-10-01T23:02:02","modified_gmt":"2025-10-01T20:02:02","slug":"feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/","title":{"rendered":"Fesle\u011fen \u0130\u00e7in GitOps: Kentsel Bah\u00e7enizi A\u015f\u0131r\u0131 M\u00fchendislikten Uzak Otomatize Edin"},"content":{"rendered":"<p>Kentsel ya\u015fam\u0131n betonarme dokusunda kendi ye\u015fil vahalar\u0131m\u0131z\u0131 yaratmak, ruhumuza iyi gelen bir ka\u00e7\u0131\u015f noktas\u0131 sunar. \u00d6zellikle fesle\u011fen gibi nazik bitkilerle dolu bir mutfak bah\u00e7esi, hem g\u00f6rsel bir \u015f\u00f6len hem de damaklara hitap eden tazelik demektir. Ancak, bu ye\u015fil dostlara d\u00fczenli bak\u0131m sa\u011flamak, \u00f6zellikle yo\u011fun tempolu \u015fehir hayat\u0131nda bazen yorucu olabilir. &#8220;Acaba fesle\u011fenim yeterince su ald\u0131 m\u0131?&#8221;, &#8220;I\u015f\u0131kland\u0131rmas\u0131 do\u011fru mu?&#8221;, &#8220;Tatile \u00e7\u0131kt\u0131\u011f\u0131mda kim bakacak?&#8221; gibi sorular kafan\u0131z\u0131 me\u015fgul ediyorsa, do\u011fru yerdesiniz. Bu makalede, yaz\u0131l\u0131m d\u00fcnyas\u0131n\u0131n g\u00fc\u00e7l\u00fc bir otomasyon felsefesi olan GitOps&#8217;u, en sevdi\u011fimiz mutfak bitkilerinden biri olan fesle\u011fen i\u00e7in nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131, \u00fcstelik a\u015f\u0131r\u0131 m\u00fchendisli\u011fe ka\u00e7madan, ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, basit, s\u00fcrd\u00fcr\u00fclebilir ve esnek bir otomasyon \u00e7\u00f6z\u00fcm\u00fc sunarak, fesle\u011fenlerinizin her zaman mutlu ve g\u00fcr kalmas\u0131n\u0131 sa\u011flamak.<\/p>\n<p>GitOps, ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 gibi, Git s\u00fcr\u00fcm kontrol sistemini operasyonel g\u00f6revler i\u00e7in kullanan bir otomasyon yakla\u015f\u0131m\u0131d\u0131r. Ba\u015flang\u0131\u00e7ta Kubernetes gibi b\u00fcy\u00fck \u00f6l\u00e7ekli altyap\u0131 y\u00f6netimleri i\u00e7in geli\u015ftirilmi\u015f olsa da, temel prensipleri o kadar evrenseldir ki, kentsel bir fesle\u011fen bah\u00e7esi otomasyonu gibi k\u00fc\u00e7\u00fck projeler i\u00e7in bile harikalar yaratabilir. Peki, bu yakla\u015f\u0131m\u0131n fesle\u011fen bah\u00e7emiz i\u00e7in bu kadar ideal olmas\u0131n\u0131n temel nedenleri nelerdir? \u00d6ncelikle, GitOps&#8217;un d\u00f6rt ana prensibine g\u00f6z atal\u0131m:<\/p>\n<ol>\n<li>\n        <strong>Deklaratif Yap\u0131land\u0131rma (Declarative Configuration):<\/strong> Sisteminizin &#8220;nas\u0131l&#8221; \u00e7al\u0131\u015faca\u011f\u0131n\u0131 de\u011fil, &#8220;ne&#8221; olmas\u0131 gerekti\u011fini tan\u0131mlars\u0131n\u0131z. Yani, &#8220;fesle\u011fen topra\u011f\u0131n\u0131n nemi %60 olsun&#8221; dersiniz, &#8220;topra\u011f\u0131 nemli de\u011filse pompa \u00e7al\u0131\u015ft\u0131r&#8221; demezsiniz. Bu, karma\u015f\u0131kl\u0131\u011f\u0131 azalt\u0131r ve durumu tek bak\u0131\u015fta anla\u015f\u0131l\u0131r k\u0131lar. Fesle\u011fenimiz i\u00e7in bu, hedef s\u0131cakl\u0131k, nem oran\u0131, \u0131\u015f\u0131k s\u00fcresi gibi parametreleri a\u00e7\u0131k\u00e7a belirtti\u011fimiz anlam\u0131na gelir.\n    <\/li>\n<li>\n        <strong>Git Taraf\u0131ndan Yetkilendirilmi\u015f (Version Controlled by Git):<\/strong> T\u00fcm sistem durumu, bir Git deposunda saklan\u0131r. Bu, yapt\u0131\u011f\u0131n\u0131z her de\u011fi\u015fikli\u011fin kayd\u0131n\u0131n tutulmas\u0131, geri al\u0131nabilmesi, kimin ne zaman hangi de\u011fi\u015fikli\u011fi yapt\u0131\u011f\u0131n\u0131n takip edilebilmesi demektir. Fesle\u011fen sulama program\u0131n\u0131z\u0131 de\u011fi\u015ftirdi\u011finizde, bu de\u011fi\u015fiklik Git \u00fczerinde bir commit olarak kaydedilir.\n    <\/li>\n<li>\n        <strong>Otomatik Uygulama (Automated Application):<\/strong> Git deposundaki de\u011fi\u015fiklikler, otomatik olarak sisteme uygulan\u0131r. Yani, siz Git deposunda bir parametreyi de\u011fi\u015ftirdi\u011finizde, sistem bunu alg\u0131lar ve bah\u00e7enizdeki sens\u00f6rler ve akt\u00fcat\u00f6rler arac\u0131l\u0131\u011f\u0131yla ger\u00e7ek d\u00fcnyaya yans\u0131t\u0131r.\n    <\/li>\n<li>\n        <strong>S\u00fcrekli Uzla\u015ft\u0131rma (Continuous Reconciliation):<\/strong> Sistem s\u00fcrekli olarak Git deposundaki istenen durum ile mevcut durumu kar\u015f\u0131la\u015ft\u0131r\u0131r ve aradaki fark\u0131 kapat\u0131r. E\u011fer bir sens\u00f6r yanl\u0131\u015f veri g\u00f6nderiyorsa veya bir sulama i\u015flemi ba\u015far\u0131s\u0131z olursa, sistem bunu tespit eder ve d\u00fczeltmek i\u00e7in tekrar dener. Bu, bah\u00e7enizin her zaman tan\u0131mlad\u0131\u011f\u0131n\u0131z ideal ko\u015fullarda kalmas\u0131n\u0131 sa\u011flar.<\/li>\n<\/ol>\n<p>Fesle\u011fen gibi hassas bir bitki i\u00e7in bu prensipler, inan\u0131lmaz bir avantaj sunar. Bitkinizin optimum b\u00fcy\u00fcme ko\u015fullar\u0131n\u0131 (nem, s\u0131cakl\u0131k, \u0131\u015f\u0131k s\u00fcresi) bir metin dosyas\u0131nda tan\u0131mlayabilir, bu dosyay\u0131 Git&#8217;e y\u00fckleyebilir ve k\u00fc\u00e7\u00fck bir mikrodenetleyicinin (\u00f6rne\u011fin bir ESP32 veya ESP8266) bu tan\u0131ml\u0131 durumu s\u00fcrekli olarak denetlemesini ve s\u00fcrd\u00fcrmesini sa\u011flayabilirsiniz. B\u00f6ylece, manuel m\u00fcdahale ihtiyac\u0131n\u0131 en aza indirirken, bah\u00e7enizdeki her de\u011fi\u015fikli\u011fin kayd\u0131n\u0131 tutabilir ve gerekti\u011finde kolayca geri d\u00f6nebilirsiniz. Bu, sadece fesle\u011fenlerinizin sa\u011fl\u0131\u011f\u0131 i\u00e7in de\u011fil, sizin i\u00e7 huzurunuz i\u00e7in de kritik bir fakt\u00f6rd\u00fcr. Ayr\u0131ca, bu yakla\u015f\u0131m, ak\u0131ll\u0131 sulama sistemleri veya ak\u0131ll\u0131 ayd\u0131nlatma \u00e7\u00f6z\u00fcmleri gibi geleneksel otomasyon y\u00f6ntemlerinin sundu\u011fu karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131r\u0131rken, esneklik ve kontrol avantajlar\u0131n\u0131 korur. S\u00fcrd\u00fcr\u00fclebilir bah\u00e7ecilik hedefleriyle de m\u00fckemmel uyum sa\u011flar, zira kaynak kullan\u0131m\u0131n\u0131 optimize etmeye yard\u0131mc\u0131 olur.<\/p>\n<div class=\"expert-tip\">Uzman \u0130pucu: GitOps&#8217;un deklaratif do\u011fas\u0131, \u00f6zellikle birden fazla bitki t\u00fcr\u00fc veya bah\u00e7e b\u00f6lgesi eklemeyi d\u00fc\u015f\u00fcnd\u00fc\u011f\u00fcn\u00fczde y\u00f6netim y\u00fck\u00fcn\u00fc ciddi \u015fekilde azalt\u0131r. Her bir b\u00f6lge veya bitki i\u00e7in ayr\u0131 bir yap\u0131land\u0131rma dosyas\u0131 olu\u015fturarak, karma\u015f\u0131k otomasyon senaryolar\u0131n\u0131 bile basit bir \u015fekilde y\u00f6netebilirsiniz.<\/div>\n<p>Dahas\u0131, GitOps&#8217;un sundu\u011fu versiyon kontrol mekanizmas\u0131, &#8220;deneme-yan\u0131lma&#8221; s\u00fcrecini de olduk\u00e7a g\u00fcvenli hale getirir. \u00d6rne\u011fin, fesle\u011feninize daha az suyun mu yoksa daha \u00e7ok suyun mu iyi geldi\u011fini merak ediyorsan\u0131z, sulama s\u00fcresini de\u011fi\u015ftirip bu de\u011fi\u015fikli\u011fi Git&#8217;e kaydedebilirsiniz. E\u011fer sonu\u00e7lar beklentiniz gibi olmazsa, tek bir komutla \u00f6nceki, bilinen iyi duruma geri d\u00f6nebilirsiniz. Bu, manuel yap\u0131lan denemelerde olu\u015fan &#8220;geri d\u00f6n\u00fc\u015f\u00fc olmayan hata&#8221; riskini ortadan kald\u0131r\u0131r. Bu kolayl\u0131k, kentsel bah\u00e7ecilikle yeni tan\u0131\u015fanlar i\u00e7in bile otomasyonu eri\u015filebilir k\u0131lar ve onlara deney yapma cesareti verir. K\u0131sacas\u0131, fesle\u011feniniz i\u00e7in GitOps, basitlik, kontrol ve g\u00fcvenli\u011fin m\u00fckemmel birle\u015fimidir.<\/p>\n<h2>GitOps ile Fesle\u011fen Bah\u00e7esi Kurulumu: Ad\u0131m Ad\u0131m Rehber<\/h2>\n<p>\u015eimdiye kadar GitOps&#8217;un teorik faydalar\u0131ndan bahsettik. Peki, bu felsefeyi pratik bir fesle\u011fen bah\u00e7esi otomasyonuna nas\u0131l d\u00f6n\u00fc\u015ft\u00fcrece\u011fiz? \u0130\u015fte ad\u0131m ad\u0131m bir rehber:<\/p>\n<h3>Hedef Belirleme: Fesle\u011fenin \u0130htiya\u00e7lar\u0131 Nelerdir?<\/h3>\n<p>Her otomasyon projesinin ilk ad\u0131m\u0131, neyi otomatize etmek istedi\u011finizi ve hedeflerinizin ne oldu\u011funu a\u00e7\u0131k\u00e7a belirlemektir. Fesle\u011fen, \u00f6zellikle taze ve g\u00fcr kalmas\u0131 i\u00e7in belirli ko\u015fullara ihtiya\u00e7 duyan bir bitkidir. \u0130\u015fte temel ihtiya\u00e7lar\u0131:<\/p>\n<ul>\n<li><strong>Toprak Nemi:<\/strong> Fesle\u011fen, topra\u011f\u0131n\u0131n s\u00fcrekli nemli kalmas\u0131n\u0131 sever, ancak su i\u00e7inde y\u00fczmemelidir. Genellikle %50-%70 aras\u0131 toprak nemi idealdir.<\/li>\n<li><strong>S\u0131cakl\u0131k:<\/strong> Oda s\u0131cakl\u0131\u011f\u0131 (18-24\u00b0C) fesle\u011fen i\u00e7in m\u00fckemmeldir. \u00c7ok so\u011fuk veya \u00e7ok s\u0131cak ortamlar fesle\u011fene zarar verebilir.<\/li>\n<li><strong>Nem:<\/strong> Y\u00fcksek nem oranlar\u0131n\u0131 (%60-70) sever, \u00f6zellikle kentsel i\u00e7 mekanlarda bu oran\u0131n sa\u011flanmas\u0131 bazen zorlay\u0131c\u0131 olabilir.<\/li>\n<li><strong>I\u015f\u0131kland\u0131rma:<\/strong> G\u00fcnde en az 6-8 saat do\u011frudan g\u00fcne\u015f \u0131\u015f\u0131\u011f\u0131 veya g\u00fc\u00e7l\u00fc yapay \u0131\u015f\u0131k ister. Ancak \u00f6\u011flen g\u00fcne\u015finden korumak gerekebilir.<\/li>\n<\/ul>\n<p>Bu parametreleri belirlemek, otomasyon sistemimizin &#8216;hedef durumunu&#8217; olu\u015fturman\u0131n ilk ad\u0131m\u0131d\u0131r.<\/p>\n<h3>Sens\u00f6r ve Akt\u00fcat\u00f6r Se\u00e7imi: Neyi \u00d6l\u00e7meli, Neyi Kontrol Etmeli?<\/h3>\n<p>GitOps sistemimizin fiziksel d\u00fcnyayla etkile\u015fime ge\u00e7ebilmesi i\u00e7in baz\u0131 donan\u0131mlara ihtiyac\u0131m\u0131z var. A\u015f\u0131r\u0131 m\u00fchendisli\u011fe ka\u00e7madan, temel ihtiya\u00e7lar\u0131m\u0131z\u0131 kar\u015f\u0131layacak uygun maliyetli ve kolay bulunan bile\u015fenler se\u00e7meliyiz:<\/p>\n<ul>\n<li><strong>Mikrodenetleyici:<\/strong> Beyin olarak ESP32 veya ESP8266 tabanl\u0131 bir geli\u015ftirme kart\u0131. Wi-Fi deste\u011fi sayesinde Git deposuyla kolayca ileti\u015fim kurabilir.<\/li>\n<li><strong>Toprak Nem Sens\u00f6r\u00fc:<\/strong> Kapasitif tip sens\u00f6rler, korozyona daha dayan\u0131kl\u0131 oldu\u011fu i\u00e7in diren\u00e7li sens\u00f6rlere g\u00f6re daha uzun \u00f6m\u00fcrl\u00fcd\u00fcr. Birka\u00e7 dolara bulunabilir.<\/li>\n<li><strong>DHT11\/DHT22 Sens\u00f6r:<\/strong> Ortam s\u0131cakl\u0131\u011f\u0131n\u0131 ve nemini \u00f6l\u00e7mek i\u00e7in kullan\u0131l\u0131r. Hem ucuz hem de kullan\u0131m\u0131 kolayd\u0131r.<\/li>\n<li><strong>Mini Su Pompas\u0131:<\/strong> Fesle\u011feni sulamak i\u00e7in k\u00fc\u00e7\u00fck bir DC su pompas\u0131 yeterlidir.<\/li>\n<li><strong>R\u00f6le Mod\u00fcl\u00fc:<\/strong> Mikrodenetleyicinin su pompas\u0131n\u0131 veya \u0131\u015f\u0131kland\u0131rmay\u0131 a\u00e7\u0131p kapamas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>LED B\u00fcy\u00fcme Lambas\u0131 (Opsiyonel):<\/strong> Yetersiz do\u011fal \u0131\u015f\u0131k ko\u015fullar\u0131nda bitki geli\u015fimini desteklemek i\u00e7in.<\/li>\n<\/ul>\n<p>Bu bile\u015fenler, sisteminizin &#8220;g\u00f6zleri&#8221; ve &#8220;kollar\u0131&#8221; olacak. Bu donan\u0131m se\u00e7imi, maliyet etkinli\u011fi ve kolay eri\u015filebilirlik a\u00e7\u0131s\u0131ndan kentsel bah\u00e7ecilik i\u00e7in idealdir. Kurulumu karma\u015f\u0131k de\u011fildir ve temel elektronik bilgisiyle bile rahatl\u0131kla ger\u00e7ekle\u015ftirilebilir.<\/p>\n<h3>Durum Bildirimi (Declarative State): Git Deposu Nas\u0131l Olu\u015fturulur?<\/h3>\n<p>Sistemimizin kalbi, yani fesle\u011fenimizin ideal ko\u015fullar\u0131n\u0131 tan\u0131mlayan deklaratif yap\u0131land\u0131rma dosyam\u0131z olacak. Bu dosyay\u0131 bir Git deposunda saklayaca\u011f\u0131z. GitHub, GitLab veya Bitbucket gibi platformlarda \u00fccretsiz bir \u00f6zel depo olu\u015fturabilirsiniz. Genellikle YAML format\u0131, insan taraf\u0131ndan okunabilir ve makine taraf\u0131ndan kolayca i\u015flenebilir oldu\u011fu i\u00e7in tercih edilir. \u0130\u015fte basit bir \u00f6rnek:<\/p>\n<pre><code>\n# garden_config.yaml\n---\napi_version: v1\nkind: GardenState\nmetadata:\n  name: \"feslegen-bahcem\"\n  location: \"mutfak-penceresi\"\nspec:\n  plant_type: \"feslegen\"\n  ideal_conditions:\n    soil_moisture_percent: 65  # Hedef toprak nemi y\u00fczdesi\n    air_temperature_celsius: 22 # Hedef hava s\u0131cakl\u0131\u011f\u0131 Santigrat\n    air_humidity_percent: 70   # Hedef hava nemi y\u00fczdesi\n  light_schedule:\n    enabled: true\n    start_hour: 7\n    end_hour: 20\n    light_intensity: 80 # Y\u00fczde cinsinden \u0131\u015f\u0131k \u015fiddeti (varsa)\n  watering_policy:\n    enabled: true\n    pump_duration_seconds: 15 # Pompan\u0131n her sulamada ne kadar s\u00fcre \u00e7al\u0131\u015faca\u011f\u0131\n    min_interval_minutes: 120 # \u0130ki sulama aras\u0131 minimum s\u00fcre\nstatus:\n  last_updated: \"2023-10-27T10:30:00Z\"\n  current_soil_moisture_percent: 62\n  current_air_temperature_celsius: 21.5\n  current_air_humidity_percent: 68\n  pump_status: \"OFF\"\n  light_status: \"ON\"\n<\/pre>\n<p><\/code><\/p>\n<p>Bu YAML dosyas\u0131, fesle\u011fen bah\u00e7emizin istenen durumunu (<code>spec<\/code>) ve mevcut durumunu (<code>status<\/code>) a\u00e7\u0131k\u00e7a tan\u0131mlar. <code>status<\/code> alan\u0131, mikrodenetleyici taraf\u0131ndan g\u00fcncellenecektir. Bu dosyay\u0131 Git deposuna y\u00fckleyerek ilk 'commit'imizi yapabiliriz.<\/p>\n<pre><code>\ngit init\ngit add garden_config.yaml\ngit commit -m \"Initial fesle\u011fen bah\u00e7esi yap\u0131land\u0131rmas\u0131\"\ngit remote add origin <depo_url>\ngit push -u origin master\n<\/pre>\n<p><\/code><\/p>\n<p>Art\u0131k bah\u00e7emizin durumu Git'te versiyonlanm\u0131\u015f durumda. Herhangi bir de\u011fi\u015fiklik yapmak istedi\u011fimizde, sadece bu dosyay\u0131 d\u00fczenleyip Git'e g\u00f6ndermemiz yeterli olacak.<\/p>\n<h3>Otomasyon Motoru: Mikrodenetleyici ve Git Entegrasyonu<\/h3>\n<p>Mikrodenetleyicimiz (ESP32\/ESP8266), bu sistemin \"otomasyon motoru\" olarak g\u00f6rev yapacak. Periyodik olarak Git deposundan <code>garden_config.yaml<\/code> dosyas\u0131n\u0131 \u00e7ekecek, sens\u00f6rlerden okudu\u011fu de\u011ferleri bu dosyadaki hedef de\u011ferlerle kar\u015f\u0131la\u015ft\u0131racak ve gerekli eylemleri (sulama, \u0131\u015f\u0131k a\u00e7ma\/kapama) ger\u00e7ekle\u015ftirecektir. \u0130\u015fte Arduino IDE ortam\u0131nda yaz\u0131lm\u0131\u015f basit bir pseudo-kod \u00f6rne\u011fi:<\/p>\n<pre><code>\n\/\/ main.ino (pseudo-kod - ESP32 i\u00e7in)\n#include <WiFi.h>\n#include <HTTPClient.h>\n#include <Arduino_JSON.h> \/\/ YAML parsing i\u00e7in k\u00fct\u00fcphane gerekebilir\n\n\/\/ WiFi Ayarlar\u0131\nconst char* ssid = \"WIFI_ADINIZ\";\nconst char* password = \"WIFI_SIFRENIZ\";\n\n\/\/ Git Depo Ayarlar\u0131 (Raw YAML dosya URL'si)\nconst char* configUrl = \"https:\/\/raw.githubusercontent.com\/kullaniciadi\/feslegen-gitops\/main\/garden_config.yaml\";\n\n\/\/ Sens\u00f6r ve Akt\u00fcat\u00f6r Pinleri\nconst int SOIL_MOISTURE_PIN = 34; \/\/ Analog pin\nconst int WATER_PUMP_PIN = 27;   \/\/ Dijital pin (r\u00f6le kontrol\u00fc i\u00e7in)\nconst int LED_LIGHT_PIN = 26;    \/\/ Dijital pin (r\u00f6le kontrol\u00fc i\u00e7in)\n\n\/\/ Hedef De\u011ferler (Git'ten \u00e7ekilecek)\nint targetSoilMoisture = 65;\nint targetTemperature = 22;\nint targetHumidity = 70;\nint lightStartHour = 7;\nint lightEndHour = 20;\nint wateringDurationSec = 15;\nunsigned long lastWateringTime = 0;\nunsigned int minWateringIntervalMs = 120 * 60 * 1000; \/\/ 2 saat\n\nvoid setup() {\n  Serial.begin(115200);\n  pinMode(WATER_PUMP_PIN, OUTPUT);\n  pinMode(LED_LIGHT_PIN, OUTPUT);\n  digitalWrite(WATER_PUMP_PIN, LOW); \/\/ Ba\u015flang\u0131\u00e7ta pompa kapal\u0131\n  digitalWrite(LED_LIGHT_PIN, LOW);  \/\/ Ba\u015flang\u0131\u00e7ta \u0131\u015f\u0131k kapal\u0131\n\n  connectToWiFi();\n  fetchAndParseConfig(); \/\/ Git'ten ilk yap\u0131land\u0131rmay\u0131 \u00e7ek\n}\n\nvoid loop() {\n  \/\/ Her X dakikada bir yap\u0131land\u0131rmay\u0131 ve sens\u00f6rleri kontrol et\n  \/\/ Bu basit \u00f6rnekte her d\u00f6ng\u00fcde kontrol var, ger\u00e7ekte gecikmeler eklenmeli\n  delay(30000); \/\/ Her 30 saniyede bir kontrol et\n\n  fetchAndParseConfig(); \/\/ En g\u00fcncel yap\u0131land\u0131rmay\u0131 \u00e7ek\n\n  int currentSoilMoisture = readSoilMoisture();\n  float currentTemperature;\n  float currentHumidity;\n  readDHTSensor(&currentTemperature, &currentHumidity);\n\n  Serial.printf(\"Current Soil Moisture: %d%%, Temp: %.1fC, Hum: %.1f%%\\n\",\n                currentSoilMoisture, currentTemperature, currentHumidity);\n\n  \/\/ Sulama Mant\u0131\u011f\u0131\n  if (currentSoilMoisture < targetSoilMoisture &#038;&#038; (millis() - lastWateringTime > minWateringIntervalMs)) {\n    Serial.println(\"Toprak kuru, sulama ba\u015flat\u0131l\u0131yor...\");\n    digitalWrite(WATER_PUMP_PIN, HIGH);\n    delay(wateringDurationSec * 1000); \/\/ Belirlenen s\u00fcre kadar sula\n    digitalWrite(WATER_PUMP_PIN, LOW);\n    lastWateringTime = millis();\n    Serial.println(\"Sulama tamamland\u0131.\");\n  }\n\n  \/\/ I\u015f\u0131kland\u0131rma Mant\u0131\u011f\u0131\n  int currentHour = getCurrentHour(); \/\/ RTC veya NTP ile g\u00fcncel saat al\u0131nmal\u0131\n  if (currentHour >= lightStartHour && currentHour < lightEndHour) {\n    digitalWrite(LED_LIGHT_PIN, HIGH);\n    Serial.println(\"I\u015f\u0131k a\u00e7\u0131k.\");\n  } else {\n    digitalWrite(LED_LIGHT_PIN, LOW);\n    Serial.println(\"I\u015f\u0131k kapal\u0131.\");\n  }\n\n  \/\/ Sens\u00f6r verilerini ve durumu Git deposuna g\u00f6nderme (opsiyonel ama GitOps i\u00e7in \u00f6nemli)\n  \/\/ Bu k\u0131s\u0131m biraz daha karma\u015f\u0131k (HTTP PUT\/POST ile GitHub API kullan\u0131m\u0131)\n  \/\/ Basit bir proje i\u00e7in yerel kalabilir veya MQTT ile bir broker'a g\u00f6nderilebilir.\n}\n\nvoid connectToWiFi() {\n  \/\/ WiFi ba\u011flant\u0131 kodu\n}\n\nvoid fetchAndParseConfig() {\n  \/\/ HTTP GET iste\u011fi ile configUrl'den YAML dosyas\u0131n\u0131 \u00e7ek\n  \/\/ \u00c7ekilen i\u00e7eri\u011fi parse et (YAML k\u00fct\u00fcphanesi ile)\n  \/\/ Hedef de\u011fi\u015fkenleri g\u00fcncelle (targetSoilMoisture, lightStartHour vb.)\n}\n\nint readSoilMoisture() {\n  \/\/ Analog okuma yap ve y\u00fczdeye d\u00f6n\u00fc\u015ft\u00fcr\n  int sensorValue = analogRead(SOIL_MOISTURE_PIN);\n  \/\/ Bu de\u011ferleri kalibre etmeniz gerekebilir (kuru toprak=X, \u0131slak toprak=Y)\n  return map(sensorValue, 0, 4095, 0, 100); \/\/ ESP32 12-bit ADC\n}\n\nvoid readDHTSensor(float* temp, float* hum) {\n  \/\/ DHT k\u00fct\u00fcphanesi ile s\u0131cakl\u0131k ve nem oku\n  \/\/ Bu k\u0131s\u0131m DHT sens\u00f6r k\u00fct\u00fcphanesine ba\u011f\u0131ml\u0131d\u0131r.\n}\n\nint getCurrentHour() {\n  \/\/ NTP sunucusundan veya yerle\u015fik RTC'den g\u00fcncel saati al\n  \/\/ Basit bir \u00f6rnek i\u00e7in sabit bir saat kullan\u0131labilir, ancak otomasyon i\u00e7in dinamik olmal\u0131.\n  return 12; \/\/ Varsay\u0131lan olarak 12 (\u00f6\u011flen)\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kod iskeleti, temel GitOps d\u00f6ng\u00fcs\u00fcn\u00fc \u00f6zetler. ESP32, Git deposundaki yap\u0131land\u0131rmay\u0131 \u00e7eker, sens\u00f6rleri okur ve fesle\u011fenin ihtiya\u00e7lar\u0131na g\u00f6re eylemler ger\u00e7ekle\u015ftirir. Bu sayede, bah\u00e7enizin otomasyonunu tamamen kod olarak y\u00f6netebilir ve de\u011fi\u015fiklikleri s\u00fcr\u00fcm kontrol\u00fc alt\u0131nda tutabilirsiniz.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryosu: Tatil ve Hava De\u011fi\u015fikliklerine Adaptasyon<\/h2>\n<p>GitOps'un en b\u00fcy\u00fck avantajlar\u0131ndan biri, ger\u00e7ek d\u00fcnya ko\u015fullar\u0131na kolayca adapte olabilmesidir. Geleneksel otomasyon sistemlerinde bir ayar\u0131 de\u011fi\u015ftirmek genellikle cihaza do\u011frudan eri\u015fim, \u00f6zel bir uygulama veya karma\u015f\u0131k bir aray\u00fcz gerektirirken, GitOps ile her \u015fey basit bir dosya d\u00fczenlemesi ve Git commit'i ile halledilir. \u015eimdi iki yayg\u0131n senaryoyu ele alal\u0131m:<\/p>\n<h3>Senaryo 1: Tatil Modu ve Uzaktan Y\u00f6netim<\/h3>\n<p>Yaz tatilinize \u00e7\u0131k\u0131yorsunuz ve fesle\u011feninizi kimin sulayaca\u011f\u0131 konusunda endi\u015felenmek istemiyorsunuz. Normalde, kom\u015funuza anahtar b\u0131rak\u0131r veya bir arkada\u015f\u0131n\u0131zdan rica edersiniz. GitOps ile ise bu sorunu kolayca \u00e7\u00f6zebilirsiniz. Tek yapman\u0131z gereken, Git deposundaki <code>garden_config.yaml<\/code> dosyas\u0131nda sulama ayarlar\u0131n\u0131 de\u011fi\u015ftirmek.<\/p>\n<p>\u00d6rne\u011fin, normalde her 120 dakikada bir kontrol edip 15 saniye sulayan bir sisteminiz varken, tatil s\u00fcresince bitkinizin biraz daha az su almas\u0131n\u0131 veya daha uzun aral\u0131klarla sulanmas\u0131n\u0131 isteyebilirsiniz. Ayr\u0131ca, \u0131\u015f\u0131kland\u0131rma program\u0131n\u0131 da de\u011fi\u015ftirmek isteyebilirsiniz, belki g\u00fcn i\u00e7inde daha k\u0131sa bir s\u00fcre aktif kals\u0131n diye. \u0130\u015fte Git \u00fczerindeki de\u011fi\u015fiklik nas\u0131l g\u00f6r\u00fcn\u00fcrd\u00fc:<\/p>\n<pre><code>\n# garden_config.yaml (De\u011fi\u015fiklik \u00d6ncesi)\n...\n  watering_policy:\n    enabled: true\n    pump_duration_seconds: 15\n    min_interval_minutes: 120\n  light_schedule:\n    enabled: true\n    start_hour: 7\n    end_hour: 20\n...\n\n# garden_config.yaml (Tatil Modu - De\u011fi\u015fiklik Sonras\u0131)\n...\n  watering_policy:\n    enabled: true\n    pump_duration_seconds: 12 # Daha k\u0131sa sulama s\u00fcresi\n    min_interval_minutes: 180 # Daha uzun aral\u0131k\n  light_schedule:\n    enabled: true\n    start_hour: 10 # Daha ge\u00e7 ba\u015fla\n    end_hour: 18  # Daha erken bitir\n...\n<\/pre>\n<p><\/code><\/p>\n<p>Bu de\u011fi\u015fikli\u011fi yapt\u0131ktan sonra, sadece Git'e commit edip push yapman\u0131z yeterli:<\/p>\n<pre><code>\ngit commit -m \"Tatil modu: Sulama ve \u0131\u015f\u0131kland\u0131rma program\u0131 g\u00fcncellendi\"\ngit push origin master\n<\/pre>\n<p><\/code><\/p>\n<p>Evdeki ESP32'niz, bir sonraki kontrol d\u00f6ng\u00fcs\u00fcnde bu de\u011fi\u015fikli\u011fi otomatik olarak alg\u0131layacak ve bah\u00e7enizin yeni ayarlar\u0131n\u0131 uygulamaya ba\u015flayacakt\u0131r. Tatilden d\u00f6nd\u00fc\u011f\u00fcn\u00fczde, ayn\u0131 \u015fekilde dosyay\u0131 eski haline getirip tekrar commit yaparak normal \u00e7al\u0131\u015fma d\u00fczenine d\u00f6nebilirsiniz. Git'in s\u00fcr\u00fcm kontrol\u00fc sayesinde, ge\u00e7mi\u015fteki t\u00fcm ayarlar\u0131n\u0131za kolayca eri\u015febilir ve gerekti\u011finde geri d\u00f6nebilirsiniz. Bu senaryo, GitOps'un hem esnekli\u011fini hem de g\u00fcvenilirli\u011fini g\u00f6zler \u00f6n\u00fcne serer. Uzakta olsan\u0131z bile bah\u00e7enizin kontrol\u00fc tamamen sizde kal\u0131r, hem de sadece birka\u00e7 sat\u0131r kod de\u011fi\u015ftirerek. Bu durum, \u00f6zellikle \u015fehir hayat\u0131n\u0131n getirdi\u011fi seyahat k\u0131s\u0131tlar\u0131 d\u00fc\u015f\u00fcn\u00fcld\u00fc\u011f\u00fcnde, kentsel bah\u00e7ecilik merakl\u0131lar\u0131 i\u00e7in b\u00fcy\u00fck bir kolayl\u0131k sa\u011flar.<\/p>\n<h3>Senaryo 2: Ani Hava De\u011fi\u015fikliklerine Tepki<\/h3>\n<p>Kentsel iklimler bazen \u00f6ng\u00f6r\u00fclemeyen hava de\u011fi\u015fiklikleri g\u00f6sterebilir. Beklenmedik bir s\u0131cak hava dalgas\u0131 veya tam tersi, so\u011fuk ve ya\u011f\u0131\u015fl\u0131 bir d\u00f6nem fesle\u011feninizin ihtiya\u00e7lar\u0131n\u0131 de\u011fi\u015ftirebilir. Diyelim ki, bah\u00e7enizin bulundu\u011fu odada aniden bir s\u0131cak hava dalgas\u0131 nedeniyle s\u0131cakl\u0131klar y\u00fckseliyor ve nem d\u00fc\u015f\u00fcyor. Fesle\u011feninizin bu duruma daha s\u0131k sulama ile tepki vermesi ve belki de daha fazla neme ihtiya\u00e7 duymas\u0131 gerekebilir.<\/p>\n<p>Normal \u015fartlarda, bu durumda manuel olarak sulama yapmak veya bir nemlendiriciyi a\u00e7mak zorunda kal\u0131rd\u0131n\u0131z. GitOps ile ise, yine ayn\u0131 <code>garden_config.yaml<\/code> dosyas\u0131na k\u00fc\u00e7\u00fck bir m\u00fcdahale yeterli:<\/p>\n<pre><code>\n# garden_config.yaml (S\u0131cak Hava Dalgas\u0131 Ayarlar\u0131)\n...\n  ideal_conditions:\n    soil_moisture_percent: 70  # Nemi biraz daha y\u00fcksek tut\n    air_temperature_celsius: 25 # S\u0131cakl\u0131k limitini y\u00fckselt\n    air_humidity_percent: 75   # Nemi daha y\u00fcksek hedefle\n  watering_policy:\n    enabled: true\n    pump_duration_seconds: 18 # Daha uzun sulama\n    min_interval_minutes: 90  # Daha s\u0131k sulama\n...\n<\/pre>\n<p><\/code><\/p>\n<p>Bu g\u00fcncellemeyi Git'e g\u00f6nderdi\u011finizde, sisteminiz otomatik olarak yeni ko\u015fullara adapte olacakt\u0131r. E\u011fer evinizde bir ak\u0131ll\u0131 priz ve nemlendirici entegrasyonu da varsa, hava nemi y\u00fczdesini y\u00fckseltmek i\u00e7in nemlendiriciyi de otomatik olarak devreye sokabilirsiniz. Bu, bah\u00e7enizin de\u011fi\u015fen \u00e7evresel ko\u015fullara dinamik olarak adapte olmas\u0131n\u0131 sa\u011flar. GitOps, bu t\u00fcr dinamik ayarlamalar i\u00e7in h\u0131zl\u0131 ve hatas\u0131z bir y\u00f6ntem sunar. Yap\u0131lan her de\u011fi\u015fiklik Git ge\u00e7mi\u015finde kald\u0131\u011f\u0131 i\u00e7in, hangi ayarlaman\u0131n hangi ko\u015fulda daha iyi sonu\u00e7 verdi\u011fini de kolayca analiz edebilirsiniz. Bu esneklik, a\u015f\u0131r\u0131 m\u00fchendislikten ka\u00e7\u0131narak bile olduk\u00e7a sofistike bir otomasyon seviyesi elde etmenizi sa\u011flar.<\/p>\n<div class=\"expert-tip\">Uzman \u0130pucu: Otomasyonunuzu daha \"ak\u0131ll\u0131\" hale getirmek i\u00e7in, hava durumu API'lar\u0131ndan veri \u00e7ekerek (\u00f6rne\u011fin OpenWeatherMap), tahmin edilen hava de\u011fi\u015fikliklerine g\u00f6re \u00f6nleyici ayarlamalar yapabilirsiniz. Bu, Git deposuna otomatik commitler atarak veya manuel onay gerektiren bir \"pull request\" s\u00fcreciyle ger\u00e7ekle\u015ftirilebilir.<\/div>\n<h2>S\u00fcrd\u00fcr\u00fclebilirlik ve Geni\u015fletilebilirlik: GitOps ile Bah\u00e7enizi B\u00fcy\u00fctmek<\/h2>\n<p>Fesle\u011fenle ba\u015flayan GitOps yolculu\u011funuz, bir \u015fehir bah\u00e7esinin otomasyonu i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Ancak GitOps'un g\u00fczelli\u011fi, sisteminizi b\u00fcy\u00fct\u00fcrken veya daha karma\u015f\u0131k hale getirirken dahi temel prensiplerinin ge\u00e7erlili\u011fini korumas\u0131d\u0131r. A\u015f\u0131r\u0131 m\u00fchendislikten ka\u00e7\u0131narak bile, bu yakla\u015f\u0131m size inan\u0131lmaz bir s\u00fcrd\u00fcr\u00fclebilirlik ve geni\u015fletilebilirlik potansiyeli sunar.<\/p>\n<h3>Farkl\u0131 Bitkiler ve B\u00f6lgeler \u0130\u00e7in \u00d6l\u00e7ekleme<\/h3>\n<p>Bir fesle\u011fen saks\u0131s\u0131ndan daha fazlas\u0131n\u0131 m\u0131 istiyorsunuz? Belki biber, domates veya farkl\u0131 otlar yeti\u015ftirmek istiyorsunuz. GitOps, bu t\u00fcr geni\u015fletmeleri kolayca y\u00f6netmenizi sa\u011flar. Her yeni bitki t\u00fcr\u00fc veya bah\u00e7e b\u00f6lgesi i\u00e7in ayr\u0131 bir YAML yap\u0131land\u0131rma dosyas\u0131 (veya tek bir dosya i\u00e7inde farkl\u0131 b\u00f6l\u00fcmler) tan\u0131mlayabilirsiniz. \u00d6rne\u011fin:<\/p>\n<pre><code>\n# garden_config_tomatoes.yaml\n---\napi_version: v1\nkind: GardenState\nmetadata:\n  name: \"domates-bahcem\"\n  location: \"balkon\"\nspec:\n  plant_type: \"domates\"\n  ideal_conditions:\n    soil_moisture_percent: 70\n    air_temperature_celsius: 25\n    air_humidity_percent: 60\n...\n<\/pre>\n<p><\/code><\/p>\n<p>Her bitki veya b\u00f6lge i\u00e7in ayr\u0131 bir mikrodenetleyici kullanabilir veya daha g\u00fc\u00e7l\u00fc bir mikrodenetleyici (\u00f6rne\u011fin Raspberry Pi) kullanarak t\u00fcm b\u00f6lgeleri tek bir merkezi birimden y\u00f6netebilirsiniz. Her iki durumda da, t\u00fcm yap\u0131land\u0131rma dosyalar\u0131 Git deposunda birlikte tutuldu\u011fu i\u00e7in, bah\u00e7enizin tamam\u0131n\u0131n durumu her zaman merkezi olarak y\u00f6netilebilir ve izlenebilir.<\/p>\n<h3>Daha Karma\u015f\u0131k Kurallar ve Mod\u00fcller Ekleme<\/h3>\n<p>Sisteminiz b\u00fcy\u00fcd\u00fck\u00e7e, daha karma\u015f\u0131k otomasyon kurallar\u0131na ihtiya\u00e7 duyabilirsiniz. \u00d6rne\u011fin, bitkinin b\u00fcy\u00fcme evresine g\u00f6re sulama miktar\u0131n\u0131 de\u011fi\u015ftirmek veya besin \u00e7\u00f6zeltisi dozaj\u0131n\u0131 ayarlamak gibi. GitOps felsefesi, bu t\u00fcr geli\u015fmi\u015f \u00f6zellikleri de destekler:<\/p>\n<ul>\n<li><strong>Besin Dozaj\u0131:<\/strong> Besin pompalar\u0131 ekleyerek ve yap\u0131land\u0131rma dosyan\u0131za \"nutrient_dosing_schedule\" gibi yeni b\u00f6l\u00fcmler ekleyerek besin takviyesini otomatize edebilirsiniz.<\/li>\n<li><strong>PH Kontrol\u00fc:<\/strong> Su PH sens\u00f6rleri ve PH ayarlay\u0131c\u0131 pompalar\u0131 ekleyerek hidroponik sistemlerdeki PH seviyesini Git \u00fczerinden y\u00f6netebilirsiniz.<\/li>\n<li><strong>G\u00f6rsel Denetim:<\/strong> K\u00fc\u00e7\u00fck bir kamera ekleyerek periyodik foto\u011fraf \u00e7ekebilir ve bu foto\u011fraflar\u0131 bir bulut depolama alan\u0131na y\u00fckleyerek bah\u00e7enizin geli\u015fimini g\u00f6rsel olarak takip edebilirsiniz. Hatta yapay zeka ile bitki hastal\u0131klar\u0131n\u0131 veya b\u00fcy\u00fcme anomalilerini tespit edebilirsiniz.<\/li>\n<\/ul>\n<p>Bu t\u00fcr entegrasyonlar, donan\u0131m ve yaz\u0131l\u0131m taraf\u0131nda biraz daha fazla \u00e7aba gerektirse de, GitOps'un sa\u011flad\u0131\u011f\u0131 deklaratif yap\u0131land\u0131rma ve versiyon kontrol\u00fc, karma\u015f\u0131kl\u0131\u011f\u0131 y\u00f6netilebilir k\u0131lar. Her yeni \u00f6zelli\u011fin yap\u0131land\u0131rmas\u0131 Git'te tan\u0131mlan\u0131r, bu da \u015feffafl\u0131\u011f\u0131 art\u0131r\u0131r.<\/p>\n<h3>\u0130zleme, Uyar\u0131lar ve Kullan\u0131c\u0131 Aray\u00fcz\u00fc<\/h3>\n<p>Bir otomasyon sistemi, sadece eylem yapmakla kalmamal\u0131, ayn\u0131 zamanda geri bildirim de sa\u011flamal\u0131d\u0131r. GitOps ile izleme ve uyar\u0131 sistemlerini de kolayca entegre edebilirsiniz:<\/p>\n<ul>\n<li><strong>Durum G\u00fcncelleme:<\/strong> Mikrodenetleyiciniz, sens\u00f6r verilerini ve eylemlerini (sulama yap\u0131ld\u0131, \u0131\u015f\u0131k a\u00e7\u0131k) d\u00fczenli olarak Git deposundaki <code>garden_config.yaml<\/code> dosyas\u0131n\u0131n <code>status<\/code> alan\u0131na geri yazabilir. Bu, Git'in kendisini bir \"ger\u00e7ek zamanl\u0131 durum paneli\" olarak kullanman\u0131z\u0131 sa\u011flar.<\/li>\n<li><strong>Bildirimler:<\/strong> E\u011fer sistemde bir anomali (\u00f6rne\u011fin, toprak nemi \u00e7ok d\u00fc\u015f\u00fck kalmaya devam ediyor) olursa, mikrodenetleyici bir Telegram botu, e-posta veya SMS arac\u0131l\u0131\u011f\u0131yla size bildirim g\u00f6nderebilir. Bu t\u00fcr bildirim kurallar\u0131 da Git yap\u0131land\u0131rmas\u0131nda tan\u0131mlanabilir.<\/li>\n<li><strong>Basit Bir Web Aray\u00fcz\u00fc:<\/strong> Mobil uyumlu bir web aray\u00fcz\u00fc tasarlayarak bah\u00e7enizin durumunu anl\u0131k olarak g\u00f6r\u00fcnt\u00fcleyebilir ve hatta Git \u00fczerinden parametreleri de\u011fi\u015ftirmek i\u00e7in basit butonlar ekleyebilirsiniz. Bu, tamamen iste\u011fe ba\u011fl\u0131 bir ad\u0131md\u0131r ve \"a\u015f\u0131r\u0131 m\u00fchendislikten ka\u00e7\u0131nma\" prensibimizle \u00e7eli\u015fmemesi i\u00e7in basit tutulmal\u0131d\u0131r. \u0130\u015fte basit bir mobil uyumlu HTML \u00f6rne\u011fi:<\/li>\n<\/ul>\n<pre><code>\n<!DOCTYPE html>\n<html lang=\"tr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Fesle\u011fen Bah\u00e7esi Durum Paneli<\/title>\n    <style>\n        \/* Genel stil *\/\n        body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; margin: 0; padding: 0; background-color: #f4f4f4; color: #333; }\n        .container { max-width: 960px; margin: 20px auto; padding: 20px; background-color: #fff; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }\n        h2 { color: #28a745; text-align: center; margin-bottom: 25px; }\n        .status-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; }\n        .status-item { background-color: #e9f7ef; padding: 15px; border-radius: 5px; text-align: center; }\n        .status-item h3 { margin-top: 0; color: #28a745; font-size: 1.2em; }\n        .status-item p { font-size: 1.8em; font-weight: bold; color: #007bff; margin: 5px 0; }\n        .status-item span { font-size: 0.9em; color: #555; }\n\n        \/* Mobil uyumlu medya sorgusu *\/\n        @media (max-width: 600px) {\n            .container { margin: 10px; padding: 15px; }\n            h2 { font-size: 1.8em; margin-bottom: 20px; }\n            .status-grid { grid-template-columns: 1fr; } \/* Tek s\u00fctunlu d\u00fczen *\/\n            .status-item p { font-size: 1.5em; }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"container\">\n        <h2>Fesle\u011fen Bah\u00e7esi Anl\u0131k Durum<\/h2>\n        <div class=\"status-grid\">\n            <div class=\"status-item\">\n                <h3>Toprak Nemi<\/h3>\n                <p>62%<\/p>\n                <span>Hedef: 65%<\/span>\n            <\/div>\n            <div class=\"status-item\">\n                <h3>Hava S\u0131cakl\u0131\u011f\u0131<\/h3>\n                <p>21.5\u00b0C<\/p>\n                <span>Hedef: 22\u00b0C<\/span>\n            <\/div>\n            <div class=\"status-item\">\n                <h3>Hava Nemi<\/h3>\n                <p>68%<\/p>\n                <span>Hedef: 70%<\/span>\n            <\/div>\n            <div class=\"status-item\">\n                <h3>I\u015f\u0131kland\u0131rma<\/h3>\n                <p>A\u00c7IK<\/p>\n                <span>7:00 - 20:00<\/span>\n            <\/div>\n            <div class=\"status-item\">\n                <h3>Pompa Durumu<\/h3>\n                <p>KAPALI<\/p>\n                <span>Son sulama: 10 dk \u00f6nce<\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/body>\n<\/html>\n<\/pre>\n<p><\/code><\/p>\n<p>Bu aray\u00fcz\u00fc, ESP32'nin kendi web sunucusu \u00fczerinden veya harici bir basit web sunucusu (\u00f6rne\u011fin Raspberry Pi \u00fczerinde \u00e7al\u0131\u015fan Node.js\/Python) arac\u0131l\u0131\u011f\u0131yla sunabilirsiniz. \u00d6nemli olan, bu t\u00fcr eklemelerin GitOps'un temel prensiplerini bozmadan, kontrol\u00fcn yine Git deposu \u00fczerinden sa\u011flanmas\u0131d\u0131r. B\u00f6ylece, k\u00fc\u00e7\u00fck bir fesle\u011fen bah\u00e7esi otomasyonundan, geli\u015fmi\u015f ve kapsaml\u0131 bir ak\u0131ll\u0131 kentsel bah\u00e7e sistemine do\u011fru sorunsuz bir ge\u00e7i\u015f yapabilirsiniz, her ad\u0131m\u0131 \u015feffaf ve y\u00f6netilebilir k\u0131larak.<\/p>\n<h2>Sonu\u00e7: A\u015f\u0131r\u0131 M\u00fchendislikten Uzak Otomasyonun Tad\u0131<\/h2>\n<p>Kentsel bah\u00e7ecilik, \u00f6zellikle de fesle\u011fen gibi \u00f6zen isteyen bitkiler yeti\u015ftirmek, \u015fehir ya\u015fam\u0131n\u0131n getirdi\u011fi ko\u015fu\u015fturmacada adeta bir meditasyon, bir rahatlama kayna\u011f\u0131 olabilir. Ancak bu keyfin, bitkilerinizin s\u00fcrekli bak\u0131m\u0131yla gelen ek sorumluluklar nedeniyle bir y\u00fck haline gelmemesi gerekir. \u0130\u015fte tam da bu noktada, GitOps felsefesinin basitli\u011fi ve g\u00fcc\u00fc devreye giriyor. Bu makalede g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131n\u0131n b\u00fcy\u00fck altyap\u0131lar\u0131 y\u00f6netmek i\u00e7in kulland\u0131\u011f\u0131 bu g\u00fc\u00e7l\u00fc prensipleri, evdeki k\u00fc\u00e7\u00fck bir fesle\u011fen bah\u00e7esi gibi m\u00fctevaz\u0131 bir projeye uygulayarak, a\u015f\u0131r\u0131 m\u00fchendisli\u011fe ka\u00e7madan etkili bir otomasyon sistemi kurmak m\u00fcmk\u00fcn. GitOps ile, bah\u00e7enizin t\u00fcm ayarlar\u0131 tek bir merkezi, versiyon kontrol\u00fc olan bir dosyada toplan\u0131r. Bu, sadece \"tatil moduna\" tek bir commit ile ge\u00e7ebilmek gibi pratik kolayl\u0131klar sunmakla kalmaz, ayn\u0131 zamanda bah\u00e7enizin ge\u00e7mi\u015f durumunu takip etmenizi, de\u011fi\u015fiklikleri g\u00fcvenle denemenizi ve gerekti\u011finde sorunsuz bir \u015fekilde geri alman\u0131z\u0131 sa\u011flar. Sens\u00f6rlerden gelen verilerle bitkilerinizin anl\u0131k durumunu izlerken, Git'teki deklaratif yap\u0131land\u0131rma sayesinde bah\u00e7enizin her zaman istedi\u011finiz ko\u015fullarda kalmas\u0131n\u0131 garanti alt\u0131na al\u0131rs\u0131n\u0131z. Bu, size sadece zaman kazand\u0131rmakla kalmaz, ayn\u0131 zamanda bitkilerinizin sa\u011fl\u0131kl\u0131 b\u00fcy\u00fcmesini sa\u011flarken, otomasyonun getirdi\u011fi huzuru ve kontrol hissini ya\u015fat\u0131r. Unutmay\u0131n, en iyi otomasyon, karma\u015f\u0131k g\u00f6r\u00fcnen sorunlar\u0131 basit ve \u015f\u0131k \u00e7\u00f6z\u00fcmlerle ortadan kald\u0131ran otomasyondur. Fesle\u011feniniz i\u00e7in GitOps, i\u015fte tam da bunu sunar: A\u015f\u0131r\u0131 m\u00fchendislikten uzak, s\u00fcrd\u00fcr\u00fclebilir, esnek ve keyifli bir kentsel bah\u00e7ecilik deneyimi.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<h3>GitOps ger\u00e7ekten bu kadar k\u00fc\u00e7\u00fck bir proje i\u00e7in gerekli mi?<\/h3>\n<p>Kesinlikle! GitOps prensipleri, \u00f6l\u00e7ekten ba\u011f\u0131ms\u0131z olarak fayda sa\u011flar. K\u00fc\u00e7\u00fck projelerde bile versiyon kontrol\u00fc, deklaratif yap\u0131land\u0131rma ve otomatik uzla\u015ft\u0131rma, de\u011fi\u015fiklikleri y\u00f6netmeyi basitle\u015ftirir, hatalar\u0131 azalt\u0131r ve sistemi daha g\u00fcvenilir k\u0131lar. A\u015f\u0131r\u0131 karma\u015f\u0131k \u00e7\u00f6z\u00fcmlerden ka\u00e7\u0131narak, daha fazla avantaj elde edersiniz.<\/p>\n<h3>Hangi donan\u0131mlar\u0131 kullanmal\u0131y\u0131m?<\/h3>\n<p>Ba\u015flang\u0131\u00e7 i\u00e7in ESP32 veya ESP8266 gibi Wi-Fi \u00f6zellikli bir mikrodenetleyici, kapasitif toprak nem sens\u00f6r\u00fc, DHT11\/DHT22 s\u0131cakl\u0131k\/nem sens\u00f6r\u00fc, k\u00fc\u00e7\u00fck bir su pompas\u0131 ve bir r\u00f6le mod\u00fcl\u00fc yeterlidir. Bu bile\u015fenler uygun maliyetlidir ve kolayca temin edilebilir.<\/p>\n<h3>\u0130nternet ba\u011flant\u0131s\u0131 kesilirse ne olur?<\/h3>\n<p>GitOps sisteminizin temel \u00e7al\u0131\u015fma prensibi, Git deposundan yap\u0131land\u0131rmay\u0131 \u00e7ekmektir. E\u011fer internet ba\u011flant\u0131s\u0131 kesilirse, mikrodenetleyici yeni yap\u0131land\u0131rma de\u011fi\u015fikliklerini \u00e7ekemez. Ancak, en son ba\u015far\u0131l\u0131 \u015fekilde \u00e7ekti\u011fi yap\u0131land\u0131rma ile \u00e7al\u0131\u015fmaya devam edecektir. Bu nedenle, kritik durumlarda manuel m\u00fcdahale veya basit bir offline mod (\u00f6nceden belirlenmi\u015f varsay\u0131lan ayarlar) i\u00e7in bir yedek plan\u0131n\u0131z olmas\u0131 faydal\u0131 olacakt\u0131r.<\/p>\n<h3>Sadece fesle\u011fen i\u00e7in mi ge\u00e7erli?<\/h3>\n<p>Hay\u0131r, kesinlikle de\u011fil! Bu GitOps yakla\u015f\u0131m\u0131, herhangi bir bitki t\u00fcr\u00fc veya k\u00fc\u00e7\u00fck \u00f6l\u00e7ekli kentsel bah\u00e7e otomasyonu i\u00e7in uyarlanabilir. Yap\u0131land\u0131rma dosyas\u0131ndaki bitki \u00f6zelliklerini ve hedef ko\u015fullar\u0131 de\u011fi\u015ftirerek, farkl\u0131 bitkiler i\u00e7in de ayn\u0131 sistemi kullanabilirsiniz. Hatta, birden fazla bitki t\u00fcr\u00fcn\u00fc veya bah\u00e7e b\u00f6lgesini ayn\u0131 Git deposu i\u00e7inde farkl\u0131 yap\u0131land\u0131rma dosyalar\u0131yla y\u00f6netebilirsiniz.<\/p>\n<h3>Maliyetli bir \u00e7\u00f6z\u00fcm m\u00fc?<\/h3>\n<p>Hay\u0131r, tam tersi. Kullan\u0131lan mikrodenetleyici ve sens\u00f6rler genellikle olduk\u00e7a ekonomiktir. Bir ESP32 veya ESP8266 geli\u015ftirme kart\u0131 ile birka\u00e7 sens\u00f6r ve akt\u00fcat\u00f6r, toplamda olduk\u00e7a d\u00fc\u015f\u00fck bir maliyetle temin edilebilir. Yaz\u0131l\u0131m taraf\u0131nda ise \u00e7o\u011fu ara\u00e7 (Git, GitHub\/GitLab gibi platformlar\u0131n \u00fccretsiz planlar\u0131, Arduino IDE) \u00fccretsizdir. Bu nedenle, olduk\u00e7a maliyet etkin bir otomasyon \u00e7\u00f6z\u00fcm\u00fcd\u00fcr.<\/p>\n","protected":false},"excerpt":{"rendered":"Kentsel ya\u015fam\u0131n betonarme dokusunda kendi ye\u015fil vahalar\u0131m\u0131z\u0131 yaratmak, ruhumuza iyi gelen bir ka\u00e7\u0131\u015f noktas\u0131 sunar. \u00d6zellikle fesle\u011fen gibi&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1401],"tags":[],"class_list":{"0":"post-30771","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-git","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Fesle\u011fen \u0130\u00e7in GitOps: Kentsel Bah\u00e7enizi A\u015f\u0131r\u0131 M\u00fchendislikten Uzak Otomatize Edin<\/title>\n<meta name=\"description\" content=\"Kentsel ya\u015fam\u0131n betonarme dokusunda kendi ye\u015fil vahalar\u0131m\u0131z\u0131 yaratmak, ruhumuza iyi gelen bir ka\u00e7\u0131\u015f noktas\u0131 sunar. \u00d6zellikle fesle\u011fen gibi nazik bitkilerle dolu bir mutfak bah\u00e7esi, hem g\u00f6rsel bir \u015f\u00f6len hem de damaklara hitap eden tazelik demektir. Ancak, bu ye\u015fil dostlara d\u00fczenli bak\u0131m sa\u011flamak, \u00f6zellikle yo\u011fun tempolu \u015fehir hayat\u0131nda bazen yorucu olabilir. &quot;Acaba fesle\u011fenim yeterince su ald\u0131 m\u0131?&quot;, &quot;I\u015f\u0131kland\u0131rmas\u0131 do\u011fru mu?&quot;, &quot;Tatile \u00e7\u0131kt\u0131\u011f\u0131mda kim bakacak?&quot; gibi sorular kafan\u0131z\u0131 me\u015fgul ediyorsa, do\u011fru yerdesiniz. Bu makalede, yaz\u0131l\u0131m d\u00fcnyas\u0131n\u0131n g\u00fc\u00e7l\u00fc bir otomasyon felsefesi olan GitOps&#039;u, en sevdi\u011fimiz mutfak bitkilerinden biri olan fesle\u011fen i\u00e7in nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131, \u00fcstelik a\u015f\u0131r\u0131 m\u00fchendisli\u011fe ka\u00e7madan, ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, basit, s\u00fcrd\u00fcr\u00fclebilir ve esnek bir otomasyon \u00e7\u00f6z\u00fcm\u00fc sunarak, fesle\u011fenlerinizin her zaman mutlu ve g\u00fcr kalmas\u0131n\u0131 sa\u011flamak.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fesle\u011fen \u0130\u00e7in GitOps: Kentsel Bah\u00e7enizi A\u015f\u0131r\u0131 M\u00fchendislikten Uzak Otomatize Edin\" \/>\n<meta property=\"og:description\" content=\"Kentsel ya\u015fam\u0131n betonarme dokusunda kendi ye\u015fil vahalar\u0131m\u0131z\u0131 yaratmak, ruhumuza iyi gelen bir ka\u00e7\u0131\u015f noktas\u0131 sunar. \u00d6zellikle fesle\u011fen gibi nazik bitkilerle dolu bir mutfak bah\u00e7esi, hem g\u00f6rsel bir \u015f\u00f6len hem de damaklara hitap eden tazelik demektir. Ancak, bu ye\u015fil dostlara d\u00fczenli bak\u0131m sa\u011flamak, \u00f6zellikle yo\u011fun tempolu \u015fehir hayat\u0131nda bazen yorucu olabilir. &quot;Acaba fesle\u011fenim yeterince su ald\u0131 m\u0131?&quot;, &quot;I\u015f\u0131kland\u0131rmas\u0131 do\u011fru mu?&quot;, &quot;Tatile \u00e7\u0131kt\u0131\u011f\u0131mda kim bakacak?&quot; gibi sorular kafan\u0131z\u0131 me\u015fgul ediyorsa, do\u011fru yerdesiniz. Bu makalede, yaz\u0131l\u0131m d\u00fcnyas\u0131n\u0131n g\u00fc\u00e7l\u00fc bir otomasyon felsefesi olan GitOps&#039;u, en sevdi\u011fimiz mutfak bitkilerinden biri olan fesle\u011fen i\u00e7in nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131, \u00fcstelik a\u015f\u0131r\u0131 m\u00fchendisli\u011fe ka\u00e7madan, ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, basit, s\u00fcrd\u00fcr\u00fclebilir ve esnek bir otomasyon \u00e7\u00f6z\u00fcm\u00fc sunarak, fesle\u011fenlerinizin her zaman mutlu ve g\u00fcr kalmas\u0131n\u0131 sa\u011flamak.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-01T20:02:02+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Fesle\u011fen \u0130\u00e7in GitOps: Kentsel Bah\u00e7enizi A\u015f\u0131r\u0131 M\u00fchendislikten Uzak Otomatize Edin\",\"datePublished\":\"2025-10-01T20:02:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/\"},\"wordCount\":3566,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Git\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/\",\"name\":\"Fesle\u011fen \u0130\u00e7in GitOps: Kentsel Bah\u00e7enizi A\u015f\u0131r\u0131 M\u00fchendislikten Uzak Otomatize Edin\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-01T20:02:02+00:00\",\"description\":\"Kentsel ya\u015fam\u0131n betonarme dokusunda kendi ye\u015fil vahalar\u0131m\u0131z\u0131 yaratmak, ruhumuza iyi gelen bir ka\u00e7\u0131\u015f noktas\u0131 sunar. \u00d6zellikle fesle\u011fen gibi nazik bitkilerle dolu bir mutfak bah\u00e7esi, hem g\u00f6rsel bir \u015f\u00f6len hem de damaklara hitap eden tazelik demektir. Ancak, bu ye\u015fil dostlara d\u00fczenli bak\u0131m sa\u011flamak, \u00f6zellikle yo\u011fun tempolu \u015fehir hayat\u0131nda bazen yorucu olabilir. \\\"Acaba fesle\u011fenim yeterince su ald\u0131 m\u0131?\\\", \\\"I\u015f\u0131kland\u0131rmas\u0131 do\u011fru mu?\\\", \\\"Tatile \u00e7\u0131kt\u0131\u011f\u0131mda kim bakacak?\\\" gibi sorular kafan\u0131z\u0131 me\u015fgul ediyorsa, do\u011fru yerdesiniz. Bu makalede, yaz\u0131l\u0131m d\u00fcnyas\u0131n\u0131n g\u00fc\u00e7l\u00fc bir otomasyon felsefesi olan GitOps'u, en sevdi\u011fimiz mutfak bitkilerinden biri olan fesle\u011fen i\u00e7in nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131, \u00fcstelik a\u015f\u0131r\u0131 m\u00fchendisli\u011fe ka\u00e7madan, ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, basit, s\u00fcrd\u00fcr\u00fclebilir ve esnek bir otomasyon \u00e7\u00f6z\u00fcm\u00fc sunarak, fesle\u011fenlerinizin her zaman mutlu ve g\u00fcr kalmas\u0131n\u0131 sa\u011flamak.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fesle\u011fen \u0130\u00e7in GitOps: Kentsel Bah\u00e7enizi A\u015f\u0131r\u0131 M\u00fchendislikten Uzak Otomatize Edin\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Fesle\u011fen \u0130\u00e7in GitOps: Kentsel Bah\u00e7enizi A\u015f\u0131r\u0131 M\u00fchendislikten Uzak Otomatize Edin","description":"Kentsel ya\u015fam\u0131n betonarme dokusunda kendi ye\u015fil vahalar\u0131m\u0131z\u0131 yaratmak, ruhumuza iyi gelen bir ka\u00e7\u0131\u015f noktas\u0131 sunar. \u00d6zellikle fesle\u011fen gibi nazik bitkilerle dolu bir mutfak bah\u00e7esi, hem g\u00f6rsel bir \u015f\u00f6len hem de damaklara hitap eden tazelik demektir. Ancak, bu ye\u015fil dostlara d\u00fczenli bak\u0131m sa\u011flamak, \u00f6zellikle yo\u011fun tempolu \u015fehir hayat\u0131nda bazen yorucu olabilir. \"Acaba fesle\u011fenim yeterince su ald\u0131 m\u0131?\", \"I\u015f\u0131kland\u0131rmas\u0131 do\u011fru mu?\", \"Tatile \u00e7\u0131kt\u0131\u011f\u0131mda kim bakacak?\" gibi sorular kafan\u0131z\u0131 me\u015fgul ediyorsa, do\u011fru yerdesiniz. Bu makalede, yaz\u0131l\u0131m d\u00fcnyas\u0131n\u0131n g\u00fc\u00e7l\u00fc bir otomasyon felsefesi olan GitOps'u, en sevdi\u011fimiz mutfak bitkilerinden biri olan fesle\u011fen i\u00e7in nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131, \u00fcstelik a\u015f\u0131r\u0131 m\u00fchendisli\u011fe ka\u00e7madan, ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, basit, s\u00fcrd\u00fcr\u00fclebilir ve esnek bir otomasyon \u00e7\u00f6z\u00fcm\u00fc sunarak, fesle\u011fenlerinizin her zaman mutlu ve g\u00fcr kalmas\u0131n\u0131 sa\u011flamak.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/","og_locale":"tr_TR","og_type":"article","og_title":"Fesle\u011fen \u0130\u00e7in GitOps: Kentsel Bah\u00e7enizi A\u015f\u0131r\u0131 M\u00fchendislikten Uzak Otomatize Edin","og_description":"Kentsel ya\u015fam\u0131n betonarme dokusunda kendi ye\u015fil vahalar\u0131m\u0131z\u0131 yaratmak, ruhumuza iyi gelen bir ka\u00e7\u0131\u015f noktas\u0131 sunar. \u00d6zellikle fesle\u011fen gibi nazik bitkilerle dolu bir mutfak bah\u00e7esi, hem g\u00f6rsel bir \u015f\u00f6len hem de damaklara hitap eden tazelik demektir. Ancak, bu ye\u015fil dostlara d\u00fczenli bak\u0131m sa\u011flamak, \u00f6zellikle yo\u011fun tempolu \u015fehir hayat\u0131nda bazen yorucu olabilir. \"Acaba fesle\u011fenim yeterince su ald\u0131 m\u0131?\", \"I\u015f\u0131kland\u0131rmas\u0131 do\u011fru mu?\", \"Tatile \u00e7\u0131kt\u0131\u011f\u0131mda kim bakacak?\" gibi sorular kafan\u0131z\u0131 me\u015fgul ediyorsa, do\u011fru yerdesiniz. Bu makalede, yaz\u0131l\u0131m d\u00fcnyas\u0131n\u0131n g\u00fc\u00e7l\u00fc bir otomasyon felsefesi olan GitOps'u, en sevdi\u011fimiz mutfak bitkilerinden biri olan fesle\u011fen i\u00e7in nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131, \u00fcstelik a\u015f\u0131r\u0131 m\u00fchendisli\u011fe ka\u00e7madan, ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, basit, s\u00fcrd\u00fcr\u00fclebilir ve esnek bir otomasyon \u00e7\u00f6z\u00fcm\u00fc sunarak, fesle\u011fenlerinizin her zaman mutlu ve g\u00fcr kalmas\u0131n\u0131 sa\u011flamak.","og_url":"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-01T20:02:02+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"22 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Fesle\u011fen \u0130\u00e7in GitOps: Kentsel Bah\u00e7enizi A\u015f\u0131r\u0131 M\u00fchendislikten Uzak Otomatize Edin","datePublished":"2025-10-01T20:02:02+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/"},"wordCount":3566,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Git"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/","url":"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/","name":"Fesle\u011fen \u0130\u00e7in GitOps: Kentsel Bah\u00e7enizi A\u015f\u0131r\u0131 M\u00fchendislikten Uzak Otomatize Edin","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-01T20:02:02+00:00","description":"Kentsel ya\u015fam\u0131n betonarme dokusunda kendi ye\u015fil vahalar\u0131m\u0131z\u0131 yaratmak, ruhumuza iyi gelen bir ka\u00e7\u0131\u015f noktas\u0131 sunar. \u00d6zellikle fesle\u011fen gibi nazik bitkilerle dolu bir mutfak bah\u00e7esi, hem g\u00f6rsel bir \u015f\u00f6len hem de damaklara hitap eden tazelik demektir. Ancak, bu ye\u015fil dostlara d\u00fczenli bak\u0131m sa\u011flamak, \u00f6zellikle yo\u011fun tempolu \u015fehir hayat\u0131nda bazen yorucu olabilir. \"Acaba fesle\u011fenim yeterince su ald\u0131 m\u0131?\", \"I\u015f\u0131kland\u0131rmas\u0131 do\u011fru mu?\", \"Tatile \u00e7\u0131kt\u0131\u011f\u0131mda kim bakacak?\" gibi sorular kafan\u0131z\u0131 me\u015fgul ediyorsa, do\u011fru yerdesiniz. Bu makalede, yaz\u0131l\u0131m d\u00fcnyas\u0131n\u0131n g\u00fc\u00e7l\u00fc bir otomasyon felsefesi olan GitOps'u, en sevdi\u011fimiz mutfak bitkilerinden biri olan fesle\u011fen i\u00e7in nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131, \u00fcstelik a\u015f\u0131r\u0131 m\u00fchendisli\u011fe ka\u00e7madan, ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, basit, s\u00fcrd\u00fcr\u00fclebilir ve esnek bir otomasyon \u00e7\u00f6z\u00fcm\u00fc sunarak, fesle\u011fenlerinizin her zaman mutlu ve g\u00fcr kalmas\u0131n\u0131 sa\u011flamak.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/feslegen-icin-gitops-kentsel-bahcenizi-asiri-muhendislikten-uzak-otomatize-edin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Fesle\u011fen \u0130\u00e7in GitOps: Kentsel Bah\u00e7enizi A\u015f\u0131r\u0131 M\u00fchendislikten Uzak Otomatize Edin"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30771","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=30771"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30771\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=30771"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=30771"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=30771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}