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

Yanıt: Wi-Fi rölesini kendi Python betiklerimden commands uç noktası üzerinden değiştirme

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