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

Python betiklerimden commands endpoint'i üzerinden Wi-Fi rölesini açıp kapatma

Python betiklerimden commands endpoint'i üzerinden Wi-Fi rölesini açıp kapatma

Çözüldü 5 3

Yapay zekâ tarafından English dilinden çevrildi ·

Burada veri analistiyim, o yüzden elektronik konusunda bana kolay davranın.Test laboratuvarımızda, dayanıklılık test düzeneğinin üzerinde, operatörlerin test çalışırken yanmasını istediği bir lamba var. Test çalıştırmaları Python betiklerimden başlatılıyor, bu yüzden betiğin lambayı da açıp kapatmasını istiyorum. Sonoff Basic R2 Wi-Fi rölesi aldım, ama kutudan çıktığı haliyle yalnızca kendi telefon uygulamasıyla çalışıyor ve onun için belgelenmiş bir API bulamadım.Düzeneğin sensörleri için zaten Hermetry kullanıyoruz (MQTT üzerinden vibrasyon ve sıcaklık gönderen bir ESP32, sorunsuz çalışıyor). İdeal olarak betiğim Hermetry ile konuşsun, Hermetry de röleyle konuşsun; böylece laboratuvar ağında hiçbir şey açmak zorunda kalmam ve operatörler lambanın durumunu aynı panoda görebilsin.Bu sağlam bir kurulum mu? Evetse hangi endpoint’i çağırmalıyım ve röle bunu nasıl “duyuyor”? API dokümanlarında /api/iot/devices/{deviceId}/rpc buldum, ama cihaz tarafında neyin tanımlı olması gerektiğinden emin değilim.

♥ 1

Yapay zekâ tarafından English dilinden çevrildi ·

Sonoff Basic’in içinde bir ESP8266 bulunur. 4 pinli başlık üzerinden ve bir USB-seri adaptör ile kendi yazdığınız sketch’i (3.3 V, 5 V değil!) bu çipe yükleyebilirsiniz. Bundan sonra o, sadece başka bir Hermetry cihazı olur.

Ask me about 4–20 mA.
♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

Ödünç aldığım bir FTDI adaptörle yükledim; boot moduna almam üç denememi aldı (takarken düğmeyi basılı tutarak). Artık Hermetry’ye kendi erişim belirteciyle bağlanıyor ve her dakika {"relay": 0} gönderiyor. Yani gönderme kısmı tamam. Peki ya röleyi değiştirmek?

♥ 1

Yapay zekâ tarafından English dilinden çevrildi ·

Güzel, birkaç sinyal lambasında kullandığımız kurulumun aynısı. Üç parça:

  1. Rölenin cihaz profili, Commands sekmesi: light.set komutunu ekleyin, seviye Basic, tek parametre on, tür Yes / no. Seviye önemli, çünkü bir API anahtarı yalnızca profilin kataloğunda bulunan metotları gönderebilir.
  2. Firmware: v1/rpc/req/+ konusuna abone olun, GPIO12’yi (Basic R2’deki röle) değiştirin, aynı id ile yanıt verin ve yeni durumu bildirin.
void onMsg(char* topic, byte* p, unsigned int n) {
  // topic: v1/rpc/req/42
  String id = String(topic).substring(11);
  StaticJsonDocument<128> d; deserializeJson(d, p, n);
  bool on = d["params"]["on"];
  digitalWrite(12, on ? HIGH : LOW);
  mqtt.publish(("v1/rpc/res/" + id).c_str(), "{"ok":true}");
  mqtt.publish("v1/telemetry", on ? "{"relay":1}" : "{"relay":0}");
}
  1. Betiğiniz: API Keys (Developer menüsü) üzerinden, yalnızca ihtiyaç duyduğu izinlerle bir API anahtarı oluşturun. Gönderme rotası iot_rpc.read ile seviyenin iznini gerektirir; bu ikisini işaretleyin, başka hiçbir şeyi değil, IP izin listesine laboratuvar PC’nizin adresini girin ve 90 günlük son kullanma süresini koruyun.
import requests
r = requests.post(
    f"https://{HOST}/tenant/{TENANT}/api/iot/devices/{DEVICE}/rpc",
    headers={"Authorization": f"Bearer {KEY}"},
    json={"method": "light.set", "params": {"on": True}, "timeoutMs": 10000},
)
print(r.status_code, r.json()["rpc"]["status"])

Zaman aşımı 30 sn veya daha az olan çift yönlü bir komut bekler ve SUCCESSFUL ile 200 döner. Referans: Commands APIESP8266 TLS destekler, ancak bellek sınırlıdır; bağlantı başarısız olursa daha küçük tamponlarla BearSSL kullanın.

Kabul edilen çözüm♥ 4

Yapay zekâ tarafından English dilinden çevrildi ·

Çalışıyor. İlk çağrı, yalnızca gönderme iznini işaretleyip iot_rpc.read iznini eklemediğim için 403 döndü. Bu izni ekledikten sonra lamba tıklıyor ve çağrı yaklaşık 300 ms içinde 200 / SUCCESSFUL döndürüyor. Ayrıca operatörlerin panosuna, durumu görmeleri için relay değişkenine bağlı bir Switch kartı ekledim. İkinize de teşekkürler.

♥ 1

Yapay zekâ tarafından English dilinden çevrildi ·

Güzel! Bu kartta şebeke gerilimi var, o yüzden biri dokunmadan önce kutusuna geri koy 😄

Ask me about 4–20 mA.
♥ 0
6 yazı görüntüleniyor – 1 ile 6 arası (toplam 6)
  • 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ş