Açık kaynak dijital ikiz araçları, tescilli bir platform lisanslamadan yetenekli bir ikiz kurmanızı sağlar; ancak her şeyi tek başına yapan bir proje yoktur. Bu rehber en kullanışlı seçenekleri kapsadıkları katmana (modelleme, veri entegrasyonu, görselleştirme ve geçmiş) göre karşılaştırır ve her birinin MQTT verisini nasıl tükettiğini açıklar. Sonunda, kullanım senaryonuzu tek bir araca sığdırmaya çalışmak yerine senaryonuza uyan bir yığın kurabileceksiniz.
Konuya henüz yeni giriyorsanız önce dijital ikiz teknolojisi rehberini okuyun.
Platformlarla Değil, Katmanlarla Düşünün
Çalışan bir ikizin dört şeye ihtiyacı vardır:
- Bir model: varlığın ne olduğu, özellikleri ve ilişkileri.
- Canlı veri: sahadan gelen güncel değerler ve sahaya giden komutlar.
- Görselleştirme: panolar, 3D sahneler ya da her ikisi.
- Geçmiş: trendler, analiz ve makine öğrenimi için saklanan zaman serileri.
Açık kaynak projeler genellikle bunlardan bir veya ikisinde uzmanlaşır. MQTT, bu araçların tek bir canlı veri akışını paylaşmasını sağlayan yapıştırıcıdır: ağ geçitleri bir kez yayınlar, her araç ihtiyaç duyduğu veriye abone olur. Bu yüzden aşağıdaki "MQTT'yi nasıl tüketir" sütunu, özellik listesi kadar önemlidir.
Araçlara Genel Bakış
| Araç | Ana katman | Model formatı | MQTT'yi nasıl tüketir | Uygun olduğu alan |
|---|---|---|---|---|
| Eclipse Ditto | Model ve ikiz durum API'si | Öznitelikler ve özellikler içeren Thing'ler (JSON) | Payload eşlemeli yerleşik MQTT 3.1.1 ve 5 bağlantıları | REST/WebSocket API'leri ve arama içeren cihaz ikizleri |
| Eclipse BaSyx | Model (Endüstri 4.0) | Asset Administration Shell alt modelleri | Veri köprüsü bileşeni MQTT'ye abone olur ve alt modelleri günceller | Üretimde AAS tabanlı birlikte çalışabilirlik |
| FIWARE Orion-LD | Bağlam modeli | NGSI-LD varlıkları | MQTT üzerinden JSON veya UltraLight için IoT Agent | Akıllı şehir ve alanlar arası bağlam verisi |
| Node-RED | Entegrasyon ve mantık | Akışlar, herhangi bir JSON | Yerel MQTT giriş ve çıkış düğümleri | Yapıştırıcı katman, dönüşümler, hızlı panolar |
| Three.js | 3D görselleştirme | glTF sahneleri | Tarayıcıda Secure WebSocket üzerinden MQTT.js | Özel web tabanlı 3D ikizler |
| Babylon.js | 3D görselleştirme | glTF ve Babylon sahneleri | Secure WebSocket üzerinden MQTT.js | Yerleşik inspector ve GUI ile web 3D |
| Telegraf + InfluxDB | Geçmiş | Zaman serisi ölçümleri | Telegraf mqtt_consumer giriş eklentisi |
Trendler için telemetri saklama |
| Grafana | Panolar | Veri kaynakları üzerinde paneller | Bir veritabanı veya MQTT veri kaynağı eklentisi aracılığıyla | Operasyon panoları ve alarmlar |
Eclipse Ditto
Ditto, en eksiksiz açık kaynak "ikiz durumu" servisidir. Her ikiz; öznitelikleri (çoğunlukla statik) ve özellikleri (değişen durum) olan bir Thing'dir. Ditto güncel durumu saklar, bunu REST ve WebSocket API'leri üzerinden sunar, Thing'ler arasında aramayı destekler ve kimin neyi okuyup yazabileceğine dair ayrıntılı politikalar uygular.
Ditto, MQTT broker'lara bağlantı servisi (connectivity service) aracılığıyla bağlanır: kaynak adresleri (abone olunacak topic'ler), hedef adresleri (değişikliklerin yayınlanacağı topic'ler) ve cihaz JSON'unuzu Ditto protokol mesajlarına dönüştüren bir payload eşlemesi içeren bir bağlantı tanımlarsınız. Diğer uygulamalar ikiz durumunu MQTT'ye abone olmak yerine HTTP üzerinden sorgulamak istediğinde iyi çalışır. MQTT ile Eclipse Ditto rehberimiz eksiksiz bir bağlantı kurulumunu adım adım anlatır.
Dikkat edin: operasyonel yük. Ditto birkaç servis ve bir veritabanı olarak çalışır; bu nedenle container'lar ve Kubernetes konusunda rahat olan ekiplere uygundur.
Eclipse BaSyx
BaSyx, Endüstri 4.0 topluluğunun standartlaştırılmış dijital ikiz modeli olan Asset Administration Shell'i (AAS) uygular. Bir AAS, varlığı isim plakası, teknik veriler ve operasyonel veriler gibi alt modeller üzerinden tanımlar; semantik ID'ler bu alt modellerin farklı üreticiler arasında anlaşılabilir olmasını sağlar.
Canlı veri için BaSyx'in veri köprüsü MQTT topic'leri gibi kaynaklara abone olur ve değerleri alt model öğelerine yazar. Müşterileriniz veya iş ortaklarınız AAS bekliyorsa BaSyx bariz açık kaynak seçimdir. Asset Administration Shell rehberi modeli açıklar.
Dikkat edin: AAS metamodellerinin ve semantik ID'lerin öğrenme eğrisi. Kendi alt modellerinizi tasarlamak yerine standart alt model şablonlarıyla başlayın.
FIWARE Orion-LD
FIWARE'in bağlam broker'ı (context broker) varlıkları NGSI-LD formatında saklar; bu bağlantılı veri formatı, birçok alandan gelen verinin birleştirilmesi gereken şehirler, kamu hizmetleri ve tarım için oldukça uygundur. IoT Agent'lar, MQTT üzerinden JSON dahil cihaz protokollerini varlık güncellemelerine çevirir. Kurumlar arası veri paylaşımına ve standart bir API'ye ihtiyaç duyduğunuzda tercih edin; tek bir fabrika hücresi için daha az uygundur.
Node-RED
Node-RED bir ikiz platformu değildir, ancak entegrasyonu hızlandırdığı için neredeyse her açık kaynak ikiz yığınında karşımıza çıkar. MQTT giriş ve çıkış düğümleri, dönüşümler için function düğümleri ve bir pano eklentisi, ilk ikizin şaşırtıcı ölçüde büyük bir kısmını karşılar. Tipik görevler: üretici payload'larını kendi şemanıza normalize etmek, türetilmiş değerler hesaplamak ve bir veritabanına veya ikiz servisine köprü kurmak. Kurulum ve MQTT düğümleri için resmi Node-RED dokümantasyonuna bakın.
Dikkat edin: büyük akışların sürümlenmesi ve gözden geçirilmesi zorlaşabilir. Mantığı küçük tutun ve karmaşık modelleri uygun servislere taşıyın.
Three.js ve Babylon.js
3D için önde gelen iki açık kaynak web kütüphanesi Three.js ve Babylon.js'tir. İkisi de CAD veya Blender'dan dışa aktarılmış glTF modellerini yükler ve tarayıcının çalıştığı her yerde çalışır. Herhangi birini Secure WebSocket üzerinden MQTT.js ile eşleştirdiğinizde tarayıcı canlı duruma doğrudan abone olur; arada bir backend aktarıcısına gerek kalmaz.
Three.js, devasa bir topluluğa sahip yalın bir render kütüphanesidir; kontrolleri, yükleyicileri ve arayüzü kendiniz bir araya getirirsiniz. Babylon.js ise yerleşik inspector, GUI sistemi ve fizik motoruyla daha çok eksiksiz bir motordur. Three.js dijital ikiz eğitimi ve Babylon.js dijital ikiz rehberi her ikisini uygulamada gösterir.
Telegraf, InfluxDB ve Grafana
Geçmiş katmanı en az göz alıcı ve en sık unutulan katmandır. Telegraf'ın MQTT consumer eklentisi topic'lere abone olur ve ölçümleri InfluxDB'ye veya başka bir zaman serisi deposuna yazar; ardından Grafana bunları grafiğe döker. İşte benzersiz bir önek kullanan, herkese açık MQTT test broker'ına karşı çalışan bir Telegraf yapılandırması:
[[inputs.mqtt_consumer]]
servers = ["tcp://broker.connectmq.com:1883"]
topics = ["connectmq/demo/ostw-3c9/site1/+/+/state"]
client_id = "ostw-3c9-telegraf"
qos = 0
data_format = "json"
topic_tag = "topic"
[[inputs.mqtt_consumer.topic_parsing]]
topic = "connectmq/demo/ostw-3c9/site1/+/+/state"
tags = "_/_/_/site/line/asset/_"
[[outputs.influxdb_v2]]
urls = ["http://localhost:8086"]
token = "$INFLUX_TOKEN"
organization = "plant"
bucket = "twin"
topic_parsing bloğu topic seviyelerini etiketlere dönüştürür; böylece Grafana metinleri ayrıştırmadan hat ve varlığa göre filtreleme yapabilir. Bir test mesajı yayınlayın; mesaj bucket'ta görünür:
mosquitto_pub -h broker.connectmq.com -p 1883 -i ostw-3c9-pub \
-t "connectmq/demo/ostw-3c9/site1/line2/oven1/state" -m '{"temp_c":212.4,"door_open":0}'
Üretim ortamında sunucuyu ssl://YOUR_BROKER_HOST:8883 olarak değiştirin ve broker portalınızdan aldığınız username = "YOUR_USERNAME" ile password = "YOUR_PASSWORD" değerlerini ekleyin.
Önerilen Yığınlar
| Kullanım senaryosu | Önerilen kombinasyon |
|---|---|
| Panolu ilk varlık ikizi | MQTT broker + Node-RED + Telegraf/InfluxDB + Grafana |
| Etkileşimli 3D operasyon ikizi | MQTT broker + Three.js veya Babylon.js + Telegraf/InfluxDB |
| Uygulamalar için API odaklı cihaz ikizleri | MQTT broker + Eclipse Ditto + Grafana |
| Endüstri 4.0 birlikte çalışabilirliği | MQTT broker + Eclipse BaSyx + tercih ettiğiniz görselleştirme |
| Alanlar arası akıllı şehir verisi | MQTT broker + FIWARE Orion-LD ve IoT Agent |
Ortak unsura dikkat edin. Hangi araçları seçerseniz seçin, hepsini tek bir MQTT ad alanı besler; böylece cihazlara dokunmadan daha sonra araç ekleyebilir veya değiştirebilirsiniz.
Seçim Kontrol Listesi
- Bugün en büyük eksiğiniz hangi katmanda: model, canlı veri, görselleştirme mi yoksa geçmiş mi?
- İş ortaklarınız veya müşterileriniz AAS ya da NGSI-LD gibi standart bir model şart koşuyor mu?
- Sistemi kim işletecek? Çok servisli platformlar container becerisi gerektirir; Node-RED ve Telegraf gerektirmez.
- Her araç broker'a nasıl kimlik doğrulayacak ve her birine ayrı kimlik bilgileri verebiliyor musunuz?
- Mesaj süresi dolması (message expiry) veya paylaşımlı abonelikler gibi özelliklere güveniyorsanız araç MQTT 5'i destekliyor mu?
- Gerçek topic yapınızla bir günde kavram kanıtı (proof of concept) yürütebilir misiniz?
Kendi Barındırmamanız Gereken Parça
Açık kaynak ikiz araçlarını container'larda çalıştırmak kolaydır; ancak hepsinin bağımlı olduğu broker ekstra özen ister: sürekli ayakta kalmalı, TLS kabul etmeli, onlarca istemcinin kimliğini doğrulamalı ve yeniden bağlanma fırtınalarını atlatmalıdır. Pek çok ekip araçları kendi sunucularında barındırır ve omurga için tam yönetilen bir MQTT servisi kullanır ya da analitik altyapısına yakın bir bulut MQTT broker çalıştırır.
ConnectMQ bu modele uyar: Ditto, BaSyx'in veri köprüsü, Node-RED, Telegraf ve tarayıcı görüntüleyicileri ona TCP, TLS veya Secure WebSocket üzerinden sıradan MQTT istemcileri olarak bağlanır. Portalı, her aracı bağlamadan önce verinizi doğrulamanıza yardımcı olan canlı bir topic gezgini ve ISA-95 cihaz görünümü sunar; uç cihazlarınız Sparkplug B konuşuyorsa Sparkplug B çözümlemesi de ekler.
Açık Kaynak Yığınınızı ConnectMQ'ya Bağlayın
Eksiklerinize uygun araçları seçin ve onlara güvenilir tek bir omurga verin. Kredi kartı gerekmeden ücretsiz bir ConnectMQ Serverless broker oluşturun, ardından Node-RED, Telegraf veya Ditto'yu dakikalar içinde ona yönlendirin.
Sık Sorulan Sorular
En iyi açık kaynak dijital ikiz platformu hangisidir?
Tek bir en iyisi yoktur. Eclipse Ditto ikiz durum API'lerinde, Eclipse BaSyx Asset Administration Shell modellerinde, Three.js veya Babylon.js ise 3D'de en güçlüsüdür. Gerçek yığınların çoğu, bir MQTT broker etrafında birkaç aracı bir araya getirir.
Eclipse Ditto MQTT 5'i destekliyor mu?
Evet, Ditto'nun bağlantı servisi yapılandırılabilir kaynaklar, hedefler ve payload eşlemesiyle MQTT 3.1.1 ve MQTT 5 bağlantılarını destekler.
Node-RED tek başına bir dijital ikiz olabilir mi?
Panolu basit varlık ikizleri için Node-RED oldukça ileri gidebilir. İkiz büyüdükçe modelleri ve geçmişi özel araçlara taşıyın, Node-RED'i entegrasyon için tutun.
Açık kaynak ikiz araçlarının kendi broker'ına ihtiyacı var mı?
Bir MQTT broker'a erişime ihtiyaçları vardır, ancak bunun kendilerine ait olması gerekmez. Paylaşılan, yönetilen bir broker, her aracın aynı ad alanını tüketmesini sağlar.



