Yeni: Yapay zekâ güvenlik duvarı tüm platformu izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

Hermetry, gateway çevrimdışı olursa QoS 1 mesajlarımı saklar mı, yoksa kendi tamponumu mu oluşturmam gerekir?

Hermetry, gateway çevrimdışı olursa QoS 1 mesajlarımı saklar mı, yoksa kendi tamponumu mu oluşturmam gerekir?

Çözüldü 7 6

Yapay zekâ tarafından English dilinden çevrildi ·

Güneş enerjisi santralinde bir uç kutuda çalışan bir Go servisimiz var; invertörleri okuyor ve MQTT üzerinden QoS 1 ile Hermetry’ye yayınlıyor. Bağlantı, günde birkaç kez, genellikle 30 sn ile birkaç dakika arasında kopan bir 4G yönlendirici.Zihnimdeki model, yıllar önce kendi Mosquitto’umuzu çalıştırırken oluşmuştu: broker QoS 1 mesajlarını diske kalıcı olarak yazar, istemci clean session = false ile yeniden bağlanır ve kuyruğa alınmış her şey teslim edilir. Bu yüzden istemcide CleanSession değerini false yaptım ve Hermetry’nin her iki yönde de bizim için veri tuttuğunu varsaydım.Bir kopmadan sonraki geçmişe baktığımda, tam olarak kesinti süresi uzunluğunda boşluklar görüyorum. Hermetry’nin broker’ı mesajları kalıcı olarak saklamıyor mu? Açmam gereken bir ayar var mı, yoksa tamponlama benim sorumluluğum mu?Şimdiye kadar kontrol ettiklerim: cihazın Log sekmesi, beklendiği gibi keepalive_timeout ile bağlantı kopmasını ve birkaç dakika sonra yeniden bağlanmayı gösteriyor. İstemci loglarımız ise kesinti sırasındaki yayınların hatasız döndüğünü söylüyor; bu da broker’ın mesajları aldığını düşünmemi sağladı. Invertör okumaları her 30 saniyede bir, invertörün kendi saatinden (NTP ile senkronize) alınan bir ts ile {“ts”: …, “values”: {…}} biçiminde gönderiliyor. Geçmişin eksiksiz olması gerekiyor çünkü saha sahibi aylık faturayı buradan kesiyor; bu yüzden günde birkaç dakikanın eksik olması gerçekten paraya mal oluyor.

♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

Tam kesinti süresi kadar olan boşluklar, aracının mesajları kaybettiğinden çok, kesinti sırasında hiç yayın yapılmadığına benziyor. İstemciniz bağlantı kesilmişken bile mesajları kuyruğa alıyor mu?

If it isn't logged, it didn't happen.
♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

İyi nokta. Paho Go, varsayılan bellek içi depoyla çalışıyor. Çevrimdışıyken mesajları kuyruğa aldığını varsaymıştım.

♥ 1

Yapay zekâ tarafından English dilinden çevrildi ·

Yönetim tarafından bakınca: entegratörümüz boşluklarla ilgili aynı şeyi söyledi, sonunda cihaza depolama ekledilər. Ayrıntıları veremem, üzgünüm.

♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

Hermetry’de Clean session false ayarı zaten işe yaramaz. Belgelerde bunun clean session olarak sunulduğundan oldukça eminim.

♥ 1

Yapay zekâ tarafından English dilinden çevrildi ·

Kevin haklı, ama bu işin yarısı. Bir rüzgar sahasında aynı sorunla karşılaştık.Hermetry’nin MQTT sürümü 3.1.1 ve clean session değeri false olan bir CONNECT, temiz oturum olarak işleniyor. Çevrimdışıyken bir cihaz için kalıcı olarak gönderilmiş komutlar dışında hiçbir şey kuyruğa alınmıyor. Dolayısıyla telemetri için her iki yönde de devam ettirilecek bir oturum durumu yok.Hermetry’nin verdiği garanti gelen yön için geçerli: PUBACK, mesaj kendi tarafında güvenle kuyruğa alındıktan sonra gönderiliyor. Kuyruğa alınamazsa PUBACK gelmez, oturum kapanır ve istemcinin yeniden bağlandıktan sonra tekrar göndermesi bekleniyor. Aynı cihaz, anahtar ve zaman damgasına sahip yinelenen mesajlar bir kez saklanıyor, bu yüzden yeniden gönderim güvenli.Dolayısıyla tampon sizin sorumluluğunuzda ve izlenecek desen şu:

  1. Her okumayı, kendi ts değeri ms cinsinden olacak şekilde yerel bir depoya yazın (biz bir SQLite dosyası kullanıyoruz).
  2. Depodan yayınlayın ve bir satırı yalnızca PUBACK’i geldiğinde silin.
  3. Yeniden bağlandıktan sonra: abone olun, paylaşılan öznitelikleri isteyin, ardından canlı veriden önce birikmiş verileri gönderin.

Birikmiş verileri, doğru zamanlarda görünmesi için {ts, values} dizileri halinde gönderin. Profilde, tüm kayıtları bir dakikadan eski olan mesajlar için ayrı bir Saniyede yeniden oynatılan mesaj sınırı var, bu yüzden uzun bir birikim bir süre içinde boşalır. Hepsi aynı anda görünmezse panik yapmayın.Onay bölümü için MQTT sayfası bir kez okunmaya değer.

If it isn't logged, it didn't happen.
Kabul edilen çözüm♥ 2

Yapay zekâ tarafından English dilinden çevrildi ·

Evet. Paho bellek deposu bağlantı kesildiğinde her şeyi atıyordu, yani Maria’nın tahmini de tam isabetliydi. Yayımcının önüne bir bbolt dosyası koydum, PUBACK alındığında siliyor, ayrıca 5 dakika boyunca 4G anteni çekerek test ettim: yeniden bağlandıktan yaklaşık 20 sn sonra birikmiş veriler doğru zaman damgalarıyla geçmişte göründü. Bir işe yaramadığı için CleanSession=false satırını da kaldırdım.

♥ 1

Yapay zekâ tarafından English dilinden çevrildi ·

Eklemek istediğim bir şey: yerel depolamaya bir üst sınır koyun. Bir keresinde bir saha 9 days boyunca çevrimdışı kaldı ve disk doldu. Saklama süresinden eski okumalar zaten reddediliyor.

♥ 1
8 yazı görüntüleniyor – 1 ile 8 arası (toplam 8)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.

Sohbete katılın

Soru sormak ve yanıtlamak, yararlı gönderileri beğenmek ve sorununuzu çözen yanıtı işaretlemek için oturum açın. Her katkı puan ve seviye kazandırır.

Paylaş