Dijital andon sistemi, klasik ip veya lambayı doğru kişiye ulaşan, takip edilen ve eskalasyon yapan bir yardım çağrısına dönüştürür ve hattın ne kadar hızlı destek aldığının kaydını tutar. Bu yazı MQTT üzerinde bir andon tasarlıyor: operatörlerin ve makinelerin nasıl çağrı oluşturduğu, çağrı durumlarının retained message'larla nasıl modellendiği, zamana dayalı eskalasyonun nasıl işlediği ve yanıt süresi ihlallerinin nasıl uyarılara ve KPI'lara dönüştüğü.
Bir Andon Ne Yapmalı?
Andonun arkasındaki yalın ilke basittir: bir sorun oluştuğunda dur ve hemen yardım iste; talebi görünür kıl ki yardım hızlı gelsin. Kağıt ve lambadan oluşan bir andon görünürlük kısmını yapar. Dijital bir andon sistemi ise lambaların yapamadıklarını ekler:
- Yönlendirme: Malzeme çağrısı lojistiğe, kalite çağrısı kalite mühendisine, makine arızası bakıma gider.
- Eskalasyon: Belirli bir süre içinde kimse onaylamazsa çağrı bir sonraki seviyeye, örneğin ekip liderine, ardından vardiya müdürüne gider.
- Ölçüm: Çağrı türü, istasyon ve vardiya başına onaylama süresi ve çözüm süresi.
- Her yerde görünürlük: Hat panoları, amir tabletleri, bakım atölyesi ve telefonlar aynı açık çağrıları gösterir.
Çağrı Türleri ve Yaşam Döngüsü
Destek fonksiyonlarınıza uyan kısa bir çağrı türü listesiyle başlayın:
| Çağrı türü | Oluşturan | Yanıtlayan | Tipik ilk eskalasyon |
|---|---|---|---|
| Malzeme | Operatör | Lojistik / malzeme taşıyıcı | Lojistik lideri |
| Bakım | Operatör veya makine arızası | Bakım teknisyeni | Bakım amiri |
| Kalite | Operatör veya muayene istasyonu | Kalite teknisyeni | Kalite mühendisi |
| Yardım / ekip lideri | Operatör | Ekip lideri | Vardiya müdürü |
| Güvenlik | Operatör | Vardiya müdürü | Tesis yönetimi |
Her çağrı aynı yaşam döngüsünden geçer: açık (oluşturuldu), onaylandı (biri yolda), çözüldü (sorun giderildi, hat çalışıyor); hatalı çağrılar için isteğe bağlı bir iptal edildi durumu da vardır. Bir çağrı çok uzun süre açık veya onaylanmış durumda kaldıkça eskalasyon seviyesi artar.
Dijital Andon Sistemini MQTT Üzerinde Tasarlamak
MQTT andon için çok uygundur, çünkü her katılımcı hafif bir client'tır: butonlar, makine gateway'leri, ekranlar, telefonlar ve eskalasyon servisi. Broker her değişikliği ihtiyacı olan herkese dağıtır. Kavrama yeniyseniz bir MQTT broker'ın ne yaptığıyla başlayın.
Topic yapısı
connectmq/plant1/assembly/line1/st-30/andon/material retained: current call state for this type
connectmq/plant1/assembly/line1/st-30/andon/maintenance retained
connectmq/plant1/assembly/line1/st-30/andon/events not retained: every transition
connectmq/plant1/assembly/line1/andon/summary retained: open calls on the line
İstasyon ve çağrı türü başına bir retained topic, vardiya ortasında açılan bir ekranın her açık çağrıyı hemen göstermesi anlamına gelir. Boş veya resolved payload aktif çağrı olmadığı anlamına gelir.
Çağrı payload'u
{
"id": "st30-mat-1760600000",
"type": "material",
"state": "open",
"level": 0,
"opened": 1760600000,
"acknowledged": null,
"resolved": null,
"by": "operator-panel-st30",
"note": "Screws M4x10"
}
Her geçiş için zaman damgaları yanıt sürelerini sonradan hesaplamayı çok kolaylaştırır; level ise panolara çağrıyı hangi renkle göstereceklerini söyler.
Çağrı Oluşturma, Onaylama ve Çözme
Çağrı kaynakları retained durumu yayınlar. Operatör butonları büyük ışıklı basmalı butonlara sahip ESP32 kartları, bir HMI ekranı veya bir tablet web uygulaması olabilir; makineler ise makine durum izleme içindeki arıza durumlarından otomatik olarak bakım çağrıları oluşturur. Aşağıdaki örnekler bu üç adımı genel test broker'ında bir terminalden simüle eder:
T=connectmq/demo/andon-6h4v/line1/st-30/andon/material
OPENED=$(date +%s)
# Operator raises a call
mosquitto_pub -h broker.connectmq.com -p 1883 -i andon-op-$RANDOM -q 1 -r -t $T \
-m "{\"id\":\"st30-mat-1\",\"type\":\"material\",\"state\":\"open\",\"level\":0,\"opened\":$OPENED}"
# Material handler acknowledges
mosquitto_pub -h broker.connectmq.com -p 1883 -i andon-ack-$RANDOM -q 1 -r -t $T \
-m "{\"id\":\"st30-mat-1\",\"type\":\"material\",\"state\":\"acknowledged\",\"level\":0,\"opened\":$OPENED,\"acknowledged\":$(date +%s)}"
# Call resolved
mosquitto_pub -h broker.connectmq.com -p 1883 -i andon-res-$RANDOM -q 1 -r -t $T \
-m "{\"id\":\"st30-mat-1\",\"type\":\"material\",\"state\":\"resolved\",\"opened\":$OPENED,\"resolved\":$(date +%s)}"
Gerçek bir yanıtlayıcı uygulaması retained çağrıyı okur, alanları günceller ve nesnenin tamamını yeniden yayınlar. Topic istasyon ve tür başına olduğu için farklı türlerdeki eşzamanlı çağrılar asla birbirinin üzerine yazmaz.
Eskalasyon Servisi
Eskalasyon, tüm andon topic'lerine abone olan, açık çağrıları takip eden, süre limitleri dolduğunda seviyeyi yükselten ve uyarıların tetiklenebilmesi için açık kalma süresini yayınlayan küçük bir servistir. İşte MQTT.js ve MQTT 5 ile hali:
// andon-escalation.mjs - npm install mqtt
import mqtt from "mqtt";
const prefix = "connectmq/demo/andon-6h4v/line1";
const limits = { // çağrı türüne göre bir sonraki seviyeye kalan saniye
material: [180, 600, 1200],
maintenance: [300, 900, 1800],
quality: [300, 900],
help: [120, 600],
safety: [0, 60],
};
const client = mqtt.connect("mqtts://broker.connectmq.com:8883", {
clientId: "andon-esc-6h4v",
protocolVersion: 5,
});
const calls = new Map(); // topic -> çağrı nesnesi
client.on("connect", () => client.subscribe(`${prefix}/+/andon/+`, { qos: 1 }));
client.on("message", (topic, buf) => {
if (topic.endsWith("/events")) return;
const text = buf.toString();
if (!text) { calls.delete(topic); return; }
const call = JSON.parse(text);
if (call.state === "resolved" || call.state === "cancelled") {
if (!calls.delete(topic)) return; // eski retained çözüm mesajlarını yok say
const station = topic.split("/").at(-3);
client.publish(topic.replace(/[^/]+$/, "events"), JSON.stringify({ ...call, station }), { qos: 1 });
} else {
calls.set(topic, call);
}
publishSummary();
});
function publishSummary() {
const open = [...calls.entries()].map(([t, c]) => ({
station: t.split("/").at(-3), type: c.type, state: c.state, level: c.level ?? 0,
open_s: Math.round(Date.now() / 1000 - c.opened),
}));
const maxOpen = open.reduce((m, c) => Math.max(m, c.open_s), 0);
client.publish(`${prefix}/andon/summary`,
JSON.stringify({ ts: Math.round(Date.now() / 1000), open_calls: open.length, max_open_s: maxOpen, calls: open }),
{ qos: 1, retain: true });
}
setInterval(() => {
const now = Date.now() / 1000;
for (const [topic, call] of calls) {
const steps = limits[call.type] ?? [300];
const age = now - call.opened;
const level = steps.filter((s) => age >= s).length;
if (level > (call.level ?? 0)) {
call.level = level;
client.publish(topic, JSON.stringify(call), { qos: 1, retain: true });
console.log(`escalated ${call.type} at ${topic} to level ${level}`);
}
}
publishSummary();
}, 10_000);
Servis retained çağrıyı daha yüksek bir level ile yeniden yayınlar; böylece tüm panolar aynı anda renk değiştirir. Ayrıca en eski açık çağrının yaşı olan max_open_s ile retained bir hat özeti yayınlar. Çözülen çağrılar events topic'ine kopyalanır; orada bir historian bunları raporlama için alır. Çözüldü mesajı geldiğinde servis çağrıyı takip etmeyi bırakır, böylece özet geri düşer; yeniden başlatmadan sonra aldığı eski retained çözüm mesajlarını ise yok sayar.
Servisi hatta yakın bir yerde veya bulutta çalıştırın; yalnızca broker'a ağ erişimi gerekir. Yedeklilik için iki örnek, ConnectMQ'nun ücretli Serverless ve üzeri planlarında bulunan MQTT 5 shared subscription özelliğini kullanarak işi paylaşabilir.
Yanıt Süresi Uyarıları
Özet topic'i, yanıt süresi ihlallerini ek kod yazmadan yakalamayı kolaylaştırır. ConnectMQ portalında .../andon/summary topic'inin max_open_s alanı için örneğin "900'den büyük" gibi bir eşik tabanlı uyarı kuralı oluşturun; her ihlal zamanı ve değeriyle birlikte uyarı kaydına düşer. Amirler kaydı her vardiya sonunda inceleyebilir. Bildirimleri telefonlara, sohbet kanallarına veya bir sirene göndermek için broker'a Node-RED veya başka küçük bir abone bağlayın ve olayları iletin; MQTT eşik uyarıları rehberi bu deseni adım adım anlatır.
Gösterge Panoları
Andon panoları basitçe abonelerdir. Duvara monte bir ekrandaki tarayıcı güvenli WebSocket (wss://broker.connectmq.com:8084/mqtt) üzerinden bağlanır, hattın andon topic'lerine ve özete abone olur ve istasyonları kutucuklar halinde gösterir: çağrı yoksa yeşil, açık çağrı için sarı, onaylanmış için turuncu, eskalasyon yapılmışsa kırmızı. Tüm durumlar retained olduğu için yeniden başlayan bir pano tam resmini bir saniye içinde geri kazanır. Aynı veri daha geniş bir üretim hattı izleme panosunun bir paneli olabilir.
Takip Edilmeye Değer Andon KPI'ları
| KPI | Hesaplama | Kullanım |
|---|---|---|
| Türe göre vardiya başına çağrı | Çözülen olayların sayısı | Kronik malzeme veya kalite sorunlarını ortaya çıkarır |
| Ortalama onaylama süresi | onaylanma eksi açılma | Destek erişilebilirliğini ölçer |
| Ortalama çözüm süresi | çözülme eksi açılma | Hat üzerindeki etkiyi ölçer |
| Eskalasyon oranı | Seviye 1 veya üstüne ulaşan çağrıların tüm çağrılara oranı | Limitlerin ve personel sayısının gerçekle uyumlu olup olmadığını gösterir |
| Andon süresine göre en çok çağrı yapan istasyonlar | İstasyon başına açık kalma süresinin toplamı | İyileştirme çalışmalarını yönlendirir |
Bir istasyonun malzeme beklediği sürenin kullanılabilirlik kayıplarında tutarlı biçimde sınıflandırılması için andon olaylarını duruş neden kodlarıyla ilişkilendirin.
Devreye Alma Kontrol Listesi
- Çağrı türleri, yanıtlayıcılar ve eskalasyon süreleri üzerinde üretim, lojistik, bakım ve kalite ile anlaşın.
- Basit butonlar ve tek bir panoyla tek bir hatta pilot yapın.
- Onaylamayı kolaylaştırın: telefonda tek bir dokunuş veya yanıtlayıcının bulunduğu yerde bir buton.
- KPI'ları haftalık gözden geçirin ve eskalasyon sürelerini gerçekçi hedeflere göre ayarlayın.
- Aynı topic yapısıyla diğer hatlara genişletin; panolar ve servisler değişmeden çalışır.
Tesis Çapında Bir Andon için Altyapı
Sessizleşen bir andon güveni hızla aşındırır; bu yüzden broker her vardiyada erişilebilir olmalıdır. Yönetilen bir MQTT broker sunucu bakımını denklemden çıkarır; bir bulut MQTT broker ise amirlerin güvenlik duvarı portları açmadan tesis ağı dışındaki mobil cihazlarda çağrı almasını sağlar. Daha geniş bağlam için akıllı üretim rehberine bakın.
Andonunuzu ConnectMQ Üzerine Kurun
ConnectMQ; TLS ve güvenli WebSocket üzerinden MQTT 5, retained message, canlı topic gezgini, uyarı kaydıyla eşik tabanlı uyarı kuralları ve ISA-95 cihaz görünümü sunar. Kredi kartı gerekmeden ücretsiz bir Serverless broker oluşturun ve dijital andon sisteminizin pilotunu bu hafta tek bir hatta başlatın.
Sık Sorulan Sorular
Dijital andon sistemi nedir?
Yalın andonun elektronik bir versiyonudur; operatörlerin ve makinelerin yardım çağrısı oluşturmasını sağlar, çağrıları doğru yanıtlayıcılara yönlendirir, yanıtsız kaldıklarında eskalasyon yapar ve yanıt ile çözüm sürelerini kaydeder.
Andon için neden MQTT kullanılmalı?
MQTT durum değişikliklerini her ekrana, telefona ve servise anında iletir, düşük güçlü butonlarla da tarayıcılarla da çalışır; retained message'lar da herhangi bir ekranın açıldıktan hemen sonra mevcut açık çağrıları geri kazanmasını sağlar.
Broker'da bir kural motoru olmadan eskalasyon nasıl çalışır?
Küçük bir servis çağrı topic'lerine abone olur, çağrı yaşını eskalasyon limitleriyle karşılaştırır ve çağrıları daha yüksek bir seviyeyle yeniden yayınlar. ConnectMQ eşik uyarıları da genel yanıt süresi limitinin ihlallerini kaydeder.
Andon çağrıları makineler tarafından otomatik oluşturulabilir mi?
Evet. Makine arızalarını izleyen bir uç gateway, bir makine durduğunda manuel çağrıyla aynı payload'u kullanarak istasyonun andon topic'ine bir bakım çağrısı yayınlayabilir.



