Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

BLE sensörler: eşleştirip bağlanmak mı, yayınları dinlemek mi? Pi gateway bağlantıları düşüyor

BLE sensörler: eşleştirip bağlanmak mı, yayınları dinlemek mi? Pi gateway bağlantıları düşüyor

Résolu 6 6

Merhaba,

Bir soğuk hava deposunda 30 adet BLE sıcaklık/nem sensörünü bir Raspberry Pi 4 ile okuyup Hermetry’ye gateway olarak gönderiyorum (v1/gw/telemetry, her sensör bir child). Şu an Python’da bleak ile her sensöre GATT üzerinden bağlanıp karakteristiği okuyorum, sonra bağlantıyı kapatıyorum.

Sorunlar:

  • 30 sensörü sırayla dolaşmak 2-3 dakika sürüyor, bazı sensörlere bağlanamıyor (TimeoutError, org.bluez.Error.Failed: le-connection-abort-by-local).
  • Aynı anda bağlı kalmaya çalışınca 7-8 bağlantıdan sonra Pi yenilerini kabul etmiyor.
  • Sensörlerin pili beklenenden hızlı bitiyor, üretici « sürekli bağlantı pili yer » diyor.

Sensörlerin bir kısmı eşleştirme (pairing) istiyor, bir kısmı istemiyor. Eşleştirmeli ve eşleştirmesiz iletişim arasında ne fark var, hangisini kullanmalıyım?

Kayıtta yoksa olmamıştır.
♥ 2

Pi başına 30 sensör çok mu? Belki iki Pi’ye bölmek gerekir?

Ağ geçidi yine bağlanıyor…
♥ 0

Bence sorun sayı değil, bağlanma yöntemi.

♥ 2

Aslan Bey haklı. Evde 40’a yakın BLE sensörü tek Pi ile okuyorum, bağlanmadan.

BLE’de iki ayrı dünya var. Yayın (advertising): sensör kimseye bağlanmadan saniyede bir-iki kez küçük bir paket yayınlıyor, içinde sıcaklık ve nem var. Dinleyen sayısında sınır yok, sensör tarafında en az pil harcayan yol bu. Bağlantı (GATT): Pi sensöre bağlanıp karakteristik okuyor. Bağlantı sayısı adaptöre göre sınırlı (Pi’de pratikte 7-10), her bağlantı iki tarafta da enerji harcıyor. Eşleştirme (pairing/bonding) bağlantının üstüne şifreleme ekliyor; ayar yazmak veya şifreli veri okumak için gerekiyor, sadece ölçüm okumak için gerekmiyor.

Bu tip sensörlerin çoğu ölçümü yayın paketinde de veriyor (bazıları özel firmware ile). bleak’te pasif tarama ile dinle:

from bleak import BleakScanner
son = {}
def cb(dev, adv):
    if dev.address in SENSORLER:
        t, h = coz(adv.service_data)   # sensöre göre çözümleme
        son[SENSORLER[dev.address]] = {"values": {"sicaklik": t, "nem": h}}
scanner = BleakScanner(detection_callback=cb)

Dakikada bir son sözlüğünü tek mesajla gönder: v1/gw/telemetry içinde her child adının altında bir kayıt. 30 sensör tek mesaj, kota açısından da iyi.

Dezavantaj: yayın şifresiz, yakındaki herkes okuyabilir ve taklit edebilir. Bazı firmware’ler şifreli yayın destekliyor (bindkey ile), ilaç gibi bir yer ise ona bakın.

Solution acceptée♥ 9

İlaç tarafından bakınca o son paragraf önemli: şifresiz yayında veri bütünlüğünü denetçiye açıklamak zor, biz şifreli yayına geçtik.

♥ 0

Pasif taramaya geçtim, 30 sensörün hepsi 10 saniye içinde görünüyor, hiç bağlantı hatası yok. Dakikada bir tek gw mesajı gidiyor. Sensörlerden 12’si şifreli yayını destekliyor, onlara bindkey tanımladık, kalanları değiştirme listesine koyduk.

Kayıtta yoksa olmamıştır.
♥ 1

Bizde de aynı sensörlerden var, hasta odalarında. Bu konuyu ekiple paylaşıyorum.

Modbus sadece register'dır, ta ki olmayana kadar.
♥ 1
7 sujets de 1 à 7 (sur un total de 7)
  • Vous devez être connecté pour répondre à ce sujet.

Rejoignez la discussion

Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

Partager