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):
| Protokol | Port | Kullanıcı adı | Parola | Ürün modeli |
|---|---|---|---|---|
| MQTTS | 8883 | Üretici tarafından sağlanır | Üretici tarafından sağlanır | Bilinenler: 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.1kullanı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.1olarak 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_keydahil) 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:
- XGRIDS iş veya teknik destek kanalı üzerinden, cihaz modelini ve kullanım amacını belirterek talepte bulunun.
- XGRIDS talebi kontrol eder ve bir anahtar dizesi verir.
- 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:
| Alan | Tür | Açıklama |
|---|---|---|
seq | uint32 | Kare sıra numarası |
stamp | sint64 | Kare zaman damgası. Cihazın raporladığı kareler mikrosaniye cinsindendir ve zaman tabanı Unix epoch'tur |
scaler | sint64 | Ölçek faktörü (nokta bulutu vb. tarafından kullanılır) |
device_id | string | Cihaz kimliği (cihaz tarafından üretilir) |
session_id | string | Oturum kimliği (isteği/raporu gönderen taraf üretir) |
openapi_key | string | API 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:

