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

Raspberry Pi, API üzerinden en son tank seviyesini sorgularken sürekli 401 alıyor

Raspberry Pi, API üzerinden en son tank seviyesini sorgularken sürekli 401 alıyor

Çözüldü 4 3

Yapay zekâ tarafından English dilinden çevrildi ·

IoT tarafına yeni başlıyorum, backend geliştiriciyim ve bu iş bana verildi.Hermetry’de zaten bir tank seviye sensörü veri gönderiyor (cihaz “tank-01”, anahtar level_pct). Biri ofiste bir Pi olsun istiyor; seviye 90’ın üzerine çıktığında bir buzzer ötsün. Planım, Pi üzerinde küçük bir Python servisi çalıştırıp Hermetry’den en son değeri her 5 saniyede bir sorgulamaktı. tank-01 sayfasından erişim belirtecini kopyaladım ve şunu yaptım:

GET https://<host>/api/telemetry/latest?kind=iot_device&entityId=6f1c...&keys=level_pct
Authorization: Bearer <tank-01 token>
-> 401

“Bearer” ile ve onsuz denedim, sonuç aynı. Belirteç mi yanlış, yoksa yanlış uç nokta mı kullanıyorum?

Measure twice, poll once.
♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

Bu bir cihaz kimlik bilgisi. Cihazın oturum açmasını sağlar, sizin için hiçbir veri okumaz. Yönetim API’si bir API anahtarı ister. Ayrıca 5 saniyede bir sorgulamak bir buzzer için fazlasıyla çok.

Measure twice, poll once.
♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

Brian haklı, ayrıca kuruluş ön ekini de eksik bırakmışsın. Geçen yıl bir soğutma odası için hemen hemen aynı şeyi kurdum.1. API Keys (Developer menu) > New API Key. Module permissions altında yalnızca telemetri için salt okunur yetki ver, başka bir şey verme. Bir IP izin listesini ofisin adresine ayarla ve son kullanma tarihini not al; varsayılan 90 gün, en fazla bir yıl. Takvimine bir hatırlatıcı koy, bizimki bir Cumartesi günü süresi doldu.2. Tüm yönetim yolları tenant altında bulunur:

GET https://<host>/tenant/<tenantId>/api/telemetry/latest?kind=iot_device&entityId=<deviceId>&keys=level_pct
Authorization: Bearer sk_live_...

Yanıt şuna benzer: {“latest”: {“level_pct”: {“ts”: …, “value”: 91.2}}}. Aynı okumada iki kez buzzer çalmamak için ts değerini bir önceki ile karşılaştır.3. 429 durumunu ele al ve Retry-After saniye kadar bekle. Yaklaşık 30 sn’de bir sorgula, tank 5 saniyede dolmaz.Anlık olmasını istersen diğer yol: Pi’yi kendisi bir cihaz yap, tanktaki bir kural level_pct 90’ın üzerine çıktığında ona komut göndersin ve Pi kendi cihaz token’ıyla GET /api/v1/rpc üzerinde beklesin. Daha fazla hareketli parça, polling yok. Bir buzzer için API key’i tercih ederim. Kurallar için REST API basics sayfasına bak.

Kabul edilen çözüm♥ 5

Yapay zekâ tarafından English dilinden çevrildi ·

Bu iki hataymış: token ve eksik /tenant/<tenantId> kısmı (anahtarı aldıktan sonra bir kez 404 aldım, sonra fark ettim). Şu an 30 s aralıkla çalışıyor ve IP adresimize kilitli, salt okunur bir anahtar kullanıyoruz. Bu sabah tank doldurulduğunda zil çaldı, yani çalışıyor.

Measure twice, poll once.
♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

Anahtarı, bir gün bir bilete yapıştıracağınız betikte değil, yalnızca root kullanıcısının erişebildiği bir dosyada saklayın.

Measure twice, poll once.
♥ 1
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ş