← Tüm rehberler Masaüstü · Epson

Restoran ve Kafe Mutfak Adisyon Yazdırma Mimarisi: Masaüstü, Paket Servis ve İstasyon Dağıtımı

Yoğun bir cuma akşamı restoranda servis anı; garsonların sipariş girdiği, şeflerin tabak hazırladığı ve paket kuryelerinin kapıda beklediği yüksek tempolu bir operasyondur. Bu karmaşada mutfak adisyon yazıcısının bir siparişi kaçırması, yemeğin yanlış istasyona gitmesi veya fişin gürültüde duyulmaması; mutfakta kaosa, müşteri memnuniyetsizliğine ve iptal edilen sipariş maliyetlerine yol açar.

Profesyonel restoran otomasyonunda mutfak yazdırma süreci, sıradan bir fiş basma işlemi değildir. Bu mimari; İstasyon Dağıtımı (Routing), Sipariş Değişiklik Yönetimi (Modifications & Voids), Donanım Sesli Uyarıları (Buzzer/Alarm) ve Ağ Hata Toleransı (Failover) üzerine kurulmalıdır.

Bu mühendislik rehberinde; KOT (Kitchen Order Ticket) yazdırma mimarisini, termal vs nokta vuruşlu (dot-matrix) yazıcı farklarını, ESC/POS donanım buzzer komutlarını ve istasyon bazlı JavaScript dağıtım motorunu inceliyoruz.


1. Mutfak İstasyon Dağıtımı (KOT Routing) Mimarisi

Bir masaya oturan müşteriler aynı anda çorba, bonfile ızgara, mevsim salatası, buzlu kokteyl ve künefe sipariş ettiğinde; bu siparişin tek bir fiş olarak tek bir yere gitmesi operasyonu felç eder.

Sistem her kalemi kendi hazırlık istasyonuna bağımsız olarak bölüştürmelidir:

[ Garson Tableti / Web POS ] ──► [ Sipariş: Masa 12 ]

       ┌──────────────────┬──────────────┴───────────────┬──────────────────┐
       ▼                  ▼                              ▼                  ▼
[ Sıcak Mutfak ]    [ Soğuk & Meze ]               [ Bar / Barista ]    [ Şef Pas (Expediter) ]
 - Çorba             - Mevsim Salata                - Kokteyl            - Konsolide Özet Fiş
 - Bonfile Izgara    - Haydari                      - Filtre Kahve       - Masa 12 Tüm Kalemler
 (IP: 192.168.1.201) (IP: 192.168.1.202)            (IP: 192.168.1.203)  (IP: 192.168.1.200)

1.1. İstasyon Filtreleme Algoritması (JavaScript)

interface OrderItem {
  name: string;
  qty: number;
  station: 'HOT_KITCHEN' | 'COLD_PREP' | 'BAR';
  notes?: string; // Örn: "Az pişmiş, tuzsuz"
}

export function routeOrderToPrinters(items: OrderItem[]): Map<string, OrderItem[]> {
  const stationBatches = new Map<string, OrderItem[]>();

  for (const item of items) {
    if (!stationBatches.has(item.station)) {
      stationBatches.set(item.station, []);
    }
    stationBatches.get(item.station)!.push(item);
  }

  return stationBatches;
}

2. Sıcak Mutfakta Donanım Seçimi: Termal vs Nokta Vuruşlu (Dot-Matrix)

Mutfak fiş yazıcısı seçerken yapılan en ölümcül hata, ocak veya ızgara yakınına standart Termal Yazıcı yerleştirmektir:

KriterTermal Fiş Yazıcı (Epson TM-T20)Nokta Vuruşlu Yazıcı (Epson TM-U220)
Baskı Hızı200 - 300 mm/s (Işık hızında)4.7 satır/s (Yavaş)
Sıcak & Buhar DayanımıZayıf (Kararır, silinir)Mükemmel (Etkilenmez)
Baskı SesiSıfır (Sessiz)Mekanik Takırtı (Şefler için avantaj)
İki Renkli BaskıTek renk (Siyah)İki renk (Siyah / Kırmızı Şerit)
Önerilen İstasyonBar, Kasa, Soğuk Meze HazırlıkIzgara, Fırın, Ocak Arkası

3. Donanım Buzzer (Sesli Alarm) ve Flaşör Komutları

Gürültülü bir mutfakta fişin sessizce çıkması siparişin gözden kaçmasına sebep olur. ESC/POS protokolünde harici buzzer’ı veya yazıcının dahili hoparlörünü öttürmek için özel donanım komutları kullanılır:

