BESA'nın üretim hattında, sahada (fabrika içinde) çalışan ve üretim sürecinin farklı adımlarını yöneten bir sunucu altyapısı kurdum ve işletiyorum.
Fabrika içinde neler çalışıyor
Bu sunucu üzerinde, üretim sürecinin farklı ihtiyaçlarına karşılık gelen bağımsız servisler (FastAPI tabanlı, nginx arkasında) çalışıyor: stok/sayım takibi, reçete/ürün ağacı (BOM) yönetimi, talep/sipariş takibi, üretilen kartlara seri numarası ataması, LoRaWAN modüllerinin test istasyonunda sonuç kaydı ve istatistiği, ve üretim hattındaki LoRaWAN cihazlarının canlı takibi. Ayrıca bir MQTT broker, üretim hattındaki cihazlarla seri numarası atama gibi anlık haberleşmeyi sağlıyor.
Üretimden buluta köprü
Üretim hattından çıkan bir cihazın, ayrıca bulutta çalışan izleme/kontrol sistemine (WELCO) otomatik olarak tanıtılması gerekiyor. Bunun için, fabrika sunucusu ile bulut sunucusu arasında MQTT üzerinden çalışan bir köprü servisi yazdım: üretim hattında bir cihaz seri numarası aldığında bu servis onu bulut tarafına otomatik ekliyor, hattan düşen/iptal edilen cihazları da aynı şekilde buluttan siliyor. Böylece üretim ve saha/izleme tarafı elle senkronize edilmek zorunda kalmıyor.
Fabrika ağını internete açmadan yönetim
Bu sunucu doğrudan internete açık değil; buna rağmen uzaktan erişim ve izleme gerekiyor. Bunu iki bağımsız kanaldan çözdüm:
- WireGuard mesh: sunucu, diğer sahalardaki cihazlarla ve merkezi altyapıyla aynı özel VPN ağının bir parçası.
- Ters SSH tüneli: sunucu, bulut sunucusuna doğru kalıcı bir
autosshtüneli açıyor ve kendi servis portlarını bu tünel üzerinden, sadece bulut sunucusunun kendi üzerinden erişilebilir şekilde dışarı veriyor. Böylece fabrika tarafında hiçbir gelen bağlantı portu açmaya gerek kalmadan, ihtiyaç anında bulut üzerinden bu servislere ulaşılabiliyor.
İki kanalın birbirinden bağımsız olması, birinde sorun çıksa bile diğerinin çalışmaya devam etmesini sağlıyor.
Basit bir örnek
Ters SSH tünelinin fikrini özetleyen, gerçek yapılandırmadan bağımsız minik bir örnek:
autossh -M 0 -N \
-R 127.0.0.1:7655:127.0.0.1:8000 \
-i anahtar.pem -p 2222 kullanici@bulut-sunucu