İçeriğe geç
TREN
Atlıhan Harita

Lixel OpenAPI Kullanım Kılavuzu

Mesaj Modeli ve Kodek

Bölüm 03 / 09Kılavuz sürümü v1.1.0Türkçe

Bu sayfa, bir mesajın kodunuzdaki dict'ten cihazdaki ikili veriye ve geri aldığınız dict'e kadar nelerden geçtiğini açıklar.

Konu Adlandırma Kuralları

Tüm iş konuları, lixel/application/ ortak önekiyle üç bölümlü bir şema kullanır:

lixel/<domain>/<type>/<name>
  • domain: iş alanı, çoğunlukla application.
  • type: mesaj yönü.

    • request: istemci → cihaz (istek)
    • response: cihaz → istemci (isteğe yanıt)
    • report: cihaz → istemci (etkin gönderim)
  • name: belirli özellik, örn. device_info, modeling, lio_pose.

Örneğin cihaz bilgisini sorgulamak için istek lixel/application/request/device_info konusuna gider, yanıt ise lixel/application/response/device_info konusundan gelir.

Mesaj Yükü

Heartbeat dışında her mesaj yükü Protobuf ikili verisidir; proto paketi openapi.aiot_msgs olarak tanımlıdır. Heartbeat, JSON metni olarak taşınan tek mesajdır; bu sayede Protobuf ayrıştırmadan bir cihaz keşfedilebilir ve protokol sürümü okunabilir.

Proto Derleme

Proto tanımını bir Python modülüne derlemek için birlikte gelen betiği kullanın:

python python/src/generate_proto.py

Not: Kod üretimi, mevcut ortamın grpc_tools.protoc aracını kullanır; böylece gencode sürümü, çalışma zamanındaki protobuf sürümüyle uyumlu kalır. Çalışma zamanında, ortamlar arasındaki C eklentisi uyumsuzluklarını önlemek için PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python ayarlanması önerilir.

JSON ↔ Protobuf

Projenin istemci sarmalayıcısı, dict/JSON ile Protobuf ikili verisi arasında dönüşüm yapmak için google.protobuf.json_format tabanlı ProtoCodec sınıfını sunar:

from example.core import ProtoCodec

codec = ProtoCodec()

# Encode: dict → Protobuf binary
data = codec.encode("DeviceControlRequest", {"action": "AC_SYSTEM_REBOOT"})

# Decode: Protobuf binary → dict
result = codec.decode("DeviceControlResponse", data)

# Generate a default template (with all fields)
template = codec.default_json("ModelingRequest")

Notlar:

  • Enum alanları, enum adı dizesini (örn. "AC_START") veya tam sayı değerini kabul eder.
  • bytes alanları dict içinde base64 dizesi olarak görünür.
  • Alan adları proto snake_case biçimini korur.

Mesaj Yönü İşaretleri

Arayüz kataloğu mesaj yönü için üç işaret kullanır; bunlar sonraki bölümlerde de kullanılır:

İşaretAnlamıKonu bölümü
REQİstek (istemci → cihaz)request
RSPYanıt (cihaz → istemci)response
RPTRapor (cihaz → istemci)report

Hata Taşıyıcı

İstek-yanıt mesajları sonucu, yanıttaki Error error = 15 alanında taşır:

message Error {
    uint32 code = 1; // error code
    string desc = 2; // descriptor
}

Hata kodu kategorileri ve anlamları için Hata Kodları bölümüne bakın.

Bu bölüm XGRIDS'in resmî kullanım kılavuzundan Türkçeye çevrildi; ekran görüntüleri ve arayüz adları özgün haliyle İngilizcedir. İngilizce aslı (yeni sekmede açılır) · Güncelleme:

XGRIDS Türkiye

Kurulumda ve Sahada Yanınızdayız

Atlıhan Harita; cihaz kurulumu, firmware güncellemesi, yazılım kullanımı ve saha uygulamalarında eğitim ve teknik destek verir. Sorunuzu iletin, uzmanımız size dönsün.

+90 216 546 0804