Yükü çözün
Cihaz 00018d460000300040e12402 gönderir. Faturalama sisteminiz index: 18.061
ister. Aradaki iş çözücüdür.
Çözmeyi erken yapmak işe yarar: kurallar çözülmüş alanlara göre süzer ve özel çıktı düzenleyicisi yalnızca bir çözücünün ürettiğini gördüğü alanları önerebilir.
Çözücü nerede yaşar
Bir çözücü bir cihaza değil, bir cihaz profilinin teknolojisine bağlanır. Model için bir kez tanımlarsınız, o profildeki her cihaz aynı biçimde çözülür.
Nerede: Yazmak için Profiller → Çözücüler, sonra profilin teknolojisinde bağlayın. Ya da işleme hattı görünümünden aynı şey olan Akış → Çözücüler.
Bir tür seçin
Uyduğu sürece grameri tercih edin. Sonsuz döngüye giremez, beklenmedik biçimde hata veremez ve yük biçiminin belgesi gibi okunur.
İki çıktı grubu
Bir çözücü ölçümleri iki grup hâlinde döndürür ve bu ayrım hedefinize kadar taşınır:
{
"telemetry": { "index": 18.061, "unit": "m3", "battery": 100 },
"meta": { "seqNumber": 18, "rssi": -103.41 }
}
telemetry, cihazın ölçtüğüdür. meta, iletimle ilgilidir. Alanları doğru
gruba koyun — bazı çıktı biçimleri yalnızca birini iletir ve meta altına
konmuş bir ölçüm, telemetri bekleyen bir hedefte kaybolur.
JavaScript sandbox'ı
JavaScript çözücüler yalıtılmış bir V8 sandbox'ında çalışır:
- Ağ yok, dosya sistemi yok. Bir çözücü dışarı çağrı yapamaz.
- Bellek ve süre sınırlıdır. Kontrolden çıkan bir betik yalnızca o mesajı başarısız kılar; işleme hattı çalışmaya devam eder.
- TypeScript sözdizimi kabul edilir; tipler çalıştırmadan önce ayıklanır.
Çözme başarısız olduğunda
Çözme, elinden geleni yapar. Hata veren bir çözücü, çözücüsü olmayan bir profil veya hiç yük taşımayan bir callback mesajı başarısız kılmaz — elindekiyle devam eder.
Bu bilinçlidir: bir ölçümü kaybetmek, onu çözülmemiş iletmekten kötüdür. Ama şu anlama gelir: bir hedef aynı cihaz için iki farklı biçim görebilir.
Yanlış görünen bir mesajda payload.decodeError alanına bakın. "Çözücü
bozuk" ile "bu callback'in zaten çözülecek bir yükü yoktu" arasındaki fark
budur.
DATA_UPLINK, DATA_BIDIR ve SERVICE_DATA_ADVANCED bir yük çerçevesi
içerir. Durum, onay, tekrarlayıcı ve hata callback'lerinde çözülecek bir şey
yoktur ve geldikleri gibi iletilirler — bu bir çözücü hatası değildir. Hedefiniz
bunları görmemeliyse bir kuralla süzün.Şifre çözme
Profil şifreleme tanımlıyorsa yük, cihazın bağlamasındaki anahtar kullanılarak çözmeden önce deşifre edilir. Anahtarlar şifrelenerek saklanır ve bir daha gösterilmez — düzenlerken saklı değeri korumak için alanı boş bırakın.
Test edin
Gerçek bir uplink gönderin, sonra o kaynağı kullanan bir çift için Akış → Yönlendirme'yi açın. Önizleme, çözücünüzün gerçek alan adları ve son görülen değerleriyle, iletimi yapan kodun aynısıyla oluşturulur — yani gördüğünüz, hedefin aldığıdır.
Bir çözücü bir kez çalışana kadar önizlenecek bir şey yoktur ve düzenleyici bunu söyler. Bir mesaj gönderin, alanlar belirir.