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

Lixel OpenAPI Kullanım Kılavuzu

Bağlantı ve Kimlik Doğrulama

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

Bir Lixel cihazı, yerleşik bir MQTT broker ve RTSP hizmeti çalıştırır. Gerçek zamanlı kontrol ve gerçek zamanlı nokta bulutu MQTT üzerinden, gerçek zamanlı video ise RTSP üzerinden iletilir. Cihaz, diğer cihazlarla hem kablolu hem de kablosuz ağ bağlantısını destekler: kablolu bağlantı USB kablosuyla, kablosuz bağlantı Wi-Fi ile kurulur.

Bağlantı Parametreleri

Her ürün modeli bağlantı protokollerinden yalnızca birini destekler (ikisini birden desteklemez):

ProtokolPortKullanıcı adıParolaÜrün modeli
MQTTS8883Üretici tarafından sağlanırÜretici tarafından sağlanırBilinenler: K2 / H1 / F1 / Porcam MQTTS kullanır (kaynak: örnek proje yorumları); diğer modellerde cihazın fiilen sunduğu port geçerlidir
  • MQTT sürümü: V3.1.1
  • Kablolu ağ bağlantısında sabit IP 192.168.55.1 kullanılır; kablosuz ağ bağlantısında IP adresi Bluetooth üzerinden alınır.
  • Hızlı Bağlantı modunda cihaz IP adresi 192.168.56.1 olarak sabittir.

Not: MQTTS, TLS kullanır. Cihaz otomatik imzalı bir sertifika kullanır ve örnek istemciler bununla çalışmak için sertifika doğrulamasını varsayılan olarak devre dışı bırakır. MQTTS seçildiğinde üreticinin sağladığı kullanıcı adını ve parolayı girin. Doğrulama kapalıyken istemci, gerçekten cihazla iletişim kurduğunu doğrulayamaz; aynı ağdaki bir ortadaki adam saldırganı cihazı taklit edebilir ve istekleri (openapi_key dahil) okuyabilir. Üretim ortamına geçmeden önce cihaz sertifikasını içe aktarıp doğrulamayı etkinleştirin.

USB Bağlantısı

Linux, Windows veya Android çalıştıran cihazlar, ağı Lixel cihazıyla RNDIS üzerinden paylaşır; iOS cihazlar USB Tethering kullanır.

  Lixel device (192.168.55.1)                     other device
      +---------+                                    +---------+
      |   USB   | <----- RNDIS / USB Tethering ----> |   USB   |
      +---------+                                    +---------+

Wi-Fi Bağlantısı

Cihaz üç kablosuz modu destekler:

  • Normal mod: başka bir cihaz hotspot görevi görür.
  • Hızlı Bağlantı modu: Lixel cihazı hotspot görevi görür.
  • Köprü modu: Yönlendirici kullanılır.

Tüm modlar için önce Bluetooth üzerinden ağ yapılandırması gerekir. Cihaz, belirli bir ağa katılabilmesi için Wi-Fi'yi yapılandırmak üzere Bluetooth bağlantısını kabul eder.

Cihazın Bluetooth adı 10 karakterden oluşur: çoğu model sabit XGR- önekini ve SN'nin son 6 hanesini kullanır, örn. XGR-A12345; bazı ODM modelleri farklı bir önek kullanır (örn. PCAM). Taradığınız adı esas alın.

      Lixel device                                 other device
      +---------+                                      +---------+
      |   BT    | <----- Bluetooth (provisioning) --> |   BT    |
      |  WiFi   | <----- WiFi (data) ---------------> |  WiFi   |
      +---------+                                      +---------+

Yapılandırma Akışı

Cihaz ile istemci arasındaki BLE yapılandırma akışı: istemci, ana cihaz (master) olarak cihazı (slave) arar ve cihaza bağlanır; bağlantıdan sonra cihaz önce mevcut Wi-Fi durumunu gönderir; Wi-Fi bağlı değilse istemci Wi-Fi bilgilerini (SSID ve parola) gönderir ve cihaz hedef ağa katılır.

        Lixel device                                    client
  +----------------------+                     +----------------------+
  |   BLE slave mode     |                     |   BLE master mode    |
  +----------+-----------+                     +----------+-----------+
             |                                            |
             v            <---- connecting ---->          v
  +----------------------+                     +----------------------+
  |   send WiFi status   | ------------------> |   get WiFi status    |
  +----------+-----------+                     +----+------------+----+
             |                                      |            |
             |                        WiFi not      |            | WiFi
             |                        connected      |            | connected
             |   <------ send WiFi info ----------- |            |
             v                                      v            v
  +----------------------+                     +----------------------+
  |   connect to WiFi    |                     |         end          |
  +----------------------+                     +----------------------+

OpenAPI Key Kimlik Doğrulaması

