Komut (RPC olarak da anılır), bir cihazdan bir şey yapmasını ister: yeniden başlatma, bir çıkışı değiştirme, test çalıştırma. Her komut bir istek olarak saklanır ve cihaz yanıt verene kadar takip edilebilir. Komutlar yalnızca TLS oturumları üzerinden gönderilir (profil açık metne izin vermediği sürece), telemetriyi işleyen akışlardan asla geçmez ve her biri gönderenin yetkilerine karşı denetlenir.
Komut kataloğu
Her cihaz profilinin bir Komutlar sekmesi vardır: “Operatörlerin bu profildeki cihazlara gönderebileceği komutlar; her seviye kendi yetkisini gerektirir.” Bunu düzenlemek komutları yönetme yetkisini (yöneticiler) gerektirir.
Komut ekle seçeneğini seçin ve şunları doldurun:
| Alan | Anlamı |
|---|---|
| Yöntem | Ağ adı, namespace.verb biçiminde, örneğin sys.info. Harfler, rakamlar, _ ve .. |
| Etiket, Açıklama | Operatörlerin gördükleri. |
| Seviye | Temel, Ayrıcalıklı veya Kritik: kimin gönderebileceği (aşağıya bakın). |
| Yüksek etki (onay ister) | Gönderen onaylamalıdır; komut en fazla bir kez gönderilir ve denetlenir. |
| Yazılan onay ifadesi | İsteğe bağlı, yalnızca yüksek etkili komutlar için: operatör göndermek için bunu yazar (örneğin REBOOT). |
| Tek yönlü (yanıt yok) | Cihaz yanıt vermez. |
| Uzun süren (yanıt yalnızca başladığını bildirir) | Cihaz hemen yanıt verir ve sonucu daha sonra bildirir. |
| Varsayılan zaman aşımı (ms) | 1.000 ile 600.000 arası. Boş: profilin Varsayılan RPC zaman aşımı değeri. |
| Varsayılan olarak kalıcı (cihaz geri geldiğinde iletilir) | Cihaz çevrimdışıyken komutu kuyruğa al. |
| Parametreler | Alanlar ile (ad, etiket, tür Metin, Sayı, Evet / hayır, Seçim veya Herhangi bir değer (JSON), zorunlu, min, max, seçenekler) ya da Gelişmiş (JSON) olarak oluşturulur. En fazla 50 parametre. |
| Maskelenmiş parametreler | Değerleri geçmişte hiçbir zaman görünmeyen parametre adları. |
Şablondan, platformun zaten gönderdiği bir komuttan (bir kart kontrolü gibi) formu başlatır. İçe aktar, tüm kataloğu bir dışa aktarımla değiştirir ({"commands": [ … ]}); Dışa aktar, kataloğu JSON olarak gösterir. Bir profil en fazla 200 komut içerir.
Seviyeler
| Seviye | Kimin gönderebileceği (varsayılan) |
|---|---|
| Temel | Kullanıcılar |
| Ayrıcalıklı | Yöneticiler |
| Kritik | Yöneticiler |
| Ham (kataloğda olmayan bir yöntem) | Sahipler |
Not
Bazı komutlar kim isterse istesin asla gönderilmez: fabrika ayarlarına dönme, eşleştirme, Wi-Fi unutma ve cloud.forget. Bazı yöntem aileleri bir modüle aittir ve yalnızca o modül bunları gönderir (örneğin uzaktan erişim için tunnel.* ve esim.*). Yalnızca Legacy uyumlu konu şemasını kullanan profillerde komut bulunmaz: “RPC, Legacy uyumlu şemadaki cihazlar için kullanılamaz; ayarları göndermek için paylaşılan öznitelikleri (Öznitelikler sekmesi) kullanın.”
Komut gönderme
- Cihazı ve Komutlar sekmesini açın.
- Komut seçin altında bir komut seçin (veya yalnızca sahipler için Diğer yöntem (ham)) ve Parametreler alanını doldurun.
- Gerekirse seçenekleri ayarlayın:
| Seçenek | Anlamı | Varsayılan |
|---|---|---|
| Yanıt beklemeden gönder (tek yönlü) | Cihaz yanıt vermez. | Kapalı (çift yönlü) |
| Yanıt zaman aşımı (saniye) | Yanıt için ne kadar beklenecek, 1 ile 600 saniye. | Komutun varsayılanı, yoksa 10 saniye |
| Cihaz geri geldiğinde ilet (kalıcı) | Cihaz çevrimdışıyken komutu kuyrukta tut. | Komutun varsayılanı |
| Şu süreden sonra vazgeç (dakika) | Kuyruktaki bir komutun ne zaman iptal edileceği. | 24 saat; en fazla 7 gün |
- Gönder seçeneğini seçin. Yüksek etkili bir komut {method} gönderilsin mi? diye sorar (“Bu komutun cihaz üzerinde etkisi vardır (yeniden başlayabilir veya oturumunu kaybedebilir).”) ve bir ifadesi varsa Onaylamak için {phrase} yazın ister.
Cihaz çevrimdışıysa sekme uyarır: “Cihaz çevrimdışı: “kalıcı” seçeneği olmadan komut hemen başarısız olur.”
Gösterge panelleri, SCADA sembolleri, kurallar ve akışlar da komut gönderebilir. Bir kart kontrolü yalnızca temel seviyedeki komutları gönderir. Bkz. Kontrol kartları.
Komut durumları
| Durum | Görünen ad | Anlamı |
|---|---|---|
QUEUED | Kuyrukta | Saklandı, cihaz bekleniyor. |
SENT | Gönderildi | Cihaza gönderildi. |
DELIVERED | İletildi | Cihaz aldı. |
SUCCESSFUL | Başarılı | Cihaz başarıyla yanıt verdi. |
FAILED | Başarısız | Cihaz bir hatayla yanıt verdi. |
TIMEOUT | Zaman aşımına uğradı | Zamanında yanıt gelmedi. Bu, “yanıt gelmedi” anlamına gelir, “çalışmadı” anlamına değil. |
EXPIRED | Süresi doldu | İletilmeden önce süresi doldu. |
CANCELLED | İptal edildi | Biri iptal etti. |
Uzun süren bir komut, sonucu gelene kadar Cihazda çalışıyor gösterir; zaman aşımına uğrayan bir komut Yanıt yok: sonuç bilinmiyor gösterir; süre bittikten sonra gelen bir yanıt Süre bittikten sonra yanıtlandı gösterir.
Geçmiş
Komutlar sekmesindeki Geçmiş, Yöntem, Durum, Gönderen (Konsol, API, Bir akış, Yazılım güncellemesi, Bir alarm eylemi, Bir gösterge paneli kontrolü), Oluşturulma, Tamamlanma ve Süre alanlarını listeler. Bir komutu açarak İstek, Yanıt ve İlerleme bilgisini görebilir, kuyrukta veya gönderilmişken Komutu iptal et seçeneğini kullanabilir ya da Yeniden gönder seçeneğini seçebilirsiniz. Gizli parametreler maskelenir.
Varsayılan sınırlar: cihaz başına dakikada 10 komut ve kuruluş başına dakikada 600; parametreler en fazla 16 KiB JSON; yanıt en fazla 64 KiB. Geçmiş 90 gün saklanır.
Cihazda
Cihaz v1/rpc/req/+ konusuna abone olur ve şunu alır:
PUBLISH v1/rpc/req/42
{"method": "sys.ping", "params": {"host": "8.8.8.8", "count": 3}}
Çift yönlü bir komut için aynı kimlik üzerinden yanıt verir:
PUBLISH v1/rpc/res/42
{"ok": true, "result": {"sent": 3, "received": 3, "avg_ms": 18.2}}
Cihaz için kurallar:
- Bir komut iki kez gelebilir. En az son 32 istek kimliğini 10 dakika boyunca hatırlayın ve aynı kimliği asla iki kez çalıştırmayın.
- İstek
expirationTimeiçeriyorsa ve bu süre geçmişse, çalıştırmayın;{"ok": false, "error": "expired"}ile yanıt verin. - İstek cihazın kaldırabileceğinden büyükse, çalıştırmayın;
{"ok": false, "error": "payload_too_large"}ile yanıt verin. - Komutlar, cihaz bu bağlantıda
v1/rpc/req/+konusuna abone olduktan sonra iletilir.
HTTP cihazları komutları GET /api/v1/rpc ile bekler ve POST /api/v1/rpc/{id} ile yanıt verir. Bkz. Cihaz HTTP API.
Uzun süren komutlar
PUBLISH v1/rpc/res/43
{"ok": true, "accepted": true, "job_id": "43"}
PUBLISH v1/attributes
{"rpc_result": {"job_id": "43", "method": "sys.traceroute", "ok": true, "result": {...}, "ts": 1759572042000}}
Cihazdan gelen istekler
Bir cihaz buluttan da isteyebilir: {"method": …, "params": …} ile v1/rpc/up/req/{id} konusuna yayımlar ve yanıtı v1/rpc/up/res/{id} üzerinden okur. Akışlarınız bu istekleri alır ve yanıtlar.
LoRaWAN ve ağ geçidi altındaki cihazlar
- LoRaWAN cihazları ham downlink’leri
lora.downlinkkomutuyla alır. Bkz. Downlink gönderme. - Ağ geçidinin arkasındaki cihazlara komutlar geliştirme aşamasındadır. Bkz. Ağ geçidinin arkasındaki cihazlara komutlar.
API ile
POST/tenant/{tenantId}/api/iot/devices/{deviceId}/rpc
Bir cihaza komut gönderin. Gövde alanları: method (zorunlu), params, oneway, persistent, timeoutMs (1.000 ile 600.000), expiresInS (1 ile 604.800), wait, confirm, confirmText, source (console, api veya dashboard_control). params en fazla 16 KiB JSON olabilir. Zaman aşımı en fazla 30 saniye olan, çift yönlü ve kalıcı olmayan bir çağrı sonucu bekler ve 200 yanıtı verir. Diğer tüm çağrılar hemen 202 yanıtı verir. Yüksek etkili bir komut "confirm": true gerektirir.
İstek gövdesi application/json
{
"method": "sys.ping",
"params": {
"host": "8.8.8.8",
"count": 3
},
"timeoutMs": 10000
}
Örnek curl
curl -X POST 'https://<your-host>/tenant/{tenantId}/api/iot/devices/{deviceId}/rpc' \
-H 'Content-Type: application/json' \
-d '{"method":"sys.ping","params":{"host":"8.8.8.8","count":3},"timeoutMs":10000}'
Yanıtlar
200Tamam
{
"rpc": {
"rpcId": "…",
"deviceId": "…",
"method": "sys.ping",
"status": "SUCCESSFUL",
"outcome": null,
"response": {
"ok": true,
"result": {
"sent": 3,
"received": 3,
"avg_ms": 18.2
}
},
"tier": "basic",
"highImpact": false,
"source": "api",
"…": "…"
}
}
202Kabul edildi
{
"rpc": {
"rpcId": "…",
"deviceId": "…",
"method": "sys.reboot",
"status": "QUEUED",
"…": "…"
}
}
400Hatalı İstek
{
"message": "This command needs confirm: true.",
"code": "VALIDATION_ERROR",
"details": {
"reason": "confirm_required"
}
}
403Yasak
Yanıt gövdesi yok.
404Bulunamadı
{
"message": "Device not found.",
"code": "NOT_FOUND"
}
429Çok Fazla İstek
Yanıt gövdesi yok.
Bir komutu GET /tenant/{tenantId}/api/iot/rpc/{rpcId} ile okuyun ve POST …/rpc/{rpcId}/cancel ile iptal edin (yalnızca QUEUED veya SENT iken; denetlenir). outcome alanı, yukarıda anlatıldığı gibi running, unknown veya late değerini taşır. Bkz. Komutlar API.
rpc.completed ve rpc.failed webhook olayları, sonucu diğer sistemlere bildirir. Yüksek etkili ve ham komutlar oluşturulduklarında ve sona erdiklerinde denetim günlüğüne yazılır.

