Bağlı çalışan (connected worker), cihazları doğru bilgiyi tam önemli olduğu anda alan bir operatör, teknisyen veya amirdir: bir sonraki iş talimatı, bir makine alarmı, bir kalite blokajı veya bir yardım talebi. Bu yazı, atölyede değer üreten bağlı çalışan kullanım senaryolarını, bunların arkasındaki MQTT topic'lerinin nasıl yapılandırılacağını ve görevleri alıp onayları güvenli WebSocket üzerinden gönderen çalışan bir tarayıcı client'ını ele alıyor.
Bir Bağlı Çalışan Çözümü Aslında Ne Yapar?
Üretimdeki saha çalışanlarının çoğu sorunları hâlâ yanlarından geçerken öğrenir. Bir makine, biri fark edene kadar malzeme bekler; bakım teknisyeni telsizle çağrılır; iş talimatları istasyondaki bir klasörde durur. Bağlı çalışan çözümleri, insanları veriye götürmek yerine canlı tesis verisini insanlara getirerek bu boşluğu kapatır.
Tipik yetenekler:
- Aktif siparişe veya varyanta göre otomatik değişen dijital iş talimatları.
- Hedefli uyarılar: Bir makine duruşu herkese değil, sorumlu teknisyenin saatine gider.
- Yardım talepleri ve eskalasyon: Bir operatör "malzeme lazım" düğmesine dokunur; birkaç dakika içinde kimse kabul etmezse talep bir üst seviyeye çıkar.
- Kontrol listeleri ve onaylar: Başlangıç kontrolleri, kalite kontrolleri ve ürün değişimleri kimin ne zaman yaptığıyla birlikte kaydedilir.
- İki yönlü geri bildirim: Çalışanlar neden kodları, fotoğraf referansları veya yorumlar ekler; bunlar veriye geri akar.
Anahtar kelime gerçek zamandır. Birkaç dakikada bir yenilenen bir görev listesi, bir hat durduğunda yetmez; olayların saniyeler içinde gelmesi gerekir.
Atölyede Bağlı Çalışan Kullanım Senaryoları
| Kullanım senaryosu | Olay kaynağı | Kim alır | Kaydedilen yanıt |
|---|---|---|---|
| Makine duruş çağrısı | PLC durum değişimi | Hat teknisyeni | Kabul edildi, ulaşıldı, çözüldü |
| Malzeme ikmali | Operatör düğmesi veya düşük seviye sensörü | Lojistik | Kabul edildi, teslim edildi |
| Kalite blokajı | Test istasyonu hata deseni | Kalite mühendisi, hat lideri | Blokaj onaylandı, serbest bırakıldı |
| Ürün değişimi talimatları | MES sipariş değişimi | İstasyondaki operatör | Her adım onaylandı |
| Güvenlik veya çevre uyarısı | Gaz sensörü, sıcaklık limiti | Bir alandaki herkes | Onaylandı |
| Vardiya devri | Amir uygulaması | Sonraki vardiya amiri | Okundu onayı |
Bunların çoğu bir dijital andon sistemi ile örtüşür; fark, bağlı çalışan kurulumunun olayları tekil cihazlara yönlendirmesi ve her kişinin yanıtını kaydetmesidir.
MQTT Bağlı Çalışan Uygulamalarına Neden Uygun?
Saha cihazları mobildir, pille çalışır ve sıklıkla kesintili Wi-Fi üzerindedir. MQTT'nin tasarımı bu ortama uyar:
- Sorgulama değil, itme. Cihazlar tek bir hafif bağlantı tutar ve olayları anında alır; bu, bir API'yi sorgulamaya kıyasla pil ve ağ tasarrufu sağlar.
- Tarayıcıda çalışır. MQTT over WebSocket sayesinde bir tablette çalışan sade bir web uygulaması hiçbir şey kurmadan abone olabilir.
- Retained message'lar, cihaz yeniden bağlandığı anda ona mevcut durumu (aktif sipariş, açık çağrılar) verir.
- Oturum sona erme süresine sahip kalıcı oturumlar, kapsama dışı bir bölgeden geçen bir cihazın yokken kuyruğa alınan QoS 1 mesajlarını almasını sağlar.
- Yanıt topic'leri ve korelasyon verisiyle MQTT 5 istek/yanıt modeli, "görev gönderildi, görev kabul edildi" akışına doğal olarak karşılık gelir.
Topic Tasarımı
Yayın olaylarını tesis alanına göre, hedefli görevleri ise role veya kişiye göre düzenleyin:
acme/plant1/assembly/line2/calls/open/<callId> retained, cleared when resolved
acme/plant1/assembly/line2/instructions/station4 retained, current instruction
acme/plant1/workers/role/maintenance/tasks tasks for anyone in a role
acme/plant1/workers/user/u1042/tasks tasks for one person
acme/plant1/workers/responses accept, arrive, resolve events
Bir teknisyenin tableti kendi rolüne, kendi kullanıcı topic'ine ve alanının açık çağrılarına abone olur. Retained bir çağrıyı temizlemek, aynı topic'e boş bir retained mesaj yayınlayarak yapılır; bu, çağrıyı tüm cihazlardan aynı anda kaldırır.
Güvenli WebSocket Üzerinden Bir Tarayıcı Client'ı
Aşağıdaki örnek, MQTT.js v5 ile minimal bir bağlı çalışan client'ıdır. 8084 portunda güvenli WebSocket üzerinden bağlanır, açık çağrılara ve kişisel görevlere abone olur ve çalışanın ID'siyle bir kabul mesajı yayınlar. npm install mqtt sonrasında herhangi bir modern tarayıcı paketinde (Vite, webpack) çalışır.
import mqtt from "mqtt";
const prefix = "connectmq/demo/cw-4f19"; // kendi rastgele kimliğinizi kullanın
const workerId = "u1042";
const clientId = `cw-${workerId}-${Math.random().toString(16).slice(2, 8)}`;
const client = mqtt.connect("wss://broker.connectmq.com:8084/mqtt", {
clientId,
protocolVersion: 5,
clean: false,
properties: { sessionExpiryInterval: 1800 }, // kuyruktaki QoS 1 mesajlarını 30 dakika sakla
reconnectPeriod: 2000,
});
const openCalls = new Map();
client.on("connect", () => {
client.subscribe(
[`${prefix}/line2/calls/open/+`, `${prefix}/workers/user/${workerId}/tasks`],
{ qos: 1 }
);
});
client.on("message", (topic, payload) => {
if (topic.includes("/calls/open/")) {
const callId = topic.split("/").pop();
if (payload.length === 0) {
openCalls.delete(callId); // çağrı çözüldü, retained mesaj temizlendi
} else {
openCalls.set(callId, JSON.parse(payload.toString()));
}
render();
} else {
const task = JSON.parse(payload.toString());
navigator.vibrate?.(300);
console.log("New task:", task);
}
});
export function acceptCall(callId) {
client.publish(
`${prefix}/workers/responses`,
JSON.stringify({ callId, workerId, action: "ACCEPTED", ts: Date.now() }),
{ qos: 1 }
);
}
function render() {
console.table([...openCalls.entries()].map(([id, c]) => ({ id, ...c })));
}
Komut satırından bir test çağrısı oluşturun ve cihazda belirişini izleyin; ardından boş bir retained mesajla temizleyin:
mosquitto_pub -h broker.connectmq.com -p 1883 -i cw-plc-4f19 -r -q 1 \
-t "connectmq/demo/cw-4f19/line2/calls/open/C-001" \
-m '{"type":"MACHINE_STOP","station":"press2","reason":"jam"}'
mosquitto_pub -h broker.connectmq.com -p 1883 -i cw-plc-4f19 -r -q 1 -n \
-t "connectmq/demo/cw-4f19/line2/calls/open/C-001"
Genel MQTT test broker'ı QoS 0 ile 2 arasını ve 30 dakikaya kadar oturum sona erme süresini destekler; bu, yeniden bağlanma davranışını denemek için yeterlidir. Genel alanının herkes tarafından okunabildiğini unutmayın; oraya asla gerçek isimler veya tesis verisi göndermeyin.
Bağlı Çalışan Projeleri için Devreye Alma Kontrol Listesi
- Tek bir sancılı süreçle başlayın; genellikle makine duruş çağrıları veya malzeme çağrıları. Öncesinde ve sonrasında yanıt süresini ölçün.
- Operatörleri erken dahil edin. Bir uyarı onlar için gürültüyse görmezden gelinir veya sessize alınır.
- Herkese değil, role ve alana göre yönlendirin. Toplu yayınlar hızla uyarı yorgunluğu yaratır.
- Eskalasyon tasarlayın: Tanımlı bir süre içinde kimse bir çağrıyı kabul etmezse onu bir sonraki seviyeye gönderin.
- Cihazların sessizce toparlanmasını sağlayın. Yeniden bağlanmanın kullanıcı aksiyonu gerektirmemesi için retained durum ve kalıcı oturumlar kullanın.
- Cihaz veya uygulama örneği başına benzersiz kimlik bilgileri kullanın; yalnızca TLS veya güvenli WebSocket üzerinden.
- Yanıt süresi analizi ve sürekli iyileştirme için yanıtları bir veritabanına kaydedin.
- Paylaşılan cihazları planlayın: Bir vardiya girişi, istasyon tabletinin hangi kullanıcı topic'ine abone olacağını belirler.
İşe Yarayıp Yaramadığını Ölçmek
Bir bağlı çalışan projesi değerini tesisin zaten önemsediği rakamlarla kanıtlamalıdır. Her çağrı ve yanıt bir MQTT olayı olduğu için ek çaba harcamadan ölçüm yapabilirsiniz:
- Kabul süresi: Çağrının oluşturulmasından bir kişinin onu kabul etmesine kadar.
- Ulaşma süresi: Kabulden teknisyenin istasyona ulaştığını onaylamasına kadar.
- Çözüm süresi: Çağrıdan hattın yeniden çalışmasına kadar; doğrudan duruş süresine bağlıdır.
- Eskalasyon oranı: Çağrıların ilk seviyede ne sıklıkla yanıtsız kaldığı; personel eksikliğinin veya kötü yönlendirmenin işaretidir.
- Vardiya ve istasyon başına çağrı sayısı: Aynı istasyonda tekrar eden bir çağrı, yalnızca yanıt verilecek değil, çözülecek bir sorundur.
Pilot süresince bunları her hafta ekiple gözden geçirin. Hedef yangınlar arasında daha hızlı koşmak değil, daha az yangın çıkmasıdır; bu yüzden tekrar eden nedenleri iyileştirme sürecinize aktarın.
Bağlı Çalışan Uygulamalarını ConnectMQ ile Ölçeklendirmek
Her tablet, saat ve hat ekranı kendi bağlantısını tutar; bu yüzden bağlantı sayısı hızla artar. ConnectMQ, 8084 portunda Let's Encrypt sertifikalı güvenli WebSocket sağlayan tam yönetilen bir MQTT hizmetidir; böylece tarayıcı uygulamaları sertifika geçici çözümlerine gerek kalmadan bağlanır. Ücretsiz Serverless plan 25 bağlantıya kadar bir pilotu karşılar, ücretli Serverless plan QoS 2 ve shared subscription ile 1.000 bağlantıya ölçeklenir, Dedicated kümeler ise daha büyük kurulumları izole eder. Eskalasyon mantığı ve yanıt kaydı, sıradan client'lar olarak bağlanan bir Node-RED akışı veya küçük bir Node.js worker gibi kendi servislerinizde çalışır.
Tesisin tam bağlamı için akıllı üretim rehberine bakın; bulut MQTT broker genel bakışı da barındırılan bir broker'ın tesis ve mobil cihazları nasıl güvenli biçimde bağladığını açıklar.
Çalışanlarınızı ConnectMQ ile Bağlayın
Kredi kartı gerekmeden app.connectmq.com adresinde ücretsiz bir Serverless broker oluşturun, üretilen kullanıcı adını, parolayı ve client ID'yi yukarıdaki tarayıcı client'ına kopyalayın ve ilk canlı çağrınızı bugün bir tablete gönderin.
Sık Sorulan Sorular
Hangi cihazlar bağlı çalışan cihazı olarak kullanılabilir?
Tabletler, akıllı telefonlar, akıllı saatler, dayanıklı el terminalleri ve büyük hat ekranlarının hepsi çalışır. Modern bir tarayıcıya sahip her cihaz güvenli WebSocket üzerinden MQTT kullanabilir; yerel uygulamalar doğrudan bir MQTT kütüphanesi kullanabilir.
Çalışanlar çevrimdışıyken kaçırdıkları mesajları nasıl alır?
Oturum sona erme süresine sahip kalıcı bir oturum ve QoS 1 abonelikleri kullanın; böylece broker, cihaz bağlı değilken mesajları kuyruğa alır. Retained message'lar yeniden bağlanmada mevcut durumu sağlar.
Her cihazın kendi kimlik bilgileri olmalı mı?
Evet. Cihaz veya uygulama örneği başına benzersiz kimlik bilgileri ve client ID'ler, kaybolan bir tableti diğerlerini etkilemeden iptal etmeyi ve hangi yanıtı kimin gönderdiğini izlemeyi mümkün kılar.
Bağlı çalışan platformu bir andon sistemiyle aynı şey mi?
Örtüşürler. Andon sorunları hatta görünür kılar; bağlı çalışan çözümü ise görevleri belirli kişilere de yönlendirir ve yanıtlarını kaydeder.