Bir OpenAPI isteği yalnızca cihaz isteği doğruladıktan sonra yürütülür. İstek başlığı, cihazın isteği doğrulamak için kullandığı openapi_key alanını içermelidir. openapi_key eksik veya hatalı olduğunda cihaz yine de yanıt verir: error.code değeri EC_ProtoError (0x32040001), error.desc değeri openapi auth error olur, yanıt iş verisi içermez ve request() zaman aşımı olmadan normal şekilde döner.

OpenAPI Key Talep Etme

OpenAPI Key, XGRIDS tarafından dağıtılır ve kendiniz oluşturamazsınız. Almak için:

  1. XGRIDS iş veya teknik destek kanalı üzerinden, cihaz modelini ve kullanım amacını belirterek talepte bulunun.
  2. XGRIDS talebi kontrol eder ve bir anahtar dizesi verir.
  3. Anahtarı bağlantı yapılandırmasına girin; ek bir etkinleştirme adımı gerekmez.

Not: Anahtar belirli bir cihaza / yetkilendirmeye bağlıdır. Güvenli bir yerde saklayın; herkese açık bir depoya sabit olarak yazmayın ve üçüncü taraflarla paylaşmayın.

Kodda Kullanım

ClientOptions.openapi_key değerini ayarlayın; request() / publish() bu değeri başlığa otomatik olarak yazar:

from example.core import ClientOptions, OpenApiClient

opts = ClientOptions(host="192.168.55.1", openapi_key="<provided by XGRIDS>")
with OpenApiClient(opts) as client:
    ...  # header.openapi_key is filled automatically

Başlık Alanları

Her istek/yanıt/rapor mesajının ilk alanı genellikle bir Header alanıdır:

AlanTürAçıklama
sequint32Kare sıra numarası
stampsint64Kare zaman damgası. Cihazın raporladığı kareler mikrosaniye cinsindendir ve zaman tabanı Unix epoch'tur
scalersint64Ölçek faktörü (nokta bulutu vb. tarafından kullanılır)
device_idstringCihaz kimliği (cihaz tarafından üretilir)
session_idstringOturum kimliği (isteği/raporu gönderen taraf üretir)
openapi_keystringAPI anahtarı (proto içinde optional, ancak cihaz yalnızca geçerli anahtar içeren istekleri yürütür)

İlgili proto tanımı:

message Header {
    uint32 seq = 1;                  // frame sequence number
    sint64 stamp = 2;                // frame timestamp
    sint64 scaler = 3;               // scale factor (positive: magnify, negative: shrink, 0: disable scaling)
    string device_id = 4;            // device ID (generated by the device)
    string session_id = 5;           // session ID (generated by the request/report side)
    optional string openapi_key = 6; // API key (apply from XGRIDS)
}

Ek: Düşük Seviyeli Yapılandırma Arayüzü

Not: Bu bölüm yalnızca Bluetooth yapılandırmasını kendiniz uyguladığınızda (hazır bir uygulama olmadan) başvuru amaçlıdır. Çoğu durumda yapılandırma, birlikte gelen araç veya uygulama ile yapılır ve bu düşük seviyeli tanımlara ihtiyaç duymazsınız.

Yapılandırma, BLE GATT hizmeti üzerinden karakteristikler okunarak ve yazılarak yapılır. Android ve iOS farklı UUID'ler kullanır:

/* Android GATT Characteristic Types */
#define UUID_GATT 0x1801
#define GATT_CHARAC_WIFI_INFO_SET 0x2AB0
#define GATT_CHARAC_WIFI_STATUS_GET 0x2AB1

/* iOS GATT Characteristic Types */
#define IOS_UUID_GATT 0x7F00
#define IOS_GATT_CHARAC_WIFI_INFO_SET 0x7F01
#define IOS_GATT_CHARAC_WIFI_STATUS_GET 0x7F02

Wi-Fi yapılandırmasını yazmak ve Wi-Fi durumunu okumak için veri yapıları:

#pragma pack(1)
/***********************************************************
 * WiFi status information (device -> Android)
 * ssid_len : 0 means WiFi is disconnected
 * ssid     : WiFi access point name
 * ip_len   : 0 means WiFi has no assigned IP
 * ip       : WiFi IP address
 * auth_mode: Not used yet
 * wifi_mode: 0 - STA mode  1 - AP mode (Quick Connect mode) 255 - ignore WiFi mode
 **********************************************************/
typedef struct wifi_info_s {
    uint8 ssid_len;
    uint8 ssid[32];
    uint8 passwd_len;
    uint8 passwd[64];
    uint8 auth_mode;
    uint8 wifi_mode;        // 0: Normal mode 1: Quick Connect mode 255: Only configure country code
    uint8 country_code[2];  // Country code (ISO2)
} wifi_info_t;

typedef struct wifi_status_s {
    uint8 ssid_len;
    uint8 ssid[32];
    uint8 ip_len;
    uint8 ip[16];
    uint8 connect_state;    // 0 - Not connected 1 - Connected successfully 2 - Connecting 3 - Device scanning
    uint8 wifi_mode;        // 0: Normal mode 1: Quick Connect mode
    uint8 country_code[2];  // Country code (ISO2)
} wifi_status_t;
#pragma pack()

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