device_commands
device_commands, backend'den cihaza gönderilecek komutları standardize eden sözlük tablosudur. Komut kodu, endpoint, payload şablonu ve timeout bilgisi tek yerde tutulduğu için servisler arasında tutarlı komut üretimi sağlanır.
Bu yapı, komutların kod içine dağılmış sabit metinler yerine proje bazlı veri modeliyle yönetilmesini sağlar.
Kolonlar
| Kolon | Tip | Null | Anlamı |
|---|---|---|---|
id | int | hayır | Komut birincil anahtarı |
project_id | int | hayır | Bağlı proje; projects.id |
code | varchar(50) | hayır | Komut kodu |
end_point | varchar(150) | hayır | Cihaz API endpoint yolu |
template | text | hayır | Parametreli komut payload şablonu |
timeout_ms | int | hayır | Komut timeout süresi (ms) |
description | varchar(255) | evet | Komut açıklaması |
is_active | boolean | hayır | Komut aktif mi (DEFAULT: true) |
create_time | timestamp | hayır | Kayıt oluşturulma zamanı |
update_time | timestamp | hayır | Son güncelleme zamanı |
İndeksler
| İndeks | Tip | Açıklama |
|---|---|---|
id | Primary Key | Tablo birincil anahtarı |
(project_id, code) | Unique | Aynı projede aynı komut kodu tekrar edemez |
Örnek Kayıtlar
- PowerStat V1 restart
- PowerStat V1 set_register
- PowerStat V1 sync_time
- PowerStat V2 restart
- PowerStat V2 set_publish_mask
- Qapu restart
- Qapu set_threshold
{
"id": 1,
"project_id": 1,
"code": "restart",
"end_point": "/device/restart",
"template": "{\"cmd\":\"restart\"}",
"timeout_ms": 5000,
"description": "Cihazı yeniden başlatır",
"is_active": true,
"create_time": "2026-04-03 10:00:00",
"update_time": "2026-04-03 10:00:00"
}
Özet: PowerStat V1 için temel yeniden başlatma komutu.
{
"id": 2,
"project_id": 1,
"code": "set_register",
"end_point": "/device/register/set",
"template": "{\"cmd\":\"set_register\",\"register\":\"{{register}}\",\"value\":\"{{value}}\"}",
"timeout_ms": 5000,
"description": "Belirtilen register değerini ayarlar",
"is_active": true,
"create_time": "2026-04-03 10:01:00",
"update_time": "2026-04-03 10:01:00"
}
Özet: Parametreli register yazma komutu; template alanı runtime değerlerle doldurulur.
{
"id": 3,
"project_id": 1,
"code": "sync_time",
"end_point": "/device/time/sync",
"template": "{\"cmd\":\"sync_time\",\"timestamp\":\"{{timestamp}}\"}",
"timeout_ms": 3000,
"description": "Cihaz saatini senkronize eder",
"is_active": true,
"create_time": "2026-04-03 10:02:00",
"update_time": "2026-04-03 10:02:00"
}
Özet: Cihaz saat senkronizasyonu için düşük timeout'lu komut.
{
"id": 4,
"project_id": 2,
"code": "restart",
"end_point": "/v2/device/restart",
"template": "{\"cmd\":\"restart\"}",
"timeout_ms": 4000,
"description": "PowerStat V2 cihazını yeniden başlatır",
"is_active": true,
"create_time": "2026-04-03 10:03:00",
"update_time": "2026-04-03 10:03:00"
}
Özet: V2 endpoint'i ayrıştığı için aynı code farklı projede ayrı kayıt olarak tutulur.
{
"id": 5,
"project_id": 2,
"code": "set_publish_mask",
"end_point": "/v2/device/publish-mask",
"template": "{\"cmd\":\"set_publish_mask\",\"mask\":\"{{mask}}\"}",
"timeout_ms": 5000,
"description": "Publish register maskesini ayarlar",
"is_active": true,
"create_time": "2026-04-03 10:04:00",
"update_time": "2026-04-03 10:04:00"
}
Özet: Cihazın publish davranışını konfigüre eden proje-özel komut.
{
"id": 6,
"project_id": 5,
"code": "restart",
"end_point": "/qapu/restart",
"template": "{\"cmd\":\"restart\"}",
"timeout_ms": 6000,
"description": "Qapu cihazını yeniden başlatır",
"is_active": true,
"create_time": "2026-04-03 10:05:00",
"update_time": "2026-04-03 10:05:00"
}
Özet: Qapu ürün hattı için daha yüksek timeout değerli restart komutu.
{
"id": 7,
"project_id": 5,
"code": "set_threshold",
"end_point": "/qapu/config/threshold",
"template": "{\"cmd\":\"set_threshold\",\"variable\":\"{{variable}}\",\"value\":\"{{value}}\"}",
"timeout_ms": 7000,
"description": "Eşik değerini ayarlar",
"is_active": true,
"create_time": "2026-04-03 10:06:00",
"update_time": "2026-04-03 10:06:00"
}
Özet: Kural/konfigürasyon eşiklerini uzaktan güncelleyen parametreli komut.