Tüm döngüyü çalıştırmak
Her taklit tek başına da işe yarar. Merkez'le birlikteyse döngüyü kapatırlar: soldan bir mesaj gönderir, sağda gelişini izler, sağ tarafı bozar, Merkez'in bununla nasıl başa çıktığını görür ve düzeltirsiniz — hepsi tek makinede, birkaç dakikada.
Her şeyi başlatın
Depo kökünden:
./dev.sh
Bu; altyapıyı (Supabase yığını ve NATS) ve ardından API'yi, web uygulamasını ve bu dokümantasyon sitesini ayağa kaldırır. İki taklit ayrıdır — her birini kendi terminalinde başlatın:
cd source-test && npm run start:dev # :3003
cd sink-test && npm run start:dev # :3004
Sonuçta çalışanlar:
| Port | Ne |
|---|---|
| 3000 | API — /api/v1, Swagger /docs |
| 3001 | Web uygulaması |
| 3002 | Bu dokümantasyon |
| 3003 | Sahte kaynak — konsol /ui |
| 3004 | Sahte hedef — konsol /ui |
emit yalnızca bağlanamaz.Merkez'i iki taklide bağlayın
Bir kez, uygulamada:
- Kaynak — taklidin taklit ettiği teknolojide sıradan bir kaynak (Sigfox
modu için Sigfox, TTN modu için The Things Stack — bir "taklit"
teknolojisi yoktur, bkz. Sahte kaynak).
Uç nokta adresini ve webhook gizli anahtarını taklidin bağlantı paneline
yapıştırın ya da
source-test/.enviçinde tanımlayın;curl -s localhost:3003/healthile doğrulayın ve bildirdiğiingestUrldeğerine bakın. Gizli anahtar olmadan 401 bekleyin. - Hedef — HEDEF entegrasyonunuzun uç nokta adresini
http://localhost:3004/sinkyapın ve Test et'e basın. Yeşile dönmelidir. - Yönlendirme — Akış → Yönlendirme'yi açın ve kaynağı hedefe bağlayın. Yönlendirme olmadan proje tüm aktif hedeflere yayın yapar; bu da çalışır ama açık hâle getirmeye değer.
İki konsolu yan yana açın —
:3003/ui ve :3004/ui
— ve açık bırakın.
Döngü 1 — mutlu yol
curl -X POST localhost:3004/control -H 'content-type: application/json' -d '{"mode":"ok"}'
curl -X POST localhost:3003/emit/bidir
Sırayla görmeniz gerekenler:
- Sahte kaynak konsolu gönderimi kaydeder.
- Merkez'de Analitik:
Alınan+1, ardındanİletilen+1. - Sahte hedef konsolunda yeni bir satır belirir;
DATA_BIDIR (0/3)etiketli veawaits replyişaretli.
Merkez'in tam olarak ne kurduğunu görmek için hedef konsolundaki satıra tıklayın — bir çıktı yapısının istediğinizi yapıp yapmadığını kontrol etmenin en hızlı yolu budur.
Döngü 2 — bir ölü mektup ve yeniden gönderimi
Şimdi sağ tarafı bozun ve iletim sözleşmesinin işlediğini izleyin:
# Hedef her şeyi reddetmeye başlasın
curl -X POST localhost:3004/control -H 'content-type: application/json' \
-d '{"mode":"fail","failStatus":503}'
curl -X POST localhost:3003/emit/bidir
Analitik, denemeler artan beklemeyle tekrarlandıkça Başarısız sayısının
arttığını gösterir. Sekiz denemeden sonra iletim, deneme sayısıyla birlikte
Ölü mektuplar'a düşer.
"Kesintiyi" düzeltip yeniden gönderin:
curl -X POST localhost:3004/control -H 'content-type: application/json' -d '{"mode":"ok"}'
Merkez'de Ölü mektuplar'ı açın ve Yeniden gönder'e basın. Hedef konsolu bu kez kabul edilerek geldiğini gösterir.
Sözleşmenin tamamı budur: en az bir kez, artan bekleme, ölü mektup, yeniden gönderim — ve yeniden gönderim bugünkü yapılandırmayı kullanır; sebebi önce düzeltmenin işe yaramasının nedeni de budur.
Döngü 3 — downlink gidiş-dönüşü
Bu, iki konsolu birden gerektiren döngüdür; çünkü hiçbiri tek başına yanıt veremez.
Hedefe döndüreceği bir yanıt verin, sonra yanıt isteyen bir uplink gönderin:
curl -X POST localhost:3004/control -H 'content-type: application/json' \
-d '{"downlinkHex":"deadbeef00000001"}'
curl -X POST localhost:3003/emit/bidir
İki konsoldan birlikte okuyun:
| Nerede | Ne söyler |
|---|---|
| Sahte hedef | İletim geldi mi, awaits reply mi ve Merkez'e hangi hex döndü |
| Sahte kaynak | O downlink gerçekten cihaza ulaştı mı — gidiş-dönüş paneli |
Hedef konsolunda görünen bir downlink, Merkez'e teslim edilmiştir. Döngüyü yalnızca kaynak konsolu kapatır. Hedef yanıtladığını söylüyor ama kaynak geri bir şey gelmediğini söylüyorsa sorun ikisinin arasındadır — çoğu zaman çift yönlü olmayan bir sözleşme ya da tam 16 karakter olmayan bir hex değeri.
Döngü 4 — tekrarlar
Merkez en az bir kez iletir; yani gerçek hedefiniz bir tekrarı kaldırabilmelidir. Kaldırdığını kanıtlayın:
curl -X POST localhost:3003/emit/bidir -H 'content-type: application/json' -d '{"seqNumber": 77}'
curl -X POST localhost:3003/emit/bidir -H 'content-type: application/json' -d '{"seqNumber": 77}'
İkisi de aynı idempotencyKey taşır; hedef konsolu ikincisini DUP olarak
işaretler. Temiz bir kabul olmayan diğer her şeyin arasında görmek için konsolu
problems ile süzün.
Çalışmalar arasında sıfırlama
curl -X DELETE localhost:3003/log # kaynağın gönderimlerini temizle
curl -X DELETE localhost:3004/log # hedefin iletimlerini temizle
curl -X POST localhost:3004/control -H 'content-type: application/json' -d '{"mode":"ok"}'
curl -X POST localhost:3003/v2/_reset # yalnızca sağlama test ediyorsanız
Bu neyi kanıtlar, neyi kanıtlamaz
Merkez'in gerçek uç nokta, çözme, kural, yönlendirme, dönüşüm ve iletim yollarını çalıştırır — üretimde çalışan kodun aynısını.
Gerçek cihazınızın doğru ilettiğini, gerçek ağınızın yapılandırıldığını ya da gerçek tüketici uygulamanızın taklit gibi davrandığını kanıtlamaz. Taklitlerin yerine geçtiği kısımlar tam olarak bunlardır. Buradaki yeşil bir döngüyü "Merkez doğru yapılandırılmış" olarak okuyun, "dağıtım tamam" olarak değil.