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

Saha'daki 300 kontrolörde rapor aralığı ve ölü bant değiştirmek: öznitelikler mi yoksa komutlar mı?

Saha'daki 300 kontrolörde rapor aralığı ve ölü bant değiştirmek: öznitelikler mi yoksa komutlar mı?

Çözüldü 4 5

Yapay zekâ tarafından English dilinden çevrildi ·

Entegratör olarak yazıyorum. Bir müşterinin sahada yaklaşık 300 pompa kontrolörü var; kendi firmware’imizi çalıştıran ESP32-S3 kartları, hepsi MQTT üzerinden Hermetry’ye bağlı. Sitelere göre birkaç ayarı uzaktan değiştirmemiz gerekiyor: raporlama aralığı, basınç okumasında bir ölü bant ve NTP sunucusu (bazı siteler genel havuzları engelliyor).Ekipte iki yaklaşım masada:

  • Ayarların JSON parametreleri olarak verildiği, ok/hata yanıtı dönen bir komut, örneğin cfg.set
  • Cihazın uyguladığı paylaşılan öznitelikler

Benim için önemli olanlar: belirli bir cihazın bir değeri uyguladığını kesin olarak bilmek ve çevrimdışı cihazlar için değişiklikleri kaybetmemek. Bazı kırsal siteler bir seferde iki üç gün bağlantıdan düşüyor.Firmware zaten açılışta flash’tan bir JSON yapılandırması okuyor, yani değerleri uygulamak zor kısım değil. Cihazlar 60 s’de bir rapor veriyor ve LTE yönlendiricileri ile saha Wi-Fi’sinin karışımının arkasında. Hermetry hangi yaklaşım için tasarlanmış ve istenen-ile-raporlanan görünümü gibi bir şey var mı?

♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

Burada bir öğrenciyim, merak ettim: bu neden önemli olsun ki? Ayarları içeren bir komut bana daha basit geliyor.

♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

Çevrimdışı bir cihaza gönderilen komutlar yalnızca kalıcı olarak gönderilirse beklemeye alınır ve bu da en fazla 7 gün sonra vazgeçilmesine neden olur. Öznitelikler durumdur, komutlar ise eylemlerdir. Ben öznitelikleri tercih ederim.

♥ 1

Yapay zekâ tarafından English dilinden çevrildi ·

Daha küçük bir filoda bunu komutlarla yaptık ve bir ünite her komutu kaçırdığında bu her seferinde bir karmaşaya dönüştü. Hangi ünitelerin hangi rapor aralığına sahip olduğunu kimse söyleyemiyordu.

Ground loops are my cardio.
♥ 2

Yapay zekâ tarafından English dilinden çevrildi ·

cfg.* paylaşımlı öznitelikleri kullanın, tam olarak bunun için tasarlandılar ve istenen ile raporlanan değer karşılaştırmasını ek bir çaba olmadan elde edersiniz.Anahtarları profilin Configuration keys sekmesinde tanımlayın (tür, etiket, sınırlar), ardından bunları paylaşımlı öznitelik olarak ayarlayın: cfg.telemetry.interval_s, cfg.pressure.deadband_bar, cfg.ntp.server. Cihaz değişiklikleri v1/attributes/set üzerinden alır, uygular ve uygulanan değeri aynı anahtarla istemci özniteliği olarak geri bildirir. Hermetry ikisini karşılaştırır ve Attributes sekmesinde her anahtar için In sync, Pending, Rejected veya Drifted durumunu gösterir.Cihaz tarafında, her bağlantıdan sonra:

SUBSCRIBE v1/attributes/set
PUBLISH   v1/attributes/req/1   {"sharedKeys": "cfg.*"}
# v1/attributes/res/1 üzerindeki yanıt -> hepsini uygula -> geri bildir:
PUBLISH   v1/attributes   {"cfg.telemetry.interval_s": 300, "cfg.pressure.deadband_bar": 0.05}

Kırsal sahalarınızı kapsayan şey bağlantıdan sonraki istektir: üç gündür çevrimdışı olan bir ünite geri geldiğinde tüm cfg.* anahtarlarını ister ve eksiklerini tamamlar. Bir ünite bir şeyi uygulayamazsa, bunu cfg_rejected içinde bildirin, örneğin {"cfg_rejected": {"cfg.ntp.server": "apply_failed"}}; satırda nedeniyle birlikte Rejected görünür. Uygulamayı idempotent yapın, bir mesaj iki kez gelebilir.300 ünite için, cihaz listesi üzerinde bir döngü içinde değerleri API ile yazın (POST …/attributes/shared, çağrı başına en fazla 100 anahtar). Temel değer ve toplu iş ekranları, ayar manifestosu yayınlayan cihazlar (lisanslı cihazlar) içindir; kendi yazılımınızla çalışan cihazlarda yol cfg.* üzerinden geçer. Durum tablosu için Attributes sayfasına bakın.

Timestamps in UTC or it didn't happen.
Kabul edilen çözüm♥ 7
5 yazı görüntüleniyor – 1 ile 5 arası (toplam 5)
  • 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ş