// Epson ESC/POS Dahili Buzzer Çaldırma Komutu (ESC ( A)
export function getBuzzerCommand(beepCount = 3, intervalMs = 200): Uint8Array {
  // ESC ( A pL pH fn m t1 t2
  // fn=97, m=beepCount, t1=ses süresi, t2=sessizlik süresi
  return new Uint8Array([
    0x1B, 0x28, 0x41, // ESC ( A
    0x04, 0x00,       // Parametre uzunluğu (4 bayt)
    0x61,             // fn = 97
    beepCount,        // Çalma sayısı
    0x02,             // Ton / Süre
    0x02              // Bekleme aralığı
  ]);
}

// Para çekmecesi portuna (RJ11) bağlı harici alarmı tetikleme (ESC p 0 25 250)
export function getExternalRelayAlarm(): Uint8Array {
  return new Uint8Array([0x1B, 0x70, 0x00, 0x19, 0xFA]);
}

4. Sipariş Değişiklik Yönetimi: İptal, İkram ve Notlar

Mutfak operasyonunda en çok karışıklık yaratan senaryolar sipariş sonradan değiştirildiğinde yaşanır:

  1. Ürün İptali (Void): Fişin başında devasa fontla *** IPTAL EDILDI *** yazmalı, iptal edilen ürünün üstü çizilmeli veya kırmızı şeritle basılmalıdır.
  2. Özel Notlar (Modifiers): “Soğansız”, “Acısız”, “Glutensiz” gibi alerjen veya müşteri tercihleri Ters Renk (Negatif / Beyaz zemin üstüne siyah yazı - GS B 1) olarak basılmalıdır:
// ESC/POS Negatif Metin Modu Açma (GS B 1)
const enableNegative = [0x1D, 0x42, 0x01];
// Kapatma (GS B 0)
const disableNegative = [0x1D, 0x42, 0x00];

5. Standart Mutfak Adisyonu (KOT) Şablonu

================================================
           *** MUTFAK ADISYONU ***              
Masa: 14                 Garson: Caner          
Saat: 20:15              Siparis No: #482       
------------------------------------------------
[ADET]  [URUN ADI]                              
------------------------------------------------
 2x     Dana Antrikot Izgara                    
        * Pisim: Orta-Iyi                       
        * Not: Biberiye sosu ayri olsun         

 1x     Karisik Pizza (Buyuk Boy)               
        >>> [SOĞANSIZ - MANTARSIZ] <<<          

 1x     Kremali Mantarli Makarna                
------------------------------------------------
Not: Masa 14 siparisi acele istemektedir.        
================================================
[KAĞIT KESME KOMUTU] + [3 KEZ BUZZER SESİ]

6. Sıkça Sorulan Sorular (SSS)

Mutfak yazıcısında neden USB yerine Ethernet (LAN) veya Wi-Fi tercih edilmelidir?

Mutfaklar ile kasa bilgisayarları arasındaki mesafe genellikle 10-30 metredir; standart USB kabloları 5 metreden sonra sinyal kaybı yaşar. Ethernet (LAN) kabloları ise 100 metreye kadar kayıpsız veri taşır ve tek bir merkezi POS sunucusundan ağdaki onlarca farklı istasyon yazıcısına (Mutfak, Bar, Fırın) aynı anda erişim imkanı sağlar.

Mutfak yazıcısının kağıdı bittiğinde sipariş kaybolur mu?

Printzen ve profesyonel POS sistemleri “Kağıt Sonu Sensörü” (Paper Out Sensor) desteğiyle donanımı sürekli izler. Yazıcı kağıtsız kaldığında veya kapağı açıkken sistem yazdırma işlemini askıya alır, ekranda kırmızı bir garson uyarısı fırlatır ve yeni rulo takıldığı anda bekleyen tüm mutfak fişlerini sırasıyla otomatik olarak basar.

Sıcak mutfakta termal yazıcı kullanılırsa ne olur?

Termal yazıcı kağıdı ısıya duyarlıdır; fırın, ocak veya ızgara yakınına konulan bir termal fiş 10-15 dakika içinde sıcaklığın etkisiyle tamamen kararır ve yazılar okunamaz hale gelir. Bu nedenle yüksek sıcaklık ve yağ buharı olan sıcak hazırlık istasyonlarında mutlaka nokta vuruşlu (mürekkepli şeritli) yazıcılar (Epson TM-U220 vb.) tercih edilmelidir.

Mutfak adisyon fişine sesli ikaz (Buzzer) nasıl bağlanır?

Mutfak yazıcılarının arkasında bulunan RJ11 (Kasa/Çekmece) portuna harici bir 24V akustik buzzer veya flaşörlü lamba takılabilir. Sipariş basıldığı anda ESC/POS çekmece açma darbesi (0x1B 0x70) gönderilerek buzzer tetiklenir ve aşçılar fişi alana kadar sesli veya ışıklı uyarı verilir.